tx · 5jefx6P9aQNdA9F6h8KFkqmGrW6cGvHikkjBpLSJqPqv

3NBZkTq4XgvS9cWHQPutnUm3C1ZS4tDMqJa:  -0.14000000 Waves

2023.01.19 15:57 [2411842] smart account 3NBZkTq4XgvS9cWHQPutnUm3C1ZS4tDMqJa > SELF 0.00000000 Waves

{ "type": 13, "id": "5jefx6P9aQNdA9F6h8KFkqmGrW6cGvHikkjBpLSJqPqv", "fee": 14000000, "feeAssetId": null, "timestamp": 1674133057677, "version": 2, "chainId": 84, "sender": "3NBZkTq4XgvS9cWHQPutnUm3C1ZS4tDMqJa", "senderPublicKey": "HJ4MXkC5hCwrUSxdnzS5VVpQGe5zYXcUVukdiKcGNVnV", "proofs": [ "4VSeEE9vcNako69eZHeFBCRca1M2kbd2rAFunZ7YRgjegfW7mu2qSTEKxfxmzygZ86QmP671A89gvycMQwrwXBGJ", "5dPFyfo3s3Ek1TkBsYQf4gzEELTTTAu67UB2RFCSdozn6rBQJz5nX1BkHN5mrm8F2GAYbRjSGk5CYkxWCQFDqjNb" ], "script": "base64:BgIMCAISBAoCCAESABIALgAHa0FjdGl2ZQIGYWN0aXZlAA1rZXlBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAPa0RlcHJlY2F0ZWRQb29sAgtkZXByZWNhdGVkXwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQANa1VzZXJQb29sVm90ZQIQX3VzZXJfdm90ZV9nU1dPUAAOa1VzZXJUb3RhbFZvdGUCFl91c2VyX3RvdGFsX3ZvdGVfZ1NXT1AACWtQb29sVm90ZQIQX3Bvb2xfdm90ZV9nU1dPUAAKa1RvdGFsVm90ZQIQdG90YWxfdm90ZV9nU1dPUAAQa0hhcnZlc3RQb29sVm90ZQIYX2hhcnZlc3RfcG9vbF92b3RlX2dTV09QABRrSGFydmVzdFVzZXJQb29sVm90ZQIdX2hhcnZlc3RfdXNlcl9wb29sX3ZvdGVfZ1NXT1AADGtTdGFydEhlaWdodAIMc3RhcnRfaGVpZ2h0AAtrQmFzZVBlcmlvZAILYmFzZV9wZXJpb2QADWtQZXJpb2RMZW5ndGgCDXBlcmlvZF9sZW5ndGgADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMADGtGYXJtaW5nQWRkcgIPZmFybWluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzABprUG9vbEZpcnN0SGFydmVzdEVuZEhlaWdodAIUZmlyc3RfaGFydmVzdF9oZWlnaHQACmtQb29sU3RydWMCC19wb29sX3N0cnVjAA5rVXNlclBvb2xTdHJ1YwIQX3VzZXJfcG9vbF9zdHJ1YwAPa1VzZXJUb3RhbFN0cnVjAhFfdXNlcl90b3RhbF9zdHJ1YwALa1RvdGFsU3RydWMCC3RvdGFsX3N0cnVjABtrSGFydmVzdFBvb2xBY3RpdmVWb3RlU3RydWMCHl9oYXJ2ZXN0X3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAfa0hhcnZlc3RVc2VyUG9vbEFjdGl2ZVZvdGVTdHJ1YwIjX2hhcnZlc3RfdXNlcl9wb29sX2FjdGl2ZVZvdGVfc3RydWMABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAGYWN0aXZlCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGAAphY3RpdmVHbG9iCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQUNa2V5QWN0aXZlR2xvYgYACmJhc2VQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQtrQmFzZVBlcmlvZAIRRW1wdHkga0Jhc2VQZXJpb2QAC3N0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUMa1N0YXJ0SGVpZ2h0AhJFbXB0eSBrU3RhcnRIZWlnaHQADHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFDWtQZXJpb2RMZW5ndGgCE0VtcHR5IGtQZXJpb2RMZW5ndGgBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMACmdvdkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwALZmFybWluZ0FkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRmFybWluZ0FkZHIACmN1cnJQZXJpb2QJAGQCBQpiYXNlUGVyaW9kCQBpAgkAZQIFBmhlaWdodAULc3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAEIaXNBY3RpdmUAAwMFBmFjdGl2ZQUKYWN0aXZlR2xvYgcFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEUaXNDYWxsZXJJbkdvdmVybmFuY2UBBHVzZXIJAGYCCQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgkApQgBBQR1c2VyAgxfU1dPUF9hbW91bnQAAAAAARJpc1Bvb2xJbkdvdmVybmFuY2UBC3Bvb2xBZGRyZXNzCQEJaXNEZWZpbmVkAQkAmggCBQpnb3ZBZGRyZXNzCQCsAgIFC3Bvb2xBZGRyZXNzAh1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAERZ2V0UG9vbERlcHJpY2F0ZWQBC3Bvb2xBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQkArAICBQ9rRGVwcmVjYXRlZFBvb2wFC3Bvb2xBZGRyZXNzBwEeZ2V0UG9vbEZpcnN0SGFydmVzdFN0YXJ0SGVpZ2h0AQtwb29sQWRkcmVzcwkAZQIJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBB0FkZHJlc3MBCQDZBAEFC3Bvb2xBZGRyZXNzBRprUG9vbEZpcnN0SGFydmVzdEVuZEhlaWdodAAABQxwZXJpb2RMZW5ndGgBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBD2NhbGNEZWxldGVFbnRyeQIGY2FsbGVyC3Bvb2xBZGRyZXNzCgEOZGVsZXRlSWZFeGlzdHMCBGxpc3QDa2V5AwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUDa2V5CQDNCAIFBGxpc3QJAQtEZWxldGVFbnRyeQEFA2tleQUEbGlzdAkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgUDbmlsCQCsAgIJAKwCAgkArAICBQZjYWxsZXICAV8FC3Bvb2xBZGRyZXNzBQ5rVXNlclBvb2xTdHJ1YwkArAICBQZjYWxsZXIFD2tVc2VyVG90YWxTdHJ1YwkArAICBQtwb29sQWRkcmVzcwUKa1Bvb2xTdHJ1YwULa1RvdGFsU3RydWMJAKwCAgULcG9vbEFkZHJlc3MFG2tIYXJ2ZXN0UG9vbEFjdGl2ZVZvdGVTdHJ1YwkArAICCQCsAgIJAKwCAgUGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUfa0hhcnZlc3RVc2VyUG9vbEFjdGl2ZVZvdGVTdHJ1YwMBaQEOdm90ZVBvb2xXZWlnaHQCC3Bvb2xBZGRyZXNzD3VzZXJQb29sVm90ZU5ldwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQEhAQkBEmlzUG9vbEluR292ZXJuYW5jZQEFC3Bvb2xBZGRyZXNzCQACAQIjVGhpcyBwb29sIGlzIG5vdCBpbiBHb3Zlcm5hbmNlIGRBcHAEFHVzZXJTV09QaW5Hb3Zlcm5hbmNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEIBQFpBmNhbGxlcgIMX1NXT1BfYW1vdW50AiJFbXB0eSBfU1dPUF9hbW91bnQgYXQgZ292LiBhZGRyZXNzBBV1c2VyR1NXT1BpbkdvdmVybmFuY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEIBQFpBmNhbGxlcgINX0dTd29wX2Ftb3VudAUUdXNlclNXT1BpbkdvdmVybmFuY2UEDHVzZXJQb29sVm90ZQMJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUOa1VzZXJQb29sU3RydWMJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8FC3Bvb2xBZGRyZXNzBQ5rVXNlclBvb2xTdHJ1YwIBXwAACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUNa1VzZXJQb29sVm90ZQAABA11c2VyVG90YWxWb3RlAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICCQClCAEIBQFpBmNhbGxlcgUPa1VzZXJUb3RhbFN0cnVjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEFdmFsdWUBCQCdCAIFBHRoaXMJAKwCAgkApQgBCAUBaQZjYWxsZXIFD2tVc2VyVG90YWxTdHJ1YwIBXwAACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApQgBCAUBaQZjYWxsZXIFDmtVc2VyVG90YWxWb3RlAAAECHBvb2xWb3RlAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICBQtwb29sQWRkcmVzcwUKa1Bvb2xTdHJ1YwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIFC3Bvb2xBZGRyZXNzBQprUG9vbFN0cnVjAgFfAAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQtwb29sQWRkcmVzcwUJa1Bvb2xWb3RlAAAECXRvdGFsVm90ZQMJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFC2tUb3RhbFN0cnVjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEFdmFsdWUBCQCdCAIFBHRoaXMFC2tUb3RhbFN0cnVjAgFfAAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUKa1RvdGFsVm90ZQAABAxwb29sVm90ZURpZmYJAGUCBQ91c2VyUG9vbFZvdGVOZXcFDHVzZXJQb29sVm90ZQQQdXNlclRvdGFsVm90ZU5ldwkAZAIFDXVzZXJUb3RhbFZvdGUFDHBvb2xWb3RlRGlmZgMDCQERZ2V0UG9vbERlcHJpY2F0ZWQBBQtwb29sQWRkcmVzcwkAZgIAAAUMcG9vbFZvdGVEaWZmBwkAAgECIllvdSBjYW4ndCB2b3RlIGZvciBkZXByZWNhdGVkIHBvb2wDCQBmAgUQdXNlclRvdGFsVm90ZU5ldwUVdXNlckdTV09QaW5Hb3Zlcm5hbmNlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIFIGhhcyAJAKQDAQUVdXNlckdTV09QaW5Hb3Zlcm5hbmNlAiogR1NXT1AgaW4gZ292ZXJuYW5jZS4gTmV3IEdTV09QIGluIHZvdGluZyAJAKQDAQUQdXNlclRvdGFsVm90ZU5ldwMJAGYCAAAFEHVzZXJUb3RhbFZvdGVOZXcJAAIBAhxOZXcgdXNlclRvdGFsVm90ZVNXT1BuZXcgPCAwAwkAZgIAAAUPdXNlclBvb2xWb3RlTmV3CQACAQIbTmV3IHVzZXJQb29sVm90ZVNXT1BuZXcgPCAwBA5yZW1vdmVQb29sVm90ZQkBAS0BBQxwb29sVm90ZURpZmYEC3Bvb2xWb3RlTmV3AwkAZwIFD3VzZXJQb29sVm90ZU5ldwUMdXNlclBvb2xWb3RlCQBkAgUIcG9vbFZvdGUFDHBvb2xWb3RlRGlmZgkAZQIFCHBvb2xWb3RlBQ5yZW1vdmVQb29sVm90ZQQMdG90YWxWb3RlTmV3AwkAZwIFD3VzZXJQb29sVm90ZU5ldwUMdXNlclBvb2xWb3RlCQBkAgUJdG90YWxWb3RlBQxwb29sVm90ZURpZmYJAGUCBQl0b3RhbFZvdGUFDnJlbW92ZVBvb2xWb3RlAwMJAGYCAAAFC3Bvb2xWb3RlTmV3BgkAZgIAAAUMdG90YWxWb3RlTmV3CQACAQIfT25lIG9yIG1vcmUgdmFsdWVzIGFyZSBuZWdhdGl2ZQQOaGFydmVzdEVudHJpZXMDCQBmAgkBHmdldFBvb2xGaXJzdEhhcnZlc3RTdGFydEhlaWdodAEFC3Bvb2xBZGRyZXNzBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgULcG9vbEFkZHJlc3MFEGtIYXJ2ZXN0UG9vbFZvdGUFC3Bvb2xWb3RlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwULcG9vbEFkZHJlc3MFFGtIYXJ2ZXN0VXNlclBvb2xWb3RlBQ91c2VyUG9vbFZvdGVOZXcFA25pbAUDbmlsBAd1cFVJbnRyCQD8BwQFC2Zhcm1pbmdBZGRyAhd1cGRhdGVVc2VyQm9vc3RJbnRlcmVzdAkAzAgCBQtwb29sQWRkcmVzcwkAzAgCCQClCAEIBQFpBmNhbGxlcgUDbmlsBQNuaWwDCQAAAgUHdXBVSW50cgUHdXBVSW50cgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUNa1VzZXJQb29sVm90ZQUPdXNlclBvb2xWb3RlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQ5rVXNlclRvdGFsVm90ZQUQdXNlclRvdGFsVm90ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQtwb29sQWRkcmVzcwUJa1Bvb2xWb3RlBQtwb29sVm90ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUKa1RvdGFsVm90ZQUMdG90YWxWb3RlTmV3BQNuaWwJAQ9jYWxjRGVsZXRlRW50cnkCCQClCAEIBQFpBmNhbGxlcgULcG9vbEFkZHJlc3MFDmhhcnZlc3RFbnRyaWVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHNodXRkb3duAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQUGYWN0aXZlCQACAQkArAICAiJEQXBwIGlzIGFscmVhZHkgc3VzcGVuZGVkLiBDYXVzZTogCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFBmtDYXVzZQIadGhlIGNhdXNlIHdhc24ndCBzcGVjaWZpZWQJAQdzdXNwZW5kAQIPUGF1c2VkIGJ5IGFkbWluAWkBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMFBmFjdGl2ZQkAAgECFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAQtEZWxldGVFbnRyeQEFBmtDYXVzZQUDbmlsAQJ0eAEGdmVyaWZ5AAQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACeGxASw==", "height": 2411842, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Fqj6uWC9eK7VDxUzznFuWSET2paGFLyG25811mqBD9ZH Next: AGzbwjMVHDyxQdNXRKBtKBzpP7DbJVXC9FH9xv4cTDNk Diff:
OldNewDifferences
44 let kActive = "active"
55
66 let keyActiveGlob = "active_all_contracts"
7+
8+let kDeprecatedPool = "deprecated_"
79
810 let kCause = "shutdown_cause"
911
99101 func isPoolInGovernance (poolAddress) = isDefined(getInteger(govAddress, (poolAddress + "_current_pool_fraction_reward")))
100102
101103
104+func getPoolDepricated (poolAddress) = valueOrElse(getBoolean(oracle, (kDeprecatedPool + poolAddress)), false)
105+
106+
102107 func getPoolFirstHarvestStartHeight (poolAddress) = (valueOrElse(getInteger(Address(fromBase58String(poolAddress)), kPoolFirstHarvestEndHeight), 0) - periodLength)
103108
104109
134139 else valueOrElse(getInteger(this, kTotalVote), 0)
135140 let poolVoteDiff = (userPoolVoteNew - userPoolVote)
136141 let userTotalVoteNew = (userTotalVote + poolVoteDiff)
137- if ((userTotalVoteNew > userGSWOPinGovernance))
138- then throw(((((toString(i.caller) + " has ") + toString(userGSWOPinGovernance)) + " GSWOP in governance. New GSWOP in voting ") + toString(userTotalVoteNew)))
139- else if ((0 > userTotalVoteNew))
140- then throw("New userTotalVoteSWOPnew < 0")
141- else if ((0 > userPoolVoteNew))
142- then throw("New userPoolVoteSWOPnew < 0")
143- else {
144- let removePoolVote = -(poolVoteDiff)
145- let poolVoteNew = if ((userPoolVoteNew >= userPoolVote))
146- then (poolVote + poolVoteDiff)
147- else (poolVote - removePoolVote)
148- let totalVoteNew = if ((userPoolVoteNew >= userPoolVote))
149- then (totalVote + poolVoteDiff)
150- else (totalVote - removePoolVote)
151- if (if ((0 > poolVoteNew))
152- then true
153- else (0 > totalVoteNew))
154- then throw("One or more values are negative")
155- else {
156- let harvestEntries = if ((height > getPoolFirstHarvestStartHeight(poolAddress)))
157- then [IntegerEntry((poolAddress + kHarvestPoolVote), poolVoteNew), IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kHarvestUserPoolVote), userPoolVoteNew)]
158- else nil
159- let upUIntr = invoke(farmingAddr, "updateUserBoostInterest", [poolAddress, toString(i.caller)], nil)
160- if ((upUIntr == upUIntr))
161- then (([IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kUserPoolVote), userPoolVoteNew), IntegerEntry((toString(i.caller) + kUserTotalVote), userTotalVoteNew), IntegerEntry((poolAddress + kPoolVote), poolVoteNew), IntegerEntry(kTotalVote, totalVoteNew)] ++ calcDeleteEntry(toString(i.caller), poolAddress)) ++ harvestEntries)
162- else throw("Strict value is not equal to itself.")
163- }
164- }
142+ if (if (getPoolDepricated(poolAddress))
143+ then (0 > poolVoteDiff)
144+ else false)
145+ then throw("You can't vote for deprecated pool")
146+ else if ((userTotalVoteNew > userGSWOPinGovernance))
147+ then throw(((((toString(i.caller) + " has ") + toString(userGSWOPinGovernance)) + " GSWOP in governance. New GSWOP in voting ") + toString(userTotalVoteNew)))
148+ else if ((0 > userTotalVoteNew))
149+ then throw("New userTotalVoteSWOPnew < 0")
150+ else if ((0 > userPoolVoteNew))
151+ then throw("New userPoolVoteSWOPnew < 0")
152+ else {
153+ let removePoolVote = -(poolVoteDiff)
154+ let poolVoteNew = if ((userPoolVoteNew >= userPoolVote))
155+ then (poolVote + poolVoteDiff)
156+ else (poolVote - removePoolVote)
157+ let totalVoteNew = if ((userPoolVoteNew >= userPoolVote))
158+ then (totalVote + poolVoteDiff)
159+ else (totalVote - removePoolVote)
160+ if (if ((0 > poolVoteNew))
161+ then true
162+ else (0 > totalVoteNew))
163+ then throw("One or more values are negative")
164+ else {
165+ let harvestEntries = if ((getPoolFirstHarvestStartHeight(poolAddress) > height))
166+ then [IntegerEntry((poolAddress + kHarvestPoolVote), poolVoteNew), IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kHarvestUserPoolVote), userPoolVoteNew)]
167+ else nil
168+ let upUIntr = invoke(farmingAddr, "updateUserBoostInterest", [poolAddress, toString(i.caller)], nil)
169+ if ((upUIntr == upUIntr))
170+ then (([IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kUserPoolVote), userPoolVoteNew), IntegerEntry((toString(i.caller) + kUserTotalVote), userTotalVoteNew), IntegerEntry((poolAddress + kPoolVote), poolVoteNew), IntegerEntry(kTotalVote, totalVoteNew)] ++ calcDeleteEntry(toString(i.caller), poolAddress)) ++ harvestEntries)
171+ else throw("Strict value is not equal to itself.")
172+ }
173+ }
165174 })
166175
167176
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let kActive = "active"
55
66 let keyActiveGlob = "active_all_contracts"
7+
8+let kDeprecatedPool = "deprecated_"
79
810 let kCause = "shutdown_cause"
911
1012 let kUserPoolVote = "_user_vote_gSWOP"
1113
1214 let kUserTotalVote = "_user_total_vote_gSWOP"
1315
1416 let kPoolVote = "_pool_vote_gSWOP"
1517
1618 let kTotalVote = "total_vote_gSWOP"
1719
1820 let kHarvestPoolVote = "_harvest_pool_vote_gSWOP"
1921
2022 let kHarvestUserPoolVote = "_harvest_user_pool_vote_gSWOP"
2123
2224 let kStartHeight = "start_height"
2325
2426 let kBasePeriod = "base_period"
2527
2628 let kPeriodLength = "period_length"
2729
2830 let kAdminPubKey1 = "admin_pub_1"
2931
3032 let kAdminPubKey2 = "admin_pub_2"
3133
3234 let kAdminPubKey3 = "admin_pub_3"
3335
3436 let kFarmingAddr = "farming_address"
3537
3638 let kGovAddress = "governance_address"
3739
3840 let kPoolFirstHarvestEndHeight = "first_harvest_height"
3941
4042 let kPoolStruc = "_pool_struc"
4143
4244 let kUserPoolStruc = "_user_pool_struc"
4345
4446 let kUserTotalStruc = "_user_total_struc"
4547
4648 let kTotalStruc = "total_struc"
4749
4850 let kHarvestPoolActiveVoteStruc = "_harvest_pool_activeVote_struc"
4951
5052 let kHarvestUserPoolActiveVoteStruc = "_harvest_user_pool_activeVote_struc"
5153
5254 let oracle = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
5355
5456 let active = valueOrElse(getBoolean(this, kActive), true)
5557
5658 let activeGlob = valueOrElse(getBoolean(oracle, keyActiveGlob), true)
5759
5860 let basePeriod = valueOrErrorMessage(getInteger(this, kBasePeriod), "Empty kBasePeriod")
5961
6062 let startHeight = valueOrErrorMessage(getInteger(this, kStartHeight), "Empty kStartHeight")
6163
6264 let periodLength = valueOrErrorMessage(getInteger(this, kPeriodLength), "Empty kPeriodLength")
6365
6466 func getBase58FromOracle (key) = match getString(oracle, key) {
6567 case string: String =>
6668 fromBase58String(string)
6769 case nothing =>
6870 throw((key + "is empty"))
6971 }
7072
7173
7274 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
7375
7476 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
7577
7678 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
7779
7880 let govAddress = Address(getBase58FromOracle(kGovAddress))
7981
8082 let farmingAddr = Address(getBase58FromOracle(kFarmingAddr))
8183
8284 let currPeriod = (basePeriod + ((height - startHeight) / periodLength))
8385
8486 func isActive () = if (if (active)
8587 then activeGlob
8688 else false)
8789 then unit
8890 else throw("DApp is inactive at this moment")
8991
9092
9193 func isAdminCall (i) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
9294 then unit
9395 else throw("Only admin can call this function")
9496
9597
9698 func isCallerInGovernance (user) = (valueOrElse(getInteger(govAddress, (toString(user) + "_SWOP_amount")), 0) > 0)
9799
98100
99101 func isPoolInGovernance (poolAddress) = isDefined(getInteger(govAddress, (poolAddress + "_current_pool_fraction_reward")))
100102
101103
104+func getPoolDepricated (poolAddress) = valueOrElse(getBoolean(oracle, (kDeprecatedPool + poolAddress)), false)
105+
106+
102107 func getPoolFirstHarvestStartHeight (poolAddress) = (valueOrElse(getInteger(Address(fromBase58String(poolAddress)), kPoolFirstHarvestEndHeight), 0) - periodLength)
103108
104109
105110 func suspend (cause) = [BooleanEntry(kActive, false), StringEntry(kCause, cause)]
106111
107112
108113 func calcDeleteEntry (caller,poolAddress) = {
109114 func deleteIfExists (list,key) = if (isDefined(getString(this, key)))
110115 then (list :+ DeleteEntry(key))
111116 else list
112117
113118 deleteIfExists(deleteIfExists(deleteIfExists(deleteIfExists(deleteIfExists(deleteIfExists(nil, (((caller + "_") + poolAddress) + kUserPoolStruc)), (caller + kUserTotalStruc)), (poolAddress + kPoolStruc)), kTotalStruc), (poolAddress + kHarvestPoolActiveVoteStruc)), (((caller + "_") + poolAddress) + kHarvestUserPoolActiveVoteStruc))
114119 }
115120
116121
117122 @Callable(i)
118123 func votePoolWeight (poolAddress,userPoolVoteNew) = valueOrElse(isActive(), if (!(isPoolInGovernance(poolAddress)))
119124 then throw("This pool is not in Governance dApp")
120125 else {
121126 let userSWOPinGovernance = valueOrErrorMessage(getInteger(govAddress, (toString(i.caller) + "_SWOP_amount")), "Empty _SWOP_amount at gov. address")
122127 let userGSWOPinGovernance = valueOrElse(getInteger(govAddress, (toString(i.caller) + "_GSwop_amount")), userSWOPinGovernance)
123128 let userPoolVote = if (isDefined(getString(this, (((toString(i.caller) + "_") + poolAddress) + kUserPoolStruc))))
124129 then parseIntValue(split(value(getString(this, (((toString(i.caller) + "_") + poolAddress) + kUserPoolStruc))), "_")[0])
125130 else valueOrElse(getInteger(this, (((toString(i.caller) + "_") + poolAddress) + kUserPoolVote)), 0)
126131 let userTotalVote = if (isDefined(getString(this, (toString(i.caller) + kUserTotalStruc))))
127132 then parseIntValue(split(value(getString(this, (toString(i.caller) + kUserTotalStruc))), "_")[0])
128133 else valueOrElse(getInteger(this, (toString(i.caller) + kUserTotalVote)), 0)
129134 let poolVote = if (isDefined(getString(this, (poolAddress + kPoolStruc))))
130135 then parseIntValue(split(value(getString(this, (poolAddress + kPoolStruc))), "_")[0])
131136 else valueOrElse(getInteger(this, (poolAddress + kPoolVote)), 0)
132137 let totalVote = if (isDefined(getString(this, kTotalStruc)))
133138 then parseIntValue(split(value(getString(this, kTotalStruc)), "_")[0])
134139 else valueOrElse(getInteger(this, kTotalVote), 0)
135140 let poolVoteDiff = (userPoolVoteNew - userPoolVote)
136141 let userTotalVoteNew = (userTotalVote + poolVoteDiff)
137- if ((userTotalVoteNew > userGSWOPinGovernance))
138- then throw(((((toString(i.caller) + " has ") + toString(userGSWOPinGovernance)) + " GSWOP in governance. New GSWOP in voting ") + toString(userTotalVoteNew)))
139- else if ((0 > userTotalVoteNew))
140- then throw("New userTotalVoteSWOPnew < 0")
141- else if ((0 > userPoolVoteNew))
142- then throw("New userPoolVoteSWOPnew < 0")
143- else {
144- let removePoolVote = -(poolVoteDiff)
145- let poolVoteNew = if ((userPoolVoteNew >= userPoolVote))
146- then (poolVote + poolVoteDiff)
147- else (poolVote - removePoolVote)
148- let totalVoteNew = if ((userPoolVoteNew >= userPoolVote))
149- then (totalVote + poolVoteDiff)
150- else (totalVote - removePoolVote)
151- if (if ((0 > poolVoteNew))
152- then true
153- else (0 > totalVoteNew))
154- then throw("One or more values are negative")
155- else {
156- let harvestEntries = if ((height > getPoolFirstHarvestStartHeight(poolAddress)))
157- then [IntegerEntry((poolAddress + kHarvestPoolVote), poolVoteNew), IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kHarvestUserPoolVote), userPoolVoteNew)]
158- else nil
159- let upUIntr = invoke(farmingAddr, "updateUserBoostInterest", [poolAddress, toString(i.caller)], nil)
160- if ((upUIntr == upUIntr))
161- then (([IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kUserPoolVote), userPoolVoteNew), IntegerEntry((toString(i.caller) + kUserTotalVote), userTotalVoteNew), IntegerEntry((poolAddress + kPoolVote), poolVoteNew), IntegerEntry(kTotalVote, totalVoteNew)] ++ calcDeleteEntry(toString(i.caller), poolAddress)) ++ harvestEntries)
162- else throw("Strict value is not equal to itself.")
163- }
164- }
142+ if (if (getPoolDepricated(poolAddress))
143+ then (0 > poolVoteDiff)
144+ else false)
145+ then throw("You can't vote for deprecated pool")
146+ else if ((userTotalVoteNew > userGSWOPinGovernance))
147+ then throw(((((toString(i.caller) + " has ") + toString(userGSWOPinGovernance)) + " GSWOP in governance. New GSWOP in voting ") + toString(userTotalVoteNew)))
148+ else if ((0 > userTotalVoteNew))
149+ then throw("New userTotalVoteSWOPnew < 0")
150+ else if ((0 > userPoolVoteNew))
151+ then throw("New userPoolVoteSWOPnew < 0")
152+ else {
153+ let removePoolVote = -(poolVoteDiff)
154+ let poolVoteNew = if ((userPoolVoteNew >= userPoolVote))
155+ then (poolVote + poolVoteDiff)
156+ else (poolVote - removePoolVote)
157+ let totalVoteNew = if ((userPoolVoteNew >= userPoolVote))
158+ then (totalVote + poolVoteDiff)
159+ else (totalVote - removePoolVote)
160+ if (if ((0 > poolVoteNew))
161+ then true
162+ else (0 > totalVoteNew))
163+ then throw("One or more values are negative")
164+ else {
165+ let harvestEntries = if ((getPoolFirstHarvestStartHeight(poolAddress) > height))
166+ then [IntegerEntry((poolAddress + kHarvestPoolVote), poolVoteNew), IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kHarvestUserPoolVote), userPoolVoteNew)]
167+ else nil
168+ let upUIntr = invoke(farmingAddr, "updateUserBoostInterest", [poolAddress, toString(i.caller)], nil)
169+ if ((upUIntr == upUIntr))
170+ then (([IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kUserPoolVote), userPoolVoteNew), IntegerEntry((toString(i.caller) + kUserTotalVote), userTotalVoteNew), IntegerEntry((poolAddress + kPoolVote), poolVoteNew), IntegerEntry(kTotalVote, totalVoteNew)] ++ calcDeleteEntry(toString(i.caller), poolAddress)) ++ harvestEntries)
171+ else throw("Strict value is not equal to itself.")
172+ }
173+ }
165174 })
166175
167176
168177
169178 @Callable(i)
170179 func shutdown () = valueOrElse(isAdminCall(i), if (!(active))
171180 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, kCause), "the cause wasn't specified")))
172181 else suspend("Paused by admin"))
173182
174183
175184
176185 @Callable(i)
177186 func activate () = valueOrElse(isAdminCall(i), if (active)
178187 then throw("DApp is already active")
179188 else [BooleanEntry(kActive, true), DeleteEntry(kCause)])
180189
181190
182191 @Verifier(tx)
183192 func verify () = {
184193 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
185194 then 1
186195 else 0
187196 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
188197 then 1
189198 else 0
190199 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
191200 then 1
192201 else 0
193202 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
194203 }
195204

github/deemru/w8io/873ac7e 
32.07 ms