tx · 3EhGYRqwHA8v9rr75b2ZDnCUdQkdQd6LdWsDHCd7Ko1S

3MrMbQwr3cpCvWMWCFjqUZzqRgxg8En6Jd5:  -0.05100000 Waves

2022.08.05 18:00 [2171337] smart account 3MrMbQwr3cpCvWMWCFjqUZzqRgxg8En6Jd5 > SELF 0.00000000 Waves

{ "type": 13, "id": "3EhGYRqwHA8v9rr75b2ZDnCUdQkdQd6LdWsDHCd7Ko1S", "fee": 5100000, "feeAssetId": null, "timestamp": 1659711669837, "version": 2, "chainId": 84, "sender": "3MrMbQwr3cpCvWMWCFjqUZzqRgxg8En6Jd5", "senderPublicKey": "8WTLBzi1s9cZm76TPZ9czV6poaHGWvpZ7sCBeTBaa7uh", "proofs": [ "5kM1auEv7LF7fhLsPB1bVG6DGtPk7XqE6fJaok1QQQg9D4DXhrZzv6E4YbHD1hetcb9CSVfa8RTDM2JB1iXRQpDV" ], "script": "base64:BgI4CAISBAoCCAgSBQoDCAgBEgYKBAgICAESBQoDCAgIEgQKAggIEgYKBAgIAQESBAoCCAESBAoCCAFJABNrX3RvdGFsRmVlc0luUGVyaW9kAhNrX3RvdGFsRmVlc0luUGVyaW9kABRrX3RyYWRlckZlZXNJblBlcmlvZAIUa190cmFkZXJGZWVzSW5QZXJpb2QADmtfbGFzdE5vdGlvbmFsAg5rX2xhc3ROb3Rpb25hbAAUa190b3RhbFNjb3JlSW5QZXJpb2QCFGtfdG90YWxTY29yZUluUGVyaW9kABVrX3RyYWRlclNjb3JlSW5QZXJpb2QCFWtfdHJhZGVyU2NvcmVJblBlcmlvZAAfa190cmFkZXJBdmVyYWdlTm90aW9uYWxJblBlcmlvZAIfa190cmFkZXJBdmVyYWdlTm90aW9uYWxJblBlcmlvZAAPa19hbW1SZXdhcmRSYXRlAg9rX2FtbVJld2FyZFJhdGUAF2tfYW1tTWF4QW1vdW50UGVyUGVyaW9kAhdrX2FtbU1heEFtb3VudFBlclBlcmlvZAAQa19yZXdhcmRBc3NldElkcwIQa19yZXdhcmRBc3NldElkcwAGa19hbW1zAgZrX2FtbXMAF2tfY2xhaW1lZEFzc2V0QW5kUGVyaW9kAhdrX2NsYWltZWRBc3NldEFuZFBlcmlvZAAPa19vcmFjbGVBZGRyZXNzAg9rX29yYWNsZUFkZHJlc3MADWtfb3JhY2xlUHJpY2UCBXByaWNlAB9rX3RvdGFsQ2xhaW1lZEZvclRyYWRlckFuZEFzc2V0Ah9rX3RvdGFsQ2xhaW1lZEZvclRyYWRlckFuZEFzc2V0AA1rX2luaXRpYWxpemVkAg1rX2luaXRpYWxpemVkABRrX2Nvb3JkaW5hdG9yQWRkcmVzcwIUa19jb29yZGluYXRvckFkZHJlc3MAEmtfZ292ZXJuYW5jZV9hc3NldAILa19nb3ZfYXNzZXQADWtfcXVvdGVfYXNzZXQCDWtfcXVvdGVfYXNzZXQAEmtfYWRtaW5fcHVibGljX2tleQISa19hZG1pbl9wdWJsaWNfa2V5AA9rX2FkbWluX2FkZHJlc3MCD2tfYWRtaW5fYWRkcmVzcwAFa19hbW0CBWtfYW1tAAxERUNJTUFMX1VOSVQJAGgCAAEJAGgCCQBoAgkAaAIJ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cG9zaXRlS2V5AgRfa2V5CF9hZGRyZXNzCQCsAgIJAKwCAgUEX2tleQIBXwUIX2FkZHJlc3MBC2Nvb3JkaW5hdG9yAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMFFGtfY29vcmRpbmF0b3JBZGRyZXNzAhNDb29yZGluYXRvciBub3Qgc2V0AQ5hZG1pblB1YmxpY0tleQAJANkEAQkBEUBleHRyTmF0aXZlKDEwNTMpAgkBC2Nvb3JkaW5hdG9yAAUSa19hZG1pbl9wdWJsaWNfa2V5AQxhZG1pbkFkZHJlc3MACQCmCAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFD2tfYWRtaW5fYWRkcmVzcwELaXNXaGl0ZWxpc3QBCF9hZGRyZXNzCQELdmFsdWVPckVsc2UCCQCbCAIJAQtjb29yZGluYXRvcgAJAQ50b0NvbXBvc2l0ZUtleQIFBWtfYW1tBQhfYWRkcmVzcwcBA2ludAEBawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAWsJAKwCAgINbm8gdmFsdWUgZm9yIAUBawEEaW50MAEBawkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFrAAABC2luaXRpYWxpemVkAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ1rX2luaXRpYWxpemVkBwESZ2V0RmVlc0luUGVyaW9kS2V5AwRfYW1tB190cmFkZXIHX3dlZWtJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUUa190cmFkZXJGZWVzSW5QZXJpb2QCAV8FBF9hbW0CAV8FB190cmFkZXICAV8JAKQDAQUHX3dlZWtJZAEXZ2V0VG90YWxGZWVzSW5QZXJpb2RLZXkCBF9hbW0HX3dlZWtJZAkArAICCQCsAgIJAKwCAgkArAICBRNrX3RvdGFsRmVlc0luUGVyaW9kAgFfBQRfYW1tAgFfCQCkAwEFB193ZWVrSWQBEmdldExhc3ROb3Rpb25hbEtleQIEX2FtbQdfdHJhZGVyCQCsAgIJAKwCAgkArAICCQCsAgIFDmtfbGFzdE5vdGlvbmFsAgFfBQRfYW1tAgFfBQdfdHJhZGVyARlnZXRUcmFkZXJTY29yZUluUGVyaW9kS2V5AwRfYW1tB190cmFkZXIHX3dlZWtJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUVa190cmFkZXJTY29yZUluUGVyaW9kAgFfBQRfYW1tAgFfBQdfdHJhZGVyAgFfCQCkAwEFB193ZWVrSWQBGGdldFRvdGFsU2NvcmVJblBlcmlvZEtleQIEX2FtbQdfd2Vla0lkCQCsAgIJAKwCAgkArAICCQCsAgIFFGtfdG90YWxTY29yZUluUGVyaW9kAgFfBQRfYW1tAgFfCQCkAwEFB193ZWVrSWQBI2dldFRyYWRlckF2ZXJhZ2VOb3Rpb25hbEluUGVyaW9kS2V5AwRfYW1tB190cmFkZXIHX3dlZWtJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUfa190cmFkZXJBdmVyYWdlTm90aW9uYWxJblBlcmlvZAIBXwUEX2FtbQIBXwUHX3RyYWRlcgIBXwkApAMBBQdfd2Vla0lkARNnZXRBbW1SZXdhcmRSYXRlS2V5AgRfYW1tCF9hc3NldElkCQCsAgIJAKwCAgkArAICCQCsAgIFD2tfYW1tUmV3YXJkUmF0ZQIBXwUEX2FtbQIBXwUIX2Fzc2V0SWQBG2dldEFtbU1heEFtb3VudFBlclBlcmlvZEtleQIEX2FtbQhfYXNzZXRJZAkArAICCQCsAgIJAKwCAgkArAICBRdrX2FtbU1heEFtb3VudFBlclBlcmlvZAIBXwUEX2FtbQIBXwUIX2Fzc2V0SWQBHmdldENsYWltZWRUcmFkZXJBc3NldFBlcmlvZEtleQMHX3RyYWRlcghfYXNzZXRJZAdfcGVyaW9kCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBRdrX2NsYWltZWRBc3NldEFuZFBlcmlvZAIBXwUHX3RyYWRlcgIBXwUIX2Fzc2V0SWQCAV8JAKQDAQUHX3BlcmlvZAERZ2V0T3JhY2xlUHJpY2VLZXkCCF9hc3NldElkB19wZXJpb2QJAKwCAgkArAICCQCsAgIJAKwCAgUNa19vcmFjbGVQcmljZQIBXwkApAMBBQdfcGVyaW9kAgFfBQhfYXNzZXRJZAEjZ2V0VG90YWxDbGFpbWVkRm9yVHJhZGVyQW5kQXNzZXRLZXkCB190cmFkZXIIX2Fzc2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgUfa190b3RhbENsYWltZWRGb3JUcmFkZXJBbmRBc3NldAIBXwUHX3RyYWRlcgIBXwUIX2Fzc2V0SWQBDXVwZGF0ZUFtbUZlZXMFBF9hbW0HX3RyYWRlcgdfd2Vla0lkC190cmFkZXJGZWVzCl90b3RhbEZlZXMEDXRyYWRlckZlZXNLZXkJARJnZXRGZWVzSW5QZXJpb2RLZXkDBQRfYW1tBQdfdHJhZGVyBQdfd2Vla0lkBAx0b3RhbEZlZXNLZXkJARdnZXRUb3RhbEZlZXNJblBlcmlvZEtleQIFBF9hbW0FB193ZWVrSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFDXRyYWRlckZlZXNLZXkFC190cmFkZXJGZWVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQx0b3RhbEZlZXNLZXkFCl90b3RhbEZlZXMFA25pbAENdXBkYXRlQW1tRGF0YQcEX2FtbQdfdHJhZGVyB193ZWVrSWQOX3RyYWRlckF2ZXJhZ2UTX3RyYWRlckxhc3ROb3Rpb25hbAxfdHJhZGVyU2NvcmULX3RvdGFsU2NvcmUEFXRvdGFsU2NvcmVJblBlcmlvZEtleQkBGGdldFRvdGFsU2NvcmVJblBlcmlvZEtleQIFBF9hbW0FB193ZWVrSWQEFnRyYWRlclNjb3JlSW5QZXJpb2RLZXkJARlnZXRUcmFkZXJTY29yZUluUGVyaW9kS2V5AwUEX2FtbQUHX3RyYWRlcgUHX3dlZWtJZAQPbGFzdE5vdGlvbmFsS2V5CQESZ2V0TGFzdE5vdGlvbmFsS2V5AgUEX2FtbQUHX3RyYWRlcgQgdHJhZGVyQXZlcmFnZU5vdGlvbmFsSW5QZXJpb2RLZXkJASNnZXRUcmFkZXJBdmVyYWdlTm90aW9uYWxJblBlcmlvZEtleQMFBF9hbW0FB190cmFkZXIFB193ZWVrSWQJAMwIAgkBDEludGVnZXJFbnRyeQIFFXRvdGFsU2NvcmVJblBlcmlvZEtleQULX3RvdGFsU2NvcmUJAMwIAgkBDEludGVnZXJFbnRyeQIFFnRyYWRlclNjb3JlSW5QZXJpb2RLZXkFDF90cmFkZXJTY29yZQkAzAgCCQEMSW50ZWdlckVudHJ5AgUPbGFzdE5vdGlvbmFsS2V5BRNfdHJhZGVyTGFzdE5vdGlvbmFsCQDMCAIJAQxJbnRlZ2VyRW50cnkCBSB0cmFkZXJBdmVyYWdlTm90aW9uYWxJblBlcmlvZEtleQUOX3RyYWRlckF2ZXJhZ2UFA25pbAEOdXNkblRvRGVjaW1hbHMBB19hbW91bnQJAGgCBQdfYW1vdW50AGQBDGdldFdlZWtTdGFydAEHX3dlZWtJZAkAaAIFB193ZWVrSWQFCk1TX0lOX1dFRUsBCmdldFdlZWtFbmQBB193ZWVrSWQJAGgCCQBkAgUHX3dlZWtJZAABBQpNU19JTl9XRUVLAQlnZXRXZWVrSWQBA190cwkAaQIFA190cwUKTVNfSU5fV0VFSwEPZ2V0RmVlc0luUGVyaW9kAwRfYW1tB190cmFkZXIHX3dlZWtJZAQDa2V5CQESZ2V0RmVlc0luUGVyaW9kS2V5AwUEX2FtbQUHX3RyYWRlcgUHX3dlZWtJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEUZ2V0VG90YWxGZWVzSW5QZXJpb2QCBF9hbW0HX3dlZWtJZAQDa2V5CQEXZ2V0VG90YWxGZWVzSW5QZXJpb2RLZXkCBQRfYW1tBQdfd2Vla0lkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ9nZXRMYXN0Tm90aW9uYWwCBF9hbW0HX3RyYWRlcgQDa2V5CQESZ2V0TGFzdE5vdGlvbmFsS2V5AgUEX2FtbQUHX3RyYWRlcgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEWZ2V0VHJhZGVyU2NvcmVJblBlcmlvZAMEX2FtbQdfdHJhZGVyB193ZWVrSWQEA2tleQkBGWdldFRyYWRlclNjb3JlSW5QZXJpb2RLZXkDBQRfYW1tBQdfdHJhZGVyBQdfd2Vla0lkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAARVnZXRUb3RhbFNjb3JlSW5QZXJpb2QCBF9hbW0HX3dlZWtJZAQDa2V5CQEYZ2V0VG90YWxTY29yZUluUGVyaW9kS2V5AgUEX2FtbQUHX3dlZWtJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEHZ2V0QW1tcwAJAQlzdHJUb0xpc3QBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFBmtfYW1tcwIAARFnZXRSZXdhcmRBc3NldElkcwAJAQlzdHJUb0xpc3QBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFEGtfcmV3YXJkQXNzZXRJZHMCAAEQZ2V0QW1tUmV3YXJkUmF0ZQIEX2FtbQhfYXNzZXRJZAQDa2V5CQETZ2V0QW1tUmV3YXJkUmF0ZUtleQIFBF9hbW0FCF9hc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAARhnZXRBbW1NYXhBbW91bnRQZXJQZXJpb2QCBF9hbW0IX2Fzc2V0SWQEA2tleQkBG2dldEFtbU1heEFtb3VudFBlclBlcmlvZEtleQIFBF9hbW0FCF9hc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAASBnZXRUb3RhbENsYWltZWRGb3JUcmFkZXJBbmRBc3NldAIHX3RyYWRlcghfYXNzZXRJZAQDa2V5CQEjZ2V0VG90YWxDbGFpbWVkRm9yVHJhZGVyQW5kQXNzZXRLZXkCBQdfdHJhZGVyBQhfYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAETZ2V0UmV3YXJkQXNzZXRQcmljZQIIX2Fzc2V0SWQHX3dlZWtJZAQQb3JhY2xlQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFD2tfb3JhY2xlQWRkcmVzcwIOT3JhY2xlIG5vdCBzZXQEDW9yYWNsZUFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBRBvcmFjbGVBZGRyZXNzU3RyAhZJbnZhbGlkIG9yYWNsZSBhZGRyZXNzBAhwcmljZUtleQkBEWdldE9yYWNsZVByaWNlS2V5AgUIX2Fzc2V0SWQFB193ZWVrSWQJAQ51c2RuVG9EZWNpbWFscwEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQ1vcmFjbGVBZGRyZXNzBQhwcmljZUtleQkArAICCQCsAgIJAKwCAgIaTm8gb3JhY2xlIHByaWNlIGZvciBhc3NldCAFCF9hc3NldElkAgggcGVyaW9kIAkApAMBBQdfd2Vla0lkAR5yZXdhcmRGb3JUcmFkZXJJbkFzc2V0SW5QZXJpb2QEBF9hbW0HX3RyYWRlcghfYXNzZXRJZAdfd2Vla0lkBA9yZXdhcmRBc3NldFJhdGUJARBnZXRBbW1SZXdhcmRSYXRlAgUEX2FtbQUIX2Fzc2V0SWQDCQAAAgUPcmV3YXJkQXNzZXRSYXRlAAAAAAQRdG90YWxGZWVzSW5QZXJpb2QJARRnZXRUb3RhbEZlZXNJblBlcmlvZAIFBF9hbW0FB193ZWVrSWQEEHJld2FyZEFzc2V0UHJpY2UJARNnZXRSZXdhcmRBc3NldFByaWNlAgUIX2Fzc2V0SWQFB193ZWVrSWQEHG1heEFtb3VudE9mQXNzZXRUb0Rpc3RyaWJ1dGUJARhnZXRBbW1NYXhBbW91bnRQZXJQZXJpb2QCBQRfYW1tBQhfYXNzZXRJZAQLdHJhZGVyU2NvcmUJARZnZXRUcmFkZXJTY29yZUluUGVyaW9kAwUEX2FtbQUHX3RyYWRlcgUHX3dlZWtJZAQQdG90YWxUcmFkZXJTY29yZQkBFWdldFRvdGFsU2NvcmVJblBlcmlvZAIFBF9hbW0FB193ZWVrSWQDCQAAAgUQdG90YWxUcmFkZXJTY29yZQAAAAAEFnRvdGFsQXNzZXRUb0Rpc3RyaWJ1dGUJAQRtdWxkAgkBBGRpdmQCBRF0b3RhbEZlZXNJblBlcmlvZAUQcmV3YXJkQXNzZXRQcmljZQUPcmV3YXJkQXNzZXRSYXRlBBxhY3R1YWxUb3RhbEFzc2V0VG9EaXN0cmlidXRlCQEEbWludgIFFnRvdGFsQXNzZXRUb0Rpc3RyaWJ1dGUFHG1heEFtb3VudE9mQXNzZXRUb0Rpc3RyaWJ1dGUEFHRyYWRlclNoYXJlSW5SZXdhcmRzCQEEZGl2ZAIJAQRtdWxkAgUcYWN0dWFsVG90YWxBc3NldFRvRGlzdHJpYnV0ZQULdHJhZGVyU2NvcmUFEHRvdGFsVHJhZGVyU2NvcmUFFHRyYWRlclNoYXJlSW5SZXdhcmRzASN0b3RhbFJld2FyZEZvclRyYWRlckluQXNzZXRJblBlcmlvZAMHX3RyYWRlcghfYXNzZXRJZAdfd2Vla0lkBARhbW1zCQEHZ2V0QW1tcwAKAQdjb21wdXRlAgRfYWNjBF9hbW0JAGQCBQRfYWNjCQEecmV3YXJkRm9yVHJhZGVySW5Bc3NldEluUGVyaW9kBAUEX2FtbQUHX3RyYWRlcgUIX2Fzc2V0SWQFB193ZWVrSWQKAAIkbAUEYW1tcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY29tcHV0ZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMjAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUARt0b3RhbFJld2FyZEZvclRyYWRlckluQXNzZXQDB190cmFkZXIIX2Fzc2V0SWQIX3BlcmlvZHMKAQdjb21wdXRlAgRfYWNjB193ZWVrSWQJAGQCBQRfYWNjCQEjdG90YWxSZXdhcmRGb3JUcmFkZXJJbkFzc2V0SW5QZXJpb2QDBQdfdHJhZGVyBQhfYXNzZXRJZAUHX3dlZWtJZAoAAiRsBQhfcGVyaW9kcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHY29tcHV0ZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTgJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIBIGdldFRyYWRlckF2ZXJhZ2VOb3Rpb25hbEluUGVyaW9kBARfYW1tB190cmFkZXIHX3dlZWtJZA1fZGVmYXVsdFZhbHVlBANrZXkJASNnZXRUcmFkZXJBdmVyYWdlTm90aW9uYWxJblBlcmlvZEtleQMFBF9hbW0FB190cmFkZXIFB193ZWVrSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5BQ1fZGVmYXVsdFZhbHVlAQlpc0NsYWltZWQDB190cmFkZXIIX2Fzc2V0SWQHX3BlcmlvZAQDa2V5CQEeZ2V0Q2xhaW1lZFRyYWRlckFzc2V0UGVyaW9kS2V5AwUHX3RyYWRlcgUIX2Fzc2V0SWQFB19wZXJpb2QJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwEgY2xhaW1BbGxSZXdhcmRGb3JQZXJpb2RGb3JUcmFkZXIDB190cmFkZXIIX2Fzc2V0SWQIX3BlcmlvZHMEB3BlcmlvZHMJAQlzdHJUb0xpc3QBBQhfcGVyaW9kcwoBEGNoZWNrQW5kRmlsdGVyRm4CBF9hY2MFX25leHQEBnBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFBV9uZXh0CQCsAgICEEludmFsaWQgcGVyaW9kOiAFBV9uZXh0AwMJAQ9jb250YWluc0VsZW1lbnQCBQRfYWNjBQZwZXJpb2QGCQEJaXNDbGFpbWVkAwUHX3RyYWRlcgUIX2Fzc2V0SWQFBnBlcmlvZAUEX2FjYwkAzQgCBQRfYWNjBQZwZXJpb2QEDHZhbGlkUGVyaW9kcwoAAiRsBQdwZXJpb2RzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjaGVja0FuZEZpbHRlckZuAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxOAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgoBEm1hcmtQZXJpb2RBc0RvbmVGbgIEX2FjYwdfcGVyaW9kCQDNCAIFBF9hY2MJAQxCb29sZWFuRW50cnkCCQEeZ2V0Q2xhaW1lZFRyYWRlckFzc2V0UGVyaW9kS2V5AwUHX3RyYWRlcgUIX2Fzc2V0SWQFB19wZXJpb2QGBBRtYXJrUGVyaW9kc0FzQ2xhaW1lZAoAAiRsBQx2YWxpZFBlcmlvZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjFfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEm1hcmtQZXJpb2RBc0RvbmVGbgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMV8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTgJAQUkZjFfMgIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIJAQUkZjFfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIEBmFtb3VudAkBG3RvdGFsUmV3YXJkRm9yVHJhZGVySW5Bc3NldAMFB190cmFkZXIFCF9hc3NldElkBQx2YWxpZFBlcmlvZHMDCQAAAgUGYW1vdW50AAAJAAIBAhBOb3RoaW5nIHRvIGNsYWltCQCUCgIFBmFtb3VudAkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFB190cmFkZXIFBmFtb3VudAkA2QQBBQhfYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBI2dldFRvdGFsQ2xhaW1lZEZvclRyYWRlckFuZEFzc2V0S2V5AgUHX3RyYWRlcgUIX2Fzc2V0SWQJAGQCCQEgZ2V0VG90YWxDbGFpbWVkRm9yVHJhZGVyQW5kQXNzZXQCBQdfdHJhZGVyBQhfYXNzZXRJZAUGYW1vdW50BQNuaWwFFG1hcmtQZXJpb2RzQXNDbGFpbWVkCAFpAQppbml0aWFsaXplAgxfY29vcmRpbmF0b3IHX29yYWNsZQMJAQtpbml0aWFsaXplZAAJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzBQxfY29vcmRpbmF0b3IJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa19vcmFjbGVBZGRyZXNzBQdfb3JhY2xlCQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rX2luaXRpYWxpemVkBgUDbmlsAWkBEXZpZXdfY2xhaW1SZXdhcmRzAwdfdHJhZGVyCF9hc3NldElkB19wZXJpb2QJAAIBCQCkAwEJARt0b3RhbFJld2FyZEZvclRyYWRlckluQXNzZXQDBQdfdHJhZGVyBQhfYXNzZXRJZAkAzAgCBQdfcGVyaW9kBQNuaWwBaQEPdmlld19jYWxjUmV3YXJkBAdfdHJhZGVyBF9hbW0IX2Fzc2V0SWQHX3BlcmlvZAkAAgEJAKQDAQkBHnJld2FyZEZvclRyYWRlckluQXNzZXRJblBlcmlvZAQFBF9hbW0FCF9hc3NldElkBQdfdHJhZGVyBQdfcGVyaW9kAWkBFHZpZXdfY2xhaW1BbGxSZXdhcmRzAwdfdHJhZGVyCF9hc3NldElkCF9wZXJpb2RzBAZyZXN1bHQJASBjbGFpbUFsbFJld2FyZEZvclBlcmlvZEZvclRyYWRlcgMFB190cmFkZXIFCF9hc3NldElkBQhfcGVyaW9kcwkAAgEJAKwCAgkArAICCQCkAwEIBQZyZXN1bHQCXzECASwJAKQDAQkBIGdldFRvdGFsQ2xhaW1lZEZvclRyYWRlckFuZEFzc2V0AgUHX3RyYWRlcgUIX2Fzc2V0SWQBaQEPY2xhaW1BbGxSZXdhcmRzAghfYXNzZXRJZAhfcGVyaW9kcwQGdHJhZGVyCQClCAEIBQFpBmNhbGxlcgQGcmVzdWx0CQEgY2xhaW1BbGxSZXdhcmRGb3JQZXJpb2RGb3JUcmFkZXIDBQZ0cmFkZXIFCF9hc3NldElkBQhfcGVyaW9kcwgFBnJlc3VsdAJfMgFpAQ1hdHRhY2hSZXdhcmRzBARfYW1tCF9hc3NldElkE19tYXhBbW91bnRQZXJQZXJpb2QLX3Jld2FyZFJhdGUDAwkBASEBCQELaW5pdGlhbGl6ZWQABgkBAiE9AggFAWkGY2FsbGVyCQEMYWRtaW5BZGRyZXNzAAkAAgECHEludmFsaWQgYXR0YWNoUmV3YXJkcyBwYXJhbXMEBGFtbXMJAQdnZXRBbW1zAAQOcmV3YXJkQXNzZXRJZHMJARFnZXRSZXdhcmRBc3NldElkcwAEB25ld0FtbXMDCQEPY29udGFpbnNFbGVtZW50AgUEYW1tcwUEX2FtbQUEYW1tcwkAzQgCBQRhbW1zBQRfYW1tBBFuZXdSZXdhcmRBc3NldElkcwMJAQ9jb250YWluc0VsZW1lbnQCBQ5yZXdhcmRBc3NldElkcwUIX2Fzc2V0SWQFDnJld2FyZEFzc2V0SWRzCQDNCAIFDnJld2FyZEFzc2V0SWRzBQhfYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2dldEFtbVJld2FyZFJhdGVLZXkCBQRfYW1tBQhfYXNzZXRJZAULX3Jld2FyZFJhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJARtnZXRBbW1NYXhBbW91bnRQZXJQZXJpb2RLZXkCBQRfYW1tBQhfYXNzZXRJZAUTX21heEFtb3VudFBlclBlcmlvZAkAzAgCCQELU3RyaW5nRW50cnkCBQZrX2FtbXMJAQlsaXN0VG9TdHIBBQduZXdBbW1zCQDMCAIJAQtTdHJpbmdFbnRyeQIFEGtfcmV3YXJkQXNzZXRJZHMJAQlsaXN0VG9TdHIBBRFuZXdSZXdhcmRBc3NldElkcwUDbmlsAWkBCm5vdGlmeUZlZXMCB190cmFkZXIEX2ZlZQQDYW1tCQClCAEIBQFpBmNhbGxlcgMDCQEBIQEJAQtpc1doaXRlbGlzdAEFA2FtbQYJAQEhAQkBC2luaXRpYWxpemVkAAkAAgECGUludmFsaWQgbm90aWZ5RmVlcyBwYXJhbXMECWFjdHVhbEZlZQkBDnVzZG5Ub0RlY2ltYWxzAQUEX2ZlZQQCdHMIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAZ3ZWVrSWQJAQlnZXRXZWVrSWQBBQJ0cwQMZmVlc0luUGVyaW9kCQEPZ2V0RmVlc0luUGVyaW9kAwUDYW1tBQdfdHJhZGVyBQZ3ZWVrSWQEEXRvdGFsRmVlc0luUGVyaW9kCQEUZ2V0VG90YWxGZWVzSW5QZXJpb2QCBQNhbW0FBndlZWtJZAQPbmV3RmVlc0luUGVyaW9kCQBkAgUMZmVlc0luUGVyaW9kBQlhY3R1YWxGZWUEFG5ld1RvdGFsRmVlc0luUGVyaW9kCQBkAgURdG90YWxGZWVzSW5QZXJpb2QFCWFjdHVhbEZlZQkBDXVwZGF0ZUFtbUZlZXMFBQNhbW0FB190cmFkZXIFBndlZWtJZAUPbmV3RmVlc0luUGVyaW9kBRRuZXdUb3RhbEZlZXNJblBlcmlvZAFpAQ5ub3RpZnlOb3Rpb25hbAIHX3RyYWRlcglfbm90aW9uYWwEA2FtbQkApQgBCAUBaQZjYWxsZXIDAwkBASEBCQELaXNXaGl0ZWxpc3QBBQNhbW0GCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAh1JbnZhbGlkIG5vdGlmeU5vdGlvbmFsIHBhcmFtcwQOYWN0dWFsTm90aW9uYWwJAQ51c2RuVG9EZWNpbWFscwEFCV9ub3Rpb25hbAQCdHMIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAxsYXN0Tm90aW9uYWwJAQ9nZXRMYXN0Tm90aW9uYWwCBQNhbW0FB190cmFkZXIEBndlZWtJZAkBCWdldFdlZWtJZAEFAnRzBAl3ZWVrU3RhcnQJAQxnZXRXZWVrU3RhcnQBBQZ3ZWVrSWQEB3dlZWtFbmQJAQpnZXRXZWVrRW5kAQUGd2Vla0lkBAF0CQBlAgUHd2Vla0VuZAUJd2Vla1N0YXJ0BBFvbGRSdW5uaW5nQXZlcmFnZQkBIGdldFRyYWRlckF2ZXJhZ2VOb3Rpb25hbEluUGVyaW9kBAUDYW1tBQdfdHJhZGVyBQZ3ZWVrSWQFDGxhc3ROb3Rpb25hbAQBdwkBBGRpdmQCCQBlAgUHd2Vla0VuZAUCdHMFAXQEEW9sZFRyYWRlckFtbVNjb3JlCQEWZ2V0VHJhZGVyU2NvcmVJblBlcmlvZAMFA2FtbQUHX3RyYWRlcgUGd2Vla0lkBBBvbGRUb3RhbEFtbVNjb3JlCQEVZ2V0VG90YWxTY29yZUluUGVyaW9kAgUDYW1tBQZ3ZWVrSWQEBGZlZXMJAQ9nZXRGZWVzSW5QZXJpb2QDBQNhbW0FB190cmFkZXIFBndlZWtJZAQRbmV3UnVubmluZ0F2ZXJhZ2UJAGUCCQBkAgURb2xkUnVubmluZ0F2ZXJhZ2UJAQRtdWxkAgUOYWN0dWFsTm90aW9uYWwFAXcJAQRtdWxkAgUMbGFzdE5vdGlvbmFsBQF3BBFuZXdUcmFkZXJBbW1TY29yZQkBBG11bGQCCQEEcG93ZAIFBGZlZXMFAUEJAQRwb3dkAgURbmV3UnVubmluZ0F2ZXJhZ2UJAGUCBQxERUNJTUFMX1VOSVQFAUEEGG5ld1RvdGFsQW1tU2NvcmVJblBlcmlvZAkAZAIJAGUCBRBvbGRUb3RhbEFtbVNjb3JlBRFvbGRUcmFkZXJBbW1TY29yZQURbmV3VHJhZGVyQW1tU2NvcmUJAQ11cGRhdGVBbW1EYXRhBwUDYW1tBQdfdHJhZGVyBQZ3ZWVrSWQFEW5ld1J1bm5pbmdBdmVyYWdlBQ5hY3R1YWxOb3Rpb25hbAURbmV3VHJhZGVyQW1tU2NvcmUFGG5ld1RvdGFsQW1tU2NvcmVJblBlcmlvZAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJAQ5hZG1pblB1YmxpY0tleQDt53kK", "height": 2171337, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8v4KsueGK5vNdu62MrW6Q2LanaHUA5UwQYdRTJVW2Nf8 Next: 9EVN2AZhWwXDWEWkTo6Zfq7NF8RBS1SQPLBfhfhmZ8AC Diff:
OldNewDifferences
77
88 let c = "k_lastNotional"
99
10-let d = "k_lastDateInPeriod"
10+let d = "k_totalScoreInPeriod"
1111
12-let e = "k_totalScoreInPeriod"
12+let e = "k_traderScoreInPeriod"
1313
14-let f = "k_traderScoreInPeriod"
14+let f = "k_traderAverageNotionalInPeriod"
1515
16-let g = "k_traderAverageNotionalInPeriod"
16+let g = "k_ammRewardRate"
1717
18-let h = "k_ammRewardRate"
18+let h = "k_ammMaxAmountPerPeriod"
1919
20-let i = "k_ammMaxAmountPerPeriod"
20+let i = "k_rewardAssetIds"
2121
22-let j = "k_rewardAssetIds"
22+let j = "k_amms"
2323
24-let k = "k_amms"
24+let k = "k_claimedAssetAndPeriod"
2525
26-let l = "k_claimedAssetAndPeriod"
26+let l = "k_oracleAddress"
2727
28-let m = "k_oracleAddress"
28+let m = "price"
2929
30-let n = "price"
30+let n = "k_totalClaimedForTraderAndAsset"
3131
3232 let o = "k_initialized"
3333
131131 func am (ai,aj) = ((((c + "_") + ai) + "_") + aj)
132132
133133
134-func an (ai,aj,ak) = ((((((d + "_") + ai) + "_") + aj) + "_") + toString(ak))
134+func an (ai,aj,ak) = ((((((e + "_") + ai) + "_") + aj) + "_") + toString(ak))
135135
136136
137-func ao (ai,aj,ak) = ((((((f + "_") + ai) + "_") + aj) + "_") + toString(ak))
137+func ao (ai,ak) = ((((d + "_") + ai) + "_") + toString(ak))
138138
139139
140-func ap (ai,ak) = ((((e + "_") + ai) + "_") + toString(ak))
140+func ap (ai,aj,ak) = ((((((f + "_") + ai) + "_") + aj) + "_") + toString(ak))
141141
142142
143-func aq (ai,aj,ak) = ((((((g + "_") + ai) + "_") + aj) + "_") + toString(ak))
143+func aq (ai,ar) = ((((g + "_") + ai) + "_") + ar)
144144
145145
146-func ar (ai,as) = ((((h + "_") + ai) + "_") + as)
146+func as (ai,ar) = ((((h + "_") + ai) + "_") + ar)
147147
148148
149-func at (ai,as) = ((((i + "_") + ai) + "_") + as)
149+func at (aj,ar,au) = ((((((k + "_") + aj) + "_") + ar) + "_") + toString(au))
150150
151151
152-func au (aj,as,av) = ((((((l + "_") + aj) + "_") + as) + "_") + toString(av))
152+func av (ar,au) = ((((m + "_") + toString(au)) + "_") + ar)
153153
154154
155-func aw (as,av) = ((((n + "_") + toString(av)) + "_") + as)
155+func aw (aj,ar) = ((((n + "_") + aj) + "_") + ar)
156156
157157
158158 func ax (ai,aj,ak,ay,az) = {
162162 }
163163
164164
165-func aC (ai,aj,ak,aD,aE,aF,aG,aH) = {
166- let aI = ap(ai, ak)
167- let aJ = ao(ai, aj, ak)
168- let aK = an(ai, aj, ak)
169- let aL = am(ai, aj)
170- let aM = aq(ai, aj, ak)
171-[IntegerEntry(aI, aH), IntegerEntry(aJ, aG), IntegerEntry(aK, aD), IntegerEntry(aL, aF), IntegerEntry(aM, aE)]
165+func aC (ai,aj,ak,aD,aE,aF,aG) = {
166+ let aH = ao(ai, ak)
167+ let aI = an(ai, aj, ak)
168+ let aJ = am(ai, aj)
169+ let aK = ap(ai, aj, ak)
170+[IntegerEntry(aH, aG), IntegerEntry(aI, aF), IntegerEntry(aJ, aE), IntegerEntry(aK, aD)]
172171 }
173172
174173
175-func aN (aO) = (aO * 100)
174+func aL (aM) = (aM * 100)
176175
177176
178-func aP (ak) = (ak * x)
177+func aN (ak) = (ak * x)
179178
180179
181-func aQ (ak) = ((ak + 1) * x)
180+func aO (ak) = ((ak + 1) * x)
182181
183182
184-func aR (aS) = (aS / x)
183+func aP (aQ) = (aQ / x)
185184
186185
187-func aT (ai,aj,ak) = {
188- let aU = ah(ai, aj, ak)
189- valueOrElse(getInteger(this, aU), 0)
186+func aR (ai,aj,ak) = {
187+ let aS = ah(ai, aj, ak)
188+ valueOrElse(getInteger(this, aS), 0)
190189 }
191190
192191
193-func aV (ai,ak) = {
194- let aU = al(ai, ak)
195- valueOrElse(getInteger(this, aU), 0)
192+func aT (ai,ak) = {
193+ let aS = al(ai, ak)
194+ valueOrElse(getInteger(this, aS), 0)
196195 }
197196
198197
199-func aW (ai,aj) = {
200- let aU = am(ai, aj)
201- valueOrElse(getInteger(this, aU), 0)
198+func aU (ai,aj) = {
199+ let aS = am(ai, aj)
200+ valueOrElse(getInteger(this, aS), 0)
202201 }
203202
204203
205-func aX (ai,aj,ak,aY) = {
206- let aU = an(ai, aj, ak)
207- valueOrElse(getInteger(this, aU), aY)
204+func aV (ai,aj,ak) = {
205+ let aS = an(ai, aj, ak)
206+ valueOrElse(getInteger(this, aS), 0)
208207 }
209208
210209
211-func aZ (ai,aj,ak) = {
212- let aU = ao(ai, aj, ak)
213- valueOrElse(getInteger(this, aU), 0)
210+func aW (ai,ak) = {
211+ let aS = ao(ai, ak)
212+ valueOrElse(getInteger(this, aS), 0)
214213 }
215214
216215
217-func ba (ai,ak) = {
218- let aU = ap(ai, ak)
219- valueOrElse(getInteger(this, aU), 0)
216+func aX () = N(valueOrElse(getString(this, j), ""))
217+
218+
219+func aY () = N(valueOrElse(getString(this, i), ""))
220+
221+
222+func aZ (ai,ar) = {
223+ let aS = aq(ai, ar)
224+ valueOrElse(getInteger(this, aS), 0)
220225 }
221226
222227
223-func bb () = N(getStringValue(this, k))
224-
225-
226-func bc () = N(getStringValue(this, j))
227-
228-
229-func bd (ai,as) = {
230- let aU = ar(ai, as)
231- valueOrElse(getInteger(this, aU), 0)
228+func ba (ai,ar) = {
229+ let aS = as(ai, ar)
230+ valueOrElse(getInteger(this, aS), 0)
232231 }
233232
234233
235-func be (ai,as) = {
236- let aU = at(ai, as)
237- valueOrElse(getInteger(this, aU), 0)
234+func bb (aj,ar) = {
235+ let aS = aw(aj, ar)
236+ valueOrElse(getInteger(this, aS), 0)
238237 }
239238
240239
241-func bf (as,ak) = {
242- let bg = valueOrErrorMessage(getString(this, m), "Oracle not set")
243- let bh = valueOrErrorMessage(addressFromString(bg), "Invalid oracle address")
244- let bi = aw(as, ak)
245- aN(valueOrErrorMessage(getInteger(bh, bi), ((("No oracle price for asset " + as) + " period ") + toString(ak))))
240+func bc (ar,ak) = {
241+ let bd = valueOrErrorMessage(getString(this, l), "Oracle not set")
242+ let be = valueOrErrorMessage(addressFromString(bd), "Invalid oracle address")
243+ let bf = av(ar, ak)
244+ aL(valueOrErrorMessage(getInteger(be, bf), ((("No oracle price for asset " + ar) + " period ") + toString(ak))))
246245 }
247246
248247
249-func bj (ai,aj,as,ak) = {
250- let bk = bd(ai, as)
251- if ((bk == 0))
248+func bg (ai,aj,ar,ak) = {
249+ let bh = aZ(ai, ar)
250+ if ((bh == 0))
252251 then 0
253252 else {
254- let bl = aV(ai, ak)
255- let bm = bf(as, ak)
256- let bn = be(ai, as)
257- let bo = aZ(ai, aj, ak)
258- let bp = ba(ai, ak)
259- if ((bp == 0))
253+ let bi = aT(ai, ak)
254+ let bj = bc(ar, ak)
255+ let bk = ba(ai, ar)
256+ let bl = aV(ai, aj, ak)
257+ let bm = aW(ai, ak)
258+ if ((bm == 0))
260259 then 0
261260 else {
262- let bq = S(P(bl, bm), bk)
263- let br = V(bq, bn)
264- let bs = P(S(br, bo), bp)
265- bs
261+ let bn = S(P(bi, bj), bh)
262+ let bo = V(bn, bk)
263+ let bp = P(S(bo, bl), bm)
264+ bp
266265 }
267266 }
268267 }
269268
270269
271-func bt (aj,as,ak) = {
272- let bu = bb()
273- func bv (bw,ai) = (bw + bj(ai, aj, as, ak))
270+func bq (aj,ar,ak) = {
271+ let br = aX()
272+ func bs (bt,ai) = (bt + bg(ai, aj, ar, ak))
274273
275- let E = bu
274+ let E = br
276275 let F = size(E)
277276 let G = 0
278277 func H (I,J) = if ((J >= F))
279278 then I
280- else bv(I, E[J])
279+ else bs(I, E[J])
281280
282281 func K (I,J) = if ((J >= F))
283282 then I
287286 }
288287
289288
290-func bx (aj,as,by) = {
291- func bv (bw,ak) = (bw + bt(aj, as, ak))
289+func bu (aj,ar,bv) = {
290+ func bs (bt,ak) = (bt + bq(aj, ar, ak))
292291
293- let E = by
292+ let E = bv
294293 let F = size(E)
295294 let G = 0
296295 func H (I,J) = if ((J >= F))
297296 then I
298- else bv(I, E[J])
297+ else bs(I, E[J])
299298
300299 func K (I,J) = if ((J >= F))
301300 then I
302- else throw("List size exceeds 10")
301+ else throw("List size exceeds 18")
303302
304- K(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
303+ K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
305304 }
306305
307306
308-func bz (aj,as,av) = {
309- let aU = au(aj, as, av)
310- valueOrElse(getBoolean(this, aU), false)
307+func bw (ai,aj,ak,bx) = {
308+ let aS = ap(ai, aj, ak)
309+ valueOrElse(getInteger(this, aS), bx)
311310 }
312311
313312
314-@Callable(bA)
315-func initialize (bB,bC) = if (ag())
313+func by (aj,ar,au) = {
314+ let aS = at(aj, ar, au)
315+ valueOrElse(getBoolean(this, aS), false)
316+ }
317+
318+
319+func bz (aj,ar,bv) = {
320+ let bA = N(bv)
321+ func bB (bt,bC) = {
322+ let bD = valueOrErrorMessage(parseInt(bC), ("Invalid period: " + bC))
323+ if (if (containsElement(bt, bD))
324+ then true
325+ else by(aj, ar, bD))
326+ then bt
327+ else (bt :+ bD)
328+ }
329+
330+ let bE = {
331+ let E = bA
332+ let F = size(E)
333+ let G = nil
334+ func H (I,J) = if ((J >= F))
335+ then I
336+ else bB(I, E[J])
337+
338+ func K (I,J) = if ((J >= F))
339+ then I
340+ else throw("List size exceeds 18")
341+
342+ K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
343+ }
344+ func bF (bt,au) = (bt :+ BooleanEntry(at(aj, ar, au), true))
345+
346+ let bG = {
347+ let E = bE
348+ let F = size(E)
349+ let G = nil
350+ func bH (I,J) = if ((J >= F))
351+ then I
352+ else bF(I, E[J])
353+
354+ func bI (I,J) = if ((J >= F))
355+ then I
356+ else throw("List size exceeds 18")
357+
358+ bI(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
359+ }
360+ let bJ = bu(aj, ar, bE)
361+ if ((bJ == 0))
362+ then throw("Nothing to claim")
363+ else $Tuple2(bJ, ([ScriptTransfer(addressFromStringValue(aj), bJ, fromBase58String(ar)), IntegerEntry(aw(aj, ar), (bb(aj, ar) + bJ))] ++ bG))
364+ }
365+
366+
367+@Callable(bK)
368+func initialize (bL,bM) = if (ag())
316369 then throw("Already initialized")
317- else [StringEntry(p, bB), StringEntry(m, bC), BooleanEntry(o, true)]
370+ else [StringEntry(p, bL), StringEntry(l, bM), BooleanEntry(o, true)]
318371
319372
320373
321-@Callable(bA)
322-func view_claimRewards (aj,as,av) = throw(toString(bx(aj, as, [av])))
374+@Callable(bK)
375+func view_claimRewards (aj,ar,au) = throw(toString(bu(aj, ar, [au])))
323376
324377
325378
326-@Callable(bA)
327-func claimRewards (as,av) = {
328- let bD = toString(bA.caller)
329- if (bz(bD, as, av))
330- then throw("Already claimed")
379+@Callable(bK)
380+func view_calcReward (aj,ai,ar,au) = throw(toString(bg(ai, ar, aj, au)))
381+
382+
383+
384+@Callable(bK)
385+func view_claimAllRewards (aj,ar,bv) = {
386+ let bN = bz(aj, ar, bv)
387+ throw(((toString(bN._1) + ",") + toString(bb(aj, ar))))
388+ }
389+
390+
391+
392+@Callable(bK)
393+func claimAllRewards (ar,bv) = {
394+ let bO = toString(bK.caller)
395+ let bN = bz(bO, ar, bv)
396+ bN._2
397+ }
398+
399+
400+
401+@Callable(bK)
402+func attachRewards (ai,ar,bP,bQ) = if (if (!(ag()))
403+ then true
404+ else (bK.caller != ab()))
405+ then throw("Invalid attachRewards params")
406+ else {
407+ let br = aX()
408+ let bR = aY()
409+ let bS = if (containsElement(br, ai))
410+ then br
411+ else (br :+ ai)
412+ let bT = if (containsElement(bR, ar))
413+ then bR
414+ else (bR :+ ar)
415+[IntegerEntry(aq(ai, ar), bQ), IntegerEntry(as(ai, ar), bP), StringEntry(j, y(bS)), StringEntry(i, y(bT))]
416+ }
417+
418+
419+
420+@Callable(bK)
421+func notifyFees (aj,bU) = {
422+ let bV = toString(bK.caller)
423+ if (if (!(ac(bV)))
424+ then true
425+ else !(ag()))
426+ then throw("Invalid notifyFees params")
331427 else {
332- let bE = aR(lastBlock.timestamp)
333- if ((av >= bE))
334- then throw(("Unable to claim rewards in future periods, current period is " + toString(bE)))
335- else {
336- let bF = bx(bD, as, [av])
337- if ((bF == 0))
338- then throw("Nothing to claim")
339- else [ScriptTransfer(bA.caller, bF, fromBase58String(as)), BooleanEntry(au(bD, as, av), true)]
340- }
428+ let bW = aL(bU)
429+ let bX = lastBlock.timestamp
430+ let bY = aP(bX)
431+ let bZ = aR(bV, aj, bY)
432+ let bi = aT(bV, bY)
433+ let ca = (bZ + bW)
434+ let cb = (bi + bW)
435+ ax(bV, aj, bY, ca, cb)
341436 }
342437 }
343438
344439
345440
346-@Callable(bA)
347-func attachRewards (ai,as,bG,bH) = if (if (!(ag()))
348- then true
349- else (bA.caller != ab()))
350- then throw("Invalid attachRewards params")
351- else {
352- let bu = bb()
353- let bI = bc()
354- let bJ = if (containsElement(bu, ai))
355- then bu
356- else (bu :+ ai)
357- let bK = if (containsElement(bI, as))
358- then bI
359- else (bI :+ as)
360-[IntegerEntry(ar(ai, as), bH), IntegerEntry(at(ai, as), bG), StringEntry(k, y(bJ)), StringEntry(j, y(bK))]
361- }
362-
363-
364-
365-@Callable(bA)
366-func notifyFees (aj,bL) = {
367- let bM = toString(bA.caller)
368- if (if (!(ac(bM)))
441+@Callable(bK)
442+func notifyNotional (aj,cc) = {
443+ let bV = toString(bK.caller)
444+ if (if (!(ac(bV)))
369445 then true
370446 else !(ag()))
371- then throw("Invalid notifyFees params")
447+ then throw("Invalid notifyNotional params")
372448 else {
373- let bN = aN(bL)
374- let bO = lastBlock.timestamp
375- let bP = aR(bO)
376- let bQ = aT(bM, aj, bP)
377- let bl = aV(bM, bP)
378- let bR = (bQ + bN)
379- let bS = (bl + bN)
380- ax(bM, aj, bP, bR, bS)
449+ let cd = aL(cc)
450+ let bX = lastBlock.timestamp
451+ let ce = aU(bV, aj)
452+ let bY = aP(bX)
453+ let cf = aN(bY)
454+ let cg = aO(bY)
455+ let ch = (cg - cf)
456+ let ci = bw(bV, aj, bY, ce)
457+ let cj = P((cg - bX), ch)
458+ let ck = aV(bV, aj, bY)
459+ let cl = aW(bV, bY)
460+ let cm = aR(bV, aj, bY)
461+ let cn = ((ci + S(cd, cj)) - S(ce, cj))
462+ let co = S(T(cm, w), T(cn, (v - w)))
463+ let cp = ((cl - ck) + co)
464+ aC(bV, aj, bY, cn, cd, co, cp)
381465 }
382466 }
383467
384468
385-
386-@Callable(bA)
387-func notifyNotional (aj,bT) = {
388- let bM = toString(bA.caller)
389- if (if (!(ac(bM)))
390- then true
391- else !(ag()))
392- then throw("Invalid notifyNotional params")
393- else {
394- let bU = aN(bT)
395- let bO = lastBlock.timestamp
396- let bV = aW(bM, aj)
397- let bP = aR(bO)
398- let bW = aP(bP)
399- let bX = aQ(bP)
400- let bY = (bX - bW)
401- let bZ = aX(bM, aj, bP, bW)
402- let ca = (bO - bZ)
403- let cb = aZ(bM, aj, bP)
404- let cc = ba(bM, bP)
405- let cd = aT(bM, aj, bP)
406- let ce = (S(bV, P(ca, bY)) + S(bU, P((bY - ca), bY)))
407- let cf = S(T(cd, w), T(ce, (v - w)))
408- let cg = ((cc - cb) + cf)
409- aC(bM, aj, bP, bO, ce, bU, cf, cg)
410- }
411- }
412-
413-
414-@Verifier(ch)
415-func ci () = sigVerify(ch.bodyBytes, ch.proofs[0], aa())
469+@Verifier(cq)
470+func cr () = sigVerify(cq.bodyBytes, cq.proofs[0], aa())
416471
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "k_totalFeesInPeriod"
55
66 let b = "k_traderFeesInPeriod"
77
88 let c = "k_lastNotional"
99
10-let d = "k_lastDateInPeriod"
10+let d = "k_totalScoreInPeriod"
1111
12-let e = "k_totalScoreInPeriod"
12+let e = "k_traderScoreInPeriod"
1313
14-let f = "k_traderScoreInPeriod"
14+let f = "k_traderAverageNotionalInPeriod"
1515
16-let g = "k_traderAverageNotionalInPeriod"
16+let g = "k_ammRewardRate"
1717
18-let h = "k_ammRewardRate"
18+let h = "k_ammMaxAmountPerPeriod"
1919
20-let i = "k_ammMaxAmountPerPeriod"
20+let i = "k_rewardAssetIds"
2121
22-let j = "k_rewardAssetIds"
22+let j = "k_amms"
2323
24-let k = "k_amms"
24+let k = "k_claimedAssetAndPeriod"
2525
26-let l = "k_claimedAssetAndPeriod"
26+let l = "k_oracleAddress"
2727
28-let m = "k_oracleAddress"
28+let m = "price"
2929
30-let n = "price"
30+let n = "k_totalClaimedForTraderAndAsset"
3131
3232 let o = "k_initialized"
3333
3434 let p = "k_coordinatorAddress"
3535
3636 let q = "k_gov_asset"
3737
3838 let r = "k_quote_asset"
3939
4040 let s = "k_admin_public_key"
4141
4242 let t = "k_admin_address"
4343
4444 let u = "k_amm"
4545
4646 let v = (1 * (((((((10 * 10) * 10) * 10) * 10) * 10) * 10) * 10))
4747
4848 let w = 70000000
4949
5050 let x = (1000 * 604800)
5151
5252 func y (z) = {
5353 func A (B,C) = ((B + C) + ",")
5454
5555 let D = {
5656 let E = z
5757 let F = size(E)
5858 let G = ""
5959 func H (I,J) = if ((J >= F))
6060 then I
6161 else A(I, E[J])
6262
6363 func K (I,J) = if ((J >= F))
6464 then I
6565 else throw("List size exceeds 100")
6666
6767 K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
6868 }
6969 let L = dropRight(D, 1)
7070 let M = if ((take(L, 1) == ","))
7171 then drop(L, 1)
7272 else L
7373 M
7474 }
7575
7676
7777 func N (O) = if ((O == ""))
7878 then nil
7979 else split(O, ",")
8080
8181
8282 func P (Q,R) = fraction(Q, v, R, HALFEVEN)
8383
8484
8585 func S (Q,R) = fraction(Q, R, v, HALFEVEN)
8686
8787
8888 func T (Q,R) = pow(Q, 8, R, 8, 8, HALFEVEN)
8989
9090
9191 func U (Q) = if ((Q > 0))
9292 then Q
9393 else -(Q)
9494
9595
9696 func V (Q,R) = if ((Q > R))
9797 then R
9898 else Q
9999
100100
101101 func W (X,Y) = ((X + "_") + Y)
102102
103103
104104 func Z () = valueOrErrorMessage(addressFromString(getStringValue(this, p)), "Coordinator not set")
105105
106106
107107 func aa () = fromBase58String(getStringValue(Z(), s))
108108
109109
110110 func ab () = addressFromString(getStringValue(Z(), t))
111111
112112
113113 func ac (Y) = valueOrElse(getBoolean(Z(), W(u, Y)), false)
114114
115115
116116 func ad (ae) = valueOrErrorMessage(getInteger(this, ae), ("no value for " + ae))
117117
118118
119119 func af (ae) = valueOrElse(getInteger(this, ae), 0)
120120
121121
122122 func ag () = valueOrElse(getBoolean(this, o), false)
123123
124124
125125 func ah (ai,aj,ak) = ((((((b + "_") + ai) + "_") + aj) + "_") + toString(ak))
126126
127127
128128 func al (ai,ak) = ((((a + "_") + ai) + "_") + toString(ak))
129129
130130
131131 func am (ai,aj) = ((((c + "_") + ai) + "_") + aj)
132132
133133
134-func an (ai,aj,ak) = ((((((d + "_") + ai) + "_") + aj) + "_") + toString(ak))
134+func an (ai,aj,ak) = ((((((e + "_") + ai) + "_") + aj) + "_") + toString(ak))
135135
136136
137-func ao (ai,aj,ak) = ((((((f + "_") + ai) + "_") + aj) + "_") + toString(ak))
137+func ao (ai,ak) = ((((d + "_") + ai) + "_") + toString(ak))
138138
139139
140-func ap (ai,ak) = ((((e + "_") + ai) + "_") + toString(ak))
140+func ap (ai,aj,ak) = ((((((f + "_") + ai) + "_") + aj) + "_") + toString(ak))
141141
142142
143-func aq (ai,aj,ak) = ((((((g + "_") + ai) + "_") + aj) + "_") + toString(ak))
143+func aq (ai,ar) = ((((g + "_") + ai) + "_") + ar)
144144
145145
146-func ar (ai,as) = ((((h + "_") + ai) + "_") + as)
146+func as (ai,ar) = ((((h + "_") + ai) + "_") + ar)
147147
148148
149-func at (ai,as) = ((((i + "_") + ai) + "_") + as)
149+func at (aj,ar,au) = ((((((k + "_") + aj) + "_") + ar) + "_") + toString(au))
150150
151151
152-func au (aj,as,av) = ((((((l + "_") + aj) + "_") + as) + "_") + toString(av))
152+func av (ar,au) = ((((m + "_") + toString(au)) + "_") + ar)
153153
154154
155-func aw (as,av) = ((((n + "_") + toString(av)) + "_") + as)
155+func aw (aj,ar) = ((((n + "_") + aj) + "_") + ar)
156156
157157
158158 func ax (ai,aj,ak,ay,az) = {
159159 let aA = ah(ai, aj, ak)
160160 let aB = al(ai, ak)
161161 [IntegerEntry(aA, ay), IntegerEntry(aB, az)]
162162 }
163163
164164
165-func aC (ai,aj,ak,aD,aE,aF,aG,aH) = {
166- let aI = ap(ai, ak)
167- let aJ = ao(ai, aj, ak)
168- let aK = an(ai, aj, ak)
169- let aL = am(ai, aj)
170- let aM = aq(ai, aj, ak)
171-[IntegerEntry(aI, aH), IntegerEntry(aJ, aG), IntegerEntry(aK, aD), IntegerEntry(aL, aF), IntegerEntry(aM, aE)]
165+func aC (ai,aj,ak,aD,aE,aF,aG) = {
166+ let aH = ao(ai, ak)
167+ let aI = an(ai, aj, ak)
168+ let aJ = am(ai, aj)
169+ let aK = ap(ai, aj, ak)
170+[IntegerEntry(aH, aG), IntegerEntry(aI, aF), IntegerEntry(aJ, aE), IntegerEntry(aK, aD)]
172171 }
173172
174173
175-func aN (aO) = (aO * 100)
174+func aL (aM) = (aM * 100)
176175
177176
178-func aP (ak) = (ak * x)
177+func aN (ak) = (ak * x)
179178
180179
181-func aQ (ak) = ((ak + 1) * x)
180+func aO (ak) = ((ak + 1) * x)
182181
183182
184-func aR (aS) = (aS / x)
183+func aP (aQ) = (aQ / x)
185184
186185
187-func aT (ai,aj,ak) = {
188- let aU = ah(ai, aj, ak)
189- valueOrElse(getInteger(this, aU), 0)
186+func aR (ai,aj,ak) = {
187+ let aS = ah(ai, aj, ak)
188+ valueOrElse(getInteger(this, aS), 0)
190189 }
191190
192191
193-func aV (ai,ak) = {
194- let aU = al(ai, ak)
195- valueOrElse(getInteger(this, aU), 0)
192+func aT (ai,ak) = {
193+ let aS = al(ai, ak)
194+ valueOrElse(getInteger(this, aS), 0)
196195 }
197196
198197
199-func aW (ai,aj) = {
200- let aU = am(ai, aj)
201- valueOrElse(getInteger(this, aU), 0)
198+func aU (ai,aj) = {
199+ let aS = am(ai, aj)
200+ valueOrElse(getInteger(this, aS), 0)
202201 }
203202
204203
205-func aX (ai,aj,ak,aY) = {
206- let aU = an(ai, aj, ak)
207- valueOrElse(getInteger(this, aU), aY)
204+func aV (ai,aj,ak) = {
205+ let aS = an(ai, aj, ak)
206+ valueOrElse(getInteger(this, aS), 0)
208207 }
209208
210209
211-func aZ (ai,aj,ak) = {
212- let aU = ao(ai, aj, ak)
213- valueOrElse(getInteger(this, aU), 0)
210+func aW (ai,ak) = {
211+ let aS = ao(ai, ak)
212+ valueOrElse(getInteger(this, aS), 0)
214213 }
215214
216215
217-func ba (ai,ak) = {
218- let aU = ap(ai, ak)
219- valueOrElse(getInteger(this, aU), 0)
216+func aX () = N(valueOrElse(getString(this, j), ""))
217+
218+
219+func aY () = N(valueOrElse(getString(this, i), ""))
220+
221+
222+func aZ (ai,ar) = {
223+ let aS = aq(ai, ar)
224+ valueOrElse(getInteger(this, aS), 0)
220225 }
221226
222227
223-func bb () = N(getStringValue(this, k))
224-
225-
226-func bc () = N(getStringValue(this, j))
227-
228-
229-func bd (ai,as) = {
230- let aU = ar(ai, as)
231- valueOrElse(getInteger(this, aU), 0)
228+func ba (ai,ar) = {
229+ let aS = as(ai, ar)
230+ valueOrElse(getInteger(this, aS), 0)
232231 }
233232
234233
235-func be (ai,as) = {
236- let aU = at(ai, as)
237- valueOrElse(getInteger(this, aU), 0)
234+func bb (aj,ar) = {
235+ let aS = aw(aj, ar)
236+ valueOrElse(getInteger(this, aS), 0)
238237 }
239238
240239
241-func bf (as,ak) = {
242- let bg = valueOrErrorMessage(getString(this, m), "Oracle not set")
243- let bh = valueOrErrorMessage(addressFromString(bg), "Invalid oracle address")
244- let bi = aw(as, ak)
245- aN(valueOrErrorMessage(getInteger(bh, bi), ((("No oracle price for asset " + as) + " period ") + toString(ak))))
240+func bc (ar,ak) = {
241+ let bd = valueOrErrorMessage(getString(this, l), "Oracle not set")
242+ let be = valueOrErrorMessage(addressFromString(bd), "Invalid oracle address")
243+ let bf = av(ar, ak)
244+ aL(valueOrErrorMessage(getInteger(be, bf), ((("No oracle price for asset " + ar) + " period ") + toString(ak))))
246245 }
247246
248247
249-func bj (ai,aj,as,ak) = {
250- let bk = bd(ai, as)
251- if ((bk == 0))
248+func bg (ai,aj,ar,ak) = {
249+ let bh = aZ(ai, ar)
250+ if ((bh == 0))
252251 then 0
253252 else {
254- let bl = aV(ai, ak)
255- let bm = bf(as, ak)
256- let bn = be(ai, as)
257- let bo = aZ(ai, aj, ak)
258- let bp = ba(ai, ak)
259- if ((bp == 0))
253+ let bi = aT(ai, ak)
254+ let bj = bc(ar, ak)
255+ let bk = ba(ai, ar)
256+ let bl = aV(ai, aj, ak)
257+ let bm = aW(ai, ak)
258+ if ((bm == 0))
260259 then 0
261260 else {
262- let bq = S(P(bl, bm), bk)
263- let br = V(bq, bn)
264- let bs = P(S(br, bo), bp)
265- bs
261+ let bn = S(P(bi, bj), bh)
262+ let bo = V(bn, bk)
263+ let bp = P(S(bo, bl), bm)
264+ bp
266265 }
267266 }
268267 }
269268
270269
271-func bt (aj,as,ak) = {
272- let bu = bb()
273- func bv (bw,ai) = (bw + bj(ai, aj, as, ak))
270+func bq (aj,ar,ak) = {
271+ let br = aX()
272+ func bs (bt,ai) = (bt + bg(ai, aj, ar, ak))
274273
275- let E = bu
274+ let E = br
276275 let F = size(E)
277276 let G = 0
278277 func H (I,J) = if ((J >= F))
279278 then I
280- else bv(I, E[J])
279+ else bs(I, E[J])
281280
282281 func K (I,J) = if ((J >= F))
283282 then I
284283 else throw("List size exceeds 20")
285284
286285 K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
287286 }
288287
289288
290-func bx (aj,as,by) = {
291- func bv (bw,ak) = (bw + bt(aj, as, ak))
289+func bu (aj,ar,bv) = {
290+ func bs (bt,ak) = (bt + bq(aj, ar, ak))
292291
293- let E = by
292+ let E = bv
294293 let F = size(E)
295294 let G = 0
296295 func H (I,J) = if ((J >= F))
297296 then I
298- else bv(I, E[J])
297+ else bs(I, E[J])
299298
300299 func K (I,J) = if ((J >= F))
301300 then I
302- else throw("List size exceeds 10")
301+ else throw("List size exceeds 18")
303302
304- K(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
303+ K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
305304 }
306305
307306
308-func bz (aj,as,av) = {
309- let aU = au(aj, as, av)
310- valueOrElse(getBoolean(this, aU), false)
307+func bw (ai,aj,ak,bx) = {
308+ let aS = ap(ai, aj, ak)
309+ valueOrElse(getInteger(this, aS), bx)
311310 }
312311
313312
314-@Callable(bA)
315-func initialize (bB,bC) = if (ag())
313+func by (aj,ar,au) = {
314+ let aS = at(aj, ar, au)
315+ valueOrElse(getBoolean(this, aS), false)
316+ }
317+
318+
319+func bz (aj,ar,bv) = {
320+ let bA = N(bv)
321+ func bB (bt,bC) = {
322+ let bD = valueOrErrorMessage(parseInt(bC), ("Invalid period: " + bC))
323+ if (if (containsElement(bt, bD))
324+ then true
325+ else by(aj, ar, bD))
326+ then bt
327+ else (bt :+ bD)
328+ }
329+
330+ let bE = {
331+ let E = bA
332+ let F = size(E)
333+ let G = nil
334+ func H (I,J) = if ((J >= F))
335+ then I
336+ else bB(I, E[J])
337+
338+ func K (I,J) = if ((J >= F))
339+ then I
340+ else throw("List size exceeds 18")
341+
342+ K(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(H(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
343+ }
344+ func bF (bt,au) = (bt :+ BooleanEntry(at(aj, ar, au), true))
345+
346+ let bG = {
347+ let E = bE
348+ let F = size(E)
349+ let G = nil
350+ func bH (I,J) = if ((J >= F))
351+ then I
352+ else bF(I, E[J])
353+
354+ func bI (I,J) = if ((J >= F))
355+ then I
356+ else throw("List size exceeds 18")
357+
358+ bI(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(bH(G, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18)
359+ }
360+ let bJ = bu(aj, ar, bE)
361+ if ((bJ == 0))
362+ then throw("Nothing to claim")
363+ else $Tuple2(bJ, ([ScriptTransfer(addressFromStringValue(aj), bJ, fromBase58String(ar)), IntegerEntry(aw(aj, ar), (bb(aj, ar) + bJ))] ++ bG))
364+ }
365+
366+
367+@Callable(bK)
368+func initialize (bL,bM) = if (ag())
316369 then throw("Already initialized")
317- else [StringEntry(p, bB), StringEntry(m, bC), BooleanEntry(o, true)]
370+ else [StringEntry(p, bL), StringEntry(l, bM), BooleanEntry(o, true)]
318371
319372
320373
321-@Callable(bA)
322-func view_claimRewards (aj,as,av) = throw(toString(bx(aj, as, [av])))
374+@Callable(bK)
375+func view_claimRewards (aj,ar,au) = throw(toString(bu(aj, ar, [au])))
323376
324377
325378
326-@Callable(bA)
327-func claimRewards (as,av) = {
328- let bD = toString(bA.caller)
329- if (bz(bD, as, av))
330- then throw("Already claimed")
379+@Callable(bK)
380+func view_calcReward (aj,ai,ar,au) = throw(toString(bg(ai, ar, aj, au)))
381+
382+
383+
384+@Callable(bK)
385+func view_claimAllRewards (aj,ar,bv) = {
386+ let bN = bz(aj, ar, bv)
387+ throw(((toString(bN._1) + ",") + toString(bb(aj, ar))))
388+ }
389+
390+
391+
392+@Callable(bK)
393+func claimAllRewards (ar,bv) = {
394+ let bO = toString(bK.caller)
395+ let bN = bz(bO, ar, bv)
396+ bN._2
397+ }
398+
399+
400+
401+@Callable(bK)
402+func attachRewards (ai,ar,bP,bQ) = if (if (!(ag()))
403+ then true
404+ else (bK.caller != ab()))
405+ then throw("Invalid attachRewards params")
406+ else {
407+ let br = aX()
408+ let bR = aY()
409+ let bS = if (containsElement(br, ai))
410+ then br
411+ else (br :+ ai)
412+ let bT = if (containsElement(bR, ar))
413+ then bR
414+ else (bR :+ ar)
415+[IntegerEntry(aq(ai, ar), bQ), IntegerEntry(as(ai, ar), bP), StringEntry(j, y(bS)), StringEntry(i, y(bT))]
416+ }
417+
418+
419+
420+@Callable(bK)
421+func notifyFees (aj,bU) = {
422+ let bV = toString(bK.caller)
423+ if (if (!(ac(bV)))
424+ then true
425+ else !(ag()))
426+ then throw("Invalid notifyFees params")
331427 else {
332- let bE = aR(lastBlock.timestamp)
333- if ((av >= bE))
334- then throw(("Unable to claim rewards in future periods, current period is " + toString(bE)))
335- else {
336- let bF = bx(bD, as, [av])
337- if ((bF == 0))
338- then throw("Nothing to claim")
339- else [ScriptTransfer(bA.caller, bF, fromBase58String(as)), BooleanEntry(au(bD, as, av), true)]
340- }
428+ let bW = aL(bU)
429+ let bX = lastBlock.timestamp
430+ let bY = aP(bX)
431+ let bZ = aR(bV, aj, bY)
432+ let bi = aT(bV, bY)
433+ let ca = (bZ + bW)
434+ let cb = (bi + bW)
435+ ax(bV, aj, bY, ca, cb)
341436 }
342437 }
343438
344439
345440
346-@Callable(bA)
347-func attachRewards (ai,as,bG,bH) = if (if (!(ag()))
348- then true
349- else (bA.caller != ab()))
350- then throw("Invalid attachRewards params")
351- else {
352- let bu = bb()
353- let bI = bc()
354- let bJ = if (containsElement(bu, ai))
355- then bu
356- else (bu :+ ai)
357- let bK = if (containsElement(bI, as))
358- then bI
359- else (bI :+ as)
360-[IntegerEntry(ar(ai, as), bH), IntegerEntry(at(ai, as), bG), StringEntry(k, y(bJ)), StringEntry(j, y(bK))]
361- }
362-
363-
364-
365-@Callable(bA)
366-func notifyFees (aj,bL) = {
367- let bM = toString(bA.caller)
368- if (if (!(ac(bM)))
441+@Callable(bK)
442+func notifyNotional (aj,cc) = {
443+ let bV = toString(bK.caller)
444+ if (if (!(ac(bV)))
369445 then true
370446 else !(ag()))
371- then throw("Invalid notifyFees params")
447+ then throw("Invalid notifyNotional params")
372448 else {
373- let bN = aN(bL)
374- let bO = lastBlock.timestamp
375- let bP = aR(bO)
376- let bQ = aT(bM, aj, bP)
377- let bl = aV(bM, bP)
378- let bR = (bQ + bN)
379- let bS = (bl + bN)
380- ax(bM, aj, bP, bR, bS)
449+ let cd = aL(cc)
450+ let bX = lastBlock.timestamp
451+ let ce = aU(bV, aj)
452+ let bY = aP(bX)
453+ let cf = aN(bY)
454+ let cg = aO(bY)
455+ let ch = (cg - cf)
456+ let ci = bw(bV, aj, bY, ce)
457+ let cj = P((cg - bX), ch)
458+ let ck = aV(bV, aj, bY)
459+ let cl = aW(bV, bY)
460+ let cm = aR(bV, aj, bY)
461+ let cn = ((ci + S(cd, cj)) - S(ce, cj))
462+ let co = S(T(cm, w), T(cn, (v - w)))
463+ let cp = ((cl - ck) + co)
464+ aC(bV, aj, bY, cn, cd, co, cp)
381465 }
382466 }
383467
384468
385-
386-@Callable(bA)
387-func notifyNotional (aj,bT) = {
388- let bM = toString(bA.caller)
389- if (if (!(ac(bM)))
390- then true
391- else !(ag()))
392- then throw("Invalid notifyNotional params")
393- else {
394- let bU = aN(bT)
395- let bO = lastBlock.timestamp
396- let bV = aW(bM, aj)
397- let bP = aR(bO)
398- let bW = aP(bP)
399- let bX = aQ(bP)
400- let bY = (bX - bW)
401- let bZ = aX(bM, aj, bP, bW)
402- let ca = (bO - bZ)
403- let cb = aZ(bM, aj, bP)
404- let cc = ba(bM, bP)
405- let cd = aT(bM, aj, bP)
406- let ce = (S(bV, P(ca, bY)) + S(bU, P((bY - ca), bY)))
407- let cf = S(T(cd, w), T(ce, (v - w)))
408- let cg = ((cc - cb) + cf)
409- aC(bM, aj, bP, bO, ce, bU, cf, cg)
410- }
411- }
412-
413-
414-@Verifier(ch)
415-func ci () = sigVerify(ch.bodyBytes, ch.proofs[0], aa())
469+@Verifier(cq)
470+func cr () = sigVerify(cq.bodyBytes, cq.proofs[0], aa())
416471

github/deemru/w8io/c3f4982 
85.23 ms