tx · 7E4MPk4bu9PG3WxV7cnCFKtH54d2R21vRfhrYaKuFdg9

3NBZkTq4XgvS9cWHQPutnUm3C1ZS4tDMqJa:  -0.01100000 Waves

2023.01.24 14:00 [2418956] smart account 3NBZkTq4XgvS9cWHQPutnUm3C1ZS4tDMqJa > SELF 0.00000000 Waves

{ "type": 13, "id": "7E4MPk4bu9PG3WxV7cnCFKtH54d2R21vRfhrYaKuFdg9", "fee": 1100000, "feeAssetId": null, "timestamp": 1674558102135, "version": 2, "chainId": 84, "sender": "3NBZkTq4XgvS9cWHQPutnUm3C1ZS4tDMqJa", "senderPublicKey": "HJ4MXkC5hCwrUSxdnzS5VVpQGe5zYXcUVukdiKcGNVnV", "proofs": [ "5VB1WTr3oDryMsiEjwWnkQWXoXtURu5he4yUniKRuStDmuBPvcJjumynENn4wqvzmpEbGA1UuAZKzVbcB6SVFRG", "27KTqbwGm3SCtLkNZo5BtX7XX5n7eqxy33f36XioCqHEpDA5HLQnqM1XuBcW8A5zBPd9n3u5t8QuYarE4GUH8G8d" ], "script": "base64:BgIMCAISBAoCCAESABIALgAHa0FjdGl2ZQIGYWN0aXZlAA1rZXlBY3RpdmVHbG9iAhRhY3RpdmVfYWxsX2NvbnRyYWN0cwAPa0RlcHJlY2F0ZWRQb29sAgtkZXByZWNhdGVkXwAGa0NhdXNlAg5zaHV0ZG93bl9jYXVzZQANa1VzZXJQb29sVm90ZQIQX3VzZXJfdm90ZV9nU1dPUAAOa1VzZXJUb3RhbFZvdGUCFl91c2VyX3RvdGFsX3ZvdGVfZ1NXT1AACWtQb29sVm90ZQIQX3Bvb2xfdm90ZV9nU1dPUAAKa1RvdGFsVm90ZQIQdG90YWxfdm90ZV9nU1dPUAAQa0hhcnZlc3RQb29sVm90ZQIYX2hhcnZlc3RfcG9vbF92b3RlX2dTV09QABRrSGFydmVzdFVzZXJQb29sVm90ZQIdX2hhcnZlc3RfdXNlcl9wb29sX3ZvdGVfZ1NXT1AADGtTdGFydEhlaWdodAIMc3RhcnRfaGVpZ2h0AAtrQmFzZVBlcmlvZAILYmFzZV9wZXJpb2QADWtQZXJpb2RMZW5ndGgCDXBlcmlvZF9sZW5ndGgADWtBZG1pblB1YktleTECC2FkbWluX3B1Yl8xAA1rQWRtaW5QdWJLZXkyAgthZG1pbl9wdWJfMgANa0FkbWluUHViS2V5MwILYWRtaW5fcHViXzMADGtGYXJtaW5nQWRkcgIPZmFybWluZ19hZGRyZXNzAAtrR292QWRkcmVzcwISZ292ZXJuYW5jZV9hZGRyZXNzABprUG9vbEZpcnN0SGFydmVzdEVuZEhlaWdodAIUZmlyc3RfaGFydmVzdF9oZWlnaHQACmtQb29sU3RydWMCC19wb29sX3N0cnVjAA5rVXNlclBvb2xTdHJ1YwIQX3VzZXJfcG9vbF9zdHJ1YwAPa1VzZXJUb3RhbFN0cnVjAhFfdXNlcl90b3RhbF9zdHJ1YwALa1RvdGFsU3RydWMCC3RvdGFsX3N0cnVjABtrSGFydmVzdFBvb2xBY3RpdmVWb3RlU3RydWMCHl9oYXJ2ZXN0X3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAfa0hhcnZlc3RVc2VyUG9vbEFjdGl2ZVZvdGVTdHJ1YwIjX2hhcnZlc3RfdXNlcl9wb29sX2FjdGl2ZVZvdGVfc3RydWMABm9yYWNsZQkBB0FkZHJlc3MBARoBVEgTlwzA0zPMJTKAtin3p2RogKvjzHtLmQAGYWN0aXZlCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFB2tBY3RpdmUGAAphY3RpdmVHbG9iCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQUNa2V5QWN0aXZlR2xvYgYACmJhc2VQZXJpb2QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQtrQmFzZVBlcmlvZAIRRW1wdHkga0Jhc2VQZXJpb2QAC3N0YXJ0SGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUEdGhpcwUMa1N0YXJ0SGVpZ2h0AhJFbXB0eSBrU3RhcnRIZWlnaHQADHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFDWtQZXJpb2RMZW5ndGgCE0VtcHR5IGtQZXJpb2RMZW5ndGgBE2dldEJhc2U1OEZyb21PcmFjbGUBA2tleQQHJG1hdGNoMAkAnQgCBQZvcmFjbGUFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEBnN0cmluZwUHJG1hdGNoMAkA2QQBBQZzdHJpbmcEB25vdGhpbmcFByRtYXRjaDAJAAIBCQCsAgIFA2tleQIIaXMgZW1wdHkADGFkbWluUHViS2V5MQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQ1rQWRtaW5QdWJLZXkxAAxhZG1pblB1YktleTIJARNnZXRCYXNlNThGcm9tT3JhY2xlAQUNa0FkbWluUHViS2V5MgAMYWRtaW5QdWJLZXkzCQETZ2V0QmFzZTU4RnJvbU9yYWNsZQEFDWtBZG1pblB1YktleTMACmdvdkFkZHJlc3MJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQtrR292QWRkcmVzcwALZmFybWluZ0FkZHIJAQdBZGRyZXNzAQkBE2dldEJhc2U1OEZyb21PcmFjbGUBBQxrRmFybWluZ0FkZHIACmN1cnJQZXJpb2QJAGQCBQpiYXNlUGVyaW9kCQBpAgkAZQIFBmhlaWdodAULc3RhcnRIZWlnaHQFDHBlcmlvZExlbmd0aAEIaXNBY3RpdmUAAwMFBmFjdGl2ZQUKYWN0aXZlR2xvYgcFBHVuaXQJAAIBAh9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AQtpc0FkbWluQ2FsbAEBaQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGFkbWluUHViS2V5MQkAzAgCBQxhZG1pblB1YktleTIJAMwIAgUMYWRtaW5QdWJLZXkzBQNuaWwIBQFpD2NhbGxlclB1YmxpY0tleQUEdW5pdAkAAgECIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgEUaXNDYWxsZXJJbkdvdmVybmFuY2UBBHVzZXIJAGYCCQELdmFsdWVPckVsc2UCCQCaCAIFCmdvdkFkZHJlc3MJAKwCAgkApQgBBQR1c2VyAgxfU1dPUF9hbW91bnQAAAAAARJpc1Bvb2xJbkdvdmVybmFuY2UBC3Bvb2xBZGRyZXNzCQEJaXNEZWZpbmVkAQkAmggCBQpnb3ZBZGRyZXNzCQCsAgIFC3Bvb2xBZGRyZXNzAh1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAERZ2V0UG9vbERlcHJpY2F0ZWQBC3Bvb2xBZGRyZXNzCQELdmFsdWVPckVsc2UCCQCbCAIFBm9yYWNsZQkArAICBQ9rRGVwcmVjYXRlZFBvb2wFC3Bvb2xBZGRyZXNzBwEeZ2V0UG9vbEZpcnN0SGFydmVzdFN0YXJ0SGVpZ2h0AQtwb29sQWRkcmVzcwkAZQIJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBB0FkZHJlc3MBCQDZBAEFC3Bvb2xBZGRyZXNzBRprUG9vbEZpcnN0SGFydmVzdEVuZEhlaWdodAAABQxwZXJpb2RMZW5ndGgBB3N1c3BlbmQBBWNhdXNlCQDMCAIJAQxCb29sZWFuRW50cnkCBQdrQWN0aXZlBwkAzAgCCQELU3RyaW5nRW50cnkCBQZrQ2F1c2UFBWNhdXNlBQNuaWwBD2NhbGNEZWxldGVFbnRyeQIGY2FsbGVyC3Bvb2xBZGRyZXNzCgEOZGVsZXRlSWZFeGlzdHMCBGxpc3QDa2V5AwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwUDa2V5CQDNCAIFBGxpc3QJAQtEZWxldGVFbnRyeQEFA2tleQUEbGlzdAkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgkBDmRlbGV0ZUlmRXhpc3RzAgUDbmlsCQCsAgIJAKwCAgkArAICBQZjYWxsZXICAV8FC3Bvb2xBZGRyZXNzBQ5rVXNlclBvb2xTdHJ1YwkArAICBQZjYWxsZXIFD2tVc2VyVG90YWxTdHJ1YwkArAICBQtwb29sQWRkcmVzcwUKa1Bvb2xTdHJ1YwULa1RvdGFsU3RydWMJAKwCAgULcG9vbEFkZHJlc3MFG2tIYXJ2ZXN0UG9vbEFjdGl2ZVZvdGVTdHJ1YwkArAICCQCsAgIJAKwCAgUGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUfa0hhcnZlc3RVc2VyUG9vbEFjdGl2ZVZvdGVTdHJ1YwMBaQEOdm90ZVBvb2xXZWlnaHQCC3Bvb2xBZGRyZXNzD3VzZXJQb29sVm90ZU5ldwkBC3ZhbHVlT3JFbHNlAgkBCGlzQWN0aXZlAAMJAQEhAQkBEmlzUG9vbEluR292ZXJuYW5jZQEFC3Bvb2xBZGRyZXNzCQACAQIjVGhpcyBwb29sIGlzIG5vdCBpbiBHb3Zlcm5hbmNlIGRBcHAEFHVzZXJTV09QaW5Hb3Zlcm5hbmNlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEIBQFpBmNhbGxlcgIMX1NXT1BfYW1vdW50AiJFbXB0eSBfU1dPUF9hbW91bnQgYXQgZ292LiBhZGRyZXNzBBV1c2VyR1NXT1BpbkdvdmVybmFuY2UJAQt2YWx1ZU9yRWxzZQIJAJoIAgUKZ292QWRkcmVzcwkArAICCQClCAEIBQFpBmNhbGxlcgINX0dTd29wX2Ftb3VudAUUdXNlclNXT1BpbkdvdmVybmFuY2UEDHVzZXJQb29sVm90ZQMJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUOa1VzZXJQb29sU3RydWMJAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIJAQV2YWx1ZQEJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXICAV8FC3Bvb2xBZGRyZXNzBQ5rVXNlclBvb2xTdHJ1YwIBXwAACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUNa1VzZXJQb29sVm90ZQAABA11c2VyVG90YWxWb3RlAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICCQClCAEIBQFpBmNhbGxlcgUPa1VzZXJUb3RhbFN0cnVjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEFdmFsdWUBCQCdCAIFBHRoaXMJAKwCAgkApQgBCAUBaQZjYWxsZXIFD2tVc2VyVG90YWxTdHJ1YwIBXwAACQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAKwCAgkApQgBCAUBaQZjYWxsZXIFDmtVc2VyVG90YWxWb3RlAAAECHBvb2xWb3RlAwkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkArAICBQtwb29sQWRkcmVzcwUKa1Bvb2xTdHJ1YwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkBBXZhbHVlAQkAnQgCBQR0aGlzCQCsAgIFC3Bvb2xBZGRyZXNzBQprUG9vbFN0cnVjAgFfAAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkArAICBQtwb29sQWRkcmVzcwUJa1Bvb2xWb3RlAAAECXRvdGFsVm90ZQMJAQlpc0RlZmluZWQBCQCdCAIFBHRoaXMFC2tUb3RhbFN0cnVjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgkAtQkCCQEFdmFsdWUBCQCdCAIFBHRoaXMFC2tUb3RhbFN0cnVjAgFfAAAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUKa1RvdGFsVm90ZQAABAxwb29sVm90ZURpZmYJAGUCBQ91c2VyUG9vbFZvdGVOZXcFDHVzZXJQb29sVm90ZQQQdXNlclRvdGFsVm90ZU5ldwkAZAIFDXVzZXJUb3RhbFZvdGUFDHBvb2xWb3RlRGlmZgMDCQERZ2V0UG9vbERlcHJpY2F0ZWQBBQtwb29sQWRkcmVzcwkAZgIFDHBvb2xWb3RlRGlmZgAABwkAAgECIllvdSBjYW4ndCB2b3RlIGZvciBkZXByZWNhdGVkIHBvb2wDCQBmAgUQdXNlclRvdGFsVm90ZU5ldwUVdXNlckdTV09QaW5Hb3Zlcm5hbmNlCQACAQkArAICCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIFIGhhcyAJAKQDAQUVdXNlckdTV09QaW5Hb3Zlcm5hbmNlAiogR1NXT1AgaW4gZ292ZXJuYW5jZS4gTmV3IEdTV09QIGluIHZvdGluZyAJAKQDAQUQdXNlclRvdGFsVm90ZU5ldwMJAGYCAAAFEHVzZXJUb3RhbFZvdGVOZXcJAAIBAhxOZXcgdXNlclRvdGFsVm90ZVNXT1BuZXcgPCAwAwkAZgIAAAUPdXNlclBvb2xWb3RlTmV3CQACAQIbTmV3IHVzZXJQb29sVm90ZVNXT1BuZXcgPCAwBA5yZW1vdmVQb29sVm90ZQkBAS0BBQxwb29sVm90ZURpZmYEC3Bvb2xWb3RlTmV3AwkAZwIFD3VzZXJQb29sVm90ZU5ldwUMdXNlclBvb2xWb3RlCQBkAgUIcG9vbFZvdGUFDHBvb2xWb3RlRGlmZgkAZQIFCHBvb2xWb3RlBQ5yZW1vdmVQb29sVm90ZQQMdG90YWxWb3RlTmV3AwkAZwIFD3VzZXJQb29sVm90ZU5ldwUMdXNlclBvb2xWb3RlCQBkAgUJdG90YWxWb3RlBQxwb29sVm90ZURpZmYJAGUCBQl0b3RhbFZvdGUFDnJlbW92ZVBvb2xWb3RlAwMJAGYCAAAFC3Bvb2xWb3RlTmV3BgkAZgIAAAUMdG90YWxWb3RlTmV3CQACAQIfT25lIG9yIG1vcmUgdmFsdWVzIGFyZSBuZWdhdGl2ZQQOaGFydmVzdEVudHJpZXMDCQBmAgkBHmdldFBvb2xGaXJzdEhhcnZlc3RTdGFydEhlaWdodAEFC3Bvb2xBZGRyZXNzBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgULcG9vbEFkZHJlc3MFEGtIYXJ2ZXN0UG9vbFZvdGUFC3Bvb2xWb3RlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgIBXwULcG9vbEFkZHJlc3MFFGtIYXJ2ZXN0VXNlclBvb2xWb3RlBQ91c2VyUG9vbFZvdGVOZXcFA25pbAUDbmlsBAd1cFVJbnRyCQD8BwQFC2Zhcm1pbmdBZGRyAhd1cGRhdGVVc2VyQm9vc3RJbnRlcmVzdAkAzAgCBQtwb29sQWRkcmVzcwkAzAgCCQClCAEIBQFpBmNhbGxlcgUDbmlsBQNuaWwDCQAAAgUHdXBVSW50cgUHdXBVSW50cgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyAgFfBQtwb29sQWRkcmVzcwUNa1VzZXJQb29sVm90ZQUPdXNlclBvb2xWb3RlTmV3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQ5rVXNlclRvdGFsVm90ZQUQdXNlclRvdGFsVm90ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICBQtwb29sQWRkcmVzcwUJa1Bvb2xWb3RlBQtwb29sVm90ZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUKa1RvdGFsVm90ZQUMdG90YWxWb3RlTmV3BQNuaWwJAQ9jYWxjRGVsZXRlRW50cnkCCQClCAEIBQFpBmNhbGxlcgULcG9vbEFkZHJlc3MFDmhhcnZlc3RFbnRyaWVzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCHNodXRkb3duAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMJAQEhAQUGYWN0aXZlCQACAQkArAICAiJEQXBwIGlzIGFscmVhZHkgc3VzcGVuZGVkLiBDYXVzZTogCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFBmtDYXVzZQIadGhlIGNhdXNlIHdhc24ndCBzcGVjaWZpZWQJAQdzdXNwZW5kAQIPUGF1c2VkIGJ5IGFkbWluAWkBCGFjdGl2YXRlAAkBC3ZhbHVlT3JFbHNlAgkBC2lzQWRtaW5DYWxsAQUBaQMFBmFjdGl2ZQkAAgECFkRBcHAgaXMgYWxyZWFkeSBhY3RpdmUJAMwIAgkBDEJvb2xlYW5FbnRyeQIFB2tBY3RpdmUGCQDMCAIJAQtEZWxldGVFbnRyeQEFBmtDYXVzZQUDbmlsAQJ0eAEGdmVyaWZ5AAQSYWRtaW5QdWJLZXkxU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUMYWRtaW5QdWJLZXkxAAEAAAQSYWRtaW5QdWJLZXkyU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAQUMYWRtaW5QdWJLZXkyAAEAAAQSYWRtaW5QdWJLZXkzU2lnbmVkAwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAgUMYWRtaW5QdWJLZXkzAAEAAAkAZwIJAGQCCQBkAgUSYWRtaW5QdWJLZXkxU2lnbmVkBRJhZG1pblB1YktleTJTaWduZWQFEmFkbWluUHViS2V5M1NpZ25lZAACrKR79A==", "height": 2418956, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DVg3FkM7cKWTSjBadPZoWTDLqxRYL1fw1wjm2K14CvYk Next: Dxp7zASLGcx2gPxzmtmkzM3ZaPmFcvCLE7PfFwP24kJn 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"
77
88 let kDeprecatedPool = "deprecated_"
99
1010 let kCause = "shutdown_cause"
1111
1212 let kUserPoolVote = "_user_vote_gSWOP"
1313
1414 let kUserTotalVote = "_user_total_vote_gSWOP"
1515
1616 let kPoolVote = "_pool_vote_gSWOP"
1717
1818 let kTotalVote = "total_vote_gSWOP"
1919
2020 let kHarvestPoolVote = "_harvest_pool_vote_gSWOP"
2121
2222 let kHarvestUserPoolVote = "_harvest_user_pool_vote_gSWOP"
2323
2424 let kStartHeight = "start_height"
2525
2626 let kBasePeriod = "base_period"
2727
2828 let kPeriodLength = "period_length"
2929
3030 let kAdminPubKey1 = "admin_pub_1"
3131
3232 let kAdminPubKey2 = "admin_pub_2"
3333
3434 let kAdminPubKey3 = "admin_pub_3"
3535
3636 let kFarmingAddr = "farming_address"
3737
3838 let kGovAddress = "governance_address"
3939
4040 let kPoolFirstHarvestEndHeight = "first_harvest_height"
4141
4242 let kPoolStruc = "_pool_struc"
4343
4444 let kUserPoolStruc = "_user_pool_struc"
4545
4646 let kUserTotalStruc = "_user_total_struc"
4747
4848 let kTotalStruc = "total_struc"
4949
5050 let kHarvestPoolActiveVoteStruc = "_harvest_pool_activeVote_struc"
5151
5252 let kHarvestUserPoolActiveVoteStruc = "_harvest_user_pool_activeVote_struc"
5353
5454 let oracle = Address(base58'3MvVBtsXroQpy1tsPw21TU2ET9A8WfmrNjz')
5555
5656 let active = valueOrElse(getBoolean(this, kActive), true)
5757
5858 let activeGlob = valueOrElse(getBoolean(oracle, keyActiveGlob), true)
5959
6060 let basePeriod = valueOrErrorMessage(getInteger(this, kBasePeriod), "Empty kBasePeriod")
6161
6262 let startHeight = valueOrErrorMessage(getInteger(this, kStartHeight), "Empty kStartHeight")
6363
6464 let periodLength = valueOrErrorMessage(getInteger(this, kPeriodLength), "Empty kPeriodLength")
6565
6666 func getBase58FromOracle (key) = match getString(oracle, key) {
6767 case string: String =>
6868 fromBase58String(string)
6969 case nothing =>
7070 throw((key + "is empty"))
7171 }
7272
7373
7474 let adminPubKey1 = getBase58FromOracle(kAdminPubKey1)
7575
7676 let adminPubKey2 = getBase58FromOracle(kAdminPubKey2)
7777
7878 let adminPubKey3 = getBase58FromOracle(kAdminPubKey3)
7979
8080 let govAddress = Address(getBase58FromOracle(kGovAddress))
8181
8282 let farmingAddr = Address(getBase58FromOracle(kFarmingAddr))
8383
8484 let currPeriod = (basePeriod + ((height - startHeight) / periodLength))
8585
8686 func isActive () = if (if (active)
8787 then activeGlob
8888 else false)
8989 then unit
9090 else throw("DApp is inactive at this moment")
9191
9292
9393 func isAdminCall (i) = if (containsElement([adminPubKey1, adminPubKey2, adminPubKey3], i.callerPublicKey))
9494 then unit
9595 else throw("Only admin can call this function")
9696
9797
9898 func isCallerInGovernance (user) = (valueOrElse(getInteger(govAddress, (toString(user) + "_SWOP_amount")), 0) > 0)
9999
100100
101101 func isPoolInGovernance (poolAddress) = isDefined(getInteger(govAddress, (poolAddress + "_current_pool_fraction_reward")))
102102
103103
104104 func getPoolDepricated (poolAddress) = valueOrElse(getBoolean(oracle, (kDeprecatedPool + poolAddress)), false)
105105
106106
107107 func getPoolFirstHarvestStartHeight (poolAddress) = (valueOrElse(getInteger(Address(fromBase58String(poolAddress)), kPoolFirstHarvestEndHeight), 0) - periodLength)
108108
109109
110110 func suspend (cause) = [BooleanEntry(kActive, false), StringEntry(kCause, cause)]
111111
112112
113113 func calcDeleteEntry (caller,poolAddress) = {
114114 func deleteIfExists (list,key) = if (isDefined(getString(this, key)))
115115 then (list :+ DeleteEntry(key))
116116 else list
117117
118118 deleteIfExists(deleteIfExists(deleteIfExists(deleteIfExists(deleteIfExists(deleteIfExists(nil, (((caller + "_") + poolAddress) + kUserPoolStruc)), (caller + kUserTotalStruc)), (poolAddress + kPoolStruc)), kTotalStruc), (poolAddress + kHarvestPoolActiveVoteStruc)), (((caller + "_") + poolAddress) + kHarvestUserPoolActiveVoteStruc))
119119 }
120120
121121
122122 @Callable(i)
123123 func votePoolWeight (poolAddress,userPoolVoteNew) = valueOrElse(isActive(), if (!(isPoolInGovernance(poolAddress)))
124124 then throw("This pool is not in Governance dApp")
125125 else {
126126 let userSWOPinGovernance = valueOrErrorMessage(getInteger(govAddress, (toString(i.caller) + "_SWOP_amount")), "Empty _SWOP_amount at gov. address")
127127 let userGSWOPinGovernance = valueOrElse(getInteger(govAddress, (toString(i.caller) + "_GSwop_amount")), userSWOPinGovernance)
128128 let userPoolVote = if (isDefined(getString(this, (((toString(i.caller) + "_") + poolAddress) + kUserPoolStruc))))
129129 then parseIntValue(split(value(getString(this, (((toString(i.caller) + "_") + poolAddress) + kUserPoolStruc))), "_")[0])
130130 else valueOrElse(getInteger(this, (((toString(i.caller) + "_") + poolAddress) + kUserPoolVote)), 0)
131131 let userTotalVote = if (isDefined(getString(this, (toString(i.caller) + kUserTotalStruc))))
132132 then parseIntValue(split(value(getString(this, (toString(i.caller) + kUserTotalStruc))), "_")[0])
133133 else valueOrElse(getInteger(this, (toString(i.caller) + kUserTotalVote)), 0)
134134 let poolVote = if (isDefined(getString(this, (poolAddress + kPoolStruc))))
135135 then parseIntValue(split(value(getString(this, (poolAddress + kPoolStruc))), "_")[0])
136136 else valueOrElse(getInteger(this, (poolAddress + kPoolVote)), 0)
137137 let totalVote = if (isDefined(getString(this, kTotalStruc)))
138138 then parseIntValue(split(value(getString(this, kTotalStruc)), "_")[0])
139139 else valueOrElse(getInteger(this, kTotalVote), 0)
140140 let poolVoteDiff = (userPoolVoteNew - userPoolVote)
141141 let userTotalVoteNew = (userTotalVote + poolVoteDiff)
142142 if (if (getPoolDepricated(poolAddress))
143143 then (poolVoteDiff > 0)
144144 else false)
145145 then throw("You can't vote for deprecated pool")
146146 else if ((userTotalVoteNew > userGSWOPinGovernance))
147147 then throw(((((toString(i.caller) + " has ") + toString(userGSWOPinGovernance)) + " GSWOP in governance. New GSWOP in voting ") + toString(userTotalVoteNew)))
148148 else if ((0 > userTotalVoteNew))
149149 then throw("New userTotalVoteSWOPnew < 0")
150150 else if ((0 > userPoolVoteNew))
151151 then throw("New userPoolVoteSWOPnew < 0")
152152 else {
153153 let removePoolVote = -(poolVoteDiff)
154154 let poolVoteNew = if ((userPoolVoteNew >= userPoolVote))
155155 then (poolVote + poolVoteDiff)
156156 else (poolVote - removePoolVote)
157157 let totalVoteNew = if ((userPoolVoteNew >= userPoolVote))
158158 then (totalVote + poolVoteDiff)
159159 else (totalVote - removePoolVote)
160160 if (if ((0 > poolVoteNew))
161161 then true
162162 else (0 > totalVoteNew))
163163 then throw("One or more values are negative")
164164 else {
165165 let harvestEntries = if ((getPoolFirstHarvestStartHeight(poolAddress) > height))
166166 then [IntegerEntry((poolAddress + kHarvestPoolVote), poolVoteNew), IntegerEntry((((toString(i.caller) + "_") + poolAddress) + kHarvestUserPoolVote), userPoolVoteNew)]
167167 else nil
168168 let upUIntr = invoke(farmingAddr, "updateUserBoostInterest", [poolAddress, toString(i.caller)], nil)
169169 if ((upUIntr == upUIntr))
170170 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)
171171 else throw("Strict value is not equal to itself.")
172172 }
173173 }
174174 })
175175
176176
177177
178178 @Callable(i)
179179 func shutdown () = valueOrElse(isAdminCall(i), if (!(active))
180180 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, kCause), "the cause wasn't specified")))
181181 else suspend("Paused by admin"))
182182
183183
184184
185185 @Callable(i)
186186 func activate () = valueOrElse(isAdminCall(i), if (active)
187187 then throw("DApp is already active")
188188 else [BooleanEntry(kActive, true), DeleteEntry(kCause)])
189189
190190
191191 @Verifier(tx)
192192 func verify () = {
193193 let adminPubKey1Signed = if (sigVerify(tx.bodyBytes, tx.proofs[0], adminPubKey1))
194194 then 1
195195 else 0
196196 let adminPubKey2Signed = if (sigVerify(tx.bodyBytes, tx.proofs[1], adminPubKey2))
197197 then 1
198198 else 0
199199 let adminPubKey3Signed = if (sigVerify(tx.bodyBytes, tx.proofs[2], adminPubKey3))
200200 then 1
201201 else 0
202202 (((adminPubKey1Signed + adminPubKey2Signed) + adminPubKey3Signed) >= 2)
203203 }
204204

github/deemru/w8io/873ac7e 
50.42 ms