tx · DJ89iyNcHzRojWQU3bseWv4XxN2V9PS8iRL5WHbPxMey

3MrMbQwr3cpCvWMWCFjqUZzqRgxg8En6Jd5:  -0.05100000 Waves

2022.08.02 19:46 [2167135] smart account 3MrMbQwr3cpCvWMWCFjqUZzqRgxg8En6Jd5 > SELF 0.00000000 Waves

{ "type": 13, "id": "DJ89iyNcHzRojWQU3bseWv4XxN2V9PS8iRL5WHbPxMey", "fee": 5100000, "feeAssetId": null, "timestamp": 1659458872803, "version": 2, "chainId": 84, "sender": "3MrMbQwr3cpCvWMWCFjqUZzqRgxg8En6Jd5", "senderPublicKey": "8WTLBzi1s9cZm76TPZ9czV6poaHGWvpZ7sCBeTBaa7uh", "proofs": [ "2HzNxjrya79htbEb1VaMJo9R62mhCAsRYsEUQpfxQTn4rA3c1Kr4dLH4doFpD2mL4b3u62Nw1fjJmhxypguUC26K" ], "script": "base64:BgIpCAISBAoCCAgSBQoDCAgBEgQKAggBEgYKBAgIAQESBAoCCAESBAoCCAFKABNrX3RvdGFsRmVlc0luUGVyaW9kAhNrX3RvdGFsRmVlc0luUGVyaW9kABRrX3RyYWRlckZlZXNJblBlcmlvZAIUa190cmFkZXJGZWVzSW5QZXJpb2QADmtfbGFzdE5vdGlvbmFsAg5rX2xhc3ROb3Rpb25hbAASa19sYXN0RGF0ZUluUGVyaW9kAhJrX2xhc3REYXRlSW5QZXJpb2QAFGtfdG90YWxTY29yZUluUGVyaW9kAhRrX3RvdGFsU2NvcmVJblBlcmlvZAAVa190cmFkZXJTY29yZUluUGVyaW9kAhVrX3RyYWRlclNjb3JlSW5QZXJpb2QAH2tfdHJhZGVyQXZlcmFnZU5vdGlvbmFsSW5QZXJpb2QCH2tfdHJhZGVyQXZlcmFnZU5vdGlvbmFsSW5QZXJpb2QAD2tfYW1tUmV3YXJkUmF0ZQIPa19hbW1SZXdhcmRSYXRlABdrX2FtbU1heEFtb3VudFBlclBlcmlvZAIXa19hbW1NYXhBbW91bnRQZXJQZXJpb2QAEGtfcmV3YXJkQXNzZXRJZHMCEGtfcmV3YXJkQXNzZXRJZHMABmtfYW1tcwIGa19hbW1zABdrX2NsYWltZWRBc3NldEFuZFBlcmlvZAIXa19jbGFpbWVkQXNzZXRBbmRQZXJpb2QAD2tfb3JhY2xlQWRkcmVzcwIPa19vcmFjbGVBZGRyZXNzAA1rX29yYWNsZVByaWNlAgVwcmljZQANa19pbml0aWFsaXplZAINa19pbml0aWFsaXplZAAUa19jb29yZGluYXRvckFkZHJlc3MCFGtfY29vcmRpbmF0b3JBZGRyZXNzABJrX2dvdmVybmFuY2VfYXNzZXQCC2tfZ292X2Fzc2V0AA1rX3F1b3RlX2Fzc2V0Ag1rX3F1b3RlX2Fzc2V0ABJrX2FkbWluX3B1YmxpY19rZXkCEmtfYWRtaW5fcHVibGljX2tleQAPa19hZG1pbl9hZGRyZXNzAg9rX2FkbWluX2FkZHJlc3MABWtfYW1tAgVrX2FtbQAMREVDSU1BTF9VTklUCQBoAgABCQBoAgkAaAIJAGgCCQBoAgkAaAIJAGgCCQBoAgAKAAoACgAKAAoACgAKAAoAAUEAgLuwIQAI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Al94AQ50b0NvbXBvc2l0ZUtleQIEX2tleQhfYWRkcmVzcwkArAICCQCsAgIFBF9rZXkCAV8FCF9hZGRyZXNzAQtjb29yZGluYXRvcgAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRRrX2Nvb3JkaW5hdG9yQWRkcmVzcwITQ29vcmRpbmF0b3Igbm90IHNldAEOYWRtaW5QdWJsaWNLZXkACQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQtjb29yZGluYXRvcgAFEmtfYWRtaW5fcHVibGljX2tleQEMYWRtaW5BZGRyZXNzAAkApggBCQERQGV4dHJOYXRpdmUoMTA1MykCCQELY29vcmRpbmF0b3IABQ9rX2FkbWluX2FkZHJlc3MBC2lzV2hpdGVsaXN0AQhfYWRkcmVzcwkBC3ZhbHVlT3JFbHNlAgkAmwgCCQELY29vcmRpbmF0b3IACQEOdG9Db21wb3NpdGVLZXkCBQVrX2FtbQUIX2FkZHJlc3MHAQNpbnQBAWsJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQFrCQCsAgICDW5vIHZhbHVlIGZvciAFAWsBBGludDABAWsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBawAAAQtpbml0aWFsaXplZAAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUNa19pbml0aWFsaXplZAcBEmdldEZlZXNJblBlcmlvZEtleQMEX2FtbQdfdHJhZGVyB193ZWVrSWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFFGtfdHJhZGVyRmVlc0luUGVyaW9kAgFfBQRfYW1tAgFfBQdfdHJhZGVyAgFfCQCkAwEFB193ZWVrSWQBF2dldFRvdGFsRmVlc0luUGVyaW9kS2V5AgRfYW1tB193ZWVrSWQJAKwCAgkArAICCQCsAgIJAKwCAgUTa190b3RhbEZlZXNJblBlcmlvZAIBXwUEX2FtbQIBXwkApAMBBQdfd2Vla0lkARJnZXRMYXN0Tm90aW9uYWxLZXkCBF9hbW0HX3RyYWRlcgkArAICCQCsAgIJAKwCAgkArAICBQ5rX2xhc3ROb3Rpb25hbAIBXwUEX2FtbQIBXwUHX3RyYWRlcgEWZ2V0TGFzdERhdGVJblBlcmlvZEtleQMEX2FtbQdfdHJhZGVyB193ZWVrSWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFEmtfbGFzdERhdGVJblBlcmlvZAIBXwUEX2FtbQIBXwUHX3RyYWRlcgIBXwkApAMBBQdfd2Vla0lkARlnZXRUcmFkZXJTY29yZUluUGVyaW9kS2V5AwRfYW1tB190cmFkZXIHX3dlZWtJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUVa190cmFkZXJTY29yZUluUGVyaW9kAgFfBQRfYW1tAgFfBQdfdHJhZGVyAgFfCQCkAwEFB193ZWVrSWQBGGdldFRvdGFsU2NvcmVJblBlcmlvZEtleQIEX2FtbQdfd2Vla0lkCQCsAgIJAKwCAgkArAICCQCsAgIFFGtfdG90YWxTY29yZUluUGVyaW9kAgFfBQRfYW1tAgFfCQCkAwEFB193ZWVrSWQBI2dldFRyYWRlckF2ZXJhZ2VOb3Rpb25hbEluUGVyaW9kS2V5AwRfYW1tB190cmFkZXIHX3dlZWtJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUfa190cmFkZXJBdmVyYWdlTm90aW9uYWxJblBlcmlvZAIBXwUEX2FtbQIBXwUHX3RyYWRlcgIBXwkApAMBBQdfd2Vla0lkARNnZXRBbW1SZXdhcmRSYXRlS2V5AgRfYW1tCF9hc3NldElkCQCsAgIJAKwCAgkArAICCQCsAgIFD2tfYW1tUmV3YXJkUmF0ZQIBXwUEX2FtbQIBXwUIX2Fzc2V0SWQBG2dldEFtbU1heEFtb3VudFBlclBlcmlvZEtleQIEX2FtbQhfYXNzZXRJZAkArAICCQCsAgIJAKwCAgkArAICBRdrX2FtbU1heEFtb3VudFBlclBlcmlvZAIBXwUEX2FtbQIBXwUIX2Fzc2V0SWQBHmdldENsYWltZWRUcmFkZXJBc3NldFBlcmlvZEtleQMHX3RyYWRlcghfYXNzZXRJZAdfcGVyaW9kCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBRdrX2NsYWltZWRBc3NldEFuZFBlcmlvZAIBXwUHX3RyYWRlcgIBXwUIX2Fzc2V0SWQCAV8JAKQDAQUHX3BlcmlvZAERZ2V0T3JhY2xlUHJpY2VLZXkCCF9hc3NldElkB19wZXJpb2QJAKwCAgkArAICCQCsAgIJAKwCAgUNa19vcmFjbGVQcmljZQIBXwkApAMBBQdfcGVyaW9kAgFfBQhfYXNzZXRJZAENdXBkYXRlQW1tRmVlcwUEX2FtbQdfdHJhZGVyB193ZWVrSWQLX3RyYWRlckZlZXMKX3RvdGFsRmVlcwQNdHJhZGVyRmVlc0tleQkBEmdldEZlZXNJblBlcmlvZEtleQMFBF9hbW0FB190cmFkZXIFB193ZWVrSWQEDHRvdGFsRmVlc0tleQkBF2dldFRvdGFsRmVlc0luUGVyaW9kS2V5AgUEX2FtbQUHX3dlZWtJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUNdHJhZGVyRmVlc0tleQULX3RyYWRlckZlZXMJAMwIAgkBDEludGVnZXJFbnRyeQIFDHRvdGFsRmVlc0tleQUKX3RvdGFsRmVlcwUDbmlsAQ11cGRhdGVBbW1EYXRhCARfYW1tB190cmFkZXIHX3dlZWtJZBdfdHJhZGVyTGFzdERhdGVJblBlcmlvZA5fdHJhZGVyQXZlcmFnZRNfdHJhZGVyTGFzdE5vdGlvbmFsDF90cmFkZXJTY29yZQtfdG90YWxTY29yZQQVdG90YWxTY29yZUluUGVyaW9kS2V5CQEYZ2V0VG90YWxTY29yZUluUGVyaW9kS2V5AgUEX2FtbQUHX3dlZWtJZAQWdHJhZGVyU2NvcmVJblBlcmlvZEtleQkBGWdldFRyYWRlclNjb3JlSW5QZXJpb2RLZXkDBQRfYW1tBQdfdHJhZGVyBQdfd2Vla0lkBBNsYXN0RGF0ZUluUGVyaW9kS2V5CQEWZ2V0TGFzdERhdGVJblBlcmlvZEtleQMFBF9hbW0FB190cmFkZXIFB193ZWVrSWQED2xhc3ROb3Rpb25hbEtleQkBEmdldExhc3ROb3Rpb25hbEtleQIFBF9hbW0FB190cmFkZXIEIHRyYWRlckF2ZXJhZ2VOb3Rpb25hbEluUGVyaW9kS2V5CQEjZ2V0VHJhZGVyQXZlcmFnZU5vdGlvbmFsSW5QZXJpb2RLZXkDBQRfYW1tBQdfdHJhZGVyBQdfd2Vla0lkCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRV0b3RhbFNjb3JlSW5QZXJpb2RLZXkFC190b3RhbFNjb3JlCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRZ0cmFkZXJTY29yZUluUGVyaW9kS2V5BQxfdHJhZGVyU2NvcmUJAMwIAgkBDEludGVnZXJFbnRyeQIFE2xhc3REYXRlSW5QZXJpb2RLZXkFF190cmFkZXJMYXN0RGF0ZUluUGVyaW9kCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9sYXN0Tm90aW9uYWxLZXkFE190cmFkZXJMYXN0Tm90aW9uYWwJAMwIAgkBDEludGVnZXJFbnRyeQIFIHRyYWRlckF2ZXJhZ2VOb3Rpb25hbEluUGVyaW9kS2V5BQ5fdHJhZGVyQXZlcmFnZQUDbmlsAQ51c2RuVG9EZWNpbWFscwEHX2Ftb3VudAkAaAIFB19hbW91bnQAZAEMZ2V0V2Vla1N0YXJ0AQdfd2Vla0lkCQBoAgUHX3dlZWtJZAUKTVNfSU5fV0VFSwEKZ2V0V2Vla0VuZAEHX3dlZWtJZAkAaAIJAGQCBQdfd2Vla0lkAAEFCk1TX0lOX1dFRUsBCWdldFdlZWtJZAEDX3RzCQBpAgUDX3RzBQpNU19JTl9XRUVLAQ9nZXRGZWVzSW5QZXJpb2QDBF9hbW0HX3RyYWRlcgdfd2Vla0lkBANrZXkJARJnZXRGZWVzSW5QZXJpb2RLZXkDBQRfYW1tBQdfdHJhZGVyBQdfd2Vla0lkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAARRnZXRUb3RhbEZlZXNJblBlcmlvZAIEX2FtbQdfd2Vla0lkBANrZXkJARdnZXRUb3RhbEZlZXNJblBlcmlvZEtleQIFBF9hbW0FB193ZWVrSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABD2dldExhc3ROb3Rpb25hbAIEX2FtbQdfdHJhZGVyBANrZXkJARJnZXRMYXN0Tm90aW9uYWxLZXkCBQRfYW1tBQdfdHJhZGVyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAARNnZXRMYXN0RGF0ZUluUGVyaW9kBARfYW1tB190cmFkZXIHX3dlZWtJZApfd2Vla1N0YXJ0BANrZXkJARZnZXRMYXN0RGF0ZUluUGVyaW9kS2V5AwUEX2FtbQUHX3RyYWRlcgUHX3dlZWtJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkFCl93ZWVrU3RhcnQBFmdldFRyYWRlclNjb3JlSW5QZXJpb2QDBF9hbW0HX3RyYWRlcgdfd2Vla0lkBANrZXkJARlnZXRUcmFkZXJTY29yZUluUGVyaW9kS2V5AwUEX2FtbQUHX3RyYWRlcgUHX3dlZWtJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEVZ2V0VG90YWxTY29yZUluUGVyaW9kAgRfYW1tB193ZWVrSWQEA2tleQkBGGdldFRvdGFsU2NvcmVJblBlcmlvZEtleQIFBF9hbW0FB193ZWVrSWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABB2dldEFtbXMACQEJc3RyVG9MaXN0AQUGa19hbW1zARFnZXRSZXdhcmRBc3NldElkcwAJAQlzdHJUb0xpc3QBBRBrX3Jld2FyZEFzc2V0SWRzARBnZXRBbW1SZXdhcmRSYXRlAgRfYW1tCF9hc3NldElkBANrZXkJARNnZXRBbW1SZXdhcmRSYXRlS2V5AgUEX2FtbQUIX2Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABGGdldEFtbU1heEFtb3VudFBlclBlcmlvZAIEX2FtbQhfYXNzZXRJZAQDa2V5CQEbZ2V0QW1tTWF4QW1vdW50UGVyUGVyaW9kS2V5AgUEX2FtbQUIX2Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABE2dldFJld2FyZEFzc2V0UHJpY2UCCF9hc3NldElkB193ZWVrSWQEEG9yYWNsZUFkZHJlc3NTdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQ9rX29yYWNsZUFkZHJlc3MCDk9yYWNsZSBub3Qgc2V0BA1vcmFjbGVBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUQb3JhY2xlQWRkcmVzc1N0cgIWSW52YWxpZCBvcmFjbGUgYWRkcmVzcwQIcHJpY2VLZXkJARFnZXRPcmFjbGVQcmljZUtleQIFCF9hc3NldElkBQdfd2Vla0lkCQEOdXNkblRvRGVjaW1hbHMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUNb3JhY2xlQWRkcmVzcwUIcHJpY2VLZXkJAKwCAgkArAICCQCsAgICGk5vIG9yYWNsZSBwcmljZSBmb3IgYXNzZXQgBQhfYXNzZXRJZAIIIHBlcmlvZCAJAKQDAQUHX3dlZWtJZAEecmV3YXJkRm9yVHJhZGVySW5Bc3NldEluUGVyaW9kBARfYW1tB190cmFkZXIIX2Fzc2V0SWQHX3dlZWtJZAQPcmV3YXJkQXNzZXRSYXRlCQEQZ2V0QW1tUmV3YXJkUmF0ZQIFBF9hbW0FCF9hc3NldElkAwkAAAIFD3Jld2FyZEFzc2V0UmF0ZQAAAAAEEXRvdGFsRmVlc0luUGVyaW9kCQEUZ2V0VG90YWxGZWVzSW5QZXJpb2QCBQRfYW1tBQdfd2Vla0lkBBByZXdhcmRBc3NldFByaWNlCQETZ2V0UmV3YXJkQXNzZXRQcmljZQIFCF9hc3NldElkBQdfd2Vla0lkBBxtYXhBbW91bnRPZkFzc2V0VG9EaXN0cmlidXRlCQEYZ2V0QW1tTWF4QW1vdW50UGVyUGVyaW9kAgUEX2FtbQUIX2Fzc2V0SWQEC3RyYWRlclNjb3JlCQEWZ2V0VHJhZGVyU2NvcmVJblBlcmlvZAMFBF9hbW0FB190cmFkZXIFB193ZWVrSWQEEHRvdGFsVHJhZGVyU2NvcmUJARVnZXRUb3RhbFNjb3JlSW5QZXJpb2QCBQRfYW1tBQdfd2Vla0lkAwkAAAIFEHRvdGFsVHJhZGVyU2NvcmUAAAAABBZ0b3RhbEFzc2V0VG9EaXN0cmlidXRlCQEEbXVsZAIJAQRkaXZkAgURdG90YWxGZWVzSW5QZXJpb2QFEHJld2FyZEFzc2V0UHJpY2UFD3Jld2FyZEFzc2V0UmF0ZQQcYWN0dWFsVG90YWxBc3NldFRvRGlzdHJpYnV0ZQkBBG1pbnYCBRZ0b3RhbEFzc2V0VG9EaXN0cmlidXRlBRxtYXhBbW91bnRPZkFzc2V0VG9EaXN0cmlidXRlBBR0cmFkZXJTaGFyZUluUmV3YXJkcwkBBGRpdmQCCQEEbXVsZAIFHGFjdHVhbFRvdGFsQXNzZXRUb0Rpc3RyaWJ1dGUFC3RyYWRlclNjb3JlBRB0b3RhbFRyYWRlclNjb3JlBRR0cmFkZXJTaGFyZUluUmV3YXJkcwEjdG90YWxSZXdhcmRGb3JUcmFkZXJJbkFzc2V0SW5QZXJpb2QDB190cmFkZXIIX2Fzc2V0SWQHX3dlZWtJZAQEYW1tcwkBB2dldEFtbXMACgEHY29tcHV0ZQIEX2FjYwRfYW1tCQBkAgUEX2FjYwkBHnJld2FyZEZvclRyYWRlckluQXNzZXRJblBlcmlvZAQFBF9hbW0FB190cmFkZXIFCF9hc3NldElkBQdfd2Vla0lkCgACJGwFBGFtbXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NvbXB1dGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDIwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAEbdG90YWxSZXdhcmRGb3JUcmFkZXJJbkFzc2V0AwdfdHJhZGVyCF9hc3NldElkCF9wZXJpb2RzCgEHY29tcHV0ZQIEX2FjYwdfd2Vla0lkCQBkAgUEX2FjYwkBI3RvdGFsUmV3YXJkRm9yVHJhZGVySW5Bc3NldEluUGVyaW9kAwUHX3RyYWRlcgUIX2Fzc2V0SWQFB193ZWVrSWQKAAIkbAUIX3BlcmlvZHMKAAIkcwkAkAMBBQIkbAoABSRhY2MwAAAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBB2NvbXB1dGUCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBCWlzQ2xhaW1lZAMHX3RyYWRlcghfYXNzZXRJZAdfcGVyaW9kBANrZXkJAR5nZXRDbGFpbWVkVHJhZGVyQXNzZXRQZXJpb2RLZXkDBQdfdHJhZGVyBQhfYXNzZXRJZAUHX3BlcmlvZAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHBgFpAQppbml0aWFsaXplAgxfY29vcmRpbmF0b3IHX29yYWNsZQMJAQtpbml0aWFsaXplZAAJAAIBAhNBbHJlYWR5IGluaXRpYWxpemVkCQDMCAIJAQtTdHJpbmdFbnRyeQIFFGtfY29vcmRpbmF0b3JBZGRyZXNzBQxfY29vcmRpbmF0b3IJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa19vcmFjbGVBZGRyZXNzBQdfb3JhY2xlCQDMCAIJAQxCb29sZWFuRW50cnkCBQ1rX2luaXRpYWxpemVkBgUDbmlsAWkBEXZpZXdfY2xhaW1SZXdhcmRzAwdfdHJhZGVyCF9hc3NldElkB19wZXJpb2QJAAIBCQCkAwEJARt0b3RhbFJld2FyZEZvclRyYWRlckluQXNzZXQDBQdfdHJhZGVyBQhfYXNzZXRJZAkAzAgCBQdfcGVyaW9kBQNuaWwBaQEMY2xhaW1SZXdhcmRzAghfYXNzZXRJZAdfcGVyaW9kBAZ0cmFkZXIJAKUIAQgFAWkGY2FsbGVyAwkBCWlzQ2xhaW1lZAMFBnRyYWRlcgUIX2Fzc2V0SWQFB19wZXJpb2QJAAIBAg9BbHJlYWR5IGNsYWltZWQEDWN1cnJlbnRXZWVrSWQJAQlnZXRXZWVrSWQBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAGcCBQdfcGVyaW9kBQ1jdXJyZW50V2Vla0lkCQACAQkArAICAj1VbmFibGUgdG8gY2xhaW0gcmV3YXJkcyBpbiBmdXR1cmUgcGVyaW9kcywgY3VycmVudCBwZXJpb2QgaXMgCQCkAwEFDWN1cnJlbnRXZWVrSWQEBmFtb3VudAkBG3RvdGFsUmV3YXJkRm9yVHJhZGVySW5Bc3NldAMFBnRyYWRlcgUIX2Fzc2V0SWQJAMwIAgUHX3BlcmlvZAUDbmlsAwkAAAIFBmFtb3VudAAACQACAQIQTm90aGluZyB0byBjbGFpbQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBmFtb3VudAkA2QQBBQhfYXNzZXRJZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBHmdldENsYWltZWRUcmFkZXJBc3NldFBlcmlvZEtleQMFBnRyYWRlcgUIX2Fzc2V0SWQFB19wZXJpb2QGBQNuaWwBaQENYXR0YWNoUmV3YXJkcwQEX2FtbQhfYXNzZXRJZBNfbWF4QW1vdW50UGVyUGVyaW9kC19yZXdhcmRSYXRlAwMJAQEhAQkBC2luaXRpYWxpemVkAAYJAQIhPQIIBQFpBmNhbGxlcgkBDGFkbWluQWRkcmVzcwAJAAIBAhxJbnZhbGlkIGF0dGFjaFJld2FyZHMgcGFyYW1zBARhbW1zCQEHZ2V0QW1tcwAEDnJld2FyZEFzc2V0SWRzCQERZ2V0UmV3YXJkQXNzZXRJZHMABAduZXdBbW1zAwkBD2NvbnRhaW5zRWxlbWVudAIFBGFtbXMFBF9hbW0FBGFtbXMJAM0IAgUEYW1tcwUEX2FtbQQRbmV3UmV3YXJkQXNzZXRJZHMDCQEPY29udGFpbnNFbGVtZW50AgUOcmV3YXJkQXNzZXRJZHMFCF9hc3NldElkBQ5yZXdhcmRBc3NldElkcwkAzQgCBQ5yZXdhcmRBc3NldElkcwUIX2Fzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJARNnZXRBbW1SZXdhcmRSYXRlS2V5AgUEX2FtbQUIX2Fzc2V0SWQFC19yZXdhcmRSYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEbZ2V0QW1tTWF4QW1vdW50UGVyUGVyaW9kS2V5AgUEX2FtbQUIX2Fzc2V0SWQFE19tYXhBbW91bnRQZXJQZXJpb2QJAMwIAgkBC1N0cmluZ0VudHJ5AgUGa19hbW1zCQEJbGlzdFRvU3RyAQUHbmV3QW1tcwkAzAgCCQELU3RyaW5nRW50cnkCBRBrX3Jld2FyZEFzc2V0SWRzCQEJbGlzdFRvU3RyAQURbmV3UmV3YXJkQXNzZXRJZHMFA25pbAFpAQpub3RpZnlGZWVzAgdfdHJhZGVyBF9mZWUEA2FtbQkApQgBCAUBaQZjYWxsZXIDAwkBASEBCQELaXNXaGl0ZWxpc3QBBQNhbW0GCQEBIQEJAQtpbml0aWFsaXplZAAJAAIBAhlJbnZhbGlkIG5vdGlmeUZlZXMgcGFyYW1zBAlhY3R1YWxGZWUJAQ51c2RuVG9EZWNpbWFscwEFBF9mZWUEAnRzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQGd2Vla0lkCQEJZ2V0V2Vla0lkAQUCdHMEDGZlZXNJblBlcmlvZAkBD2dldEZlZXNJblBlcmlvZAMFA2FtbQUHX3RyYWRlcgUGd2Vla0lkBBF0b3RhbEZlZXNJblBlcmlvZAkBFGdldFRvdGFsRmVlc0luUGVyaW9kAgUDYW1tBQZ3ZWVrSWQED25ld0ZlZXNJblBlcmlvZAkAZAIFDGZlZXNJblBlcmlvZAUJYWN0dWFsRmVlBBRuZXdUb3RhbEZlZXNJblBlcmlvZAkAZAIFEXRvdGFsRmVlc0luUGVyaW9kBQlhY3R1YWxGZWUJAQ11cGRhdGVBbW1GZWVzBQUDYW1tBQdfdHJhZGVyBQZ3ZWVrSWQFD25ld0ZlZXNJblBlcmlvZAUUbmV3VG90YWxGZWVzSW5QZXJpb2QBaQEObm90aWZ5Tm90aW9uYWwCB190cmFkZXIJX25vdGlvbmFsBANhbW0JAKUIAQgFAWkGY2FsbGVyAwMJAQEhAQkBC2lzV2hpdGVsaXN0AQUDYW1tBgkBASEBCQELaW5pdGlhbGl6ZWQACQACAQIdSW52YWxpZCBub3RpZnlOb3Rpb25hbCBwYXJhbXMEDmFjdHVhbE5vdGlvbmFsCQEOdXNkblRvRGVjaW1hbHMBBQlfbm90aW9uYWwEAnRzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQMbGFzdE5vdGlvbmFsCQEPZ2V0TGFzdE5vdGlvbmFsAgUDYW1tBQdfdHJhZGVyBAZ3ZWVrSWQJAQlnZXRXZWVrSWQBBQJ0cwQJd2Vla1N0YXJ0CQEMZ2V0V2Vla1N0YXJ0AQUGd2Vla0lkBAd3ZWVrRW5kCQEKZ2V0V2Vla0VuZAEFBndlZWtJZAQBdAkAZQIFB3dlZWtFbmQFCXdlZWtTdGFydAQQbGFzdERhdGVJblBlcmlvZAkBE2dldExhc3REYXRlSW5QZXJpb2QEBQNhbW0FB190cmFkZXIFBndlZWtJZAUJd2Vla1N0YXJ0BAJkdAkAZQIFAnRzBRBsYXN0RGF0ZUluUGVyaW9kBBFvbGRUcmFkZXJBbW1TY29yZQkBFmdldFRyYWRlclNjb3JlSW5QZXJpb2QDBQNhbW0FB190cmFkZXIFBndlZWtJZAQQb2xkVG90YWxBbW1TY29yZQkBFWdldFRvdGFsU2NvcmVJblBlcmlvZAIFA2FtbQUGd2Vla0lkBARmZWVzCQEPZ2V0RmVlc0luUGVyaW9kAwUDYW1tBQdfdHJhZGVyBQZ3ZWVrSWQEEW5ld1J1bm5pbmdBdmVyYWdlCQBkAgkBBG11bGQCBQxsYXN0Tm90aW9uYWwJAQRkaXZkAgUCZHQFAXQJAQRtdWxkAgUOYWN0dWFsTm90aW9uYWwJAQRkaXZkAgkAZQIFAXQFAmR0BQF0BBFuZXdUcmFkZXJBbW1TY29yZQkBBG11bGQCCQEEcG93ZAIFBGZlZXMFAUEJAQRwb3dkAgURbmV3UnVubmluZ0F2ZXJhZ2UJAGUCBQxERUNJTUFMX1VOSVQFAUEEGG5ld1RvdGFsQW1tU2NvcmVJblBlcmlvZAkAZAIJAGUCBRBvbGRUb3RhbEFtbVNjb3JlBRFvbGRUcmFkZXJBbW1TY29yZQURbmV3VHJhZGVyQW1tU2NvcmUJAQ11cGRhdGVBbW1EYXRhCAUDYW1tBQdfdHJhZGVyBQZ3ZWVrSWQFAnRzBRFuZXdSdW5uaW5nQXZlcmFnZQUOYWN0dWFsTm90aW9uYWwFEW5ld1RyYWRlckFtbVNjb3JlBRhuZXdUb3RhbEFtbVNjb3JlSW5QZXJpb2QBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQEOYWRtaW5QdWJsaWNLZXkAtbjQ0A==", "height": 2167135, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9PTGQf8e7iPXPynzph6ZubUvhLZe68RsSFb1DQKzCttV Next: 8v4KsueGK5vNdu62MrW6Q2LanaHUA5UwQYdRTJVW2Nf8 Diff:
OldNewDifferences
335335 if (bC(bG, av, ay))
336336 then throw("Already claimed")
337337 else {
338- let bH = bA(bG, av, [ay])
339- if ((bH == 0))
340- then throw("Nothing to claim")
341- else [ScriptTransfer(bD.caller, bH, fromBase58String(av)), BooleanEntry(ax(bG, av, ay), true)]
338+ let bH = aU(lastBlock.timestamp)
339+ if ((ay >= bH))
340+ then throw(("Unable to claim rewards in future periods, current period is " + toString(bH)))
341+ else {
342+ let bI = bA(bG, av, [ay])
343+ if ((bI == 0))
344+ then throw("Nothing to claim")
345+ else [ScriptTransfer(bD.caller, bI, fromBase58String(av)), BooleanEntry(ax(bG, av, ay), true)]
346+ }
342347 }
343348 }
344349
345350
346351
347352 @Callable(bD)
348-func attachRewards (al,av,bI,bJ) = if (if (!(aj()))
353+func attachRewards (al,av,bJ,bK) = if (if (!(aj()))
349354 then true
350355 else (bD.caller != ae()))
351356 then throw("Invalid attachRewards params")
352357 else {
353358 let bx = be()
354- let bK = bf()
355- let bL = if (containsElement(bx, al))
359+ let bL = bf()
360+ let bM = if (containsElement(bx, al))
356361 then bx
357362 else (bx :+ al)
358- let bM = if (containsElement(bK, av))
359- then bK
360- else (bK :+ av)
361-[IntegerEntry(au(al, av), bJ), IntegerEntry(aw(al, av), bI), StringEntry(k, B(bL)), StringEntry(j, B(bM))]
363+ let bN = if (containsElement(bL, av))
364+ then bL
365+ else (bL :+ av)
366+[IntegerEntry(au(al, av), bK), IntegerEntry(aw(al, av), bJ), StringEntry(k, B(bM)), StringEntry(j, B(bN))]
362367 }
363368
364369
365370
366371 @Callable(bD)
367-func notifyFees (am,bN) = {
368- let bO = toString(bD.caller)
369- if (if (!(af(bO)))
372+func notifyFees (am,bO) = {
373+ let bP = toString(bD.caller)
374+ if (if (!(af(bP)))
370375 then true
371376 else !(aj()))
372377 then throw("Invalid notifyFees params")
373378 else {
374- let bP = aQ(bN)
375- let bQ = lastBlock.timestamp
376- let bR = aU(bQ)
377- let bS = aW(bO, am, bR)
378- let bo = aY(bO, bR)
379- let bT = (bS + bP)
380- let bU = (bo + bP)
381- aA(bO, am, bR, bT, bU)
379+ let bQ = aQ(bO)
380+ let bR = lastBlock.timestamp
381+ let bS = aU(bR)
382+ let bT = aW(bP, am, bS)
383+ let bo = aY(bP, bS)
384+ let bU = (bT + bQ)
385+ let bV = (bo + bQ)
386+ aA(bP, am, bS, bU, bV)
382387 }
383388 }
384389
385390
386391
387392 @Callable(bD)
388-func notifyNotional (am,bV) = {
389- let bO = toString(bD.caller)
390- if (if (!(af(bO)))
393+func notifyNotional (am,bW) = {
394+ let bP = toString(bD.caller)
395+ if (if (!(af(bP)))
391396 then true
392397 else !(aj()))
393398 then throw("Invalid notifyNotional params")
394399 else {
395- let bW = aQ(bV)
396- let bQ = lastBlock.timestamp
397- let bX = aZ(bO, am)
398- let bR = aU(bQ)
399- let bY = aS(bR)
400- let bZ = aT(bR)
401- let ca = (bZ - bY)
402- let cb = ba(bO, am, bR, bY)
403- let cc = (bQ - cb)
404- let cd = bc(bO, am, bR)
405- let ce = bd(bO, bR)
406- let cf = aW(bO, am, bR)
407- let cg = (V(bX, S(cc, ca)) + V(bW, S((ca - cc), ca)))
408- let ch = V(W(cf, w), W(cg, (v - w)))
409- let ci = ((ce - cd) + ch)
410- aF(bO, am, bR, bQ, cg, bW, ch, ci)
400+ let bX = aQ(bW)
401+ let bR = lastBlock.timestamp
402+ let bY = aZ(bP, am)
403+ let bS = aU(bR)
404+ let bZ = aS(bS)
405+ let ca = aT(bS)
406+ let cb = (ca - bZ)
407+ let cc = ba(bP, am, bS, bZ)
408+ let cd = (bR - cc)
409+ let ce = bc(bP, am, bS)
410+ let cf = bd(bP, bS)
411+ let cg = aW(bP, am, bS)
412+ let ch = (V(bY, S(cd, cb)) + V(bX, S((cb - cd), cb)))
413+ let ci = V(W(cg, w), W(ch, (v - w)))
414+ let cj = ((cf - ce) + ci)
415+ aF(bP, am, bS, bR, ch, bX, ci, cj)
411416 }
412417 }
413418
414419
415-@Verifier(cj)
416-func ck () = sigVerify(cj.bodyBytes, cj.proofs[0], ad())
420+@Verifier(ck)
421+func cl () = sigVerify(ck.bodyBytes, ck.proofs[0], ad())
417422
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
1010 let d = "k_lastDateInPeriod"
1111
1212 let e = "k_totalScoreInPeriod"
1313
1414 let f = "k_traderScoreInPeriod"
1515
1616 let g = "k_traderAverageNotionalInPeriod"
1717
1818 let h = "k_ammRewardRate"
1919
2020 let i = "k_ammMaxAmountPerPeriod"
2121
2222 let j = "k_rewardAssetIds"
2323
2424 let k = "k_amms"
2525
2626 let l = "k_claimedAssetAndPeriod"
2727
2828 let m = "k_oracleAddress"
2929
3030 let n = "price"
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 = ((60 * 60) * 24)
5151
5252 let y = ""
5353
5454 let z = 0
5555
5656 let A = (1000 * 604800)
5757
5858 func B (C) = {
5959 func D (E,F) = ((E + F) + ",")
6060
6161 let G = {
6262 let H = C
6363 let I = size(H)
6464 let J = ""
6565 func K (L,M) = if ((M >= I))
6666 then L
6767 else D(L, H[M])
6868
6969 func N (L,M) = if ((M >= I))
7070 then L
7171 else throw("List size exceeds 100")
7272
7373 N(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(J, 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)
7474 }
7575 let O = dropRight(G, 1)
7676 let P = if ((take(O, 1) == ","))
7777 then drop(O, 1)
7878 else O
7979 P
8080 }
8181
8282
8383 func Q (R) = if ((R == ""))
8484 then nil
8585 else split(R, ",")
8686
8787
8888 func S (T,U) = fraction(T, v, U, HALFEVEN)
8989
9090
9191 func V (T,U) = fraction(T, U, v, HALFEVEN)
9292
9393
9494 func W (T,U) = pow(T, 8, U, 8, 8, HALFEVEN)
9595
9696
9797 func X (T) = if ((T > 0))
9898 then T
9999 else -(T)
100100
101101
102102 func Y (T,U) = if ((T > U))
103103 then U
104104 else T
105105
106106
107107 func Z (aa,ab) = ((aa + "_") + ab)
108108
109109
110110 func ac () = valueOrErrorMessage(addressFromString(getStringValue(this, p)), "Coordinator not set")
111111
112112
113113 func ad () = fromBase58String(getStringValue(ac(), s))
114114
115115
116116 func ae () = addressFromString(getStringValue(ac(), t))
117117
118118
119119 func af (ab) = valueOrElse(getBoolean(ac(), Z(u, ab)), false)
120120
121121
122122 func ag (ah) = valueOrErrorMessage(getInteger(this, ah), ("no value for " + ah))
123123
124124
125125 func ai (ah) = valueOrElse(getInteger(this, ah), 0)
126126
127127
128128 func aj () = valueOrElse(getBoolean(this, o), false)
129129
130130
131131 func ak (al,am,an) = ((((((b + "_") + al) + "_") + am) + "_") + toString(an))
132132
133133
134134 func ao (al,an) = ((((a + "_") + al) + "_") + toString(an))
135135
136136
137137 func ap (al,am) = ((((c + "_") + al) + "_") + am)
138138
139139
140140 func aq (al,am,an) = ((((((d + "_") + al) + "_") + am) + "_") + toString(an))
141141
142142
143143 func ar (al,am,an) = ((((((f + "_") + al) + "_") + am) + "_") + toString(an))
144144
145145
146146 func as (al,an) = ((((e + "_") + al) + "_") + toString(an))
147147
148148
149149 func at (al,am,an) = ((((((g + "_") + al) + "_") + am) + "_") + toString(an))
150150
151151
152152 func au (al,av) = ((((h + "_") + al) + "_") + av)
153153
154154
155155 func aw (al,av) = ((((i + "_") + al) + "_") + av)
156156
157157
158158 func ax (am,av,ay) = ((((((l + "_") + am) + "_") + av) + "_") + toString(ay))
159159
160160
161161 func az (av,ay) = ((((n + "_") + toString(ay)) + "_") + av)
162162
163163
164164 func aA (al,am,an,aB,aC) = {
165165 let aD = ak(al, am, an)
166166 let aE = ao(al, an)
167167 [IntegerEntry(aD, aB), IntegerEntry(aE, aC)]
168168 }
169169
170170
171171 func aF (al,am,an,aG,aH,aI,aJ,aK) = {
172172 let aL = as(al, an)
173173 let aM = ar(al, am, an)
174174 let aN = aq(al, am, an)
175175 let aO = ap(al, am)
176176 let aP = at(al, am, an)
177177 [IntegerEntry(aL, aK), IntegerEntry(aM, aJ), IntegerEntry(aN, aG), IntegerEntry(aO, aI), IntegerEntry(aP, aH)]
178178 }
179179
180180
181181 func aQ (aR) = (aR * 100)
182182
183183
184184 func aS (an) = (an * A)
185185
186186
187187 func aT (an) = ((an + 1) * A)
188188
189189
190190 func aU (aV) = (aV / A)
191191
192192
193193 func aW (al,am,an) = {
194194 let aX = ak(al, am, an)
195195 valueOrElse(getInteger(this, aX), 0)
196196 }
197197
198198
199199 func aY (al,an) = {
200200 let aX = ao(al, an)
201201 valueOrElse(getInteger(this, aX), 0)
202202 }
203203
204204
205205 func aZ (al,am) = {
206206 let aX = ap(al, am)
207207 valueOrElse(getInteger(this, aX), 0)
208208 }
209209
210210
211211 func ba (al,am,an,bb) = {
212212 let aX = aq(al, am, an)
213213 valueOrElse(getInteger(this, aX), bb)
214214 }
215215
216216
217217 func bc (al,am,an) = {
218218 let aX = ar(al, am, an)
219219 valueOrElse(getInteger(this, aX), 0)
220220 }
221221
222222
223223 func bd (al,an) = {
224224 let aX = as(al, an)
225225 valueOrElse(getInteger(this, aX), 0)
226226 }
227227
228228
229229 func be () = Q(k)
230230
231231
232232 func bf () = Q(j)
233233
234234
235235 func bg (al,av) = {
236236 let aX = au(al, av)
237237 valueOrElse(getInteger(this, aX), 0)
238238 }
239239
240240
241241 func bh (al,av) = {
242242 let aX = aw(al, av)
243243 valueOrElse(getInteger(this, aX), 0)
244244 }
245245
246246
247247 func bi (av,an) = {
248248 let bj = valueOrErrorMessage(getString(this, m), "Oracle not set")
249249 let bk = valueOrErrorMessage(addressFromString(bj), "Invalid oracle address")
250250 let bl = az(av, an)
251251 aQ(valueOrErrorMessage(getInteger(bk, bl), ((("No oracle price for asset " + av) + " period ") + toString(an))))
252252 }
253253
254254
255255 func bm (al,am,av,an) = {
256256 let bn = bg(al, av)
257257 if ((bn == 0))
258258 then 0
259259 else {
260260 let bo = aY(al, an)
261261 let bp = bi(av, an)
262262 let bq = bh(al, av)
263263 let br = bc(al, am, an)
264264 let bs = bd(al, an)
265265 if ((bs == 0))
266266 then 0
267267 else {
268268 let bt = V(S(bo, bp), bn)
269269 let bu = Y(bt, bq)
270270 let bv = S(V(bu, br), bs)
271271 bv
272272 }
273273 }
274274 }
275275
276276
277277 func bw (am,av,an) = {
278278 let bx = be()
279279 func by (bz,al) = (bz + bm(al, am, av, an))
280280
281281 let H = bx
282282 let I = size(H)
283283 let J = 0
284284 func K (L,M) = if ((M >= I))
285285 then L
286286 else by(L, H[M])
287287
288288 func N (L,M) = if ((M >= I))
289289 then L
290290 else throw("List size exceeds 20")
291291
292292 N(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(K(J, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
293293 }
294294
295295
296296 func bA (am,av,bB) = {
297297 func by (bz,an) = (bz + bw(am, av, an))
298298
299299 let H = bB
300300 let I = size(H)
301301 let J = 0
302302 func K (L,M) = if ((M >= I))
303303 then L
304304 else by(L, H[M])
305305
306306 func N (L,M) = if ((M >= I))
307307 then L
308308 else throw("List size exceeds 10")
309309
310310 N(K(K(K(K(K(K(K(K(K(K(J, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
311311 }
312312
313313
314314 func bC (am,av,ay) = {
315315 let aX = ax(am, av, ay)
316316 valueOrElse(getBoolean(this, aX), false)
317317 }
318318
319319
320320 @Callable(bD)
321321 func initialize (bE,bF) = if (aj())
322322 then throw("Already initialized")
323323 else [StringEntry(p, bE), StringEntry(m, bF), BooleanEntry(o, true)]
324324
325325
326326
327327 @Callable(bD)
328328 func view_claimRewards (am,av,ay) = throw(toString(bA(am, av, [ay])))
329329
330330
331331
332332 @Callable(bD)
333333 func claimRewards (av,ay) = {
334334 let bG = toString(bD.caller)
335335 if (bC(bG, av, ay))
336336 then throw("Already claimed")
337337 else {
338- let bH = bA(bG, av, [ay])
339- if ((bH == 0))
340- then throw("Nothing to claim")
341- else [ScriptTransfer(bD.caller, bH, fromBase58String(av)), BooleanEntry(ax(bG, av, ay), true)]
338+ let bH = aU(lastBlock.timestamp)
339+ if ((ay >= bH))
340+ then throw(("Unable to claim rewards in future periods, current period is " + toString(bH)))
341+ else {
342+ let bI = bA(bG, av, [ay])
343+ if ((bI == 0))
344+ then throw("Nothing to claim")
345+ else [ScriptTransfer(bD.caller, bI, fromBase58String(av)), BooleanEntry(ax(bG, av, ay), true)]
346+ }
342347 }
343348 }
344349
345350
346351
347352 @Callable(bD)
348-func attachRewards (al,av,bI,bJ) = if (if (!(aj()))
353+func attachRewards (al,av,bJ,bK) = if (if (!(aj()))
349354 then true
350355 else (bD.caller != ae()))
351356 then throw("Invalid attachRewards params")
352357 else {
353358 let bx = be()
354- let bK = bf()
355- let bL = if (containsElement(bx, al))
359+ let bL = bf()
360+ let bM = if (containsElement(bx, al))
356361 then bx
357362 else (bx :+ al)
358- let bM = if (containsElement(bK, av))
359- then bK
360- else (bK :+ av)
361-[IntegerEntry(au(al, av), bJ), IntegerEntry(aw(al, av), bI), StringEntry(k, B(bL)), StringEntry(j, B(bM))]
363+ let bN = if (containsElement(bL, av))
364+ then bL
365+ else (bL :+ av)
366+[IntegerEntry(au(al, av), bK), IntegerEntry(aw(al, av), bJ), StringEntry(k, B(bM)), StringEntry(j, B(bN))]
362367 }
363368
364369
365370
366371 @Callable(bD)
367-func notifyFees (am,bN) = {
368- let bO = toString(bD.caller)
369- if (if (!(af(bO)))
372+func notifyFees (am,bO) = {
373+ let bP = toString(bD.caller)
374+ if (if (!(af(bP)))
370375 then true
371376 else !(aj()))
372377 then throw("Invalid notifyFees params")
373378 else {
374- let bP = aQ(bN)
375- let bQ = lastBlock.timestamp
376- let bR = aU(bQ)
377- let bS = aW(bO, am, bR)
378- let bo = aY(bO, bR)
379- let bT = (bS + bP)
380- let bU = (bo + bP)
381- aA(bO, am, bR, bT, bU)
379+ let bQ = aQ(bO)
380+ let bR = lastBlock.timestamp
381+ let bS = aU(bR)
382+ let bT = aW(bP, am, bS)
383+ let bo = aY(bP, bS)
384+ let bU = (bT + bQ)
385+ let bV = (bo + bQ)
386+ aA(bP, am, bS, bU, bV)
382387 }
383388 }
384389
385390
386391
387392 @Callable(bD)
388-func notifyNotional (am,bV) = {
389- let bO = toString(bD.caller)
390- if (if (!(af(bO)))
393+func notifyNotional (am,bW) = {
394+ let bP = toString(bD.caller)
395+ if (if (!(af(bP)))
391396 then true
392397 else !(aj()))
393398 then throw("Invalid notifyNotional params")
394399 else {
395- let bW = aQ(bV)
396- let bQ = lastBlock.timestamp
397- let bX = aZ(bO, am)
398- let bR = aU(bQ)
399- let bY = aS(bR)
400- let bZ = aT(bR)
401- let ca = (bZ - bY)
402- let cb = ba(bO, am, bR, bY)
403- let cc = (bQ - cb)
404- let cd = bc(bO, am, bR)
405- let ce = bd(bO, bR)
406- let cf = aW(bO, am, bR)
407- let cg = (V(bX, S(cc, ca)) + V(bW, S((ca - cc), ca)))
408- let ch = V(W(cf, w), W(cg, (v - w)))
409- let ci = ((ce - cd) + ch)
410- aF(bO, am, bR, bQ, cg, bW, ch, ci)
400+ let bX = aQ(bW)
401+ let bR = lastBlock.timestamp
402+ let bY = aZ(bP, am)
403+ let bS = aU(bR)
404+ let bZ = aS(bS)
405+ let ca = aT(bS)
406+ let cb = (ca - bZ)
407+ let cc = ba(bP, am, bS, bZ)
408+ let cd = (bR - cc)
409+ let ce = bc(bP, am, bS)
410+ let cf = bd(bP, bS)
411+ let cg = aW(bP, am, bS)
412+ let ch = (V(bY, S(cd, cb)) + V(bX, S((cb - cd), cb)))
413+ let ci = V(W(cg, w), W(ch, (v - w)))
414+ let cj = ((cf - ce) + ci)
415+ aF(bP, am, bS, bR, ch, bX, ci, cj)
411416 }
412417 }
413418
414419
415-@Verifier(cj)
416-func ck () = sigVerify(cj.bodyBytes, cj.proofs[0], ad())
420+@Verifier(ck)
421+func cl () = sigVerify(ck.bodyBytes, ck.proofs[0], ad())
417422

github/deemru/w8io/169f3d6 
88.45 ms