tx · 77KJAL8VDeNbFfSetA4fcofxJnikByPZ6EeAhAUf3gEx

3N8Q6WBsfWqxrqru7j45a6mCQoerJXforKJ:  -0.01400000 Waves

2021.11.02 13:18 [1773233] smart account 3N8Q6WBsfWqxrqru7j45a6mCQoerJXforKJ > SELF 0.00000000 Waves

{ "type": 13, "id": "77KJAL8VDeNbFfSetA4fcofxJnikByPZ6EeAhAUf3gEx", "fee": 1400000, "feeAssetId": null, "timestamp": 1635848373274, "version": 2, "chainId": 84, "sender": "3N8Q6WBsfWqxrqru7j45a6mCQoerJXforKJ", "senderPublicKey": "7nazYRegcPktaf9fWB4axLnqNzxbPqPVDVcsDouPTPyR", "proofs": [ "3wwdTeoKm2NJazVZci1KQZFZcSgKdEjf1jjpQg59u8SjCWvBxWcUGuS9XHfRMjHw6Y35mi4hLZcvz1dmFwySc2dt" ], "script": "base64:AAIFAAAAAAAAACkIAhIKCggICAgICAgIARIJCgcICAgICAEIEgQKAggBEgMKAQESAwoBAQAAAC0AAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAAAAAD6AAAAAAAAAAD6AAAAAADU0VQAgAAAAJfXwAAAAAKUG9vbEFjdGl2ZQAAAAAAAAAAAQAAAAAPUG9vbFB1dERpc2FibGVkAAAAAAAAAAACAAAAABNQb29sTWF0Y2hlckRpc2FibGVkAAAAAAAAAAADAAAAAAxQb29sU2h1dGRvd24AAAAAAAAAAAQAAAAAEmlkeEludGVybmFsQXNzZXRJZAAAAAAAAAAAAQAAAAAPaWR4UmVzdXRBY3Rpb25zAAAAAAAAAAACAAAAACBpZHhJZkFzc2V0SWRDYWxjdWxhdGlvblBlcmZvcm1lZAAAAAAAAAAAAwAAAAAOaWR4UG9vbEFkZHJlc3MAAAAAAAAAAAEAAAAADWlkeFBvb2xTdGF0dXMAAAAAAAAAAAIAAAAAEGlkeFBvb2xMUEFzc2V0SWQAAAAAAAAAAAMAAAAADWlkeEFtdEFzc2V0SWQAAAAAAAAAAAQAAAAAD2lkeFByaWNlQXNzZXRJZAAAAAAAAAAABQAAAAAOaWR4QW10QXNzZXREY20AAAAAAAAAAAYAAAAAEGlkeFByaWNlQXNzZXREY20AAAAAAAAAAAcAAAAADmlkeElBbXRBc3NldElkAAAAAAAAAAAIAAAAABBpZHhJUHJpY2VBc3NldElkAAAAAAAAAAAJAAAAAA1pZHhMUEFzc2V0RGNtAAAAAAAAAAAKAAAAAAtpZHhQb29sVHlwZQAAAAAAAAAACwEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAACAAAAESVzX19mYWN0b3J5Q29uZmlnAQAAAA9rZXlMcFRva2Vuc0xpc3QAAAAAAgAAABAlc19fbHBUb2tlbnNMaXN0AQAAABFrZXlQb29sU2NyaXB0SGFzaAAAAAACAAAAFiVzJXNfX3Bvb2xfX3NjcmlwdEhhc2gBAAAAEGtleVByaWNlRGVjaW1hbHMAAAAAAgAAABElc19fcHJpY2VEZWNpbWFscwEAAAATa2V5QWxsUG9vbHNTaHV0ZG93bgAAAAACAAAADCVzX19zaHV0ZG93bgEAAAAWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAACAAAAFyVzX19uZXh0SW50ZXJuYWxBc3NldElkAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABAAAAC3Bvb2xBZGRyZXNzCQABLAAAAAICAAAAEiVzJXNfX3Bvb2xXZWlnaHRfXwUAAAALcG9vbEFkZHJlc3MBAAAAH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQAAAABAAAAEWludGVybmFsQmFzZUFzc2V0CQABLAAAAAICAAAAKCVzJXMlZF9fbWFwcGluZ3NfX2ludGVybmFsMmJhc2VBc3NldElkX18JAAGkAAAAAQUAAAARaW50ZXJuYWxCYXNlQXNzZXQBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAACglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQAAAAxiYXNlQXNzZXRTdHIBAAAADWtleVBvb2xDb25maWcAAAACAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwAAAAScHJpY2VBc3NldEludGVybmFsCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAABNhbW91bnRBc3NldEludGVybmFsAgAAAAJfXwUAAAAScHJpY2VBc3NldEludGVybmFsAgAAAAhfX2NvbmZpZwEAAAAda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMAAAABAAAACmxwQXNzZXRTdHIJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAAKbHBBc3NldFN0cgIAAAAYX19tYXBwaW5nc19fbHBBc3NldDJQb29sAQAAAB1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAAAAAIAAAAYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAAAAF2ludGVybmFsUHJpY2VBc3NldElkU3RyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACiVkJWQlcyVzX18FAAAAGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgIAAAACX18FAAAAF2ludGVybmFsUHJpY2VBc3NldElkU3RyAgAAAB5fX21hcHBpbmdzX19Qb29sQXNzZXRzMkxwQXNzZXQBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQAAABNwb29sQ29udHJhY3RBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MCAAAAI19fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJQb29sQXNzZXRzAQAAAClrZXlNYXBwaW5nUG9vbEFzc2V0c1RvUG9vbENvbnRyYWN0QWRkcmVzcwAAAAIAAAAYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAAAAF2ludGVybmFsUHJpY2VBc3NldElkU3RyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACiVkJWQlcyVzX18JAAGkAAAAAQUAAAAYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAgAAAAJfXwkAAaQAAAABBQAAABdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgIAAAAjX19tYXBwaW5nc19fcG9vbEFzc2V0czJQb29sQ29udHJhY3QBAAAAHmtleU1hcHBpbmdQb29sQ29udHJhY1RvTFBBc3NldAAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAgAAACBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAEAAAAqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQAAAApscEFzc2V0U3RyCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAACmxwQXNzZXRTdHICAAAAIF9fbWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0AQAAAA9nZXRTdHJpbmdPckZhaWwAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQkAASwAAAACAgAAABVObyBkYXRhIGZvciB0aGlzLmtleT0FAAAAA2tleQEAAAAQZ2V0Qm9vbGVhbk9yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AQAAAAxnZXRJbnRPckZhaWwAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQkAASwAAAACAgAAABVObyBkYXRhIGZvciB0aGlzLmtleT0FAAAAA2tleQEAAAAOZGF0YUZhY3RvcnlDZmcAAAAHAAAADnN0YWtpbmdBZGRyZXNzAAAAD2Jvb3N0aW5nQWRkcmVzcwAAAAtpZG9Db250cmFjdAAAAAx0ZWFtQ29udHJhY3QAAAAQZW1pc3Npb25Db250cmFjdAAAAAxyZXN0Q29udHJhY3QAAAAQc2xpcHBhZ2VDb250cmFjdAkABLkAAAACCQAETAAAAAICAAAADCVzJXMlcyVzJXMlcwkABEwAAAACBQAAAA5zdGFraW5nQWRkcmVzcwkABEwAAAACBQAAAA9ib29zdGluZ0FkZHJlc3MJAARMAAAAAgUAAAALaWRvQ29udHJhY3QJAARMAAAAAgUAAAAMdGVhbUNvbnRyYWN0CQAETAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAARMAAAAAgUAAAAMcmVzdENvbnRyYWN0CQAETAAAAAIFAAAAEHNsaXBwYWdlQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAAAtkYXRhUG9vbENmZwAAAAsAAAALcG9vbEFkZHJlc3MAAAAKcG9vbFN0YXR1cwAAAAlscEFzc2V0SWQAAAAOYW1vdW50QXNzZXRTdHIAAAANcHJpY2VBc3NldFN0cgAAABNhbW91bnRBc3NldERlY2ltYWxzAAAAEnByaWNlQXNzZXREZWNpbWFscwAAABVhbW91bnRBc3NldEludGVybmFsSWQAAAAUcHJpY2VBc3NldEludGVybmFsSWQAAAAPbHBBc3NldERlY2ltYWxzAAAACHBvb2xUeXBlCQAEuQAAAAIJAARMAAAAAgIAAAAWJXMlZCVzJXMlcyVkJWQlZCVkJWQlcwkABEwAAAACBQAAAAtwb29sQWRkcmVzcwkABEwAAAACBQAAAApwb29sU3RhdHVzCQAETAAAAAIFAAAACWxwQXNzZXRJZAkABEwAAAACBQAAAA5hbW91bnRBc3NldFN0cgkABEwAAAACBQAAAA1wcmljZUFzc2V0U3RyCQAETAAAAAIJAAGkAAAAAQUAAAATYW1vdW50QXNzZXREZWNpbWFscwkABEwAAAACCQABpAAAAAEFAAAAEnByaWNlQXNzZXREZWNpbWFscwkABEwAAAACCQABpAAAAAEFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkABEwAAAACCQABpAAAAAEFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQAETAAAAAIJAAGkAAAAAQUAAAAPbHBBc3NldERlY2ltYWxzCQAETAAAAAIFAAAACHBvb2xUeXBlBQAAAANuaWwFAAAAA1NFUAEAAAAVZGF0YU1hcHBpbmdQb29sQXNzZXRzAAAAAgAAABZpbnRlcm5hbEFtb3VudEFzc2V0U3RyAAAAFWludGVybmFsUHJpY2VBc3NldFN0cgkABLkAAAACCQAETAAAAAICAAAABCVkJWQJAARMAAAAAgkAAaQAAAABBQAAABZpbnRlcm5hbEFtb3VudEFzc2V0U3RyCQAETAAAAAIJAAGkAAAAAQUAAAAVaW50ZXJuYWxQcmljZUFzc2V0U3RyBQAAAANuaWwFAAAAA1NFUAEAAAANZ2V0UG9vbENvbmZpZwAAAAEAAAALcG9vbEFkZHJlc3MEAAAACnBvb2xBc3NldHMJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEFAAAAC3Bvb2xBZGRyZXNzBQAAAANTRVAEAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwJAAGRAAAAAgUAAAAKcG9vbEFzc2V0cwAAAAAAAAAAAQQAAAAScHJpY2VBc3NldEludGVybmFsCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAIJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgUAAAATYW1vdW50QXNzZXRJbnRlcm5hbAUAAAAScHJpY2VBc3NldEludGVybmFsBQAAAANTRVABAAAAGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAAAAAgAAAAphc3NldElkU3RyAAAAC2luY3JlbWVudG9yBAAAAA9pbnRlcm5hbEFzc2V0SWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABBQAAAAphc3NldElkU3RyAAAAAAAAAAAABAAAABhjdXJyZW50SW5kZXhPZkludGVybmFsSWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAAAAAAAAAAAAAABAAAAAZyZXN1bHQDCQAAAAAAAAIFAAAAD2ludGVybmFsQXNzZXRJZAAAAAAAAAAAAAQAAAASbmV3SW50ZXJuYWxBc3NldElkCQAAZAAAAAIFAAAAGGN1cnJlbnRJbmRleE9mSW50ZXJuYWxJZAUAAAALaW5jcmVtZW50b3IJAAUVAAAAAwUAAAASbmV3SW50ZXJuYWxBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAAFAAAAEm5ld0ludGVybmFsQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABBQAAAAphc3NldElkU3RyBQAAABJuZXdJbnRlcm5hbEFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQAAAABBQAAABJuZXdJbnRlcm5hbEFzc2V0SWQFAAAACmFzc2V0SWRTdHIFAAAAA25pbAYJAAUVAAAAAwUAAAAPaW50ZXJuYWxBc3NldElkBQAAAANuaWwHBQAAAAZyZXN1bHQBAAAAF2NyZWF0ZUxwVG9rZW5zTGlzdEVudHJ5AAAAAQAAAApuZXdMcFRva2VuBAAAAAhscFRva2VucwkABB0AAAACBQAAAAR0aGlzCQEAAAAPa2V5THBUb2tlbnNMaXN0AAAAAAMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAhscFRva2VucwkAASwAAAACCQABLAAAAAIJAQAAAAV2YWx1ZQAAAAEFAAAACGxwVG9rZW5zBQAAAANTRVAFAAAACm5ld0xwVG9rZW4FAAAACm5ld0xwVG9rZW4AAAAFAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAACAAAAA9zdGFraW5nQ29udHJhY3QAAAAQYm9vc3RpbmdDb250cmFjdAAAAAtpZG9Db250cmFjdAAAAAx0ZWFtQ29udHJhY3QAAAAQZW1pc3Npb25Db250cmFjdAAAAAxyZXN0Q29udHJhY3QAAAAQc2xwaXBhZ2VDb250cmFjdAAAAA1wcmljZURlY2ltYWxzAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAEnBlcm1pc3Npb25zIGRlbmllZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAAJAQAAAA5kYXRhRmFjdG9yeUNmZwAAAAcFAAAAD3N0YWtpbmdDb250cmFjdAUAAAAQYm9vc3RpbmdDb250cmFjdAUAAAALaWRvQ29udHJhY3QFAAAADHRlYW1Db250cmFjdAUAAAAQZW1pc3Npb25Db250cmFjdAUAAAAMcmVzdENvbnRyYWN0BQAAABBzbHBpcGFnZUNvbnRyYWN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQa2V5UHJpY2VEZWNpbWFscwAAAAAFAAAADXByaWNlRGVjaW1hbHMFAAAAA25pbAAAAAFpAQAAAA9hY3RpdmF0ZU5ld1Bvb2wAAAAHAAAAC3Bvb2xBZGRyZXNzAAAADmFtb3VudEFzc2V0U3RyAAAADXByaWNlQXNzZXRTdHIAAAALbHBBc3NldE5hbWUAAAAMbHBBc3NldERlc2NyAAAACnBvb2xXZWlnaHQAAAAIcG9vbFR5cGUDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAScGVybWlzc2lvbnMgZGVuaWVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQiAAAAAQkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQUAAAALcG9vbEFkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAADVBvb2wgYWRkcmVzcyAFAAAAC3Bvb2xBZGRyZXNzAgAAABQgYWxyZWFkeSByZWdpc3RlcmVkLgQAAAAXaW50ZXJuYWxBbW91bnRBc3NldERhdGEJAQAAABpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQAAAAIFAAAADmFtb3VudEFzc2V0U3RyAAAAAAAAAAABBAAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQIBQAAABdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQAAAAJfMQQAAAAWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQkBAAAAGmdldEludGVybmFsQXNzZXRJZE9yQ3JlYXRlAAAAAgUAAAANcHJpY2VBc3NldFN0cgMIBQAAABdpbnRlcm5hbEFtb3VudEFzc2V0RGF0YQAAAAJfMwAAAAAAAAAAAgAAAAAAAAAAAQQAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQIBQAAABZpbnRlcm5hbFByaWNlQXNzZXREYXRhAAAAAl8xBAAAABVwb29sQWNjb3VudFNjcmlwdEhhc2gJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA/EAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAtwb29sQWRkcmVzcwkAASwAAAACAgAAAClObyBzY3JpcHQgaGFzIGJlZW4gZm91bmQgb24gcG9vbCBhY2NvdW50IAUAAAALcG9vbEFkZHJlc3MEAAAAHGV0aGFsb25Qb29sQWNjb3VudFNjcmlwdEhhc2gJAQAAABFAZXh0ck5hdGl2ZSgxMDU3KQAAAAEJAQAAABFrZXlQb29sU2NyaXB0SGFzaAAAAAAEAAAACnBvb2xDb25maWcJAAQdAAAAAgUAAAAEdGhpcwkBAAAADWtleVBvb2xDb25maWcAAAACCQABpAAAAAEFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAkAAaQAAAABBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAMJAQAAAAlpc0RlZmluZWQAAAABBQAAAApwb29sQ29uZmlnCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFUG9vbCAFAAAADmFtb3VudEFzc2V0U3RyAgAAAAEvBQAAAA1wcmljZUFzc2V0U3RyAgAAABwgaGFzIGFscmVhZHkgYmVlbiBhY3RpdmF0ZWQuBAAAAA9wb29sQ29uZmlnVmFsdWUJAQAAAAV2YWx1ZQAAAAEJAAQdAAAAAgUAAAAEdGhpcwkBAAAADWtleVBvb2xDb25maWcAAAACCQABpAAAAAEFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAkAAaQAAAABBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAQAAAAUYW1vdW50QXNzZXRzRGVjaW1hbHMDCQAAAAAAAAIFAAAADmFtb3VudEFzc2V0U3RyAgAAAAVXQVZFUwUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQkAAlkAAAABBQAAAA5hbW91bnRBc3NldFN0cgAAAAhkZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgQAAAATcHJpY2VBc3NldHNEZWNpbWFscwMJAAAAAAAAAgUAAAANcHJpY2VBc3NldFN0cgIAAAAFV0FWRVMFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAAJZAAAAAQUAAAANcHJpY2VBc3NldFN0cgAAAAhkZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgQAAAASbHBBc3NldElzc3VlQWN0aW9uCQAEQgAAAAUFAAAAC2xwQXNzZXROYW1lBQAAAAxscEFzc2V0RGVzY3IAAAAAAAAAAAEAAAAAAAAAAAgGBAAAAAlscEFzc2V0SWQJAAQ4AAAAAQUAAAASbHBBc3NldElzc3VlQWN0aW9uBAAAAAxscEFzc2V0SWRTdHIJAAJYAAAAAQUAAAAJbHBBc3NldElkBAAAABhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQJAAP8AAAABAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAALcG9vbEFkZHJlc3MCAAAACGFjdGl2YXRlCQAETAAAAAIFAAAADmFtb3VudEFzc2V0U3RyCQAETAAAAAIFAAAADXByaWNlQXNzZXRTdHIFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQFAAAAGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAMJAQAAAAIhPQAAAAIFAAAAGHBvb2xBY3RpdmF0ZUludm9rZVJlc3VsdAIAAAAHc3VjY2VzcwkAAAIAAAABAgAAACNQb29sIGluaXRpYWxpc2F0aW9uIGVycm9yIGhhcHBlbmVkLgkABRQAAAACCQAETgAAAAIJAAROAAAAAggFAAAAF2ludGVybmFsQW1vdW50QXNzZXREYXRhAAAAAl8yCAUAAAAWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQAAAAJfMgkABEwAAAACBQAAABJscEFzc2V0SXNzdWVBY3Rpb24JAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAlscEFzc2V0SWQAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVBvb2xDb25maWcAAAACCQABpAAAAAEFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAkAAaQAAAABBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAkBAAAAC2RhdGFQb29sQ2ZnAAAACwUAAAALcG9vbEFkZHJlc3MJAAGkAAAAAQUAAAAKUG9vbEFjdGl2ZQUAAAAMbHBBc3NldElkU3RyBQAAAA5hbW91bnRBc3NldFN0cgUAAAANcHJpY2VBc3NldFN0cgUAAAAUYW1vdW50QXNzZXRzRGVjaW1hbHMFAAAAE3ByaWNlQXNzZXRzRGVjaW1hbHMFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAAAhwb29sVHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMAAAABBQAAAAxscEFzc2V0SWRTdHIJAQAAABVkYXRhTWFwcGluZ1Bvb2xBc3NldHMAAAACBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQFAAAAFGludGVybmFsUHJpY2VBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAAAAAIJAAGkAAAAAQUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCQABpAAAAAEFAAAAFGludGVybmFsUHJpY2VBc3NldElkCQABLAAAAAICAAAABCVzX18FAAAADGxwQXNzZXRJZFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABBQAAAAtwb29sQWRkcmVzcwkBAAAAFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwAAAAIFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAgUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAUAAAALcG9vbEFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwAAAAEFAAAADGxwQXNzZXRJZFN0cgUAAAALcG9vbEFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAHmtleU1hcHBpbmdQb29sQ29udHJhY1RvTFBBc3NldAAAAAEFAAAAC3Bvb2xBZGRyZXNzBQAAAAxscEFzc2V0SWRTdHIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABBQAAAAtwb29sQWRkcmVzcwUAAAAKcG9vbFdlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5THBUb2tlbnNMaXN0AAAAAAkBAAAAF2NyZWF0ZUxwVG9rZW5zTGlzdEVudHJ5AAAAAQUAAAAMbHBBc3NldElkU3RyBQAAAANuaWwCAAAAB3N1Y2Nlc3MJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACm1hbmFnZVBvb2wAAAACAAAAC3Bvb2xBZGRyZXNzAAAACW5ld1N0YXR1cwMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQEAAAACnBvb2xDb25maWcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAQUAAAALcG9vbEFkZHJlc3MEAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAAKcG9vbENvbmZpZwUAAAANaWR4UG9vbFN0YXR1cwQAAAAMbHBBc3NldElkU3RyCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADmFtb3VudEFzc2V0U3RyCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAADWlkeEFtdEFzc2V0SWQEAAAADXByaWNlQXNzZXRTdHIJAAGRAAAAAgUAAAAKcG9vbENvbmZpZwUAAAAPaWR4UHJpY2VBc3NldElkBAAAABRhbW91bnRBc3NldHNEZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAADmlkeEFtdEFzc2V0RGNtBAAAABNwcmljZUFzc2V0c0RlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKcG9vbENvbmZpZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKcG9vbENvbmZpZwUAAAAOaWR4SUFtdEFzc2V0SWQEAAAAFGludGVybmFsUHJpY2VBc3NldElkCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKcG9vbENvbmZpZwUAAAAQaWR4SVByaWNlQXNzZXRJZAQAAAAKbHBBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAADWlkeExQQXNzZXREY20EAAAACHBvb2xUeXBlCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAC2lkeFBvb2xUeXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAAGkAAAAAQUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQJAQAAAAtkYXRhUG9vbENmZwAAAAsFAAAAC3Bvb2xBZGRyZXNzCQABpAAAAAEFAAAACW5ld1N0YXR1cwUAAAAMbHBBc3NldElkU3RyBQAAAA5hbW91bnRBc3NldFN0cgUAAAANcHJpY2VBc3NldFN0cgUAAAAUYW1vdW50QXNzZXRzRGVjaW1hbHMFAAAAE3ByaWNlQXNzZXRzRGVjaW1hbHMFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQFAAAACmxwQXNzZXREY20FAAAACHBvb2xUeXBlBQAAAANuaWwAAAABaQEAAAAEZW1pdAAAAAEAAAAMYW1vdW50VG9FbWl0BAAAAAZjYWxsZXIIBQAAAAFpAAAABmNhbGxlcgQAAAAMb3JpZ2luQ2FsbGVyCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIEAAAAEGxwQXNzZXRSZXF1ZXN0ZWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQEAAAAea2V5TWFwcGluZ1Bvb2xDb250cmFjVG9MUEFzc2V0AAAAAQkABCUAAAABBQAAAAZjYWxsZXICAAAAHUludmFsaWQgTFAgYWRkcmVzcyBjYWxsZWQgbWUuBAAAAAdscEFzc2V0CQACWQAAAAEFAAAAEGxwQXNzZXRSZXF1ZXN0ZWQDCQAAZgAAAAIFAAAADGFtb3VudFRvRW1pdAAAAAAAAAAAAAkABRQAAAACCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAHbHBBc3NldAUAAAAMYW1vdW50VG9FbWl0BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvRW1pdAUAAAAHbHBBc3NldAUAAAADbmlsAgAAAAdzdWNjZXNzBQAAAANuaWwAAAABaQEAAAAEYnVybgAAAAEAAAAMYW1vdW50VG9CdXJuBAAAAAZjYWxsZXIIBQAAAAFpAAAABmNhbGxlcgQAAAAMb3JpZ2luQ2FsbGVyCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIEAAAAB3BheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADXBheW1lbnRBbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAPaW5BbW91bnRBc3NldElkCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQEAAAAGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkBAAAAHmtleU1hcHBpbmdQb29sQ29udHJhY1RvTFBBc3NldAAAAAEJAAQlAAAAAQUAAAAGY2FsbGVyAgAAAB1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgMJAQAAAAIhPQAAAAIFAAAAD2luQW1vdW50QXNzZXRJZAUAAAAabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAAACAAAAAQIAAAAVSW52YWxpZCBhc3NldCBwYXNzZWQuAwkBAAAAAiE9AAAAAgUAAAAMYW1vdW50VG9CdXJuBQAAAA1wYXltZW50QW1vdW50CQAAAgAAAAECAAAAFkludmFsaWQgYW1vdW50IHBhc3NlZC4EAAAAB2xwQXNzZXQJAAJZAAAAAQUAAAAabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAAUUAAAAAgkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAAB2xwQXNzZXQFAAAADGFtb3VudFRvQnVybgUAAAADbmlsAgAAAAdzdWNjZXNzAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXnubYOh", "height": 1773233, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4EwB5dXLTaW2Tb7mQQVhxrr4EkZ1EUFFgVSzE24Qd8cS Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = 8
4+let a = ((100 * 1000) * 1000)
55
6-let b = 100000000
6+let b = "__"
77
8-let c = toBigInt(100000000)
8+let c = 1
99
10-let d = toBigInt(1000000000000000000)
10+let d = 2
1111
12-let e = toBigInt(0)
12+let e = 3
1313
14-let f = "__"
14+let f = 4
1515
16-let g = ""
16+let g = 1
1717
18-let h = 1
18+let h = 2
1919
20-let i = 2
20+let i = 3
2121
22-let j = 3
22+let j = 1
2323
24-let k = 4
24+let k = 2
2525
26-let l = 1
26+let l = 3
2727
28-let m = 2
28+let m = 4
2929
30-let n = 3
30+let n = 5
3131
32-let o = 4
32+let o = 6
3333
34-let p = 5
34+let p = 7
3535
36-let q = 6
36+let q = 8
3737
38-let r = 7
38+let r = 9
3939
40-let s = 8
40+let s = 10
4141
42-let t = 9
42+let t = 11
4343
44-let u = 10
45-
46-let v = 1
47-
48-let w = 2
49-
50-let x = 3
51-
52-let y = 1
53-
54-let z = 7
55-
56-func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
44+func u () = "%s__factoryConfig"
5745
5846
59-func D (E,F) = toInt(fraction(E, toBigInt(F), d))
47+func v () = "%s__lpTokensList"
6048
6149
62-func G (H,I,J) = fraction(H, I, J)
50+func w () = "%s%s__pool__scriptHash"
6351
6452
65-func K (E) = if ((e > E))
66- then -(E)
67- else E
53+func x () = "%s__priceDecimals"
6854
6955
70-func L () = "%s__factoryContract"
56+func y () = "%s__shutdown"
7157
7258
73-func M () = "%s__managerPublicKey"
59+func z () = "%s__nextInternalAssetId"
7460
7561
76-func N () = "%s%s__price__last"
62+func A (B) = ("%s%s__poolWeight__" + B)
7763
7864
79-func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
65+func C (D) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(D))
8066
8167
82-func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
68+func E (F) = ("%s%s%s__mappings__baseAsset2internalId__" + F)
8369
8470
85-func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
71+func G (H,I) = (((("%d%d%s__" + H) + "__") + I) + "__config")
8672
8773
88-func V () = "%s__amountAsset"
74+func J (K) = (("%s%s%s__" + K) + "__mappings__lpAsset2Pool")
8975
9076
91-func W () = "%s__priceAsset"
77+func L (M,N) = (((("%d%d%s%s__" + M) + "__") + N) + "__mappings__PoolAssets2LpAsset")
9278
9379
94-func X (P,Q) = makeString(["%s%s%d%d__K_history", toString(P), toString(Q)], f)
80+func O (P) = (("%s%s%s__" + P) + "__mappings__poolContract2PoolAssets")
9581
9682
97-func Y () = "%s__factoryConfig"
83+func Q (M,N) = (((("%d%d%s%s__" + toString(M)) + "__") + toString(N)) + "__mappings__poolAssets2PoolContract")
9884
9985
100-func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
86+func R (P) = (("%s%s%s__" + P) + "__mappings__poolContract2LpAsset")
10187
10288
103-func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
89+func S (K) = (("%s%s%s__" + K) + "__mappings__lpAsset2PoolContract")
10490
10591
106-func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
92+func T (U) = valueOrErrorMessage(getString(this, U), ("No data for this.key=" + U))
10793
10894
109-func ag () = "%s__shutdown"
95+func V (U) = valueOrErrorMessage(getBoolean(this, U), ("No data for this.key=" + U))
11096
11197
112-func ah (ai) = ("%s%s__poolWeight__" + ai)
98+func W (U) = valueOrErrorMessage(getInteger(this, U), ("No data for this.key=" + U))
11399
114100
115-func aj (ak,al) = valueOrErrorMessage(getString(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
101+func X (Y,Z,aa,ab,ac,ad,ae) = makeString(["%s%s%s%s%s%s", Y, Z, aa, ab, ac, ad, ae], b)
116102
117103
118-func am (ak,al) = valueOrErrorMessage(getInteger(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
104+func af (B,ag,ah,ai,aj,ak,al,am,an,ao,ap) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", B, ag, ah, ai, aj, toString(ak), toString(al), toString(am), toString(an), toString(ao), ap], b)
119105
120106
121-let an = addressFromStringValue(aj(this, L()))
122-
123-func ao () = valueOrElse(getBoolean(an, ag()), false)
107+func aq (ar,as) = makeString(["%d%d", toString(ar), toString(as)], b)
124108
125109
126-func ap () = {
127- let aq = aj(this, V())
128- let ar = aj(this, W())
129- let ad = am(an, ae(ar))
130- let ac = am(an, ae(aq))
131- split(aj(an, ab(toString(ac), toString(ad))), f)
110+func at (B) = {
111+ let au = split(T(O(B)), b)
112+ let H = au[1]
113+ let I = au[2]
114+ split(T(G(H, I)), b)
132115 }
133116
134117
135-func as () = split(aj(an, Y()), f)
136-
137-
138-func at (au,av,aw,ax,ay,az,aA,aB,aC,aD) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(au), toString(av), toString(aw), toString(ax), toString(ay), toString(az), toString(aA), toString(aB), toString(aC), toString(aD)], f)
139-
140-
141-func aE (aF,aG,aH,ax,aA,aB) = makeString(["%d%d%d%d%d%d", toString(aF), toString(aG), toString(aH), toString(ax), toString(aA), toString(aB)], f)
142-
143-
144-func aI (aJ) = if ((aJ == "WAVES"))
145- then wavesBalance(this).available
146- else assetBalance(this, fromBase58String(aJ))
147-
148-
149-func aK (aL,aM) = fraction(aL, d, aM)
150-
151-
152-func aN (aO,aP,aQ,aR) = {
153- let aS = A(aQ, aO)
154- let aT = A(aR, aP)
155- aK(aT, aS)
118+func av (aw,ax) = {
119+ let ay = valueOrElse(getInteger(this, E(aw)), 0)
120+ let az = valueOrElse(getInteger(this, z()), 0)
121+ let aA = if ((ay == 0))
122+ then {
123+ let aB = (az + ax)
124+ $Tuple3(aB, [IntegerEntry(z(), aB), IntegerEntry(E(aw), aB), StringEntry(C(aB), aw)], true)
125+ }
126+ else $Tuple3(ay, nil, false)
127+ aA
156128 }
157129
158130
159-func aU (aQ,aR,aV) = {
160- let aW = ap()
161- let aX = parseIntValue(aW[q])
162- let aY = parseIntValue(aW[r])
163- let aZ = aN(aX, aY, aQ, aR)
164- let aM = A(aQ, aX)
165- let aL = A(aR, aY)
166- let ba = A(aV, b)
167- let bb = aK(aM, ba)
168- let bc = aK(aL, ba)
169-[aZ, bb, bc]
131+func aC (aD) = {
132+ let aE = getString(this, v())
133+ if (isDefined(aE))
134+ then ((value(aE) + b) + aD)
135+ else aD
170136 }
171137
172138
173-func bd (aQ,aR,aV) = {
174- let be = aU(aQ, aR, aV)
175-[D(be[0], b), D(be[1], b), D(be[2], b)]
176- }
139+@Callable(aF)
140+func constructor (aG,aH,aa,ab,ac,ad,aI,aJ) = if ((aF.caller != this))
141+ then throw("permissions denied")
142+ else [StringEntry(u(), X(aG, aH, aa, ab, ac, ad, aI)), IntegerEntry(x(), aJ)]
177143
178144
179-func bf (bg,bh,bi,S) = {
180- let aW = ap()
181- let bj = aW[n]
182- let bk = aW[o]
183- let bl = aW[p]
184- let aO = parseIntValue(aW[q])
185- let aP = parseIntValue(aW[r])
186- let bm = aW[m]
187- let bn = valueOrErrorMessage(assetInfo(fromBase58String(bj)), (("Asset " + bj) + " doesn't exist")).quantity
188- if ((bj != bh))
189- then throw("Invalid asset passed.")
145+
146+@Callable(aF)
147+func activateNewPool (B,ai,aj,aK,aL,aM,ap) = if ((aF.caller != this))
148+ then throw("permissions denied")
149+ else if (isDefined(getString(O(B))))
150+ then throw((("Pool address " + B) + " already registered."))
190151 else {
191- let bo = aI(bk)
192- let bp = A(bo, aO)
193- let bq = aI(bl)
194- let br = A(bq, aP)
195- let bs = aK(br, bp)
196- let bt = D(bs, b)
197- let bu = A(bi, b)
198- let bv = A(bn, b)
199- let bw = fraction(bp, bu, bv)
200- let bx = fraction(br, bu, bv)
201- let by = D(bw, aO)
202- let bz = D(bx, aP)
203- let bA = if ((bg == ""))
204- then nil
205- else [ScriptTransfer(S, by, if ((bk == "WAVES"))
206- then unit
207- else fromBase58String(bk)), ScriptTransfer(S, bz, if ((bl == "WAVES"))
208- then unit
209- else fromBase58String(bl)), StringEntry(U(toString(S), bg), aE(by, bz, bi, bt, height, lastBlock.timestamp)), IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt)]
210- $Tuple10(by, bz, bk, bl, bo, bq, bn, bs, bm, bA)
152+ let aN = av(ai, 1)
153+ let aO = aN._1
154+ let aP = av(aj, if (aN._3)
155+ then 2
156+ else 1)
157+ let aQ = aP._1
158+ let aR = valueOrErrorMessage(scriptHash(addressFromStringValue(B)), ("No script has been found on pool account " + B))
159+ let aS = getBinaryValue(w())
160+ let aT = getString(this, G(toString(aO), toString(aQ)))
161+ if (isDefined(aT))
162+ then throw((((("Pool " + ai) + "/") + aj) + " has already been activated."))
163+ else {
164+ let aU = value(getString(this, G(toString(aO), toString(aQ))))
165+ let aV = if ((ai == "WAVES"))
166+ then a
167+ else pow(10, 0, value(assetInfo(fromBase58String(ai))).decimals, 0, 0, DOWN)
168+ let aW = if ((aj == "WAVES"))
169+ then a
170+ else pow(10, 0, value(assetInfo(fromBase58String(aj))).decimals, 0, 0, DOWN)
171+ let aX = Issue(aK, aL, 1, 8, true)
172+ let ah = calculateAssetId(aX)
173+ let aY = toBase58String(ah)
174+ let aZ = invoke(addressFromStringValue(B), "activate", [ai, aj], nil)
175+ if ((aZ == aZ))
176+ then if ((aZ != "success"))
177+ then throw("Pool initialisation error happened.")
178+ else $Tuple2(((aN._2 ++ aP._2) ++ [aX, Burn(ah, 1), StringEntry(G(toString(aO), toString(aQ)), af(B, toString(c), aY, ai, aj, aV, aW, aO, aQ, a, ap)), StringEntry(J(aY), aq(aO, aQ)), StringEntry(L(toString(aO), toString(aQ)), ("%s__" + aY)), StringEntry(O(B), aq(aO, aQ)), StringEntry(Q(aO, aQ), B), StringEntry(S(aY), B), StringEntry(R(B), aY), IntegerEntry(A(B), aM), StringEntry(v(), aC(aY))]), "success")
179+ else throw("Strict value is not equal to itself.")
180+ }
211181 }
212- }
213182
214183
215-func bB (bg,bC,bD,bE,bF,bG,S,bH,bI) = {
216- let aW = ap()
217- let bj = fromBase58String(aW[n])
218- let bJ = aW[o]
219- let bK = aW[p]
220- let bL = aW[s]
221- let bM = aW[t]
222- let aX = parseIntValue(aW[q])
223- let aY = parseIntValue(aW[r])
224- let bm = aW[m]
225- let bn = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
226- let bN = toBase58String(valueOrElse(bE, fromBase58String("WAVES")))
227- let bO = toBase58String(valueOrElse(bG, fromBase58String("WAVES")))
228- if (if ((bJ != bN))
229- then true
230- else (bK != bO))
231- then throw("Invalid amt or price asset passed.")
232- else {
233- let bo = if (bH)
234- then aI(bJ)
235- else (aI(bJ) - bD)
236- let bq = if (bH)
237- then aI(bK)
238- else (aI(bK) - bF)
239- let bP = A(bD, aX)
240- let bQ = A(bF, aY)
241- let bR = aK(bQ, bP)
242- let bp = A(bo, aX)
243- let br = A(bq, aY)
244- let bS = if ((bn == 0))
245- then {
246- let bs = e
247- let bT = e
248- let ba = pow((bP * bQ), 0, toBigInt(5), 1, 0, DOWN)
249- $Tuple5(D(ba, b), D(bP, aX), D(bQ, aY), aK((br + bQ), (bp + bP)), bT)
250- }
251- else {
252- let bs = aK(br, bp)
253- let bT = fraction(K((bs - bR)), d, bs)
254- let bU = A(bC, b)
255- if (if ((bs != e))
256- then (bT > bU)
257- else false)
258- then throw(((("Price slippage " + toString(bT)) + " exceeded the passed limit of ") + toString(bU)))
259- else {
260- let bv = A(bn, b)
261- let bV = fraction(bP, bs, d)
262- let bW = fraction(bQ, d, bs)
263- let bX = if ((bV > bQ))
264- then $Tuple2(bW, bQ)
265- else $Tuple2(bP, bV)
266- let bY = bX._1
267- let bZ = bX._2
268- let ba = fraction(bv, bZ, br)
269- $Tuple5(D(ba, b), D(bY, aX), D(bZ, aY), bs, bT)
270- }
271- }
272- let ca = bS._1
273- let cb = bS._2
274- let cc = bS._3
275- let bt = D(bS._4, b)
276- let cd = D(bS._5, b)
277- if ((0 >= ca))
278- then throw("Invalid calculations. LP calculated is less than zero.")
279- else {
280- let ce = if (!(bI))
281- then 0
282- else ca
283- let cf = (bD - cb)
284- let cg = (bF - cc)
285- let ch = [IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt), StringEntry(R(S, bg), at(cb, cc, ce, bt, bC, cd, height, lastBlock.timestamp, cf, cg))]
286- $Tuple13(ca, ce, bt, bo, bq, bn, bj, bm, ch, cf, cg, bE, bG)
287- }
288- }
289- }
290184
291-
292-func ci (cj) = {
293- let aW = ap()
294- let ck = aW[o]
295- let cl = aW[p]
296- let bm = parseIntValue(aW[m])
297- let aX = parseIntValue(aW[q])
298- let aY = parseIntValue(aW[r])
299- let cm = aI(ck)
300- let cn = aI(cl)
301- let bs = if ((cj.orderType == Buy))
302- then aN(aX, aY, (cm + cj.amount), cn)
303- else aN(aX, aY, (cm - cj.amount), cn)
304- let bt = D(bs, b)
305- if (if (if (ao())
306- then true
307- else (bm == j))
308- then true
309- else (bm == k))
310- then throw("Exchange operations disabled")
311- else {
312- let co = cj.assetPair.amountAsset
313- let cp = if ((co == unit))
314- then "WAVES"
315- else toBase58String(value(co))
316- let cq = cj.assetPair.priceAsset
317- let cr = if ((cq == unit))
318- then "WAVES"
319- else toBase58String(value(cq))
320- if (if ((cp != ck))
321- then true
322- else (cr != cl))
323- then throw("Wrong order assets.")
324- else {
325- let cs = cj.price
326- let ct = fraction(b, aY, aX)
327- let cu = G(cs, b, ct)
328- let cv = if ((cj.orderType == Buy))
329- then (bt >= cu)
330- else (cu >= bt)
331- true
332- }
333- }
334- }
335-
336-
337-func cw (cx) = if ((size(cx.payments) != 1))
338- then throw("exactly 1 payment is expected")
185+@Callable(aF)
186+func managePool (B,ba) = if ((aF.caller != this))
187+ then throw("permissions denied")
339188 else {
340- let cy = value(cx.payments[0])
341- let bh = value(cy.assetId)
342- let cz = cy.amount
343- let bS = bf(toBase58String(cx.transactionId), toBase58String(bh), cz, cx.caller)
344- let by = bS._1
345- let bz = bS._2
346- let bm = parseIntValue(bS._9)
347- let bA = bS._10
348- if (if (ao())
349- then true
350- else (bm == k))
351- then throw(("Get operation is blocked by admin. Status = " + toString(bm)))
352- else $Tuple5(by, bz, cz, bh, bA)
189+ let aT = at(B)
190+ let ag = aT[k]
191+ let aY = aT[l]
192+ let ai = aT[m]
193+ let aj = aT[n]
194+ let aV = parseIntValue(aT[o])
195+ let aW = parseIntValue(aT[p])
196+ let aO = parseIntValue(aT[q])
197+ let aQ = parseIntValue(aT[r])
198+ let bb = parseIntValue(aT[s])
199+ let ap = aT[t]
200+[StringEntry(G(toString(aO), toString(aQ)), af(B, toString(ba), aY, ai, aj, aV, aW, aO, aQ, bb, ap))]
353201 }
354202
355203
356-func cA (cx,bC,bI) = if ((size(cx.payments) != 2))
357- then throw("exactly 2 payments are expected")
358- else {
359- let cB = value(cx.payments[0])
360- let cC = value(cx.payments[1])
361- let cD = bB(toBase58String(cx.transactionId), bC, cB.amount, cB.assetId, cC.amount, cC.assetId, toString(cx.caller), false, bI)
362- let bm = parseIntValue(cD._8)
363- if (if (if (ao())
364- then true
365- else (bm == i))
366- then true
367- else (bm == k))
368- then throw(("Put operation is blocked by admin. Status = " + toString(bm)))
369- else cD
370- }
371204
372-
373-@Callable(cx)
374-func constructor (an,cE) = if ((cx.caller != this))
375- then throw("permissions denied")
376- else [StringEntry(L(), an), StringEntry(M(), cE)]
377-
378-
379-
380-@Callable(cx)
381-func put (bC,cF) = {
382- let cG = as()
383- let cH = valueOrErrorMessage(addressFromString(cG[y]), "Error. Incorrect staking address.")
384- let cI = valueOrErrorMessage(addressFromString(cG[z]), "Error. Incorrect slippage contract address.")
385- if ((0 > bC))
386- then throw("Invalid slippageTolerance passed")
387- else {
388- let cD = cA(cx, bC, true)
389- let ce = cD._2
390- let bj = cD._7
391- let bA = cD._9
392- let cf = cD._10
393- let cg = cD._11
394- let cJ = cD._12
395- let cK = cD._13
396- let cL = invoke(an, "emit", [ce], nil)
397- if ((cL == cL))
398- then {
399- let cM = if ((cf > 0))
400- then invoke(cI, "put", nil, [AttachedPayment(cJ, cf)])
401- else nil
402- if ((cM == cM))
403- then {
404- let cN = if ((cg > 0))
405- then invoke(cI, "put", nil, [AttachedPayment(cK, cg)])
406- else nil
407- if ((cN == cN))
408- then {
409- let cO = if (cF)
410- then {
411- let cP = invoke(cH, "stake", nil, [AttachedPayment(bj, ce)])
412- if ((cP == cP))
413- then nil
414- else throw("Strict value is not equal to itself.")
415- }
416- else [ScriptTransfer(cx.caller, ce, bj)]
417- (bA ++ cO)
418- }
419- else throw("Strict value is not equal to itself.")
420- }
421- else throw("Strict value is not equal to itself.")
422- }
423- else throw("Strict value is not equal to itself.")
424- }
205+@Callable(aF)
206+func emit (bc) = {
207+ let bd = aF.caller
208+ let be = aF.originCaller
209+ let bf = valueOrErrorMessage(getString(R(toString(bd))), "Invalid LP address called me.")
210+ let bg = fromBase58String(bf)
211+ if ((bc > 0))
212+ then $Tuple2([Reissue(bg, bc, true), ScriptTransfer(aF.caller, bc, bg)], "success")
213+ else nil
425214 }
426215
427216
428217
429-@Callable(cx)
430-func putForFree (cQ) = if ((0 > cQ))
431- then throw("Invalid value passed")
432- else {
433- let cD = cA(cx, cQ, false)
434- cD._9
435- }
436-
437-
438-
439-@Callable(cx)
440-func get () = {
441- let bS = cw(cx)
442- let cR = bS._1
443- let bz = bS._2
444- let cz = bS._3
445- let bh = bS._4
446- let bA = bS._5
447- let cS = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
448- if ((cS == cS))
449- then bA
450- else throw("Strict value is not equal to itself.")
451- }
452-
453-
454-
455-@Callable(cx)
456-func getNoLess (cT,cU) = {
457- let bS = cw(cx)
458- let by = bS._1
459- let bz = bS._2
460- let cz = bS._3
461- let bh = bS._4
462- let bA = bS._5
463- if ((cT > by))
464- then throw(((("noLessThenAmtAsset failed: " + toString(by)) + " < ") + toString(cT)))
465- else if ((cU > bz))
466- then throw(((("noLessThenPriceAsset failed: " + toString(bz)) + " < ") + toString(cU)))
218+@Callable(aF)
219+func burn (bh) = {
220+ let bd = aF.caller
221+ let be = aF.originCaller
222+ let bi = value(aF.payments[0])
223+ let bj = value(bi.amount)
224+ let bk = toBase58String(value(bi.assetId))
225+ let bl = valueOrErrorMessage(getString(R(toString(bd))), "Invalid LP address called me.")
226+ if ((bk != bl))
227+ then throw("Invalid asset passed.")
228+ else if ((bh != bj))
229+ then throw("Invalid amount passed.")
467230 else {
468- let cS = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
469- if ((cS == cS))
470- then bA
471- else throw("Strict value is not equal to itself.")
231+ let bg = fromBase58String(bl)
232+ $Tuple2([Burn(bg, bh)], "success")
472233 }
473234 }
474235
475236
476-
477-@Callable(cx)
478-func activate (cV,cW) = if ((toString(cx.caller) != toString(an)))
479- then throw("permissions denied")
480- else $Tuple2([StringEntry(V(), cV), StringEntry(W(), cW)], "success")
481-
482-
483-
484-@Callable(cx)
485-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ap())
486-
487-
488-
489-@Callable(cx)
490-func getAccBalanceWrapperREADONLY (aJ) = $Tuple2(nil, aI(aJ))
491-
492-
493-
494-@Callable(cx)
495-func calcPricesWrapperREADONLY (aQ,aR,aV) = {
496- let be = aU(aQ, aR, aV)
497- $Tuple2(nil, [toString(be[0]), toString(be[1]), toString(be[2])])
498- }
499-
500-
501-
502-@Callable(cx)
503-func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
504-
505-
506-
507-@Callable(cx)
508-func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
509-
510-
511-
512-@Callable(cx)
513-func calcPriceBigIntWrapperREADONLY (aL,aM) = $Tuple2(nil, toString(aK(parseBigIntValue(aL), parseBigIntValue(aM))))
514-
515-
516-
517-@Callable(cx)
518-func estimatePutOperationWrapperREADONLY (bg,bC,bD,bE,bF,bG,S,bH,bI) = {
519- let cX = bB(bg, bC, bD, bE, bF, bG, S, bH, bI)
520- let cY = cX
521- let ca = cY._1
522- let ce = cY._2
523- let bt = cY._3
524- let bo = cY._4
525- let bq = cY._5
526- let bn = cY._6
527- let bj = cY._7
528- let bm = cY._8
529- let ch = cY._9
530- let cf = cY._10
531- let cg = cY._11
532- let cZ = cY._12
533- let da = cY._13
534- $Tuple2(nil, $Tuple13(ca, ce, bt, bo, bq, bn, bj, bm, ch, cf, cg, cZ, da))
535- }
536-
537-
538-
539-@Callable(cx)
540-func estimateGetOperationWrapperREADONLY (bg,bh,bi,S) = {
541- let cX = bf(bg, bh, bi, addressFromStringValue(S))
542- let db = cX
543- let by = db._1
544- let bz = db._2
545- let bk = db._3
546- let bl = db._4
547- let bo = db._5
548- let bq = db._6
549- let bn = db._7
550- let bs = db._8
551- let bm = db._9
552- let bA = db._10
553- $Tuple2(nil, $Tuple10(by, bz, bk, bl, bo, bq, bn, toString(bs), bm, bA))
554- }
555-
556-
557-
558-@Callable(cx)
559-func statsREADONLY () = {
560- let aW = ap()
561- let bj = fromBase58String(aW[n])
562- let ck = aW[o]
563- let cl = aW[p]
564- let bL = aW[s]
565- let bM = aW[t]
566- let aX = parseIntValue(aW[q])
567- let aY = parseIntValue(aW[r])
568- let dc = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
569- let cm = aI(ck)
570- let cn = aI(cl)
571- let dd = aU(cm, cn, dc)
572- let bt = 0
573- let de = D(dd[1], b)
574- let df = D(dd[2], b)
575- let dg = value(getInteger(an, ah(toString(this))))
576- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(dc), toString(bt), toString(de), toString(df), toString(dg)], f))
577- }
578-
579-
580-
581-@Callable(cx)
582-func evaluatePutByAmountAssetREADONLY (bD) = {
583- let aW = ap()
584- let bj = fromBase58String(aW[n])
585- let bJ = aW[o]
586- let bk = fromBase58String(bJ)
587- let bK = aW[p]
588- let bl = fromBase58String(bK)
589- let aX = parseIntValue(aW[q])
590- let aY = parseIntValue(aW[r])
591- let bm = aW[m]
592- let dc = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
593- let cm = aI(bJ)
594- let cn = aI(bK)
595- let aS = A(cm, aX)
596- let aT = A(cn, aY)
597- let bs = if ((dc == 0))
598- then e
599- else aK(aT, aS)
600- let bP = A(bD, aX)
601- let bQ = fraction(bP, bs, d)
602- let bF = D(bQ, aY)
603- let cD = bB("", 500000, bD, bk, bF, bl, "", true, false)
604- let ca = cD._1
605- let dh = cD._3
606- let bo = cD._4
607- let bq = cD._5
608- let bn = cD._6
609- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm, toString(bD), toString(bF)], f))
610- }
611-
612-
613-
614-@Callable(cx)
615-func evaluatePutByPriceAssetREADONLY (bF) = {
616- let aW = ap()
617- let bj = fromBase58String(aW[n])
618- let bJ = aW[o]
619- let bk = fromBase58String(bJ)
620- let bK = aW[p]
621- let bl = fromBase58String(bK)
622- let aX = parseIntValue(aW[q])
623- let aY = parseIntValue(aW[r])
624- let bm = aW[m]
625- let dc = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
626- let di = aI(bJ)
627- let dj = aI(bK)
628- let dk = A(di, aX)
629- let dl = A(dj, aY)
630- let bs = if ((dc == 0))
631- then e
632- else aK(dl, dk)
633- let bQ = A(bF, aY)
634- let bP = fraction(bQ, d, bs)
635- let bD = D(bP, aX)
636- let cD = bB("", 500000, bD, bk, bF, bl, "", true, false)
637- let ca = cD._1
638- let dh = cD._3
639- let bo = cD._4
640- let bq = cD._5
641- let bn = cD._6
642- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm, toString(bD), toString(bF)], f))
643- }
644-
645-
646-
647-@Callable(cx)
648-func evaluateGetREADONLY (dm,dn) = {
649- let bS = bf("", dm, dn, this)
650- let by = bS._1
651- let bz = bS._2
652- let bo = bS._5
653- let bq = bS._6
654- let bn = bS._7
655- let bt = bS._8
656- let bm = parseIntValue(bS._9)
657- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bo), toString(bq), toString(bn), toString(bt), toString(bm)], f))
658- }
659-
660-
661-@Verifier(do)
662-func dp () = {
663- let dq = do
664- if ($isInstanceOf(dq, "Order"))
665- then {
666- let cj = dq
667- if (ci(cj))
668- then sigVerify(cj.bodyBytes, cj.proofs[0], cj.senderPublicKey)
669- else false
670- }
671- else {
672- let dr = valueOrElse(getString(this, M()), g)
673- if ((dr == g))
674- then sigVerify(do.bodyBytes, do.proofs[0], do.senderPublicKey)
675- else sigVerify(do.bodyBytes, do.proofs[0], fromBase58String(dr))
676- }
677- }
237+@Verifier(bm)
238+func bn () = sigVerify(bm.bodyBytes, bm.proofs[0], bm.senderPublicKey)
678239

github/deemru/w8io/c3f4982 
86.28 ms