tx · 5AhQAXEViBmhNMBB3dbQQTy6c9qjc81moApEszPmsBxP

3N7XWpdx1UJKZp5stTtFMXPEygyfZ7j4PyC:  -0.01400000 Waves

2024.05.15 11:36 [3106917] smart account 3N7XWpdx1UJKZp5stTtFMXPEygyfZ7j4PyC > SELF 0.00000000 Waves

{ "type": 13, "id": "5AhQAXEViBmhNMBB3dbQQTy6c9qjc81moApEszPmsBxP", "fee": 1400000, "feeAssetId": null, "timestamp": 1715762223859, "version": 2, "chainId": 84, "sender": "3N7XWpdx1UJKZp5stTtFMXPEygyfZ7j4PyC", "senderPublicKey": "APsCCjsKHFx7rbr1mG8Pca43pccTbH2G4FZj4keEqKJ5", "proofs": [ "5r4z6En5Tep8sguM8t8BJswxsnvKAc2xCw1bHLh3cT2mZpVEWijSm67NuwJCDBcn9ZGXUbog3NySh1duWCknc1xo" ], "script": "base64:BgItCAISAwoBCBIHCgUBAQERGBIHCgUBCAEIARIHCgUBEhERCBIDCgEBEgASABIAJgAHV2F2ZXNJZAIFV0FWRVMACE1pbmVyRmVlAAUAEVBheW91dEVtcHR5U3RhdHVzAAAAFVBheW91dEluaXRpYXRlZFN0YXR1cwABABVQYXlvdXRDb21wbGV0ZWRTdGF0dXMAAgASQmxvY2tzQmF0Y2hNYXhTaXplAAoAFlJlY2lwaWVudHNCYXRjaE1heFNpemUAZAAGSGVpZ2h0BQZoZWlnaHQABUFycjEwCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQUDbmlsABBDb25maWdBZGRyZXNzS2V5Ag1jb25maWdBZGRyZXNzAA1MYXN0UGF5b3V0S2V5AgpsYXN0UGF5b3V0ABNNYXNzVHJhbnNmZXJGZWVzS2V5AhBtYXNzVHJhbnNmZXJGZWVzAApDaGFpbklkS2V5AgdjaGFpbklkABBEYWVtb25BZGRyZXNzS2V5Ag1kYWVtb25BZGRyZXNzABJEYWVtb25QdWJsaWNLZXlLZXkCD2RhZW1vblB1YmxpY0tleQAUTWFpbnRhaW5lckFkZHJlc3NLZXkCEW1haW50YWluZXJBZGRyZXNzABpQdXp6bGVBZ2dyZWdhdG9yQWRkcmVzc0tleQIXcHV6emxlQWdncmVnYXRvckFkZHJlc3MAF1B1enpsZUJ1eWJhY2tBZGRyZXNzS2V5AhRwdXp6bGVCdXliYWNrQWRkcmVzcwASU2V0dGluZ3NBZGRyZXNzS2V5Ag9zZXR0aW5nc0FkZHJlc3MAElNpZ25lclB1YmxpY0tleUtleQIPc2lnbmVyUHVibGljS2V5ABlXYXZlc0Rhb0ZhY3RvcnlBZGRyZXNzS2V5AhZ3YXZlc0Rhb0ZhY3RvcnlBZGRyZXNzAA1Db25maWdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzBRBDb25maWdBZGRyZXNzS2V5AAdDaGFpbklkCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ1Db25maWdBZGRyZXNzBQpDaGFpbklkS2V5AA1EYWVtb25BZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQ1Db25maWdBZGRyZXNzBRBEYWVtb25BZGRyZXNzS2V5AA9EYWVtb25QdWJsaWNLZXkJARFAZXh0ck5hdGl2ZSgxMDUyKQIFDUNvbmZpZ0FkZHJlc3MFEkRhZW1vblB1YmxpY0tleUtleQARTWFpbnRhaW5lckFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDUNvbmZpZ0FkZHJlc3MFFE1haW50YWluZXJBZGRyZXNzS2V5ABdQdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUNQ29uZmlnQWRkcmVzcwUaUHV6emxlQWdncmVnYXRvckFkZHJlc3NLZXkAFFB1enpsZUJ1eWJhY2tBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQ1Db25maWdBZGRyZXNzBRdQdXp6bGVCdXliYWNrQWRkcmVzc0tleQAPU2V0dGluZ3NBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQ1Db25maWdBZGRyZXNzBRJTZXR0aW5nc0FkZHJlc3NLZXkAD1NpZ25lclB1YmxpY0tleQkAnAgCBQ1Db25maWdBZGRyZXNzBRJTaWduZXJQdWJsaWNLZXlLZXkAFldhdmVzRGFvRmFjdG9yeUFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFDUNvbmZpZ0FkZHJlc3MFGVdhdmVzRGFvRmFjdG9yeUFkZHJlc3NLZXkBEW1ha2VQYXlvdXREYXRhS2V5AQhwYXlvdXRJZAkArAICAgtwYXlvdXREYXRhXwkApAMBBQhwYXlvdXRJZAETbWFrZVBheW91dFN0YXR1c0tleQEIcGF5b3V0SWQJAKwCAgINcGF5b3V0U3RhdHVzXwkApAMBBQhwYXlvdXRJZAEebWFrZVBheW91dEFkZGl0aW9uYWxSZXdhcmRzS2V5AQhwYXlvdXRJZAkArAICAhhwYXlvdXRBZGRpdGlvbmFsUmV3YXJkc18JAKQDAQUIcGF5b3V0SWQBDWdldExhc3RQYXlvdXQACQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzBQ1MYXN0UGF5b3V0S2V5AQ1nZXRQYXlvdXREYXRhAQhwYXlvdXRJZAQMcGF5b3V0U3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1OCkBCQERbWFrZVBheW91dERhdGFLZXkBBQhwYXlvdXRJZAQOcGF5b3V0RGF0YUxpc3QJALUJAgUMcGF5b3V0U3RyaW5nAgFfBAtzdGFydEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDnBheW91dERhdGFMaXN0AAAECWVuZEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDnBheW91dERhdGFMaXN0AAEJAJQKAgULc3RhcnRIZWlnaHQFCWVuZEhlaWdodAEPZ2V0UGF5b3V0U3RhdHVzAQhwYXlvdXRJZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQETbWFrZVBheW91dFN0YXR1c0tleQEFCHBheW91dElkBRFQYXlvdXRFbXB0eVN0YXR1cwEaZ2V0UGF5b3V0QWRkaXRpb25hbFJld2FyZHMBCHBheW91dElkCQELdmFsdWVPckVsc2UCCQCfCAEJAR5tYWtlUGF5b3V0QWRkaXRpb25hbFJld2FyZHNLZXkBBQhwYXlvdXRJZAAACAFpAQVzZXR1cAENY29uZmlnQWRkcmVzcwMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECDUFjY2VzcyBkZW5pZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhdQYXltZW50cyBhcmUgcHJvaGliaXRlZAMJAAACCQCmCAEFDWNvbmZpZ0FkZHJlc3MFBHVuaXQJAAIBCQCsAgICF0ludmFsaWQgY29uZmlnQWRkcmVzczogBQ1jb25maWdBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIFEENvbmZpZ0FkZHJlc3NLZXkFDWNvbmZpZ0FkZHJlc3MFA25pbAFpAQ5pbml0aWF0ZVBheW91dAUIcGF5b3V0SWQLc3RhcnRIZWlnaHQJZW5kSGVpZ2h0B2Ftb3VudHMGYXNzZXRzAwkBAiE9AggFAWkGY2FsbGVyBQ1EYWVtb25BZGRyZXNzCQACAQINQWNjZXNzIGRlbmllZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECF1BheW1lbnRzIGFyZSBwcm9oaWJpdGVkBApsYXN0UGF5b3V0CQENZ2V0TGFzdFBheW91dAADCQECIT0CBQhwYXlvdXRJZAkAZAIFCmxhc3RQYXlvdXQAAQkAAgEJAKwCAgkArAICCQCsAgICEFdyb25nIHBheW91dElkOiAJAKQDAQUIcGF5b3V0SWQCDSwgc2hvdWxkIGJlOiAJAKQDAQkAZAIFCmxhc3RQYXlvdXQAAQQQbGFzdFBheW91dFN0YXR1cwkBD2dldFBheW91dFN0YXR1cwEFCmxhc3RQYXlvdXQDCQECIT0CBRBsYXN0UGF5b3V0U3RhdHVzBRVQYXlvdXRDb21wbGV0ZWRTdGF0dXMJAAIBCQCsAgIJAKwCAgINTGFzdCBwYXlvdXQ6IAkApAMBBQpsYXN0UGF5b3V0AhIgd2FzIG5vdCBjb21wbGV0ZWQECyR0MDM2NjYzNzMwCQENZ2V0UGF5b3V0RGF0YQEFCmxhc3RQYXlvdXQED2xhc3RTdGFydEhlaWdodAgFCyR0MDM2NjYzNzMwAl8xBA1sYXN0RW5kSGVpZ2h0CAULJHQwMzY2NjM3MzACXzIDCQECIT0CBQtzdGFydEhlaWdodAkAZAIFDWxhc3RFbmRIZWlnaHQAAQkAAgEJAKwCAgkArAICCQCsAgICE1dyb25nIHN0YXJ0SGVpZ2h0OiAJAKQDAQULc3RhcnRIZWlnaHQCDSwgc2hvdWxkIGJlOiAJAKQDAQkAZAIFDWxhc3RFbmRIZWlnaHQAAQMJAGYCBQtzdGFydEhlaWdodAUJZW5kSGVpZ2h0CQACAQkArAICCQCsAgIJAKwCAgILZW5kSGVpZ2h0OiAJAKQDAQUJZW5kSGVpZ2h0AhggbGVzcyB0aGFuIHN0YXJ0SGVpZ2h0OiAJAKQDAQULc3RhcnRIZWlnaHQEDmlucHV0c1F1YW50aXR5CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9TZXR0aW5nc0FkZHJlc3MCDmlucHV0c1F1YW50aXR5BAthbW91bnRzU2l6ZQkAkAMBBQdhbW91bnRzBAphc3NldHNTaXplCQCQAwEFBmFzc2V0cwMDCQECIT0CBQthbW91bnRzU2l6ZQUKYXNzZXRzU2l6ZQYJAQIhPQIFC2Ftb3VudHNTaXplBQ5pbnB1dHNRdWFudGl0eQkAAgECH1dyb25nIHNpemUgb2YgYW1vdW50cyBvciBhc3NldHMEGmF2YWlsYWJsZVdhdmVzRGFvTHBUb0NsYWltCQELdmFsdWVPckVsc2UCCQCaCAIFFldhdmVzRGFvRmFjdG9yeUFkZHJlc3MJAKwCAgIRJXMlc19fYXZhaWxhYmxlX18JAKUIAQUEdGhpcwAABBp3YXZlc0Rhb05leHRCbG9ja1RvUHJvY2VzcwkBEUBleHRyTmF0aXZlKDEwNTApAgUWV2F2ZXNEYW9GYWN0b3J5QWRkcmVzcwIWJXNfX25leHRCbG9ja1RvUHJvY2VzcwQNd2F2ZXNEbHBDbGFpbQMDCQBmAgUaYXZhaWxhYmxlV2F2ZXNEYW9McFRvQ2xhaW0AAAkAZwIJAGQCBRp3YXZlc0Rhb05leHRCbG9ja1RvUHJvY2VzcwUSQmxvY2tzQmF0Y2hNYXhTaXplBQZIZWlnaHQHCQD8BwQFFldhdmVzRGFvRmFjdG9yeUFkZHJlc3MCB2NsYWltTFAFA25pbAUDbmlsBQR1bml0AwkAAAIFDXdhdmVzRGxwQ2xhaW0FDXdhdmVzRGxwQ2xhaW0EGGN1cnJlbnRBZGRpdGlvbmFsUmV3YXJkcwkBGmdldFBheW91dEFkZGl0aW9uYWxSZXdhcmRzAQUIcGF5b3V0SWQKAQphc3NldHNGb2xkAgVhY2N1bQVpbmRleAMJAGcCBQVpbmRleAUKYXNzZXRzU2l6ZQUFYWNjdW0ECGFzc2V0U3RyCQCRAwIFBmFzc2V0cwUFaW5kZXgDCQAAAgkAmggCBQ9TZXR0aW5nc0FkZHJlc3MJAKwCAgIQaW5wdXRBc3NldEluZGV4XwUIYXNzZXRTdHIFBHVuaXQJAAIBCQCsAgICD1Vua25vd24gaW5wdXQ6IAUIYXNzZXRTdHIECyR0MDUxMzI1MzExAwkAAAIFCGFzc2V0U3RyBQdXYXZlc0lkCQCUCgIFBHVuaXQJAGQCCQCRAwIFB2Ftb3VudHMFBWluZGV4BRhjdXJyZW50QWRkaXRpb25hbFJld2FyZHMJAJQKAgkA2QQBBQhhc3NldFN0cgkAkQMCBQdhbW91bnRzBQVpbmRleAQFYXNzZXQIBQskdDA1MTMyNTMxMQJfMQQGYW1vdW50CAULJHQwNTEzMjUzMTECXzIDCQBmAgAABQZhbW91bnQJAAIBCQCsAgIJAKwCAgIUV3JvbmcgYXNzZXQgYW1vdW50OiAJAKQDAQUGYW1vdW50AhwsIHNob3VsZCBiZSBwb3NpdGl2ZSBvciB6ZXJvBAhtaW5lckZlZQkAawMFBmFtb3VudAUITWluZXJGZWUAZAQNbWFpbnRhaW5lckZlZQkAaQIFCG1pbmVyRmVlAAIEDXB1enpsZVRlYW1GZWUJAGUCBQhtaW5lckZlZQUNbWFpbnRhaW5lckZlZQQNbGVzc29yc0Ftb3VudAkAZQIJAGUCBQZhbW91bnQFDW1haW50YWluZXJGZWUFDXB1enpsZVRlYW1GZWUJAJQKAgkAzQgCCQDNCAIIBQVhY2N1bQJfMQkBDlNjcmlwdFRyYW5zZmVyAwURTWFpbnRhaW5lckFkZHJlc3MFDW1haW50YWluZXJGZWUFBWFzc2V0CQEOU2NyaXB0VHJhbnNmZXIDBRRQdXp6bGVCdXliYWNrQWRkcmVzcwUNcHV6emxlVGVhbUZlZQUFYXNzZXQJAM0IAggFBWFjY3VtAl8yCQCkAwEFDWxlc3NvcnNBbW91bnQECyR0MDU4ODY1OTUzCgACJGwFBUFycjEwCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwFA25pbAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEKYXNzZXRzRm9sZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgQJdHJhbnNmZXJzCAULJHQwNTg4NjU5NTMCXzEECmFtb3VudEtleXMIBQskdDA1ODg2NTk1MwJfMgQNbmV3UGF5b3V0RGF0YQkAuQkCCQDOCAIJAMwIAgkApAMBBQtzdGFydEhlaWdodAkAzAgCCQCkAwEFCWVuZEhlaWdodAUDbmlsBQphbW91bnRLZXlzAgFfCQDOCAIFCXRyYW5zZmVycwkAzAgCCQEMSW50ZWdlckVudHJ5AgUNTGFzdFBheW91dEtleQUIcGF5b3V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEW1ha2VQYXlvdXREYXRhS2V5AQUIcGF5b3V0SWQFDW5ld1BheW91dERhdGEJAMwIAgkBDEludGVnZXJFbnRyeQIJARNtYWtlUGF5b3V0U3RhdHVzS2V5AQUIcGF5b3V0SWQFFVBheW91dEluaXRpYXRlZFN0YXR1cwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBHN3YXAFCHBheW91dElkCHN3YXBGcm9tCGFtb3VudEluBXJvdXRlDG1pblRvUmVjZWl2ZQMJAQIhPQIIBQFpBmNhbGxlcgUNRGFlbW9uQWRkcmVzcwkAAgECDUFjY2VzcyBkZW5pZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhdQYXltZW50cyBhcmUgcHJvaGliaXRlZAQKbGFzdFBheW91dAkBDWdldExhc3RQYXlvdXQAAwkBAiE9AgUKbGFzdFBheW91dAUIcGF5b3V0SWQJAAIBCQCsAgIJAKwCAgkArAICAhBXcm9uZyBwYXlvdXRJZDogCQCkAwEFCHBheW91dElkAg0sIHNob3VsZCBiZTogCQCkAwEFCmxhc3RQYXlvdXQEDHBheW91dFN0YXR1cwkBD2dldFBheW91dFN0YXR1cwEFCHBheW91dElkAwkBAiE9AgUMcGF5b3V0U3RhdHVzBRVQYXlvdXRJbml0aWF0ZWRTdGF0dXMJAAIBCQCsAgIJAKwCAgIVV3JvbmcgcGF5b3V0IHN0YXR1czogCQCkAwEFDHBheW91dFN0YXR1cwINLCBzaG91bGQgYmUgMQQLJHQwNjkwNDcxNTMDCQAAAgUIc3dhcEZyb20FB1dhdmVzSWQJAJQKAggJAO8HAQUEdGhpcwlhdmFpbGFibGUFBHVuaXQEB2Fzc2V0SWQJANkEAQUIc3dhcEZyb20JAJQKAgkA8AcCBQR0aGlzBQdhc3NldElkBQdhc3NldElkBBNiYWxhbmNlSW5CZWZvcmVTd2FwCAULJHQwNjkwNDcxNTMCXzEECnN3YXBGcm9tSWQIBQskdDA2OTA0NzE1MwJfMgQKc3dhcEludm9rZQkA/AcEBRdQdXp6bGVBZ2dyZWdhdG9yQWRkcmVzcwIQc3dhcFdpdGhSZWZlcnJhbAkAzAgCBQVyb3V0ZQkAzAgCBQxtaW5Ub1JlY2VpdmUJAMwIAgIKcHV6emxlbm9kZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpzd2FwRnJvbUlkBQhhbW91bnRJbgUDbmlsAwkAAAIFCnN3YXBJbnZva2UFCnN3YXBJbnZva2UEEmJhbGFuY2VJbkFmdGVyU3dhcAMJAAACBQhzd2FwRnJvbQUHV2F2ZXNJZAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkBBXZhbHVlAQUKc3dhcEZyb21JZAQGcmVmdW5kCQBlAgUSYmFsYW5jZUluQWZ0ZXJTd2FwCQBlAgUTYmFsYW5jZUluQmVmb3JlU3dhcAUIYW1vdW50SW4DCQBmAgUGcmVmdW5kAAoJAAIBCQCsAgICHFJvbGxiYWNrIGFnZ3JlZ2F0b3IgcmVmdW5kOiAJAKQDAQUGcmVmdW5kBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQZGlzdHJpYnV0ZVRva2VucwUIcGF5b3V0SWQKcmVjaXBpZW50cwdhbW91bnRzBmFzc2V0cwphdHRhY2htZW50AwkBAiE9AggFAWkGY2FsbGVyBQ1EYWVtb25BZGRyZXNzCQACAQINQWNjZXNzIGRlbmllZAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECF1BheW1lbnRzIGFyZSBwcm9oaWJpdGVkBApsYXN0UGF5b3V0CQENZ2V0TGFzdFBheW91dAADCQECIT0CBQpsYXN0UGF5b3V0BQhwYXlvdXRJZAkAAgEJAKwCAgkArAICCQCsAgICEFdyb25nIHBheW91dElkOiAJAKQDAQUIcGF5b3V0SWQCDSwgc2hvdWxkIGJlOiAJAKQDAQUKbGFzdFBheW91dAQMcGF5b3V0U3RhdHVzCQEPZ2V0UGF5b3V0U3RhdHVzAQUIcGF5b3V0SWQDCQECIT0CBQxwYXlvdXRTdGF0dXMFFVBheW91dEluaXRpYXRlZFN0YXR1cwkAAgEJAKwCAgkArAICAhVXcm9uZyBwYXlvdXQgc3RhdHVzOiAJAKQDAQUMcGF5b3V0U3RhdHVzAg0sIHNob3VsZCBiZSAxBA5yZWNpcGllbnRzU2l6ZQkAkAMBBQpyZWNpcGllbnRzBAthbW91bnRzU2l6ZQkAkAMBBQdhbW91bnRzBAphc3NldHNTaXplCQCQAwEFBmFzc2V0cwMDCQECIT0CBQ5yZWNpcGllbnRzU2l6ZQULYW1vdW50c1NpemUGCQECIT0CBQ5yZWNpcGllbnRzU2l6ZQUKYXNzZXRzU2l6ZQkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhdXcm9uZyByZWNpcGllbnRzIHNpemU6IAkApAMBBQ5yZWNpcGllbnRzU2l6ZQIQLCBhbW91bnRzIHNpemU6IAkApAMBBQthbW91bnRzU2l6ZQIPLCBhc3NldHMgc2l6ZTogCQCkAwEFCmFzc2V0c1NpemUDCQAAAgUOcmVjaXBpZW50c1NpemUAAAkAAgECI1JlY2lwaWVudHMgbGlzdCBzaG91bGQgbm90IGJlIGVtcHR5AwkAZgIFDnJlY2lwaWVudHNTaXplBRZSZWNpcGllbnRzQmF0Y2hNYXhTaXplCQACAQkArAICCQCsAgIJAKwCAgIbU2hvdWxkIGJlIG5vdCBncmVhdGVyIHRoYW4gCQCkAwEFFlJlY2lwaWVudHNCYXRjaE1heFNpemUCFiByZWNpcGllbnRzLCBjdXJyZW50OiAJAKQDAQUOcmVjaXBpZW50c1NpemUECW1hZ2ljQnl0ZQkAygECCQCaAwEAAQAHBAtjaGFpbklkQnl0ZQkAygECCQCaAwEFB0NoYWluSWQABwQNYWRkcmVzc1ByZWZpeAkAywECBQltYWdpY0J5dGUFC2NoYWluSWRCeXRlCgETc2NyaXB0VHJhbnNmZXJzRm9sZAIFYWNjdW0FaW5kZXgDCQBnAgUFaW5kZXgFDnJlY2lwaWVudHNTaXplBQVhY2N1bQQNcHVibGljS2V5SGFzaAkAkQMCBQpyZWNpcGllbnRzBQVpbmRleAQLYWRkcmVzc0RhdGEJAMsBAgUNYWRkcmVzc1By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IHN0YXR1czogCQCkAwEFDHBheW91dFN0YXR1cwIOLCBzaG91bGQgYmU6IDEJAMwIAgkBDEludGVnZXJFbnRyeQIJARNtYWtlUGF5b3V0U3RhdHVzS2V5AQUKbGFzdFBheW91dAUVUGF5b3V0Q29tcGxldGVkU3RhdHVzBQNuaWwBaQEUYWRkQWRkaXRpb25hbFJld2FyZHMAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQInQXQgbGVhc3Qgb25lIHBheW1lbnQgc2hvdWxkIGJlIGF0dGFjaGVkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0CQACAQIaT25seSB3YXZlcyBjYW4gYmUgYXR0YWNoZWQECmxhc3RQYXlvdXQJAQ1nZXRMYXN0UGF5b3V0AAQQbGFzdFBheW91dFN0YXR1cwkBD2dldFBheW91dFN0YXR1cwEFCmxhc3RQYXlvdXQDCQECIT0CBRBsYXN0UGF5b3V0U3RhdHVzBRVQYXlvdXRDb21wbGV0ZWRTdGF0dXMJAAIBCQCsAgIJAKwCAgINTGFzdCBwYXlvdXQ6IAkApAMBBQpsYXN0UGF5b3V0AhIgd2FzIG5vdCBjb21wbGV0ZWQEDG5leHRQYXlvdXRJZAkAZAIFCmxhc3RQYXlvdXQAAQQYY3VycmVudEFkZGl0aW9uYWxSZXdhcmRzCQEaZ2V0UGF5b3V0QWRkaXRpb25hbFJld2FyZHMBBQxuZXh0UGF5b3V0SWQEFG5ld0FkZGl0aW9uYWxSZXdhcmRzCQBkAgUYY3VycmVudEFkZGl0aW9uYWxSZXdhcmRzCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBHm1ha2VQYXlvdXRBZGRpdGlvbmFsUmV3YXJkc0tleQEFDG5leHRQYXlvdXRJZAUUbmV3QWRkaXRpb25hbFJld2FyZHMFA25pbAFpARNhZGRNYXNzVHJhbnNmZXJGZWVzAAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAQkAAgECJ0F0IGxlYXN0IG9uZSBwYXltZW50IHNob3VsZCBiZSBhdHRhY2hlZAMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAAgECGk9ubHkgd2F2ZXMgY2FuIGJlIGF0dGFjaGVkBBdjdXJyZW50TWFzc1RyYW5zZmVyRmVlcwkBC3ZhbHVlT3JFbHNlAgkAnwgBBRNNYXNzVHJhbnNmZXJGZWVzS2V5AAAEE25ld01hc3NUcmFuc2ZlckZlZXMJAGQCBRdjdXJyZW50TWFzc1RyYW5zZmVyRmVlcwgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFE01hc3NUcmFuc2ZlckZlZXNLZXkFE25ld01hc3NUcmFuc2ZlckZlZXMFA25pbAFpARh3aXRoZHJhd01hc3NUcmFuc2ZlckZlZXMAAwkBAiE9AggFAWkGY2FsbGVyBRFNYWludGFpbmVyQWRkcmVzcwkAAgECDUFjY2VzcyBkZW5pZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhdQYXltZW50cyBhcmUgcHJvaGliaXRlZAQXY3VycmVudE1hc3NUcmFuc2ZlckZlZXMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUTTWFzc1RyYW5zZmVyRmVlc0tleQAAAwkAAAIFF2N1cnJlbnRNYXNzVHJhbnNmZXJGZWVzAAAJAAIBAhNOb3RoaW5nIHRvIHdpdGhkcmF3CQDMCAIJAQxJbnRlZ2VyRW50cnkCBRNNYXNzVHJhbnNmZXJGZWVzS2V5AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwURTWFpbnRhaW5lckFkZHJlc3MFF2N1cnJlbnRNYXNzVHJhbnNmZXJGZWVzBQR1bml0BQNuaWwBAnR4AQZ2ZXJpZnkABAckbWF0Y2gwBQJ0eAMJAAECBQckbWF0Y2gwAhdNYXNzVHJhbnNmZXJUcmFuc2FjdGlvbgQGbWFzc1R4BQckbWF0Y2gwBBBjb25maWdBZGRyZXNzU3RyCQCdCAIFBHRoaXMFEENvbmZpZ0FkZHJlc3NLZXkEDWNvbmZpZ0FkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQV2YWx1ZQEFEGNvbmZpZ0FkZHJlc3NTdHIECXB1YmxpY0tleQMJAQlpc0RlZmluZWQBBRBjb25maWdBZGRyZXNzU3RyCQELdmFsdWVPckVsc2UCCQCcCAIFDWNvbmZpZ0FkZHJlc3MFEkRhZW1vblB1YmxpY0tleUtleQgFAnR4D3NlbmRlclB1YmxpY0tleQgFAnR4D3NlbmRlclB1YmxpY0tleQkAxBMDCAUGbWFzc1R4CWJvZHlCeXRlcwkAkQMCCAUGbWFzc1R4BnByb29mcwAABQlwdWJsaWNLZXkDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24ECGludm9rZVR4BQckbWF0Y2gwBBF2YWxpZEZ1bmN0aW9uTmFtZQMDAwkAAAIIBQhpbnZva2VUeAhmdW5jdGlvbgIPZXh0ZW5kTWFpbkNoYWluBgkAAAIIBQhpbnZva2VUeAhmdW5jdGlvbgILYXBwZW5kQmxvY2sGCQAAAggFCGludm9rZVR4CGZ1bmN0aW9uAg1zdGFydEFsdENoYWluBgkAAAIIBQhpbnZva2VUeAhmdW5jdGlvbgIOZXh0ZW5kQWx0Q2hhaW4EEGNvbmZpZ0FkZHJlc3NTdHIJAJ0IAgUEdGhpcwUQQ29uZmlnQWRkcmVzc0tleQQNY29uZmlnQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQUQY29uZmlnQWRkcmVzc1N0cgQUdW5pdHNDaGFpbkFkZHJlc3NTdHIJAJ0IAgUNY29uZmlnQWRkcmVzcwkArAICAgt1bml0c0NoYWluXwkApQgBCgABQAgFCGludm9rZVR4BGRBcHADCQABAgUBQAIHQWRkcmVzcwUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEFkZHJlc3MED3NpZ25lclB1YmxpY0tleQkBC3ZhbHVlT3JFbHNlAgkAnAgCBQ1jb25maWdBZGRyZXNzBRJTaWduZXJQdWJsaWNLZXlLZXkIBQJ0eA9zZW5kZXJQdWJsaWNLZXkECXB1YmxpY0tleQMJAQlpc0RlZmluZWQBBRBjb25maWdBZGRyZXNzU3RyAwMJAQlpc0RlZmluZWQBBRR1bml0c0NoYWluQWRkcmVzc1N0cgURdmFsaWRGdW5jdGlvbk5hbWUHCAUCdHgPc2VuZGVyUHVibGljS2V5BQ9zaWduZXJQdWJsaWNLZXkIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAMQTAwgFCGludm9rZVR4CWJvZHlCeXRlcwkAkQMCCAUIaW52b2tlVHgGcHJvb2ZzAAAFCXB1YmxpY0tleQQQY29uZmlnQWRkcmVzc1N0cgkAnQgCBQR0aGlzBRBDb25maWdBZGRyZXNzS2V5BA1jb25maWdBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEFdmFsdWUBBRBjb25maWdBZGRyZXNzU3RyBAlwdWJsaWNLZXkDCQEJaXNEZWZpbmVkAQUQY29uZmlnQWRkcmVzc1N0cgkBC3ZhbHVlT3JFbHNlAgkAnAgCBQ1jb25maWdBZGRyZXNzBRJTaWduZXJQdWJsaWNLZXlLZXkIBQJ0eA9zZW5kZXJQdWJsaWNLZXkIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAMgTAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFCXB1YmxpY0tleZx1RAY=", "height": 3106917, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7cW213AvGoKvVVNrKP8iGi9n8yrpNSsSXXDEo4zQAhwL Next: HT69Nu1VNhAkR5uYH9mDrp1tzdFvHnxWdmS1P9d5awwS Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 5
4+let a = "WAVES"
55
6-let b = 0
6+let b = 5
77
8-let c = 1
8+let c = 0
99
10-let d = 2
10+let d = 1
1111
12-let e = 10
12+let e = 2
1313
14-let f = 100
14+let f = 10
1515
16-let g = height
16+let g = 100
1717
18-let h = 84
18+let h = height
1919
2020 let i = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2121
22-let j = Address(base58'3NC2Xn1tUKEc7YxJS9oxdtY4x5NaQHhpH2e')
22+let j = "configAddress"
2323
24-let k = Address(base58'3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx')
24+let k = "lastPayout"
2525
26-let l = Address(base58'3N2jcP6cAcDJoVpfsQ5tVDTQrNgJcVUjj4v')
26+let l = "massTransferFees"
2727
28-let m = Address(base58'3MyJM8hLxAMYFrPzdh68QqeMdFSSWufQqw3')
28+let m = "chainId"
2929
30-let n = Address(base58'3N7ynzLr2PzVg9bCkrwLezNLVmoEyFmJtPL')
30+let n = "daemonAddress"
3131
32-let o = Address(base58'3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF')
32+let o = "daemonPublicKey"
3333
34-let p = "WAVES"
34+let p = "maintainerAddress"
3535
36-let q = "lastPayout"
36+let q = "puzzleAggregatorAddress"
3737
38-let r = "massTransferFees"
38+let r = "puzzleBuybackAddress"
3939
40-func s (t) = ("payoutData_" + toString(t))
40+let s = "settingsAddress"
41+
42+let t = "signerPublicKey"
43+
44+let u = "wavesDaoFactoryAddress"
45+
46+let v = addressFromStringValue(getStringValue(this, j))
47+
48+let w = getIntegerValue(v, m)
49+
50+let x = addressFromStringValue(getStringValue(v, n))
51+
52+let y = getBinaryValue(v, o)
53+
54+let z = addressFromStringValue(getStringValue(v, p))
55+
56+let A = addressFromStringValue(getStringValue(v, q))
57+
58+let B = addressFromStringValue(getStringValue(v, r))
59+
60+let C = addressFromStringValue(getStringValue(v, s))
61+
62+let D = getBinary(v, t)
63+
64+let E = addressFromStringValue(getStringValue(v, u))
65+
66+func F (G) = ("payoutData_" + toString(G))
4167
4268
43-func u (t) = ("payoutStatus_" + toString(t))
69+func H (G) = ("payoutStatus_" + toString(G))
4470
4571
46-func v (t) = ("payoutAdditionalRewards_" + toString(t))
72+func I (G) = ("payoutAdditionalRewards_" + toString(G))
4773
4874
49-func w () = getIntegerValue(this, q)
75+func J () = getIntegerValue(this, k)
5076
5177
52-func x (t) = {
53- let y = getStringValue(s(t))
54- let z = split(y, "_")
55- let A = parseIntValue(z[0])
56- let B = parseIntValue(z[1])
57- $Tuple2(A, B)
78+func K (G) = {
79+ let L = getStringValue(F(G))
80+ let M = split(L, "_")
81+ let N = parseIntValue(M[0])
82+ let O = parseIntValue(M[1])
83+ $Tuple2(N, O)
5884 }
5985
6086
61-func C (t) = valueOrElse(getInteger(u(t)), b)
87+func P (G) = valueOrElse(getInteger(H(G)), c)
6288
6389
64-func D (t) = valueOrElse(getInteger(v(t)), 0)
90+func Q (G) = valueOrElse(getInteger(I(G)), 0)
6591
6692
67-@Callable(E)
68-func initiatePayout (t,A,B,F,G) = if ((E.caller != j))
93+@Callable(R)
94+func setup (S) = if ((R.caller != this))
6995 then throw("Access denied")
70- else if ((size(E.payments) != 0))
96+ else if ((size(R.payments) != 0))
97+ then throw("Payments are prohibited")
98+ else if ((addressFromString(S) == unit))
99+ then throw(("Invalid configAddress: " + S))
100+ else [StringEntry(j, S)]
101+
102+
103+
104+@Callable(R)
105+func initiatePayout (G,N,O,T,U) = if ((R.caller != x))
106+ then throw("Access denied")
107+ else if ((size(R.payments) != 0))
71108 then throw("Payments are prohibited")
72109 else {
73- let H = w()
74- if ((t != (H + 1)))
75- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString((H + 1))))
110+ let V = J()
111+ if ((G != (V + 1)))
112+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString((V + 1))))
76113 else {
77- let I = C(H)
78- if ((I != d))
79- then throw((("Last payout: " + toString(H)) + " was not completed"))
114+ let W = P(V)
115+ if ((W != e))
116+ then throw((("Last payout: " + toString(V)) + " was not completed"))
80117 else {
81- let J = x(H)
82- let K = J._1
83- let L = J._2
84- if ((A != (L + 1)))
85- then throw(((("Wrong startHeight: " + toString(A)) + ", should be: ") + toString((L + 1))))
86- else if ((A > B))
87- then throw(((("endHeight: " + toString(B)) + " less than startHeight: ") + toString(A)))
118+ let X = K(V)
119+ let Y = X._1
120+ let Z = X._2
121+ if ((N != (Z + 1)))
122+ then throw(((("Wrong startHeight: " + toString(N)) + ", should be: ") + toString((Z + 1))))
123+ else if ((N > O))
124+ then throw(((("endHeight: " + toString(O)) + " less than startHeight: ") + toString(N)))
88125 else {
89- let M = getIntegerValue(l, "inputsQuantity")
90- let N = size(F)
91- let O = size(G)
92- if (if ((N != O))
126+ let aa = getIntegerValue(C, "inputsQuantity")
127+ let ab = size(T)
128+ let ac = size(U)
129+ if (if ((ab != ac))
93130 then true
94- else (N != M))
131+ else (ab != aa))
95132 then throw("Wrong size of amounts or assets")
96133 else {
97- let P = valueOrElse(getInteger(k, ("%s%s__available__" + toString(this))), 0)
98- let Q = getIntegerValue(k, "%s__nextBlockToProcess")
99- let R = if (if ((P > 0))
100- then ((Q + e) >= g)
134+ let ad = valueOrElse(getInteger(E, ("%s%s__available__" + toString(this))), 0)
135+ let ae = getIntegerValue(E, "%s__nextBlockToProcess")
136+ let af = if (if ((ad > 0))
137+ then ((ae + f) >= h)
101138 else false)
102- then invoke(k, "claimLP", nil, nil)
139+ then invoke(E, "claimLP", nil, nil)
103140 else unit
104- if ((R == R))
141+ if ((af == af))
105142 then {
106- let S = D(t)
107- func T (U,V) = if ((V >= O))
108- then U
143+ let ag = Q(G)
144+ func ah (ai,aj) = if ((aj >= ac))
145+ then ai
109146 else {
110- let W = G[V]
111- if ((getInteger(l, ("inputAssetIndex_" + W)) == unit))
112- then throw(("Unknown input: " + W))
147+ let ak = U[aj]
148+ if ((getInteger(C, ("inputAssetIndex_" + ak)) == unit))
149+ then throw(("Unknown input: " + ak))
113150 else {
114- let X = if ((W == p))
115- then $Tuple2(unit, (F[V] + S))
116- else $Tuple2(fromBase58String(W), F[V])
117- let Y = X._1
118- let Z = X._2
119- if ((0 > Z))
120- then throw((("Wrong asset amount: " + toString(Z)) + ", should be positive or zero"))
151+ let al = if ((ak == a))
152+ then $Tuple2(unit, (T[aj] + ag))
153+ else $Tuple2(fromBase58String(ak), T[aj])
154+ let am = al._1
155+ let an = al._2
156+ if ((0 > an))
157+ then throw((("Wrong asset amount: " + toString(an)) + ", should be positive or zero"))
121158 else {
122- let aa = fraction(Z, a, 100)
123- let ab = (aa / 2)
124- let ac = (aa - ab)
125- let ad = ((Z - ab) - ac)
126- $Tuple2(((U._1 :+ ScriptTransfer(n, ab, Y)) :+ ScriptTransfer(o, ac, Y)), (U._2 :+ toString(ad)))
159+ let ao = fraction(an, b, 100)
160+ let ap = (ao / 2)
161+ let aq = (ao - ap)
162+ let ar = ((an - ap) - aq)
163+ $Tuple2(((ai._1 :+ ScriptTransfer(z, ap, am)) :+ ScriptTransfer(B, aq, am)), (ai._2 :+ toString(ar)))
127164 }
128165 }
129166 }
130167
131- let ae = {
132- let af = i
133- let ag = size(af)
134- let ah = $Tuple2(nil, nil)
135- func ai (aj,ak) = if ((ak >= ag))
136- then aj
137- else T(aj, af[ak])
168+ let as = {
169+ let at = i
170+ let au = size(at)
171+ let av = $Tuple2(nil, nil)
172+ func aw (ax,ay) = if ((ay >= au))
173+ then ax
174+ else ah(ax, at[ay])
138175
139- func al (aj,ak) = if ((ak >= ag))
140- then aj
176+ func az (ax,ay) = if ((ay >= au))
177+ then ax
141178 else throw("List size exceeds 10")
142179
143- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
180+ az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
144181 }
145- let am = ae._1
146- let an = ae._2
147- let ao = makeString(([toString(A), toString(B)] ++ an), "_")
148- (am ++ [IntegerEntry(q, t), StringEntry(s(t), ao), IntegerEntry(u(t), c)])
182+ let aA = as._1
183+ let aB = as._2
184+ let aC = makeString(([toString(N), toString(O)] ++ aB), "_")
185+ (aA ++ [IntegerEntry(k, G), StringEntry(F(G), aC), IntegerEntry(H(G), d)])
149186 }
150187 else throw("Strict value is not equal to itself.")
151188 }
156193
157194
158195
159-@Callable(E)
160-func swap (t,ap,aq,ar,as) = if ((E.caller != j))
196+@Callable(R)
197+func swap (G,aD,aE,aF,aG) = if ((R.caller != x))
161198 then throw("Access denied")
162- else if ((size(E.payments) != 0))
199+ else if ((size(R.payments) != 0))
163200 then throw("Payments are prohibited")
164201 else {
165- let H = w()
166- if ((H != t))
167- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString(H)))
202+ let V = J()
203+ if ((V != G))
204+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString(V)))
168205 else {
169- let at = C(t)
170- if ((at != c))
171- then throw((("Wrong payout status: " + toString(at)) + ", should be 1"))
206+ let aH = P(G)
207+ if ((aH != d))
208+ then throw((("Wrong payout status: " + toString(aH)) + ", should be 1"))
172209 else {
173- let au = if ((ap == p))
210+ let aI = if ((aD == a))
174211 then $Tuple2(wavesBalance(this).available, unit)
175212 else {
176- let av = fromBase58String(ap)
177- $Tuple2(assetBalance(this, av), av)
213+ let aJ = fromBase58String(aD)
214+ $Tuple2(assetBalance(this, aJ), aJ)
178215 }
179- let aw = au._1
180- let ax = au._2
181- let ay = invoke(m, "swapWithReferral", [ar, as, "puzzlenode"], [AttachedPayment(ax, aq)])
182- if ((ay == ay))
216+ let aK = aI._1
217+ let aL = aI._2
218+ let aM = invoke(A, "swapWithReferral", [aF, aG, "puzzlenode"], [AttachedPayment(aL, aE)])
219+ if ((aM == aM))
183220 then {
184- let az = if ((ap == p))
221+ let aN = if ((aD == a))
185222 then wavesBalance(this).available
186- else assetBalance(this, value(ax))
187- let aA = (az - (aw - aq))
188- if ((aA > 10))
189- then throw(("Rollback aggregator refund: " + toString(aA)))
223+ else assetBalance(this, value(aL))
224+ let aO = (aN - (aK - aE))
225+ if ((aO > 10))
226+ then throw(("Rollback aggregator refund: " + toString(aO)))
190227 else nil
191228 }
192229 else throw("Strict value is not equal to itself.")
196233
197234
198235
199-@Callable(E)
200-func distributeTokens (t,aB,F,G,aC) = if ((E.caller != j))
236+@Callable(R)
237+func distributeTokens (G,aP,T,U,aQ) = if ((R.caller != x))
201238 then throw("Access denied")
202- else if ((size(E.payments) != 0))
239+ else if ((size(R.payments) != 0))
203240 then throw("Payments are prohibited")
204241 else {
205- let H = w()
206- if ((H != t))
207- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString(H)))
242+ let V = J()
243+ if ((V != G))
244+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString(V)))
208245 else {
209- let at = C(t)
210- if ((at != c))
211- then throw((("Wrong payout status: " + toString(at)) + ", should be 1"))
246+ let aH = P(G)
247+ if ((aH != d))
248+ then throw((("Wrong payout status: " + toString(aH)) + ", should be 1"))
212249 else {
213- let aD = size(aB)
214- let N = size(F)
215- let O = size(G)
216- if (if ((aD != N))
250+ let aR = size(aP)
251+ let ab = size(T)
252+ let ac = size(U)
253+ if (if ((aR != ab))
217254 then true
218- else (aD != O))
219- then throw(((((("Wrong recipients size: " + toString(aD)) + ", amounts size: ") + toString(N)) + ", assets size: ") + toString(O)))
220- else if ((aD == 0))
255+ else (aR != ac))
256+ then throw(((((("Wrong recipients size: " + toString(aR)) + ", amounts size: ") + toString(ab)) + ", assets size: ") + toString(ac)))
257+ else if ((aR == 0))
221258 then throw("Recipients list should not be empty")
222- else if ((aD > f))
223- then throw(((("Should be not greater than " + toString(f)) + " recipients, current: ") + toString(aD)))
259+ else if ((aR > g))
260+ then throw(((("Should be not greater than " + toString(g)) + " recipients, current: ") + toString(aR)))
224261 else {
225- let aE = drop(toBytes(1), 7)
226- let aF = drop(toBytes(h), 7)
227- let aG = (aE + aF)
228- func aH (U,V) = if ((V >= aD))
229- then U
262+ let aS = drop(toBytes(1), 7)
263+ let aT = drop(toBytes(w), 7)
264+ let aU = (aS + aT)
265+ func aV (ai,aj) = if ((aj >= aR))
266+ then ai
230267 else {
231- let aI = aB[V]
232- let aJ = (aG + aI)
233- let aK = take(keccak256(blake2b256(aJ)), 4)
234- let aL = Address((aJ + aK))
235- let Z = F[V]
236- let aM = G[V]
237- let av = getBinaryValue(l, ("assetId_" + toString(aM)))
238- let Y = if ((av == base58''))
268+ let aW = aP[aj]
269+ let aX = (aU + aW)
270+ let aY = take(keccak256(blake2b256(aX)), 4)
271+ let aZ = Address((aX + aY))
272+ let an = T[aj]
273+ let ba = U[aj]
274+ let aJ = getBinaryValue(C, ("assetId_" + toString(ba)))
275+ let am = if ((aJ == base58''))
239276 then unit
240- else av
241- (U :+ ScriptTransfer(aL, Z, Y))
277+ else aJ
278+ (ai :+ ScriptTransfer(aZ, an, am))
242279 }
243280
244- let aN = [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]
245- let af = aN
246- let ag = size(af)
247- let ah = nil
248- func ai (aj,ak) = if ((ak >= ag))
249- then aj
250- else aH(aj, af[ak])
281+ let bb = [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]
282+ let at = bb
283+ let au = size(at)
284+ let av = nil
285+ func aw (ax,ay) = if ((ay >= au))
286+ then ax
287+ else aV(ax, at[ay])
251288
252- func al (aj,ak) = if ((ak >= ag))
253- then aj
289+ func az (ax,ay) = if ((ay >= au))
290+ then ax
254291 else throw("List size exceeds 100")
255292
256- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 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)
293+ az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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)
257294 }
258295 }
259296 }
261298
262299
263300
264-@Callable(E)
265-func finalizePayout (t) = if ((E.caller != j))
301+@Callable(R)
302+func finalizePayout (G) = if ((R.caller != x))
266303 then throw("Access denied")
267304 else {
268- let H = w()
269- if ((H != t))
270- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString(H)))
305+ let V = J()
306+ if ((V != G))
307+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString(V)))
271308 else {
272- let at = C(H)
273- if ((at != c))
274- then throw((("Wrong payout status: " + toString(at)) + ", should be: 1"))
275- else [IntegerEntry(u(H), d)]
309+ let aH = P(V)
310+ if ((aH != d))
311+ then throw((("Wrong payout status: " + toString(aH)) + ", should be: 1"))
312+ else [IntegerEntry(H(V), e)]
276313 }
277314 }
278315
279316
280317
281-@Callable(E)
282-func addAdditionalRewards () = if ((size(E.payments) != 1))
318+@Callable(R)
319+func addAdditionalRewards () = if ((size(R.payments) != 1))
283320 then throw("At least one payment should be attached")
284- else if ((E.payments[0].assetId != unit))
321+ else if ((R.payments[0].assetId != unit))
285322 then throw("Only waves can be attached")
286323 else {
287- let H = w()
288- let I = C(H)
289- if ((I != d))
290- then throw((("Last payout: " + toString(H)) + " was not completed"))
324+ let V = J()
325+ let W = P(V)
326+ if ((W != e))
327+ then throw((("Last payout: " + toString(V)) + " was not completed"))
291328 else {
292- let aO = (H + 1)
293- let S = D(aO)
294- let aP = (S + E.payments[0].amount)
295-[IntegerEntry(v(aO), aP)]
329+ let bc = (V + 1)
330+ let ag = Q(bc)
331+ let bd = (ag + R.payments[0].amount)
332+[IntegerEntry(I(bc), bd)]
296333 }
297334 }
298335
299336
300337
301-@Callable(E)
302-func addMassTransferFees () = if ((size(E.payments) != 1))
338+@Callable(R)
339+func addMassTransferFees () = if ((size(R.payments) != 1))
303340 then throw("At least one payment should be attached")
304- else if ((E.payments[0].assetId != unit))
341+ else if ((R.payments[0].assetId != unit))
305342 then throw("Only waves can be attached")
306343 else {
307- let aQ = valueOrElse(getInteger(r), 0)
308- let aR = (aQ + E.payments[0].amount)
309-[IntegerEntry(r, aR)]
344+ let be = valueOrElse(getInteger(l), 0)
345+ let bf = (be + R.payments[0].amount)
346+[IntegerEntry(l, bf)]
310347 }
311348
312349
313350
314-@Callable(E)
315-func withdrawMassTransferFees () = if ((E.caller != n))
351+@Callable(R)
352+func withdrawMassTransferFees () = if ((R.caller != z))
316353 then throw("Access denied")
317- else if ((size(E.payments) != 0))
354+ else if ((size(R.payments) != 0))
318355 then throw("Payments are prohibited")
319356 else {
320- let aQ = valueOrElse(getInteger(r), 0)
321- if ((aQ == 0))
357+ let be = valueOrElse(getInteger(l), 0)
358+ if ((be == 0))
322359 then throw("Nothing to withdraw")
323- else [IntegerEntry(r, 0), ScriptTransfer(n, aQ, unit)]
360+ else [IntegerEntry(l, 0), ScriptTransfer(z, be, unit)]
324361 }
325362
326363
327-@Verifier(aS)
328-func aT () = sigVerify(aS.bodyBytes, aS.proofs[0], aS.senderPublicKey)
364+@Verifier(bg)
365+func bh () = {
366+ let bi = bg
367+ if ($isInstanceOf(bi, "MassTransferTransaction"))
368+ then {
369+ let bj = bi
370+ let bk = getString(this, j)
371+ let S = addressFromStringValue(value(bk))
372+ let bl = if (isDefined(bk))
373+ then valueOrElse(getBinary(S, o), bg.senderPublicKey)
374+ else bg.senderPublicKey
375+ sigVerify_8Kb(bj.bodyBytes, bj.proofs[0], bl)
376+ }
377+ else if ($isInstanceOf(bi, "InvokeScriptTransaction"))
378+ then {
379+ let bm = bi
380+ let bn = if (if (if ((bm.function == "extendMainChain"))
381+ then true
382+ else (bm.function == "appendBlock"))
383+ then true
384+ else (bm.function == "startAltChain"))
385+ then true
386+ else (bm.function == "extendAltChain")
387+ let bk = getString(this, j)
388+ let S = addressFromStringValue(value(bk))
389+ let bo = getString(S, ("unitsChain_" + toString({
390+ let bp = bm.dApp
391+ if ($isInstanceOf(bp, "Address"))
392+ then bp
393+ else throw(($getType(bp) + " couldn't be cast to Address"))
394+ })))
395+ let bq = valueOrElse(getBinary(S, t), bg.senderPublicKey)
396+ let bl = if (isDefined(bk))
397+ then if (if (isDefined(bo))
398+ then bn
399+ else false)
400+ then bg.senderPublicKey
401+ else bq
402+ else bg.senderPublicKey
403+ sigVerify_8Kb(bm.bodyBytes, bm.proofs[0], bl)
404+ }
405+ else {
406+ let bk = getString(this, j)
407+ let S = addressFromStringValue(value(bk))
408+ let bl = if (isDefined(bk))
409+ then valueOrElse(getBinary(S, t), bg.senderPublicKey)
410+ else bg.senderPublicKey
411+ sigVerify_128Kb(bg.bodyBytes, bg.proofs[0], bl)
412+ }
413+ }
329414
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 5
4+let a = "WAVES"
55
6-let b = 0
6+let b = 5
77
8-let c = 1
8+let c = 0
99
10-let d = 2
10+let d = 1
1111
12-let e = 10
12+let e = 2
1313
14-let f = 100
14+let f = 10
1515
16-let g = height
16+let g = 100
1717
18-let h = 84
18+let h = height
1919
2020 let i = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2121
22-let j = Address(base58'3NC2Xn1tUKEc7YxJS9oxdtY4x5NaQHhpH2e')
22+let j = "configAddress"
2323
24-let k = Address(base58'3MuS6qVvhBR6wSynFRdcE3fVqmGBjoc7Hhx')
24+let k = "lastPayout"
2525
26-let l = Address(base58'3N2jcP6cAcDJoVpfsQ5tVDTQrNgJcVUjj4v')
26+let l = "massTransferFees"
2727
28-let m = Address(base58'3MyJM8hLxAMYFrPzdh68QqeMdFSSWufQqw3')
28+let m = "chainId"
2929
30-let n = Address(base58'3N7ynzLr2PzVg9bCkrwLezNLVmoEyFmJtPL')
30+let n = "daemonAddress"
3131
32-let o = Address(base58'3MyUDpTMG43mkmScfDKgG9gep4reUboH9YF')
32+let o = "daemonPublicKey"
3333
34-let p = "WAVES"
34+let p = "maintainerAddress"
3535
36-let q = "lastPayout"
36+let q = "puzzleAggregatorAddress"
3737
38-let r = "massTransferFees"
38+let r = "puzzleBuybackAddress"
3939
40-func s (t) = ("payoutData_" + toString(t))
40+let s = "settingsAddress"
41+
42+let t = "signerPublicKey"
43+
44+let u = "wavesDaoFactoryAddress"
45+
46+let v = addressFromStringValue(getStringValue(this, j))
47+
48+let w = getIntegerValue(v, m)
49+
50+let x = addressFromStringValue(getStringValue(v, n))
51+
52+let y = getBinaryValue(v, o)
53+
54+let z = addressFromStringValue(getStringValue(v, p))
55+
56+let A = addressFromStringValue(getStringValue(v, q))
57+
58+let B = addressFromStringValue(getStringValue(v, r))
59+
60+let C = addressFromStringValue(getStringValue(v, s))
61+
62+let D = getBinary(v, t)
63+
64+let E = addressFromStringValue(getStringValue(v, u))
65+
66+func F (G) = ("payoutData_" + toString(G))
4167
4268
43-func u (t) = ("payoutStatus_" + toString(t))
69+func H (G) = ("payoutStatus_" + toString(G))
4470
4571
46-func v (t) = ("payoutAdditionalRewards_" + toString(t))
72+func I (G) = ("payoutAdditionalRewards_" + toString(G))
4773
4874
49-func w () = getIntegerValue(this, q)
75+func J () = getIntegerValue(this, k)
5076
5177
52-func x (t) = {
53- let y = getStringValue(s(t))
54- let z = split(y, "_")
55- let A = parseIntValue(z[0])
56- let B = parseIntValue(z[1])
57- $Tuple2(A, B)
78+func K (G) = {
79+ let L = getStringValue(F(G))
80+ let M = split(L, "_")
81+ let N = parseIntValue(M[0])
82+ let O = parseIntValue(M[1])
83+ $Tuple2(N, O)
5884 }
5985
6086
61-func C (t) = valueOrElse(getInteger(u(t)), b)
87+func P (G) = valueOrElse(getInteger(H(G)), c)
6288
6389
64-func D (t) = valueOrElse(getInteger(v(t)), 0)
90+func Q (G) = valueOrElse(getInteger(I(G)), 0)
6591
6692
67-@Callable(E)
68-func initiatePayout (t,A,B,F,G) = if ((E.caller != j))
93+@Callable(R)
94+func setup (S) = if ((R.caller != this))
6995 then throw("Access denied")
70- else if ((size(E.payments) != 0))
96+ else if ((size(R.payments) != 0))
97+ then throw("Payments are prohibited")
98+ else if ((addressFromString(S) == unit))
99+ then throw(("Invalid configAddress: " + S))
100+ else [StringEntry(j, S)]
101+
102+
103+
104+@Callable(R)
105+func initiatePayout (G,N,O,T,U) = if ((R.caller != x))
106+ then throw("Access denied")
107+ else if ((size(R.payments) != 0))
71108 then throw("Payments are prohibited")
72109 else {
73- let H = w()
74- if ((t != (H + 1)))
75- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString((H + 1))))
110+ let V = J()
111+ if ((G != (V + 1)))
112+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString((V + 1))))
76113 else {
77- let I = C(H)
78- if ((I != d))
79- then throw((("Last payout: " + toString(H)) + " was not completed"))
114+ let W = P(V)
115+ if ((W != e))
116+ then throw((("Last payout: " + toString(V)) + " was not completed"))
80117 else {
81- let J = x(H)
82- let K = J._1
83- let L = J._2
84- if ((A != (L + 1)))
85- then throw(((("Wrong startHeight: " + toString(A)) + ", should be: ") + toString((L + 1))))
86- else if ((A > B))
87- then throw(((("endHeight: " + toString(B)) + " less than startHeight: ") + toString(A)))
118+ let X = K(V)
119+ let Y = X._1
120+ let Z = X._2
121+ if ((N != (Z + 1)))
122+ then throw(((("Wrong startHeight: " + toString(N)) + ", should be: ") + toString((Z + 1))))
123+ else if ((N > O))
124+ then throw(((("endHeight: " + toString(O)) + " less than startHeight: ") + toString(N)))
88125 else {
89- let M = getIntegerValue(l, "inputsQuantity")
90- let N = size(F)
91- let O = size(G)
92- if (if ((N != O))
126+ let aa = getIntegerValue(C, "inputsQuantity")
127+ let ab = size(T)
128+ let ac = size(U)
129+ if (if ((ab != ac))
93130 then true
94- else (N != M))
131+ else (ab != aa))
95132 then throw("Wrong size of amounts or assets")
96133 else {
97- let P = valueOrElse(getInteger(k, ("%s%s__available__" + toString(this))), 0)
98- let Q = getIntegerValue(k, "%s__nextBlockToProcess")
99- let R = if (if ((P > 0))
100- then ((Q + e) >= g)
134+ let ad = valueOrElse(getInteger(E, ("%s%s__available__" + toString(this))), 0)
135+ let ae = getIntegerValue(E, "%s__nextBlockToProcess")
136+ let af = if (if ((ad > 0))
137+ then ((ae + f) >= h)
101138 else false)
102- then invoke(k, "claimLP", nil, nil)
139+ then invoke(E, "claimLP", nil, nil)
103140 else unit
104- if ((R == R))
141+ if ((af == af))
105142 then {
106- let S = D(t)
107- func T (U,V) = if ((V >= O))
108- then U
143+ let ag = Q(G)
144+ func ah (ai,aj) = if ((aj >= ac))
145+ then ai
109146 else {
110- let W = G[V]
111- if ((getInteger(l, ("inputAssetIndex_" + W)) == unit))
112- then throw(("Unknown input: " + W))
147+ let ak = U[aj]
148+ if ((getInteger(C, ("inputAssetIndex_" + ak)) == unit))
149+ then throw(("Unknown input: " + ak))
113150 else {
114- let X = if ((W == p))
115- then $Tuple2(unit, (F[V] + S))
116- else $Tuple2(fromBase58String(W), F[V])
117- let Y = X._1
118- let Z = X._2
119- if ((0 > Z))
120- then throw((("Wrong asset amount: " + toString(Z)) + ", should be positive or zero"))
151+ let al = if ((ak == a))
152+ then $Tuple2(unit, (T[aj] + ag))
153+ else $Tuple2(fromBase58String(ak), T[aj])
154+ let am = al._1
155+ let an = al._2
156+ if ((0 > an))
157+ then throw((("Wrong asset amount: " + toString(an)) + ", should be positive or zero"))
121158 else {
122- let aa = fraction(Z, a, 100)
123- let ab = (aa / 2)
124- let ac = (aa - ab)
125- let ad = ((Z - ab) - ac)
126- $Tuple2(((U._1 :+ ScriptTransfer(n, ab, Y)) :+ ScriptTransfer(o, ac, Y)), (U._2 :+ toString(ad)))
159+ let ao = fraction(an, b, 100)
160+ let ap = (ao / 2)
161+ let aq = (ao - ap)
162+ let ar = ((an - ap) - aq)
163+ $Tuple2(((ai._1 :+ ScriptTransfer(z, ap, am)) :+ ScriptTransfer(B, aq, am)), (ai._2 :+ toString(ar)))
127164 }
128165 }
129166 }
130167
131- let ae = {
132- let af = i
133- let ag = size(af)
134- let ah = $Tuple2(nil, nil)
135- func ai (aj,ak) = if ((ak >= ag))
136- then aj
137- else T(aj, af[ak])
168+ let as = {
169+ let at = i
170+ let au = size(at)
171+ let av = $Tuple2(nil, nil)
172+ func aw (ax,ay) = if ((ay >= au))
173+ then ax
174+ else ah(ax, at[ay])
138175
139- func al (aj,ak) = if ((ak >= ag))
140- then aj
176+ func az (ax,ay) = if ((ay >= au))
177+ then ax
141178 else throw("List size exceeds 10")
142179
143- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
180+ az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
144181 }
145- let am = ae._1
146- let an = ae._2
147- let ao = makeString(([toString(A), toString(B)] ++ an), "_")
148- (am ++ [IntegerEntry(q, t), StringEntry(s(t), ao), IntegerEntry(u(t), c)])
182+ let aA = as._1
183+ let aB = as._2
184+ let aC = makeString(([toString(N), toString(O)] ++ aB), "_")
185+ (aA ++ [IntegerEntry(k, G), StringEntry(F(G), aC), IntegerEntry(H(G), d)])
149186 }
150187 else throw("Strict value is not equal to itself.")
151188 }
152189 }
153190 }
154191 }
155192 }
156193
157194
158195
159-@Callable(E)
160-func swap (t,ap,aq,ar,as) = if ((E.caller != j))
196+@Callable(R)
197+func swap (G,aD,aE,aF,aG) = if ((R.caller != x))
161198 then throw("Access denied")
162- else if ((size(E.payments) != 0))
199+ else if ((size(R.payments) != 0))
163200 then throw("Payments are prohibited")
164201 else {
165- let H = w()
166- if ((H != t))
167- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString(H)))
202+ let V = J()
203+ if ((V != G))
204+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString(V)))
168205 else {
169- let at = C(t)
170- if ((at != c))
171- then throw((("Wrong payout status: " + toString(at)) + ", should be 1"))
206+ let aH = P(G)
207+ if ((aH != d))
208+ then throw((("Wrong payout status: " + toString(aH)) + ", should be 1"))
172209 else {
173- let au = if ((ap == p))
210+ let aI = if ((aD == a))
174211 then $Tuple2(wavesBalance(this).available, unit)
175212 else {
176- let av = fromBase58String(ap)
177- $Tuple2(assetBalance(this, av), av)
213+ let aJ = fromBase58String(aD)
214+ $Tuple2(assetBalance(this, aJ), aJ)
178215 }
179- let aw = au._1
180- let ax = au._2
181- let ay = invoke(m, "swapWithReferral", [ar, as, "puzzlenode"], [AttachedPayment(ax, aq)])
182- if ((ay == ay))
216+ let aK = aI._1
217+ let aL = aI._2
218+ let aM = invoke(A, "swapWithReferral", [aF, aG, "puzzlenode"], [AttachedPayment(aL, aE)])
219+ if ((aM == aM))
183220 then {
184- let az = if ((ap == p))
221+ let aN = if ((aD == a))
185222 then wavesBalance(this).available
186- else assetBalance(this, value(ax))
187- let aA = (az - (aw - aq))
188- if ((aA > 10))
189- then throw(("Rollback aggregator refund: " + toString(aA)))
223+ else assetBalance(this, value(aL))
224+ let aO = (aN - (aK - aE))
225+ if ((aO > 10))
226+ then throw(("Rollback aggregator refund: " + toString(aO)))
190227 else nil
191228 }
192229 else throw("Strict value is not equal to itself.")
193230 }
194231 }
195232 }
196233
197234
198235
199-@Callable(E)
200-func distributeTokens (t,aB,F,G,aC) = if ((E.caller != j))
236+@Callable(R)
237+func distributeTokens (G,aP,T,U,aQ) = if ((R.caller != x))
201238 then throw("Access denied")
202- else if ((size(E.payments) != 0))
239+ else if ((size(R.payments) != 0))
203240 then throw("Payments are prohibited")
204241 else {
205- let H = w()
206- if ((H != t))
207- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString(H)))
242+ let V = J()
243+ if ((V != G))
244+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString(V)))
208245 else {
209- let at = C(t)
210- if ((at != c))
211- then throw((("Wrong payout status: " + toString(at)) + ", should be 1"))
246+ let aH = P(G)
247+ if ((aH != d))
248+ then throw((("Wrong payout status: " + toString(aH)) + ", should be 1"))
212249 else {
213- let aD = size(aB)
214- let N = size(F)
215- let O = size(G)
216- if (if ((aD != N))
250+ let aR = size(aP)
251+ let ab = size(T)
252+ let ac = size(U)
253+ if (if ((aR != ab))
217254 then true
218- else (aD != O))
219- then throw(((((("Wrong recipients size: " + toString(aD)) + ", amounts size: ") + toString(N)) + ", assets size: ") + toString(O)))
220- else if ((aD == 0))
255+ else (aR != ac))
256+ then throw(((((("Wrong recipients size: " + toString(aR)) + ", amounts size: ") + toString(ab)) + ", assets size: ") + toString(ac)))
257+ else if ((aR == 0))
221258 then throw("Recipients list should not be empty")
222- else if ((aD > f))
223- then throw(((("Should be not greater than " + toString(f)) + " recipients, current: ") + toString(aD)))
259+ else if ((aR > g))
260+ then throw(((("Should be not greater than " + toString(g)) + " recipients, current: ") + toString(aR)))
224261 else {
225- let aE = drop(toBytes(1), 7)
226- let aF = drop(toBytes(h), 7)
227- let aG = (aE + aF)
228- func aH (U,V) = if ((V >= aD))
229- then U
262+ let aS = drop(toBytes(1), 7)
263+ let aT = drop(toBytes(w), 7)
264+ let aU = (aS + aT)
265+ func aV (ai,aj) = if ((aj >= aR))
266+ then ai
230267 else {
231- let aI = aB[V]
232- let aJ = (aG + aI)
233- let aK = take(keccak256(blake2b256(aJ)), 4)
234- let aL = Address((aJ + aK))
235- let Z = F[V]
236- let aM = G[V]
237- let av = getBinaryValue(l, ("assetId_" + toString(aM)))
238- let Y = if ((av == base58''))
268+ let aW = aP[aj]
269+ let aX = (aU + aW)
270+ let aY = take(keccak256(blake2b256(aX)), 4)
271+ let aZ = Address((aX + aY))
272+ let an = T[aj]
273+ let ba = U[aj]
274+ let aJ = getBinaryValue(C, ("assetId_" + toString(ba)))
275+ let am = if ((aJ == base58''))
239276 then unit
240- else av
241- (U :+ ScriptTransfer(aL, Z, Y))
277+ else aJ
278+ (ai :+ ScriptTransfer(aZ, an, am))
242279 }
243280
244- let aN = [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]
245- let af = aN
246- let ag = size(af)
247- let ah = nil
248- func ai (aj,ak) = if ((ak >= ag))
249- then aj
250- else aH(aj, af[ak])
281+ let bb = [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]
282+ let at = bb
283+ let au = size(at)
284+ let av = nil
285+ func aw (ax,ay) = if ((ay >= au))
286+ then ax
287+ else aV(ax, at[ay])
251288
252- func al (aj,ak) = if ((ak >= ag))
253- then aj
289+ func az (ax,ay) = if ((ay >= au))
290+ then ax
254291 else throw("List size exceeds 100")
255292
256- al(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ai(ah, 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)
293+ az(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(aw(av, 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)
257294 }
258295 }
259296 }
260297 }
261298
262299
263300
264-@Callable(E)
265-func finalizePayout (t) = if ((E.caller != j))
301+@Callable(R)
302+func finalizePayout (G) = if ((R.caller != x))
266303 then throw("Access denied")
267304 else {
268- let H = w()
269- if ((H != t))
270- then throw(((("Wrong payoutId: " + toString(t)) + ", should be: ") + toString(H)))
305+ let V = J()
306+ if ((V != G))
307+ then throw(((("Wrong payoutId: " + toString(G)) + ", should be: ") + toString(V)))
271308 else {
272- let at = C(H)
273- if ((at != c))
274- then throw((("Wrong payout status: " + toString(at)) + ", should be: 1"))
275- else [IntegerEntry(u(H), d)]
309+ let aH = P(V)
310+ if ((aH != d))
311+ then throw((("Wrong payout status: " + toString(aH)) + ", should be: 1"))
312+ else [IntegerEntry(H(V), e)]
276313 }
277314 }
278315
279316
280317
281-@Callable(E)
282-func addAdditionalRewards () = if ((size(E.payments) != 1))
318+@Callable(R)
319+func addAdditionalRewards () = if ((size(R.payments) != 1))
283320 then throw("At least one payment should be attached")
284- else if ((E.payments[0].assetId != unit))
321+ else if ((R.payments[0].assetId != unit))
285322 then throw("Only waves can be attached")
286323 else {
287- let H = w()
288- let I = C(H)
289- if ((I != d))
290- then throw((("Last payout: " + toString(H)) + " was not completed"))
324+ let V = J()
325+ let W = P(V)
326+ if ((W != e))
327+ then throw((("Last payout: " + toString(V)) + " was not completed"))
291328 else {
292- let aO = (H + 1)
293- let S = D(aO)
294- let aP = (S + E.payments[0].amount)
295-[IntegerEntry(v(aO), aP)]
329+ let bc = (V + 1)
330+ let ag = Q(bc)
331+ let bd = (ag + R.payments[0].amount)
332+[IntegerEntry(I(bc), bd)]
296333 }
297334 }
298335
299336
300337
301-@Callable(E)
302-func addMassTransferFees () = if ((size(E.payments) != 1))
338+@Callable(R)
339+func addMassTransferFees () = if ((size(R.payments) != 1))
303340 then throw("At least one payment should be attached")
304- else if ((E.payments[0].assetId != unit))
341+ else if ((R.payments[0].assetId != unit))
305342 then throw("Only waves can be attached")
306343 else {
307- let aQ = valueOrElse(getInteger(r), 0)
308- let aR = (aQ + E.payments[0].amount)
309-[IntegerEntry(r, aR)]
344+ let be = valueOrElse(getInteger(l), 0)
345+ let bf = (be + R.payments[0].amount)
346+[IntegerEntry(l, bf)]
310347 }
311348
312349
313350
314-@Callable(E)
315-func withdrawMassTransferFees () = if ((E.caller != n))
351+@Callable(R)
352+func withdrawMassTransferFees () = if ((R.caller != z))
316353 then throw("Access denied")
317- else if ((size(E.payments) != 0))
354+ else if ((size(R.payments) != 0))
318355 then throw("Payments are prohibited")
319356 else {
320- let aQ = valueOrElse(getInteger(r), 0)
321- if ((aQ == 0))
357+ let be = valueOrElse(getInteger(l), 0)
358+ if ((be == 0))
322359 then throw("Nothing to withdraw")
323- else [IntegerEntry(r, 0), ScriptTransfer(n, aQ, unit)]
360+ else [IntegerEntry(l, 0), ScriptTransfer(z, be, unit)]
324361 }
325362
326363
327-@Verifier(aS)
328-func aT () = sigVerify(aS.bodyBytes, aS.proofs[0], aS.senderPublicKey)
364+@Verifier(bg)
365+func bh () = {
366+ let bi = bg
367+ if ($isInstanceOf(bi, "MassTransferTransaction"))
368+ then {
369+ let bj = bi
370+ let bk = getString(this, j)
371+ let S = addressFromStringValue(value(bk))
372+ let bl = if (isDefined(bk))
373+ then valueOrElse(getBinary(S, o), bg.senderPublicKey)
374+ else bg.senderPublicKey
375+ sigVerify_8Kb(bj.bodyBytes, bj.proofs[0], bl)
376+ }
377+ else if ($isInstanceOf(bi, "InvokeScriptTransaction"))
378+ then {
379+ let bm = bi
380+ let bn = if (if (if ((bm.function == "extendMainChain"))
381+ then true
382+ else (bm.function == "appendBlock"))
383+ then true
384+ else (bm.function == "startAltChain"))
385+ then true
386+ else (bm.function == "extendAltChain")
387+ let bk = getString(this, j)
388+ let S = addressFromStringValue(value(bk))
389+ let bo = getString(S, ("unitsChain_" + toString({
390+ let bp = bm.dApp
391+ if ($isInstanceOf(bp, "Address"))
392+ then bp
393+ else throw(($getType(bp) + " couldn't be cast to Address"))
394+ })))
395+ let bq = valueOrElse(getBinary(S, t), bg.senderPublicKey)
396+ let bl = if (isDefined(bk))
397+ then if (if (isDefined(bo))
398+ then bn
399+ else false)
400+ then bg.senderPublicKey
401+ else bq
402+ else bg.senderPublicKey
403+ sigVerify_8Kb(bm.bodyBytes, bm.proofs[0], bl)
404+ }
405+ else {
406+ let bk = getString(this, j)
407+ let S = addressFromStringValue(value(bk))
408+ let bl = if (isDefined(bk))
409+ then valueOrElse(getBinary(S, t), bg.senderPublicKey)
410+ else bg.senderPublicKey
411+ sigVerify_128Kb(bg.bodyBytes, bg.proofs[0], bl)
412+ }
413+ }
329414

github/deemru/w8io/169f3d6 
323.22 ms