tx · HnjdsEQfRw94nK1eEhUCVaoqEgguBtCAmtMs8BeqDPCh

3PCrRrwHEjGXFjYtXDsNv78f3Ch3CH3p6V1:  -0.00800000 Waves

2023.08.15 18:50 [3777599] smart account 3PCrRrwHEjGXFjYtXDsNv78f3Ch3CH3p6V1 > SELF 0.00000000 Waves

{ "type": 13, "id": "HnjdsEQfRw94nK1eEhUCVaoqEgguBtCAmtMs8BeqDPCh", "fee": 800000, "feeAssetId": null, "timestamp": 1692114696297, "version": 1, "sender": "3PCrRrwHEjGXFjYtXDsNv78f3Ch3CH3p6V1", "senderPublicKey": "CySLWUjPdfjfB7gvJBekkUcTuL6EKAnbmMcUJqLbqGFS", "proofs": [ "5qLfDB9gfnZArYnJTG3vHuGAqs8JzEXhnCukPpAEJNWcS3g4pKDnFKc1P5gcoZ489eCfzka8av8KRgbgXqZ6Ux4T" ], "script": "base64:BgIVCAISCAoGAQEBAQEBEgcKBQEBGBEIGAAGU0NBTEU4AIDC1y8AD09XTkVSX1dBVkVTX0ZFRQAFABRPV05FUl9XQVZFU0RBT0xQX0ZFRQAFABNQQVlPVVRfRU1QVFlfU1RBVFVTAAAAF1BBWU9VVF9JTklUSUFURURfU1RBVFVTAAEAF1BBWU9VVF9DT01QTEVURURfU1RBVFVTAAIAEkJBVENIX0VNUFRZX1NUQVRVUwAAABZCQVRDSF9DT01QTEVURURfU1RBVFVTAAEADkJBVENIX01BWF9TSVpFACgABkhFSUdIVAUGaGVpZ2h0AAx3YXZlc0Rhb0xwSWQBIPXgx052T2ktxd1g67CX1/TBstj4Y9LsP1/KUVTVnnhUAA1jYWxsZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXkW//TDvmNqF5TnJZmv/s1mf/KfcSPgVnABZ3YXZlc0Rhb0ZhY3RvcnlBZGRyZXNzCQEHQWRkcmVzcwEBGgFXtbljVvl4JEBdc+Bk6oR+n37FuM+rP+zqABJiZW5lZmljaWFyeUFkZHJlc3MJAQdBZGRyZXNzAQEaAVfcaGF8ZdWJU71AG+T3Ld8l2X5EuNK2BPgBEW1ha2VMYXN0UGF5b3V0S2V5AAIKbGFzdFBheW91dAERbWFrZVBheW91dERhdGFLZXkBCHBheW91dElkCQCsAgICC3BheW91dERhdGFfCQCkAwEFCHBheW91dElkARNtYWtlUGF5b3V0U3RhdHVzS2V5AQhwYXlvdXRJZAkArAICAg1wYXlvdXRTdGF0dXNfCQCkAwEFCHBheW91dElkARdtYWtlQ29tcGxldGVkQmF0Y2hlc0tleQEIcGF5b3V0SWQJAKwCAgIRY29tcGxldGVkQmF0Y2hlc18JAKQDAQUIcGF5b3V0SWQBEm1ha2VCYXRjaFN0YXR1c0tleQIIcGF5b3V0SWQHYmF0Y2hJZAkArAICCQCsAgIJAKwCAgIMYmF0Y2hTdGF0dXNfCQCkAwEFCHBheW91dElkAgFfCQCkAwEFB2JhdGNoSWQBDWdldExhc3RQYXlvdXQACQERQGV4dHJOYXRpdmUoMTA1MCkCBQR0aGlzCQERbWFrZUxhc3RQYXlvdXRLZXkAAQ1nZXRQYXlvdXREYXRhAQhwYXlvdXRJZAQMcGF5b3V0U3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1OCkBCQERbWFrZVBheW91dERhdGFLZXkBBQhwYXlvdXRJZAQOcGF5b3V0RGF0YUxpc3QJALUJAgUMcGF5b3V0U3RyaW5nAgFfBAtzdGFydEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDnBheW91dERhdGFMaXN0AAAECWVuZEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDnBheW91dERhdGFMaXN0AAEEB2JhdGNoZXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5wYXlvdXREYXRhTGlzdAACBAt3YXZlc0Ftb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDnBheW91dERhdGFMaXN0AAMEEHdhdmVzRGFvTHBBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ5wYXlvdXREYXRhTGlzdAAECQCXCgUFC3N0YXJ0SGVpZ2h0BQllbmRIZWlnaHQFB2JhdGNoZXMFC3dhdmVzQW1vdW50BRB3YXZlc0Rhb0xwQW1vdW50AQ9nZXRQYXlvdXRTdGF0dXMBCHBheW91dElkCQELdmFsdWVPckVsc2UCCQCfCAEJARNtYWtlUGF5b3V0U3RhdHVzS2V5AQUIcGF5b3V0SWQFE1BBWU9VVF9FTVBUWV9TVEFUVVMBE2dldENvbXBsZXRlZEJhdGNoZXMBCHBheW91dElkCQELdmFsdWVPckVsc2UCCQCfCAEJARdtYWtlQ29tcGxldGVkQmF0Y2hlc0tleQEFCHBheW91dElkAAABDmdldEJhdGNoU3RhdHVzAghwYXlvdXRJZAdiYXRjaElkCQELdmFsdWVPckVsc2UCCQCfCAEJARJtYWtlQmF0Y2hTdGF0dXNLZXkCBQhwYXlvdXRJZAUHYmF0Y2hJZAUSQkFUQ0hfRU1QVFlfU1RBVFVTAgFpAQ5pbml0aWF0ZVBheW91dAYIcGF5b3V0SWQLc3RhcnRIZWlnaHQJZW5kSGVpZ2h0B2JhdGNoZXMLd2F2ZXNBbW91bnQQd2F2ZXNEYW9McEFtb3VudAMJAQIhPQIIBQFpBmNhbGxlcgUNY2FsbGVyQWRkcmVzcwkAAgECDUFjY2VzcyBkZW5pZWQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhdQYXltZW50cyBhcmUgcHJvaGliaXRlZAQKbGFzdFBheW91dAkBDWdldExhc3RQYXlvdXQABBBsYXN0UGF5b3V0U3RhdHVzCQEPZ2V0UGF5b3V0U3RhdHVzAQUKbGFzdFBheW91dAMJAQIhPQIFEGxhc3RQYXlvdXRTdGF0dXMFF1BBWU9VVF9DT01QTEVURURfU1RBVFVTCQACAQkArAICCQCsAgICDUxhc3QgcGF5b3V0OiAJAKQDAQUKbGFzdFBheW91dAISIHdhcyBub3QgY29tcGxldGVkAwkBAiE9AgUIcGF5b3V0SWQJAGQCBQpsYXN0UGF5b3V0AAEJAAIBCQCsAgIJAKwCAgkArAICAhBXcm9uZyBwYXlvdXRJZDogCQCkAwEFCHBheW91dElkAg0sIHNob3VsZCBiZTogCQCkAwEJAGQCBQpsYXN0UGF5b3V0AAEECyR0MDI3MDYyODIyCQENZ2V0UGF5b3V0RGF0YQEFCmxhc3RQYXlvdXQED2xhc3RTdGFydEhlaWdodAgFCyR0MDI3MDYyODIyAl8xBA1sYXN0RW5kSGVpZ2h0CAULJHQwMjcwNjI4MjICXzIEC2xhc3RCYXRjaGVzCAULJHQwMjcwNjI4MjICXzMED2xhc3RXYXZlc0Ftb3VudAgFCyR0MDI3MDYyODIyAl80BBRsYXN0V2F2ZXNEYW9McEFtb3VudAgFCyR0MDI3MDYyODIyAl81AwkBAiE9AgULc3RhcnRIZWlnaHQJAGQCBQ1sYXN0RW5kSGVpZ2h0AAEJAAIBCQCsAgIJAKwCAgkArAICAhNXcm9uZyBzdGFydEhlaWdodDogCQCkAwEFC3N0YXJ0SGVpZ2h0Ag0sIHNob3VsZCBiZTogCQCkAwEJAGQCBQ1sYXN0RW5kSGVpZ2h0AAEDCQBmAgULc3RhcnRIZWlnaHQFCWVuZEhlaWdodAkAAgEJAKwCAgkArAICCQCsAgICC2VuZEhlaWdodDogCQCkAwEFCWVuZEhlaWdodAIYIGxlc3MgdGhhbiBzdGFydEhlaWdodDogCQCkAwEFC3N0YXJ0SGVpZ2h0AwkAZwIAAAUHYmF0Y2hlcwkAAgEJAKwCAgkArAICAg9Xcm9uZyBiYXRjaGVzOiAJAKQDAQUHYmF0Y2hlcwIULCBzaG91bGQgYmUgcG9zaXRpdmUDCQBnAgAABQt3YXZlc0Ftb3VudAkAAgEJAKwCAgkArAICAhNXcm9uZyB3YXZlc0Ftb3VudDogCQCkAwEFC3dhdmVzQW1vdW50AhQsIHNob3VsZCBiZSBwb3NpdGl2ZQMJAGYCAAAFEHdhdmVzRGFvTHBBbW91bnQJAAIBCQCsAgIJAKwCAgIYV3Jvbmcgd2F2ZXNEYW9McEFtb3VudDogCQCkAwEFEHdhdmVzRGFvTHBBbW91bnQCHCwgc2hvdWxkIGJlIHBvc2l0aXZlIG9yIHplcm8EGmF2YWlsYWJsZVdhdmVzRGFvTHBUb0NsYWltCQELdmFsdWVPckVsc2UCCQCaCAIFFndhdmVzRGFvRmFjdG9yeUFkZHJlc3MJAKwCAgIRJXMlc19fYXZhaWxhYmxlX18JAKUIAQUEdGhpcwAABBp3YXZlc0Rhb05leHRCbG9ja1RvUHJvY2VzcwkBEUBleHRyTmF0aXZlKDEwNTApAgUWd2F2ZXNEYW9GYWN0b3J5QWRkcmVzcwIWJXNfX25leHRCbG9ja1RvUHJvY2VzcwQTd2F2ZXNEYXBMcENsYWltQ2FsbAMDCQBmAgUaYXZhaWxhYmxlV2F2ZXNEYW9McFRvQ2xhaW0AAAkAZwIJAGQCBRp3YXZlc0Rhb05leHRCbG9ja1RvUHJvY2VzcwUOQkFUQ0hfTUFYX1NJWkUFBkhFSUdIVAcJAPwHBAUWd2F2ZXNEYW9GYWN0b3J5QWRkcmVzcwIHY2xhaW1MUAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUTd2F2ZXNEYXBMcENsYWltQ2FsbAUTd2F2ZXNEYXBMcENsYWltQ2FsbAQNb3duZXJXYXZlc0ZlZQkAawMFC3dhdmVzQW1vdW50BQ9PV05FUl9XQVZFU19GRUUAZAQSbGVzc29yc1dhdmVzQW1vdW50CQBlAgULd2F2ZXNBbW91bnQFDW93bmVyV2F2ZXNGZWUEEm93bmVyV2F2ZXNEYW9McEZlZQkAawMFEHdhdmVzRGFvTHBBbW91bnQFFE9XTkVSX1dBVkVTREFPTFBfRkVFAGQEF2xlc3NvcnNXYXZlc0Rhb0xwQW1vdW50CQBlAgUQd2F2ZXNEYW9McEFtb3VudAUSb3duZXJXYXZlc0Rhb0xwRmVlBA1uZXdQYXlvdXREYXRhCQC5CQIJAMwIAgkApAMBBQtzdGFydEhlaWdodAkAzAgCCQCkAwEFCWVuZEhlaWdodAkAzAgCCQCkAwEFB2JhdGNoZXMJAMwIAgkApAMBBRJsZXNzb3JzV2F2ZXNBbW91bnQJAMwIAgkApAMBBRdsZXNzb3JzV2F2ZXNEYW9McEFtb3VudAUDbmlsAgFfCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFEmJlbmVmaWNpYXJ5QWRkcmVzcwUNb3duZXJXYXZlc0ZlZQUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRJiZW5lZmljaWFyeUFkZHJlc3MFEm93bmVyV2F2ZXNEYW9McEZlZQUMd2F2ZXNEYW9McElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERbWFrZUxhc3RQYXlvdXRLZXkABQhwYXlvdXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQERbWFrZVBheW91dERhdGFLZXkBBQhwYXlvdXRJZAUNbmV3UGF5b3V0RGF0YQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE21ha2VQYXlvdXRTdGF0dXNLZXkBBQhwYXlvdXRJZAUXUEFZT1VUX0lOSVRJQVRFRF9TVEFUVVMFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZkaXN0cmlidXRlTWluZXJSZXdhcmRzBQhwYXlvdXRJZAdiYXRjaElkCnJlY2lwaWVudHMGc2hhcmVzCmF0dGFjaG1lbnQDCQECIT0CCAUBaQZjYWxsZXIFDWNhbGxlckFkZHJlc3MJAAIBAg1BY2Nlc3MgZGVuaWVkAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIXUGF5bWVudHMgYXJlIHByb2hpYml0ZWQECyR0MDUwMzU1MTI5CQENZ2V0UGF5b3V0RGF0YQEFCHBheW91dElkBAtzdGFydEhlaWdodAgFCyR0MDUwMzU1MTI5Al8xBAllbmRIZWlnaHQIBQskdDA1MDM1NTEyOQJfMgQHYmF0Y2hlcwgFCyR0MDUwMzU1MTI5Al8zBAt3YXZlc0Ftb3VudAgFCyR0MDUwMzU1MTI5Al80BBB3YXZlc0Rhb0xwQW1vdW50CAULJHQwNTAzNTUxMjkCXzUECmxhc3RQYXlvdXQJAQ1nZXRMYXN0UGF5b3V0AAMJAQIhPQIFCmxhc3RQYXlvdXQFCHBheW91dElkCQACAQkArAICCQCsAgIJAKwCAgIQV3JvbmcgcGF5b3V0SWQ6IAkApAMBBQhwYXlvdXRJZAINLCBzaG91bGQgYmU6IAkApAMBBQpsYXN0UGF5b3V0BAxwYXlvdXRTdGF0dXMJAQ9nZXRQYXlvdXRTdGF0dXMBBQhwYXlvdXRJZAMJAAACBQxwYXlvdXRTdGF0dXMFE1BBWU9VVF9FTVBUWV9TVEFUVVMJAAIBCQCsAgIJAKwCAgIHUGF5b3V0IAkApAMBBQhwYXlvdXRJZAISIHdhcyBub3QgaW5pdGlhdGVkAwkAAAIFDHBheW91dFN0YXR1cwUXUEFZT1VUX0NPTVBMRVRFRF9TVEFUVVMJAAIBCQCsAgIJAKwCAgIHUGF5b3V0IAkApAMBBQhwYXlvdXRJZAIOIHdhcyBjb21wbGV0ZWQEC2JhdGNoU3RhdHVzCQEOZ2V0QmF0Y2hTdGF0dXMCBQhwYXlvdXRJZAUHYmF0Y2hJZAMJAGcCAAAFB2JhdGNoSWQJAAIBCQCsAgIJAKwCAgIPV3JvbmcgYmF0Y2hJZDogCQCkAwEFB2JhdGNoSWQCFCwgc2hvdWxkIGJlIHBvc2l0aXZlAwkAZgIFB2JhdGNoSWQFB2JhdGNoZXMJAAIBCQCsAgIJAKwCAgkArAICAg9Xcm9uZyBiYXRjaElkOiAJAKQDAQUHYmF0Y2hJZAIaLCBzaG91bGQgYmUgbGVzcyBvciBlcXVhbCAJAKQDAQUHYmF0Y2hlcwMJAAACBQtiYXRjaFN0YXR1cwUWQkFUQ0hfQ09NUExFVEVEX1NUQVRVUwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgIHUGF5b3V0IAkApAMBBQhwYXlvdXRJZAIILCBiYXRjaCAJAKQDAQUHYmF0Y2hJZAIOIHdhcyBjb21wbGV0ZWQEDnJlY2lwaWVudHNTaXplCQCQAwEFCnJlY2lwaWVudHMDCQAAAgUOcmVjaXBpZW50c1NpemUAAAkAAgECI1JlY2lwaWVudHMgbGlzdCBzaG91bGQgbm90IGJlIGVtcHR5AwkAZgIFDnJlY2lwaWVudHNTaXplBQ5CQVRDSF9NQVhfU0laRQkAAgEJAKwCAgkArAICCQCsAgICG1Nob3VsZCBiZSBub3QgZ3JlYXRlciB0aGFuIAkApAMBBQ5CQVRDSF9NQVhfU0laRQIWIHJlY2lwaWVudHMsIGN1cnJlbnQ6IAkApAMBBQ5yZWNpcGllbnRzU2l6ZQMJAQIhPQIFDnJlY2lwaWVudHNTaXplCQCQAwEFBnNoYXJlcwkAAgEJAKwCAgkArAICCQCsAgICF1dyb25nIHJlY2lwaWVudHMgc2l6ZTogCQCkAwEFDnJlY2lwaWVudHNTaXplAg8sIHNoYXJlcyBzaXplOiAJAKQDAQkAkAMBBQZzaGFyZXMECG1pblNoYXJlCQCXAwEFBnNoYXJlcwMJAGcCAAAFCG1pblNoYXJlCQACAQkArAICCQCsAgICEVdyb25nIG1pbiBzaGFyZTogCQCkAwEFCG1pblNoYXJlAh8sIGFsbCBzaGFyZXMgc2hvdWxkIGJlIHBvc2l0aXZlBBBjb21wbGV0ZWRCYXRjaGVzCQBkAgkBE2dldENvbXBsZXRlZEJhdGNoZXMBBQhwYXlvdXRJZAABCgETc2NyaXB0VHJhbnNmZXJzRm9sZAIFYWNjdW0FaW5kZXgDCQBnAgUFaW5kZXgFDnJlY2lwaWVudHNTaXplBQVhY2N1bQQJcmVjaXBpZW50CQCRAwIFCnJlY2lwaWVudHMFBWluZGV4BAVzaGFyZQkAkQMCBQZzaGFyZXMFBWluZGV4BBNyZWNpcGllbnRXYXZlc1NoYXJlCQBrAwULd2F2ZXNBbW91bnQFBXNoYXJlBQZTQ0FMRTgEGHJlY2lwaWVudFdhdmVzRGFvTHBTaGFyZQkAawMFEHdhdmVzRGFvTHBBbW91bnQFBXNoYXJlBQZTQ0FMRTgJAM0IAgkAzQgCBQVhY2N1bQkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUJcmVjaXBpZW50BRNyZWNpcGllbnRXYXZlc1NoYXJlBQR1bml0CQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQlyZWNpcGllbnQFGHJlY2lwaWVudFdhdmVzRGFvTHBTaGFyZQUMd2F2ZXNEYW9McElkBAdpbmRleGVzCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAJAMwIAgARCQDMCAIAEgkAzAgCABMJAMwIAgAUCQDMCAIAFQkAzAgCABYJAMwIAgAXCQDMCAIAGAkAzAgCABkJAMwIAgAaCQDMCAIAGwkAzAgCABwJAMwIAgAdCQDMCAIAHgkAzAgCAB8JAMwIAgAgCQDMCAIAIQkAzAgCACIJAMwIAgAjCQDMCAIAJAkAzAgCACUJAMwIAgAmCQDMCAIAJwUDbmlsCQDOCAIJAM4IAgoAAiRsBQdpbmRleGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARNzY3JpcHRUcmFuc2ZlcnNGb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyA0MAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESbWFrZUJhdGNoU3RhdHVzS2V5AgUIcGF5b3V0SWQFB2JhdGNoSWQFFkJBVENIX0NPTVBMRVRFRF9TVEFUVVMJAMwIAgkBDEludGVnZXJFbnRyeQIJARdtYWtlQ29tcGxldGVkQmF0Y2hlc0tleQEFCHBheW91dElkBRBjb21wbGV0ZWRCYXRjaGVzBQNuaWwDCQAAAgUQY29tcGxldGVkQmF0Y2hlcwUHYmF0Y2hlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE21ha2VQYXlvdXRTdGF0dXNLZXkBBQhwYXlvdXRJZAUXUEFZT1VUX0NPTVBMRVRFRF9TVEFUVVMFA25pbAUDbmlsAQJ0eAEGdmVyaWZ5AAkAyBMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAEgNhrA4ymYE8Wv2JyrhvzCpoDJR2uf+aGMUg3DaRCPyhg55A1i", "chainId": 87, "height": 3777599, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ptpHkGe8ozSHc6BcfVCmBxwMtHkRpF6wJfZAvaX4kQg Next: FqHqBfX7VPYqVhFNLJK1mq7ZKDsKU6MNfUEVcz4QBQWG Diff:
OldNewDifferences
7474 else if ((size(i.payments) != 0))
7575 then throw("Payments are prohibited")
7676 else {
77- let wavesDaoNextBlockToProcess = getIntegerValue(wavesDaoFactoryAddress, "%s__nextBlockToProcess")
78- if ((HEIGHT > (wavesDaoNextBlockToProcess + BATCH_MAX_SIZE)))
79- then throw("processBlocks should be called in waves dao")
80- else {
81- let lastPayout = getLastPayout()
82- let lastPayoutStatus = getPayoutStatus(lastPayout)
83- if ((lastPayoutStatus != PAYOUT_COMPLETED_STATUS))
84- then throw((("Last payout: " + toString(lastPayout)) + " was not completed"))
85- else if ((payoutId != (lastPayout + 1)))
86- then throw(((("Wrong payoutId: " + toString(payoutId)) + ", should be: ") + toString((lastPayout + 1))))
87- else {
88- let $t029373053 = getPayoutData(lastPayout)
89- let lastStartHeight = $t029373053._1
90- let lastEndHeight = $t029373053._2
91- let lastBatches = $t029373053._3
92- let lastWavesAmount = $t029373053._4
93- let lastWavesDaoLpAmount = $t029373053._5
94- if ((startHeight != (lastEndHeight + 1)))
95- then throw(((("Wrong startHeight: " + toString(startHeight)) + ", should be: ") + toString((lastEndHeight + 1))))
96- else if ((startHeight > endHeight))
97- then throw(((("endHeight: " + toString(endHeight)) + " less than startHeight: ") + toString(startHeight)))
98- else if ((0 >= batches))
99- then throw((("Wrong batches: " + toString(batches)) + ", should be positive"))
100- else if ((0 >= wavesAmount))
101- then throw((("Wrong wavesAmount: " + toString(wavesAmount)) + ", should be positive"))
102- else if ((0 >= wavesDaoLpAmount))
103- then throw((("Wrong wavesDaoLpAmount: " + toString(wavesDaoLpAmount)) + ", should be positive"))
104- else {
105- let availableWavesDaoLpToClaim = valueOrElse(getInteger(wavesDaoFactoryAddress, ("%s%s__available__" + toString(this))), 0)
106- let wavesDapLpClaimCall = if ((availableWavesDaoLpToClaim > 0))
107- then invoke(wavesDaoFactoryAddress, "claimLP", nil, nil)
108- else unit
109- if ((wavesDapLpClaimCall == wavesDapLpClaimCall))
110- then {
111- let ownerWavesFee = fraction(wavesAmount, OWNER_WAVES_FEE, 100)
112- let lessorsWavesAmount = (wavesAmount - ownerWavesFee)
113- let ownerWavesDaoLpFee = fraction(wavesDaoLpAmount, OWNER_WAVESDAOLP_FEE, 100)
114- let lessorsWavesDaoLpAmount = (wavesDaoLpAmount - ownerWavesDaoLpFee)
115- let newPayoutData = makeString([toString(startHeight), toString(endHeight), toString(batches), toString(lessorsWavesAmount), toString(lessorsWavesDaoLpAmount)], "_")
77+ let lastPayout = getLastPayout()
78+ let lastPayoutStatus = getPayoutStatus(lastPayout)
79+ if ((lastPayoutStatus != PAYOUT_COMPLETED_STATUS))
80+ then throw((("Last payout: " + toString(lastPayout)) + " was not completed"))
81+ else if ((payoutId != (lastPayout + 1)))
82+ then throw(((("Wrong payoutId: " + toString(payoutId)) + ", should be: ") + toString((lastPayout + 1))))
83+ else {
84+ let $t027062822 = getPayoutData(lastPayout)
85+ let lastStartHeight = $t027062822._1
86+ let lastEndHeight = $t027062822._2
87+ let lastBatches = $t027062822._3
88+ let lastWavesAmount = $t027062822._4
89+ let lastWavesDaoLpAmount = $t027062822._5
90+ if ((startHeight != (lastEndHeight + 1)))
91+ then throw(((("Wrong startHeight: " + toString(startHeight)) + ", should be: ") + toString((lastEndHeight + 1))))
92+ else if ((startHeight > endHeight))
93+ then throw(((("endHeight: " + toString(endHeight)) + " less than startHeight: ") + toString(startHeight)))
94+ else if ((0 >= batches))
95+ then throw((("Wrong batches: " + toString(batches)) + ", should be positive"))
96+ else if ((0 >= wavesAmount))
97+ then throw((("Wrong wavesAmount: " + toString(wavesAmount)) + ", should be positive"))
98+ else if ((0 > wavesDaoLpAmount))
99+ then throw((("Wrong wavesDaoLpAmount: " + toString(wavesDaoLpAmount)) + ", should be positive or zero"))
100+ else {
101+ let availableWavesDaoLpToClaim = valueOrElse(getInteger(wavesDaoFactoryAddress, ("%s%s__available__" + toString(this))), 0)
102+ let wavesDaoNextBlockToProcess = getIntegerValue(wavesDaoFactoryAddress, "%s__nextBlockToProcess")
103+ let wavesDapLpClaimCall = if (if ((availableWavesDaoLpToClaim > 0))
104+ then ((wavesDaoNextBlockToProcess + BATCH_MAX_SIZE) >= HEIGHT)
105+ else false)
106+ then invoke(wavesDaoFactoryAddress, "claimLP", nil, nil)
107+ else unit
108+ if ((wavesDapLpClaimCall == wavesDapLpClaimCall))
109+ then {
110+ let ownerWavesFee = fraction(wavesAmount, OWNER_WAVES_FEE, 100)
111+ let lessorsWavesAmount = (wavesAmount - ownerWavesFee)
112+ let ownerWavesDaoLpFee = fraction(wavesDaoLpAmount, OWNER_WAVESDAOLP_FEE, 100)
113+ let lessorsWavesDaoLpAmount = (wavesDaoLpAmount - ownerWavesDaoLpFee)
114+ let newPayoutData = makeString([toString(startHeight), toString(endHeight), toString(batches), toString(lessorsWavesAmount), toString(lessorsWavesDaoLpAmount)], "_")
116115 [ScriptTransfer(beneficiaryAddress, ownerWavesFee, unit), ScriptTransfer(beneficiaryAddress, ownerWavesDaoLpFee, wavesDaoLpId), IntegerEntry(makeLastPayoutKey(), payoutId), StringEntry(makePayoutDataKey(payoutId), newPayoutData), IntegerEntry(makePayoutStatusKey(payoutId), PAYOUT_INITIATED_STATUS)]
117- }
118- else throw("Strict value is not equal to itself.")
119116 }
120- }
121- }
117+ else throw("Strict value is not equal to itself.")
118+ }
119+ }
122120 }
123121
124122
129127 else if ((size(i.payments) != 0))
130128 then throw("Payments are prohibited")
131129 else {
132- let $t050995193 = getPayoutData(payoutId)
133- let startHeight = $t050995193._1
134- let endHeight = $t050995193._2
135- let batches = $t050995193._3
136- let wavesAmount = $t050995193._4
137- let wavesDaoLpAmount = $t050995193._5
130+ let $t050355129 = getPayoutData(payoutId)
131+ let startHeight = $t050355129._1
132+ let endHeight = $t050355129._2
133+ let batches = $t050355129._3
134+ let wavesAmount = $t050355129._4
135+ let wavesDaoLpAmount = $t050355129._5
138136 let lastPayout = getLastPayout()
139137 if ((lastPayout != payoutId))
140138 then throw(((("Wrong payoutId: " + toString(payoutId)) + ", should be: ") + toString(lastPayout)))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SCALE8 = 100000000
55
66 let OWNER_WAVES_FEE = 5
77
88 let OWNER_WAVESDAOLP_FEE = 5
99
1010 let PAYOUT_EMPTY_STATUS = 0
1111
1212 let PAYOUT_INITIATED_STATUS = 1
1313
1414 let PAYOUT_COMPLETED_STATUS = 2
1515
1616 let BATCH_EMPTY_STATUS = 0
1717
1818 let BATCH_COMPLETED_STATUS = 1
1919
2020 let BATCH_MAX_SIZE = 40
2121
2222 let HEIGHT = height
2323
2424 let wavesDaoLpId = base58'HYogWffUjS8Uw4bYA1Dn3qrGmJerMqkf139aJcHhk8yq'
2525
2626 let callerAddress = Address(base58'3PFBtsmUJSVWHUaoYMDgvLygcmczJzYQBEe')
2727
2828 let wavesDaoFactoryAddress = Address(base58'3PJVm7xLPabmYohbnvdgGDYHMwnZxF2x18m')
2929
3030 let beneficiaryAddress = Address(base58'3PN2JRxJxjjZo1YJGyQrxdhoEbijc24BMY3')
3131
3232 func makeLastPayoutKey () = "lastPayout"
3333
3434
3535 func makePayoutDataKey (payoutId) = ("payoutData_" + toString(payoutId))
3636
3737
3838 func makePayoutStatusKey (payoutId) = ("payoutStatus_" + toString(payoutId))
3939
4040
4141 func makeCompletedBatchesKey (payoutId) = ("completedBatches_" + toString(payoutId))
4242
4343
4444 func makeBatchStatusKey (payoutId,batchId) = ((("batchStatus_" + toString(payoutId)) + "_") + toString(batchId))
4545
4646
4747 func getLastPayout () = getIntegerValue(this, makeLastPayoutKey())
4848
4949
5050 func getPayoutData (payoutId) = {
5151 let payoutString = getStringValue(makePayoutDataKey(payoutId))
5252 let payoutDataList = split(payoutString, "_")
5353 let startHeight = parseIntValue(payoutDataList[0])
5454 let endHeight = parseIntValue(payoutDataList[1])
5555 let batches = parseIntValue(payoutDataList[2])
5656 let wavesAmount = parseIntValue(payoutDataList[3])
5757 let wavesDaoLpAmount = parseIntValue(payoutDataList[4])
5858 $Tuple5(startHeight, endHeight, batches, wavesAmount, wavesDaoLpAmount)
5959 }
6060
6161
6262 func getPayoutStatus (payoutId) = valueOrElse(getInteger(makePayoutStatusKey(payoutId)), PAYOUT_EMPTY_STATUS)
6363
6464
6565 func getCompletedBatches (payoutId) = valueOrElse(getInteger(makeCompletedBatchesKey(payoutId)), 0)
6666
6767
6868 func getBatchStatus (payoutId,batchId) = valueOrElse(getInteger(makeBatchStatusKey(payoutId, batchId)), BATCH_EMPTY_STATUS)
6969
7070
7171 @Callable(i)
7272 func initiatePayout (payoutId,startHeight,endHeight,batches,wavesAmount,wavesDaoLpAmount) = if ((i.caller != callerAddress))
7373 then throw("Access denied")
7474 else if ((size(i.payments) != 0))
7575 then throw("Payments are prohibited")
7676 else {
77- let wavesDaoNextBlockToProcess = getIntegerValue(wavesDaoFactoryAddress, "%s__nextBlockToProcess")
78- if ((HEIGHT > (wavesDaoNextBlockToProcess + BATCH_MAX_SIZE)))
79- then throw("processBlocks should be called in waves dao")
80- else {
81- let lastPayout = getLastPayout()
82- let lastPayoutStatus = getPayoutStatus(lastPayout)
83- if ((lastPayoutStatus != PAYOUT_COMPLETED_STATUS))
84- then throw((("Last payout: " + toString(lastPayout)) + " was not completed"))
85- else if ((payoutId != (lastPayout + 1)))
86- then throw(((("Wrong payoutId: " + toString(payoutId)) + ", should be: ") + toString((lastPayout + 1))))
87- else {
88- let $t029373053 = getPayoutData(lastPayout)
89- let lastStartHeight = $t029373053._1
90- let lastEndHeight = $t029373053._2
91- let lastBatches = $t029373053._3
92- let lastWavesAmount = $t029373053._4
93- let lastWavesDaoLpAmount = $t029373053._5
94- if ((startHeight != (lastEndHeight + 1)))
95- then throw(((("Wrong startHeight: " + toString(startHeight)) + ", should be: ") + toString((lastEndHeight + 1))))
96- else if ((startHeight > endHeight))
97- then throw(((("endHeight: " + toString(endHeight)) + " less than startHeight: ") + toString(startHeight)))
98- else if ((0 >= batches))
99- then throw((("Wrong batches: " + toString(batches)) + ", should be positive"))
100- else if ((0 >= wavesAmount))
101- then throw((("Wrong wavesAmount: " + toString(wavesAmount)) + ", should be positive"))
102- else if ((0 >= wavesDaoLpAmount))
103- then throw((("Wrong wavesDaoLpAmount: " + toString(wavesDaoLpAmount)) + ", should be positive"))
104- else {
105- let availableWavesDaoLpToClaim = valueOrElse(getInteger(wavesDaoFactoryAddress, ("%s%s__available__" + toString(this))), 0)
106- let wavesDapLpClaimCall = if ((availableWavesDaoLpToClaim > 0))
107- then invoke(wavesDaoFactoryAddress, "claimLP", nil, nil)
108- else unit
109- if ((wavesDapLpClaimCall == wavesDapLpClaimCall))
110- then {
111- let ownerWavesFee = fraction(wavesAmount, OWNER_WAVES_FEE, 100)
112- let lessorsWavesAmount = (wavesAmount - ownerWavesFee)
113- let ownerWavesDaoLpFee = fraction(wavesDaoLpAmount, OWNER_WAVESDAOLP_FEE, 100)
114- let lessorsWavesDaoLpAmount = (wavesDaoLpAmount - ownerWavesDaoLpFee)
115- let newPayoutData = makeString([toString(startHeight), toString(endHeight), toString(batches), toString(lessorsWavesAmount), toString(lessorsWavesDaoLpAmount)], "_")
77+ let lastPayout = getLastPayout()
78+ let lastPayoutStatus = getPayoutStatus(lastPayout)
79+ if ((lastPayoutStatus != PAYOUT_COMPLETED_STATUS))
80+ then throw((("Last payout: " + toString(lastPayout)) + " was not completed"))
81+ else if ((payoutId != (lastPayout + 1)))
82+ then throw(((("Wrong payoutId: " + toString(payoutId)) + ", should be: ") + toString((lastPayout + 1))))
83+ else {
84+ let $t027062822 = getPayoutData(lastPayout)
85+ let lastStartHeight = $t027062822._1
86+ let lastEndHeight = $t027062822._2
87+ let lastBatches = $t027062822._3
88+ let lastWavesAmount = $t027062822._4
89+ let lastWavesDaoLpAmount = $t027062822._5
90+ if ((startHeight != (lastEndHeight + 1)))
91+ then throw(((("Wrong startHeight: " + toString(startHeight)) + ", should be: ") + toString((lastEndHeight + 1))))
92+ else if ((startHeight > endHeight))
93+ then throw(((("endHeight: " + toString(endHeight)) + " less than startHeight: ") + toString(startHeight)))
94+ else if ((0 >= batches))
95+ then throw((("Wrong batches: " + toString(batches)) + ", should be positive"))
96+ else if ((0 >= wavesAmount))
97+ then throw((("Wrong wavesAmount: " + toString(wavesAmount)) + ", should be positive"))
98+ else if ((0 > wavesDaoLpAmount))
99+ then throw((("Wrong wavesDaoLpAmount: " + toString(wavesDaoLpAmount)) + ", should be positive or zero"))
100+ else {
101+ let availableWavesDaoLpToClaim = valueOrElse(getInteger(wavesDaoFactoryAddress, ("%s%s__available__" + toString(this))), 0)
102+ let wavesDaoNextBlockToProcess = getIntegerValue(wavesDaoFactoryAddress, "%s__nextBlockToProcess")
103+ let wavesDapLpClaimCall = if (if ((availableWavesDaoLpToClaim > 0))
104+ then ((wavesDaoNextBlockToProcess + BATCH_MAX_SIZE) >= HEIGHT)
105+ else false)
106+ then invoke(wavesDaoFactoryAddress, "claimLP", nil, nil)
107+ else unit
108+ if ((wavesDapLpClaimCall == wavesDapLpClaimCall))
109+ then {
110+ let ownerWavesFee = fraction(wavesAmount, OWNER_WAVES_FEE, 100)
111+ let lessorsWavesAmount = (wavesAmount - ownerWavesFee)
112+ let ownerWavesDaoLpFee = fraction(wavesDaoLpAmount, OWNER_WAVESDAOLP_FEE, 100)
113+ let lessorsWavesDaoLpAmount = (wavesDaoLpAmount - ownerWavesDaoLpFee)
114+ let newPayoutData = makeString([toString(startHeight), toString(endHeight), toString(batches), toString(lessorsWavesAmount), toString(lessorsWavesDaoLpAmount)], "_")
116115 [ScriptTransfer(beneficiaryAddress, ownerWavesFee, unit), ScriptTransfer(beneficiaryAddress, ownerWavesDaoLpFee, wavesDaoLpId), IntegerEntry(makeLastPayoutKey(), payoutId), StringEntry(makePayoutDataKey(payoutId), newPayoutData), IntegerEntry(makePayoutStatusKey(payoutId), PAYOUT_INITIATED_STATUS)]
117- }
118- else throw("Strict value is not equal to itself.")
119116 }
120- }
121- }
117+ else throw("Strict value is not equal to itself.")
118+ }
119+ }
122120 }
123121
124122
125123
126124 @Callable(i)
127125 func distributeMinerRewards (payoutId,batchId,recipients,shares,attachment) = if ((i.caller != callerAddress))
128126 then throw("Access denied")
129127 else if ((size(i.payments) != 0))
130128 then throw("Payments are prohibited")
131129 else {
132- let $t050995193 = getPayoutData(payoutId)
133- let startHeight = $t050995193._1
134- let endHeight = $t050995193._2
135- let batches = $t050995193._3
136- let wavesAmount = $t050995193._4
137- let wavesDaoLpAmount = $t050995193._5
130+ let $t050355129 = getPayoutData(payoutId)
131+ let startHeight = $t050355129._1
132+ let endHeight = $t050355129._2
133+ let batches = $t050355129._3
134+ let wavesAmount = $t050355129._4
135+ let wavesDaoLpAmount = $t050355129._5
138136 let lastPayout = getLastPayout()
139137 if ((lastPayout != payoutId))
140138 then throw(((("Wrong payoutId: " + toString(payoutId)) + ", should be: ") + toString(lastPayout)))
141139 else {
142140 let payoutStatus = getPayoutStatus(payoutId)
143141 if ((payoutStatus == PAYOUT_EMPTY_STATUS))
144142 then throw((("Payout " + toString(payoutId)) + " was not initiated"))
145143 else if ((payoutStatus == PAYOUT_COMPLETED_STATUS))
146144 then throw((("Payout " + toString(payoutId)) + " was completed"))
147145 else {
148146 let batchStatus = getBatchStatus(payoutId, batchId)
149147 if ((0 >= batchId))
150148 then throw((("Wrong batchId: " + toString(batchId)) + ", should be positive"))
151149 else if ((batchId > batches))
152150 then throw(((("Wrong batchId: " + toString(batchId)) + ", should be less or equal ") + toString(batches)))
153151 else if ((batchStatus == BATCH_COMPLETED_STATUS))
154152 then throw((((("Payout " + toString(payoutId)) + ", batch ") + toString(batchId)) + " was completed"))
155153 else {
156154 let recipientsSize = size(recipients)
157155 if ((recipientsSize == 0))
158156 then throw("Recipients list should not be empty")
159157 else if ((recipientsSize > BATCH_MAX_SIZE))
160158 then throw(((("Should be not greater than " + toString(BATCH_MAX_SIZE)) + " recipients, current: ") + toString(recipientsSize)))
161159 else if ((recipientsSize != size(shares)))
162160 then throw(((("Wrong recipients size: " + toString(recipientsSize)) + ", shares size: ") + toString(size(shares))))
163161 else {
164162 let minShare = min(shares)
165163 if ((0 >= minShare))
166164 then throw((("Wrong min share: " + toString(minShare)) + ", all shares should be positive"))
167165 else {
168166 let completedBatches = (getCompletedBatches(payoutId) + 1)
169167 func scriptTransfersFold (accum,index) = if ((index >= recipientsSize))
170168 then accum
171169 else {
172170 let recipient = recipients[index]
173171 let share = shares[index]
174172 let recipientWavesShare = fraction(wavesAmount, share, SCALE8)
175173 let recipientWavesDaoLpShare = fraction(wavesDaoLpAmount, share, SCALE8)
176174 ((accum :+ ScriptTransfer(addressFromStringValue(recipient), recipientWavesShare, unit)) :+ ScriptTransfer(addressFromStringValue(recipient), recipientWavesDaoLpShare, wavesDaoLpId))
177175 }
178176
179177 let indexes = [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]
180178 (({
181179 let $l = indexes
182180 let $s = size($l)
183181 let $acc0 = nil
184182 func $f0_1 ($a,$i) = if (($i >= $s))
185183 then $a
186184 else scriptTransfersFold($a, $l[$i])
187185
188186 func $f0_2 ($a,$i) = if (($i >= $s))
189187 then $a
190188 else throw("List size exceeds 40")
191189
192190 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 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)
193191 } ++ [IntegerEntry(makeBatchStatusKey(payoutId, batchId), BATCH_COMPLETED_STATUS), IntegerEntry(makeCompletedBatchesKey(payoutId), completedBatches)]) ++ (if ((completedBatches == batches))
194192 then [IntegerEntry(makePayoutStatusKey(payoutId), PAYOUT_COMPLETED_STATUS)]
195193 else nil))
196194 }
197195 }
198196 }
199197 }
200198 }
201199 }
202200
203201
204202 @Verifier(tx)
205203 func verify () = sigVerify_128Kb(tx.bodyBytes, tx.proofs[0], base58'4eCgF1voXpsudbxN4FRQG2NCBP5QVeyJpNsfqMDQvPHh')
206204

github/deemru/w8io/3ef1775 
52.02 ms