tx · HHeuM2zhjjZfidLv6CVqg3kfzAaPBmNhia4jUGVJVnAi

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.01400000 Waves

2021.12.27 22:37 [1853084] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "HHeuM2zhjjZfidLv6CVqg3kfzAaPBmNhia4jUGVJVnAi", "fee": 1400000, "feeAssetId": null, "timestamp": 1640633893452, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "nobyNB69yxKYRrwixgLLWjysS3i8ZdgssmxtRvHFTA1dgufMErBw6f2nrNiPsi1QmmR6tFMi3Z4SHd79pTbEumP" ], "script": "base64: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AAAAAQUAAAAIc2xpcHBhZ2UJAAUUAAAAAgUAAAAGcGFzc2VkCQABmQAAAAEJAARMAAAAAgUAAAAHcmVhbEFtdAkABEwAAAACBQAAAAtleHBlY3RlZEFtdAUAAAADbmlsAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAAAAAphbUFzc2V0RGNtAAAACnByQXNzZXREY20AAAAFYW1BbXQAAAAFcHJBbXQEAAAAC2FtdEFzQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVhbUFtdAUAAAAKYW1Bc3NldERjbQQAAAAKcHJBc0FtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFcHJBbXQFAAAACnByQXNzZXREY20JAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAApwckFzQW10WDE4BQAAAAthbXRBc0FtdFgxOAEAAAAKY2FsY1ByaWNlcwAAAAMAAAAFYW1BbXQAAAAFcHJBbXQAAAAFbHBBbXQEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAhhbXRBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAALaWR4QW10QXNEY20EAAAAB3ByQXNEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFByaWNlQXNEY20EAAAACHByaWNlWDE4CQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAACGFtdEFzRGNtBQAAAAdwckFzRGNtBQAAAAVhbUFtdAUAAAAFcHJBbXQEAAAACGFtQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVhbUFtdAUAAAAIYW10QXNEY20EAAAACHByQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVwckFtdAUAAAAHcHJBc0RjbQQAAAAIbHBBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWxwQW10BQAAAAZzY2FsZTgEAAAADWxwUHJJbkFtQXNYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAhhbUFtdFgxOAUAAAAIbHBBbXRYMTgEAAAADWxwUHJJblByQXNYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAhwckFtdFgxOAUAAAAIbHBBbXRYMTgJAARMAAAAAgUAAAAIcHJpY2VYMTgJAARMAAAAAgUAAAANbHBQckluQW1Bc1gxOAkABEwAAAACBQAAAA1scFBySW5QckFzWDE4BQAAAANuaWwBAAAAD2NhbGN1bGF0ZVByaWNlcwAAAAMAAAAFYW1BbXQAAAAFcHJBbXQAAAAFbHBBbXQEAAAABnByaWNlcwkBAAAACmNhbGNQcmljZXMAAAADBQAAAAVhbUFtdAUAAAAFcHJBbXQFAAAABWxwQW10CQAETAAAAAIJAQAAAAdmcm9tWDE4AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAAFAAAABnNjYWxlOAkABEwAAAACCQEAAAAHZnJvbVgxOAAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAABBQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB2Zyb21YMTgAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAgUAAAAGc2NhbGU4BQAAAANuaWwBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAAAAAZ0eElkNTgAAAAKcG10QXNzZXRJZAAAAAhwbXRMcEFtdAAAAAt1c2VyQWRkcmVzcwQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABGxwSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAABGFtSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAABHBySWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAABWFtRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAFcHJEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFByaWNlQXNEY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQb29sU3QEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAARscElkAgAAAA1JbnZhbGlkIExQIGlkAAAACHF1YW50aXR5AwkBAAAAAiE9AAAAAgUAAAAEbHBJZAUAAAAKcG10QXNzZXRJZAkAAAIAAAABAgAAABFJbnZhbGlkIHBtdCBhc3NldAQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABGFtSWQEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbURjbQQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABHBySWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAVwckRjbQQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAALcG10THBBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHBtdExwQW10BQAAAAZzY2FsZTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAALb3V0QW1BbXRYMTgJAAE8AAAAAwUAAAAMYW1CYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAALb3V0UHJBbXRYMTgJAAE8AAAAAwUAAAAMcHJCYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAANbHBFbWlzc2lvblgxOAQAAAAIb3V0QW1BbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAALb3V0QW1BbXRYMTgFAAAABWFtRGNtBAAAAAhvdXRQckFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAAtvdXRQckFtdFgxOAUAAAAFcHJEY20EAAAABXN0YXRlAwkAAAAAAAACBQAAAAZ0eElkNTgCAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAhvdXRBbUFtdAMJAAAAAAAAAgUAAAAEYW1JZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAEYW1JZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAIb3V0UHJBbXQDCQAAAAAAAAIFAAAABHBySWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAABHBySWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUdldEFjdGlvbkJ5VXNlcgAAAAIJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAAhwbXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlBQAAAANuaWwJAAUcAAAACgUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAARhbUlkBQAAAARwcklkBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAALY3VyUHJpY2VYMTgFAAAACnBvb2xTdGF0dXMFAAAABXN0YXRlAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAwAAAAGdHhJZDU4AAAACHNsaXBwYWdlAAAAB2luQW1BbXQAAAAGaW5BbUlkAAAAB2luUHJBbXQAAAAGaW5QcklkAAAAC3VzZXJBZGRyZXNzAAAABmlzRXZhbAAAAAZlbWl0THAAAAAKaXNPbmVBc3NldAAAAAZwbXRBbXQAAAAFcG10SWQEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAARscElkCQACWQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAAB2FtSWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAAB3BySWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAACWluQW1JZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAC2lkeElBbXRBc0lkBAAAAAlpblBySWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhJUHJpY2VBc0lkBAAAAAZhbXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAhwcmljZURjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAACWlkeFBvb2xTdAQAAAAEbHBFbQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAARscElkAgAAAAhXciBscCBhcwAAAAhxdWFudGl0eQQAAAAJYW1CYWxhbmNlAwUAAAAGaXNFdmFsCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtSWRTdHIDAwUAAAAKaXNPbmVBc3NldAkAAAAAAAACBQAAAAVwbXRJZAUAAAAHYW1JZFN0cgcJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyBQAAAAZwbXRBbXQDBQAAAAppc09uZUFzc2V0CQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtSWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyBQAAAAdpbkFtQW10BAAAAAlwckJhbGFuY2UDBQAAAAZpc0V2YWwJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHcHJJZFN0cgMDBQAAAAppc09uZUFzc2V0CQAAAAAAAAIFAAAABXBtdElkBQAAAAdwcklkU3RyBwkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIFAAAABnBtdEFtdAMFAAAACmlzT25lQXNzZXQJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHcHJJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIFAAAAB2luUHJBbXQEAAAAD2luQW1Bc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAHaW5BbUFtdAUAAAAGYW10RGNtBAAAAA9pblByQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAAB2luUHJBbXQFAAAACHByaWNlRGNtBAAAAAx1c2VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAABmFtdERjbQQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAACHByaWNlRGNtBAAAAANyZXMDCQAAAAAAAAIFAAAABGxwRW0AAAAAAAAAAAAEAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50BAAAAAtzbGlwcGFnZVgxOAUAAAAKemVyb0JpZ0ludAQAAAAIbHBBbXRYMTgJAAB2AAAABgkAATkAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAD2luUHJBc3NldEFtdFgxOAAAAAAAAAAAAAkAATYAAAABAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAAABQAAAARET1dOCQAFFwAAAAUJAQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAABmFtdERjbQkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAATcAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkAATcAAAACBQAAAAxhbUJhbGFuY2VYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALc2xpcHBhZ2VYMTgEAAAAC2N1clByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAAxhbUJhbGFuY2VYMTgEAAAAD3NsaXBwYWdlUmVhbFgxOAkAATwAAAADCQEAAAADYWJzAAAAAQkAATgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAMdXNlclByaWNlWDE4BQAAAAdzY2FsZTE4BQAAAAtjdXJQcmljZVgxOAQAAAALc2xpcHBhZ2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHNsaXBwYWdlBQAAAAZzY2FsZTgDAwkBAAAAAiE9AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAACnplcm9CaWdJbnQJAAE/AAAAAgUAAAAPc2xpcHBhZ2VSZWFsWDE4BQAAAAtzbGlwcGFnZVgxOAcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpgAAAAEFAAAAD3NsaXBwYWdlUmVhbFgxOAIAAAADID4gCQABpgAAAAEFAAAAC3NsaXBwYWdlWDE4BAAAAA1scEVtaXNzaW9uWDE4CQEAAAAFdG9YMTgAAAACBQAAAARscEVtBQAAAAZzY2FsZTgEAAAACnByVmlhQW1YMTgJAAE8AAAAAwUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtjdXJQcmljZVgxOAUAAAAHc2NhbGUxOAQAAAAKYW1WaWFQclgxOAkAATwAAAADBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAB3NjYWxlMTgFAAAAC2N1clByaWNlWDE4BAAAAAxleHBlY3RlZEFtdHMDCQABPwAAAAIFAAAACnByVmlhQW1YMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAAphbVZpYVByWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAUUAAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAApwclZpYUFtWDE4BAAAABFleHBBbXRBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMQQAAAATZXhwUHJpY2VBc3NldEFtdFgxOAgFAAAADGV4cGVjdGVkQW10cwAAAAJfMgQAAAAIbHBBbXRYMTgJAAE8AAAAAwUAAAANbHBFbWlzc2lvblgxOAUAAAATZXhwUHJpY2VBc3NldEFtdFgxOAUAAAAMcHJCYWxhbmNlWDE4CQAFFwAAAAUJAQAAAAdmcm9tWDE4AAAAAgUAAAAIbHBBbXRYMTgFAAAABnNjYWxlOAkBAAAAB2Zyb21YMTgAAAACBQAAABFleHBBbXRBc3NldEFtdFgxOAUAAAAGYW10RGNtCQEAAAAHZnJvbVgxOAAAAAIFAAAAE2V4cFByaWNlQXNzZXRBbXRYMTgFAAAACHByaWNlRGNtBQAAAAtjdXJQcmljZVgxOAUAAAALc2xpcHBhZ2VYMTgEAAAACWNhbGNMcEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAOY2FsY0FtQXNzZXRQbXQIBQAAAANyZXMAAAACXzIEAAAADmNhbGNQckFzc2V0UG10CAUAAAADcmVzAAAAAl8zBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl80BQAAAAZzY2FsZTgEAAAADHNsaXBwYWdlQ2FsYwkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl81BQAAAAZzY2FsZTgDCQAAZwAAAAIAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAkAAAIAAAABAgAAAAdMUCA8PSAwBAAAAAllbWl0THBBbXQDCQEAAAABIQAAAAEFAAAABmVtaXRMcAAAAAAAAAAAAAUAAAAJY2FsY0xwQW10BAAAAAZhbURpZmYJAABlAAAAAgUAAAAHaW5BbUFtdAUAAAAOY2FsY0FtQXNzZXRQbXQEAAAABnByRGlmZgkAAGUAAAACBQAAAAdpblByQW10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAANJHQwMTU2NDgxNTk5NAMDBQAAAAppc09uZUFzc2V0CQAAAAAAAAIFAAAABXBtdElkBQAAAAdhbUlkU3RyBwkABRQAAAACBQAAAAZwbXRBbXQAAAAAAAAAAAADAwUAAAAKaXNPbmVBc3NldAkAAAAAAAACBQAAAAVwbXRJZAUAAAAHcHJJZFN0cgcJAAUUAAAAAgAAAAAAAAAAAAUAAAAGcG10QW10CQAFFAAAAAIFAAAADmNhbGNBbUFzc2V0UG10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAAKd3JpdGVBbUFtdAgFAAAADSR0MDE1NjQ4MTU5OTQAAAACXzEEAAAACndyaXRlUHJBbXQIBQAAAA0kdDAxNTY0ODE1OTk0AAAAAl8yBAAAAAtjb21tb25TdGF0ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleVB1dEFjdGlvbkJ5VXNlcgAAAAIFAAAAC3VzZXJBZGRyZXNzBQAAAAZ0eElkNTgJAQAAABFkYXRhUHV0QWN0aW9uSW5mbwAAAAoFAAAADmNhbGNBbUFzc2V0UG10BQAAAA5jYWxjUHJBc3NldFBtdAUAAAAJZW1pdExwQW10BQAAAAhjdXJQcmljZQUAAAAIc2xpcHBhZ2UFAAAADHNsaXBwYWdlQ2FsYwUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAGYW1EaWZmBQAAAAZwckRpZmYFAAAAA25pbAkABR8AAAANBQAAAAljYWxjTHBBbXQFAAAACWVtaXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAACWFtQmFsYW5jZQUAAAAJcHJCYWxhbmNlBQAAAARscEVtBQAAAARscElkBQAAAApwb29sU3RhdHVzBQAAAAtjb21tb25TdGF0ZQUAAAAGYW1EaWZmBQAAAAZwckRpZmYFAAAABmluQW1JZAUAAAAGaW5QcklkAQAAABt2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQAAAABAAAABW9yZGVyBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAHYW10QXNJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeEFtQXNJZAQAAAAGcHJBc0lkCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4UHJBc0lkBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQb29sU3QEAAAACGFtdEFzRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAHcHJBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAPYWNjQW10QXNCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtdEFzSWQEAAAADmFjY1ByQXNCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABnByQXNJZAQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIIBQAAAAVvcmRlcgAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAhhbXRBc0RjbQUAAAAHcHJBc0RjbQkAAGQAAAACBQAAAA9hY2NBbXRBc0JhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAADmFjY1ByQXNCYWxhbmNlCQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAACGFtdEFzRGNtBQAAAAdwckFzRGNtCQAAZQAAAAIFAAAAD2FjY0FtdEFzQmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAOYWNjUHJBc0JhbGFuY2UEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAZzY2FsZTgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAOUG9vbE1hdGNoZXJEaXMGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABAgAAAA1BZG1pbiBibG9ja2VkBAAAAApvckFtdEFzc2V0CAgFAAAABW9yZGVyAAAACWFzc2V0UGFpcgAAAAthbW91bnRBc3NldAQAAAAKb3JBbXRBc1N0cgMJAAAAAAAAAgUAAAAKb3JBbXRBc3NldAUAAAAEdW5pdAIAAAAFV0FWRVMJ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", "chainId": 84, "height": 1853084, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: qEY43BeB3q2L8ET2eMYykUpCz25QG9bMyfPthx72jvD Next: CGdQ82uwzGp6NgqSQzQzQKaUiTPMpSk9PmRfrFkBPoTJ Diff:
OldNewDifferences
313313 else cu
314314 let cz = (bT - cv)
315315 let cA = (bV - cw)
316- let cB = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cv, cw, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
317- $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cB, cz, cA, bU, bW)
316+ let cB = if (if (bZ)
317+ then (cb == cc)
318+ else false)
319+ then $Tuple2(ca, 0)
320+ else if (if (bZ)
321+ then (cb == cd)
322+ else false)
323+ then $Tuple2(0, ca)
324+ else $Tuple2(cv, cw)
325+ let cC = cB._1
326+ let cD = cB._2
327+ let cE = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cv, cw, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
328+ $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cE, cz, cA, bU, bW)
318329 }
319330 }
320331
321332
322-func cC (cD) = {
333+func cF (cG) = {
323334 let bk = aw()
324- let cE = bk[q]
325- let cF = bk[r]
335+ let cH = bk[q]
336+ let cI = bk[r]
326337 let bD = parseIntValue(bk[o])
327338 let bl = parseIntValue(bk[s])
328339 let bm = parseIntValue(bk[t])
329- let cG = aQ(cE)
330- let cH = aQ(cF)
331- let bJ = if ((cD.orderType == Buy))
332- then bb(bl, bm, (cG + cD.amount), cH)
333- else bb(bl, bm, (cG - cD.amount), cH)
340+ let cJ = aQ(cH)
341+ let cK = aQ(cI)
342+ let bJ = if ((cG.orderType == Buy))
343+ then bb(bl, bm, (cJ + cG.amount), cK)
344+ else bb(bl, bm, (cJ - cG.amount), cK)
334345 let bK = C(bJ, a)
335346 if (if (if (au())
336347 then true
339350 else (bD == m))
340351 then throw("Admin blocked")
341352 else {
342- let cI = cD.assetPair.amountAsset
343- let cJ = if ((cI == unit))
353+ let cL = cG.assetPair.amountAsset
354+ let cM = if ((cL == unit))
344355 then "WAVES"
345- else toBase58String(value(cI))
346- let cK = cD.assetPair.priceAsset
347- let cL = if ((cK == unit))
356+ else toBase58String(value(cL))
357+ let cN = cG.assetPair.priceAsset
358+ let cO = if ((cN == unit))
348359 then "WAVES"
349- else toBase58String(value(cK))
350- if (if ((cJ != cE))
360+ else toBase58String(value(cN))
361+ if (if ((cM != cH))
351362 then true
352- else (cL != cF))
363+ else (cO != cI))
353364 then throw("Wr assets")
354365 else {
355- let cM = cD.price
366+ let cP = cG.price
356367 let ch = fraction(a, bm, bl)
357- let cN = F(cM, a, ch)
358- let cO = if ((cD.orderType == Buy))
359- then (bK >= cN)
360- else (cN >= bK)
368+ let cQ = F(cP, a, ch)
369+ let cR = if ((cG.orderType == Buy))
370+ then (bK >= cQ)
371+ else (cQ >= bK)
361372 true
362373 }
363374 }
364375 }
365376
366377
367-func cP (cQ) = if ((size(cQ.payments) != 1))
368- then throw("1 pmnt expected")
378+func cS (cT) = if ((size(cT.payments) != 1))
379+ then throw("1 pmnt exp")
369380 else {
370- let cR = value(cQ.payments[0])
371- let bv = value(cR.assetId)
372- let ca = cR.amount
373- let cm = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
381+ let cU = value(cT.payments[0])
382+ let bv = value(cU.assetId)
383+ let ca = cU.amount
384+ let cm = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
374385 let bP = cm._1
375386 let bQ = cm._2
376387 let bD = parseIntValue(cm._9)
378389 if (if (au())
379390 then true
380391 else (bD == m))
381- then throw(("Admion blocked: " + toString(bD)))
392+ then throw(("Admin blocked: " + toString(bD)))
382393 else $Tuple5(bP, bQ, ca, bv, bR)
383394 }
384395
385396
386-func cS (cT,S,cU,cV,aY,bY,bZ,ca,cb) = {
387- let cW = bS(S, aY, value(cU).amount, value(cU).assetId, value(cV).amount, value(cV).assetId, cT, false, bY, bZ, ca, cb)
388- let cX = parseIntValue(cW._8)
397+func cV (cW,S,cX,cY,aY,bY,bZ,ca,cb) = {
398+ let cZ = bS(S, aY, value(cX).amount, value(cX).assetId, value(cY).amount, value(cY).assetId, cW, false, bY, bZ, ca, cb)
399+ let da = parseIntValue(cZ._8)
389400 if (if (if (au())
390401 then true
391- else (cX == k))
402+ else (da == k))
392403 then true
393- else (cX == m))
394- then throw(("Admin blocked: " + toString(cX)))
395- else cW
404+ else (da == m))
405+ then throw(("Admin blocked: " + toString(da)))
406+ else cZ
396407 }
397408
398409
399-@Callable(cQ)
400-func constructor (as,cY) = if ((cQ.caller != this))
401- then throw("permission denied")
402- else [StringEntry(K(), as), StringEntry(L(), cY)]
410+@Callable(cT)
411+func constructor (as,db) = if ((cT.caller != this))
412+ then throw("denied")
413+ else [StringEntry(K(), as), StringEntry(L(), db)]
403414
404415
405416
406-@Callable(cQ)
407-func put (cZ,da) = {
408- let db = aA()
409- let dc = valueOrErrorMessage(addressFromString(db[w]), "Wr st addr")
410- let dd = valueOrErrorMessage(addressFromString(db[x]), "Wr sl addr")
411- if ((0 > cZ))
412- then throw("Invalid slippage.")
413- else if ((size(cQ.payments) != 2))
417+@Callable(cT)
418+func put (dc,dd) = {
419+ let de = aA()
420+ let df = valueOrErrorMessage(addressFromString(de[w]), "Wr st addr")
421+ let dg = valueOrErrorMessage(addressFromString(de[x]), "Wr sl addr")
422+ if ((0 > dc))
423+ then throw("Invalid slippage")
424+ else if ((size(cT.payments) != 2))
414425 then throw("2 pmnts expected")
415426 else {
416- let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], cZ, true, false, 0, "")
417- let cy = de._2
418- let df = de._7
419- let bR = de._9
420- let cz = de._10
421- let cA = de._11
422- let bz = de._12
423- let bA = de._13
424- let dg = invoke(as, "emit", [cy], nil)
425- if ((dg == dg))
427+ let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dc, true, false, 0, "")
428+ let cy = dh._2
429+ let di = dh._7
430+ let bR = dh._9
431+ let cz = dh._10
432+ let cA = dh._11
433+ let bz = dh._12
434+ let bA = dh._13
435+ let dj = invoke(as, "emit", [cy], nil)
436+ if ((dj == dj))
426437 then {
427- let dh = if ((cz > 0))
428- then invoke(dd, "put", nil, [AttachedPayment(bz, cz)])
438+ let dk = if ((cz > 0))
439+ then invoke(dg, "put", nil, [AttachedPayment(bz, cz)])
429440 else nil
430- if ((dh == dh))
441+ if ((dk == dk))
431442 then {
432- let di = if ((cA > 0))
433- then invoke(dd, "put", nil, [AttachedPayment(bA, cA)])
443+ let dl = if ((cA > 0))
444+ then invoke(dg, "put", nil, [AttachedPayment(bA, cA)])
434445 else nil
435- if ((di == di))
446+ if ((dl == dl))
436447 then {
437- let dj = if (da)
448+ let dm = if (dd)
438449 then {
439- let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
440- if ((dk == dk))
450+ let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
451+ if ((dn == dn))
441452 then nil
442453 else throw("Strict value is not equal to itself.")
443454 }
444- else [ScriptTransfer(cQ.caller, cy, df)]
445- (bR ++ dj)
455+ else [ScriptTransfer(cT.caller, cy, di)]
456+ (bR ++ dm)
446457 }
447458 else throw("Strict value is not equal to itself.")
448459 }
454465
455466
456467
457-@Callable(cQ)
458-func putOneTkn (dl,dm,dn,aY,da) = {
468+@Callable(cT)
469+func putOneTkn (do,dp,dq,aY,dd) = {
459470 let bk = aA()
460- let dc = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
461- let dd = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
462- let do = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
463- let dp = aw()
464- let bz = dp[q]
465- let bA = dp[r]
466- let bB = parseIntValue(dp[s])
467- let bC = parseIntValue(dp[t])
471+ let df = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
472+ let dg = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
473+ let dr = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
474+ let ds = aw()
475+ let bz = ds[q]
476+ let bA = ds[r]
477+ let bB = parseIntValue(ds[s])
478+ let bC = parseIntValue(ds[t])
468479 if (if (if (if ((0 >= aY))
469480 then true
470- else (0 >= dl))
481+ else (0 >= do))
471482 then true
472- else (0 >= dm))
483+ else (0 >= dp))
473484 then true
474- else (0 >= dn))
485+ else (0 >= dq))
475486 then throw("Wrong params")
476- else if ((size(cQ.payments) != 1))
487+ else if ((size(cT.payments) != 1))
477488 then throw("1 pmnt expected")
478489 else {
479- let cR = value(cQ.payments[0])
480- let bv = toBase58String(value(cR.assetId))
481- let ca = cR.amount
490+ let cU = value(cT.payments[0])
491+ let bv = toBase58String(value(cU.assetId))
492+ let ca = cU.amount
482493 let bF = aQ(bz)
483494 let bH = aQ(bA)
484- let dq = if ((bv == bz))
485- then $Tuple6((bF - ca), bH, (ca - dl), dm, 0, 0)
495+ let dt = if ((bv == bz))
496+ then $Tuple6((bF - ca), bH, (ca - do), dp, 0, 0)
486497 else if ((bv == bA))
487- then $Tuple6(bF, (bH - ca), 0, 0, (ca - dm), dl)
498+ then $Tuple6(bF, (bH - ca), 0, 0, (ca - dp), do)
488499 else throw("wrong pmtAssetId")
489- let dr = dq._1
490- let ds = dq._2
491- let dt = dq._3
492- let du = dq._4
493- let dv = dq._5
494- let dw = dq._6
495- let dx = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
496- let dy = invoke(do, "calcD", [toString(toBigInt(((dr + dt) - dw))), toString(toBigInt(((ds + dv) - du))), at, f, g], nil)
497- let dz = parseBigIntValue(al(dx))
498- let dA = parseBigIntValue(al(dy))
499- let dB = aV(dA, dz, toBigInt(1000))
500- if ((dB == dB))
500+ let du = dt._1
501+ let dv = dt._2
502+ let dw = dt._3
503+ let dx = dt._4
504+ let dy = dt._5
505+ let dz = dt._6
506+ let dA = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
507+ let dB = invoke(dr, "calcD", [toString(toBigInt(((du + dw) - dz))), toString(toBigInt(((dv + dy) - dx))), at, f, g], nil)
508+ let dC = aV(parseBigIntValue(al(dB)), parseBigIntValue(al(dA)), toBigInt(1000))
509+ if ((dC == dC))
501510 then {
502- let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(fromBase58String(bz), dl), AttachedPayment(fromBase58String(bA), dm), 50000000000, true, true, ca, bv)
503- let dC = de._2
504- let df = de._7
505- let bR = de._9
506- let cz = de._10
507- let cA = de._11
508- let dD = aV(toBigInt(dC), toBigInt(dn), toBigInt(aY))
509- let cy = toInt(dD._2)
510- let dg = invoke(as, "emit", [cy], nil)
511- if ((dg == dg))
511+ let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(fromBase58String(bz), do), AttachedPayment(fromBase58String(bA), dp), 50000000000, true, true, ca, bv)
512+ let dD = dh._2
513+ let di = dh._7
514+ let bR = dh._9
515+ let cz = dh._10
516+ let cA = dh._11
517+ let dE = aV(toBigInt(dD), toBigInt(dq), toBigInt(aY))
518+ let cy = toInt(dE._2)
519+ let dj = invoke(as, "emit", [cy], nil)
520+ if ((dj == dj))
512521 then {
513- let dh = if ((cz > 0))
514- then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
522+ let dk = if ((cz > 0))
523+ then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
515524 else nil
516- if ((dh == dh))
525+ if ((dk == dk))
517526 then {
518- let di = if ((cA > 0))
519- then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
527+ let dl = if ((cA > 0))
528+ then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
520529 else nil
521- if ((di == di))
530+ if ((dl == dl))
522531 then {
523- let dj = if (da)
532+ let dm = if (dd)
524533 then {
525- let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
526- if ((dk == dk))
534+ let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
535+ if ((dn == dn))
527536 then nil
528537 else throw("Strict value is not equal to itself.")
529538 }
530- else [ScriptTransfer(cQ.caller, cy, df)]
531- (bR ++ dj)
539+ else [ScriptTransfer(cT.caller, cy, di)]
540+ (bR ++ dm)
532541 }
533542 else throw("Strict value is not equal to itself.")
534543 }
542551
543552
544553
545-@Callable(cQ)
546-func putForFree (dE) = if ((0 > dE))
554+@Callable(cT)
555+func putForFree (dF) = if ((0 > dF))
547556 then throw("Invalid slippage")
548- else if ((size(cQ.payments) != 2))
549- then throw("2 payments expected")
557+ else if ((size(cT.payments) != 2))
558+ then throw("2 pmnts expected")
550559 else {
551- let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], dE, false, false, 0, "")
552- de._9
560+ let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dF, false, false, 0, "")
561+ dh._9
553562 }
554563
555564
556565
557-@Callable(cQ)
566+@Callable(cT)
558567 func get () = {
559- let cm = cP(cQ)
560- let dF = cm._1
568+ let cm = cS(cT)
569+ let dG = cm._1
561570 let bQ = cm._2
562571 let ca = cm._3
563572 let bv = cm._4
564573 let bR = cm._5
565- let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
566- if ((dG == dG))
574+ let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
575+ if ((dH == dH))
567576 then bR
568577 else throw("Strict value is not equal to itself.")
569578 }
570579
571580
572581
573-@Callable(cQ)
574-func getOneTkn (dH,dI,dJ,dK,aY) = if ((size(cQ.payments) != 1))
575- then throw("1 payment expected")
582+@Callable(cT)
583+func getOneTkn (dI,dJ,dK,dL,aY) = if ((size(cT.payments) != 1))
584+ then throw("1 pmnt expected")
576585 else {
577586 let bk = aw()
578587 let by = bk[p]
581590 let bB = parseIntValue(bk[s])
582591 let bC = parseIntValue(bk[t])
583592 let bD = bk[o]
584- let dL = aA()
585- let do = valueOrErrorMessage(addressFromString(dL[y]), "Wr sl addr")
586- if (if ((dK != bz))
587- then (dK != bA)
593+ let dM = aA()
594+ let dr = valueOrErrorMessage(addressFromString(dM[y]), "Wr sl addr")
595+ if (if ((dL != bz))
596+ then (dL != bA)
588597 else false)
589598 then throw("Wr out as")
590599 else {
591- let dM = if ((dK == bz))
600+ let dN = if ((dL == bz))
592601 then bz
593602 else bA
594- let cR = value(cQ.payments[0])
595- let bx = cQ.caller
596- let bu = toBase58String(cQ.transactionId)
597- let bv = value(cR.assetId)
598- let ca = cR.amount
603+ let cU = value(cT.payments[0])
604+ let bx = cT.caller
605+ let bu = toBase58String(cT.transactionId)
606+ let bv = value(cU.assetId)
607+ let ca = cU.amount
599608 if (if (if (if ((0 > aY))
600- then true
601- else (0 > dH))
602609 then true
603610 else (0 > dI))
604611 then true
605612 else (0 > dJ))
613+ then true
614+ else (0 > dK))
606615 then throw("Wrong params")
607616 else if ((by != toBase58String(bv)))
608617 then throw("Invalid LP")
609618 else {
610- let cW = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
611- let dN = cW._1
612- let dO = cW._2
619+ let cZ = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
620+ let dO = cZ._1
621+ let dP = cZ._2
613622 let bF = aQ(bz)
614623 let bH = aQ(bA)
615- let dP = if ((dK == bz))
616- then $Tuple7((bF - dN), (bH - dO), (dJ - dN), dI, 0, 0, (dN + dH))
617- else if ((dK == bA))
618- then $Tuple7((bF - dN), (bH - dO), 0, 0, (dJ - dO), dH, (dO + dI))
624+ let dQ = if ((dL == bz))
625+ then $Tuple7((bF - dO), (bH - dP), (dK - dO), dJ, 0, 0, (dO + dI))
626+ else if ((dL == bA))
627+ then $Tuple7((bF - dO), (bH - dP), 0, 0, (dK - dP), dI, (dP + dJ))
619628 else throw("wrong outAssetId")
620- let dr = dP._1
621- let ds = dP._2
622- let dt = dP._3
623- let du = dP._4
624- let dv = dP._5
625- let dw = dP._6
626- let dQ = dP._7
627- let dR = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
628- let dS = invoke(do, "calcD", [toString(((dr - dt) + dw)), toString(((ds + du) - dv)), at, f, g], nil)
629- let dB = aV(parseBigIntValue(al(dS)), parseBigIntValue(al(dR)), toBigInt(1000))
630- if ((dB == dB))
629+ let du = dQ._1
630+ let dv = dQ._2
631+ let dw = dQ._3
632+ let dx = dQ._4
633+ let dy = dQ._5
634+ let dz = dQ._6
635+ let dR = dQ._7
636+ let dS = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
637+ let dT = invoke(dr, "calcD", [toString(((du - dw) + dz)), toString(((dv + dx) - dy)), at, f, g], nil)
638+ let dC = aV(parseBigIntValue(al(dT)), parseBigIntValue(al(dS)), toBigInt(1000))
639+ if ((dC == dC))
631640 then {
632- let dT = aV(toBigInt(dQ), toBigInt(dJ), toBigInt(aY))
633- if ((dT == dT))
641+ let dU = aV(toBigInt(dR), toBigInt(dK), toBigInt(aY))
642+ if ((dU == dU))
634643 then {
635- let dU = if ((dK == bz))
636- then $Tuple2(toInt(dT._2), 0)
637- else $Tuple2(0, toInt(dT._2))
644+ let dV = if ((dL == bz))
645+ then $Tuple2(toInt(dU._2), 0)
646+ else $Tuple2(0, toInt(dU._2))
638647 let bJ = aS(z(bH, bC), z(bF, bB))
639648 let bK = C(bJ, a)
640- let bR = [ScriptTransfer(bx, if ((dM == bz))
641- then dU._1
642- else dU._2, if ((dM == "WAVES"))
649+ let bR = [ScriptTransfer(bx, if ((dN == bz))
650+ then dV._1
651+ else dV._2, if ((dN == "WAVES"))
643652 then unit
644- else fromBase58String(dM)), StringEntry(T(toString(bx), bu), aM(dU._1, dU._2, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
653+ else fromBase58String(dN)), StringEntry(T(toString(bx), bu), aM(dV._1, dV._2, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
645654 if ((bR == bR))
646655 then {
647- let dV = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
648- if ((dV == dV))
656+ let dW = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
657+ if ((dW == dW))
649658 then bR
650659 else throw("Strict value is not equal to itself.")
651660 }
660669
661670
662671
663-@Callable(cQ)
664-func getNoLess (dW,dX) = {
665- let cm = cP(cQ)
672+@Callable(cT)
673+func getNoLess (dX,dY) = {
674+ let cm = cS(cT)
666675 let bP = cm._1
667676 let bQ = cm._2
668677 let ca = cm._3
669678 let bv = cm._4
670679 let bR = cm._5
671- if ((dW > bP))
672- then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
673- else if ((dX > bQ))
674- then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dX)))
680+ if ((dX > bP))
681+ then throw(((("Failed: " + toString(bP)) + " < ") + toString(dX)))
682+ else if ((dY > bQ))
683+ then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dY)))
675684 else {
676- let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
677- if ((dG == dG))
685+ let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
686+ if ((dH == dH))
678687 then bR
679688 else throw("Strict value is not equal to itself.")
680689 }
682691
683692
684693
685-@Callable(cQ)
686-func unstakeAndGet (dY) = {
687- let dZ = if ((size(cQ.payments) != 0))
694+@Callable(cT)
695+func unstakeAndGet (dZ) = {
696+ let ea = if ((size(cT.payments) != 0))
688697 then throw("No pmnts expected")
689698 else true
690- if ((dZ == dZ))
699+ if ((ea == ea))
691700 then {
692701 let bk = aw()
693- let ea = aA()
694- let df = fromBase58String(bk[p])
695- let eb = valueOrErrorMessage(addressFromString(ea[w]), "Wr st addr")
696- let ec = invoke(eb, "unstake", [toBase58String(df), dY], nil)
697- if ((ec == ec))
702+ let eb = aA()
703+ let di = fromBase58String(bk[p])
704+ let ec = valueOrErrorMessage(addressFromString(eb[w]), "Wr st addr")
705+ let ed = invoke(ec, "unstake", [toBase58String(di), dZ], nil)
706+ if ((ed == ed))
698707 then {
699- let cW = bt(toBase58String(cQ.transactionId), toBase58String(df), dY, cQ.caller)
700- let bD = parseIntValue(cW._9)
701- let bR = cW._10
702- let ed = if (if (au())
708+ let cZ = bt(toBase58String(cT.transactionId), toBase58String(di), dZ, cT.caller)
709+ let bD = parseIntValue(cZ._9)
710+ let bR = cZ._10
711+ let ee = if (if (au())
703712 then true
704713 else (bD == m))
705- then throw(("Admin blocked: " + toString(bD)))
714+ then throw(("Blocked: " + toString(bD)))
706715 else true
707- if ((ed == ed))
716+ if ((ee == ee))
708717 then {
709- let dG = invoke(as, "burn", [dY], [AttachedPayment(df, dY)])
710- if ((dG == dG))
718+ let dH = invoke(as, "burn", [dZ], [AttachedPayment(di, dZ)])
719+ if ((dH == dH))
711720 then bR
712721 else throw("Strict value is not equal to itself.")
713722 }
720729
721730
722731
723-@Callable(cQ)
724-func activate (ee,ef) = if ((toString(cQ.caller) != toString(as)))
725- then throw("permissions denied")
726- else $Tuple2([StringEntry(U(), ee), StringEntry(V(), ef)], "success")
732+@Callable(cT)
733+func activate (ef,eg) = if ((toString(cT.caller) != toString(as)))
734+ then throw("denied")
735+ else $Tuple2([StringEntry(U(), ef), StringEntry(V(), eg)], "success")
727736
728737
729738
730-@Callable(cQ)
739+@Callable(cT)
731740 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aw())
732741
733742
734743
735-@Callable(cQ)
744+@Callable(cT)
736745 func getAccBalanceWrapperREADONLY (aR) = $Tuple2(nil, aQ(aR))
737746
738747
739748
740-@Callable(cQ)
749+@Callable(cT)
741750 func calcPricesWrapperREADONLY (be,bf,bj) = {
742751 let bs = bi(be, bf, bj)
743752 $Tuple2(nil, [toString(bs[0]), toString(bs[1]), toString(bs[2])])
745754
746755
747756
748-@Callable(cQ)
757+@Callable(cT)
749758 func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
750759
751760
752761
753-@Callable(cQ)
762+@Callable(cT)
754763 func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
755764
756765
757766
758-@Callable(cQ)
767+@Callable(cT)
759768 func calcPriceBigIntWrapperREADONLY (aT,aU) = $Tuple2(nil, toString(aS(parseBigIntValue(aT), parseBigIntValue(aU))))
760769
761770
762771
763-@Callable(cQ)
764-func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eg,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eg, bX, bY, false, 0, ""))
772+@Callable(cT)
773+func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eh,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eh, bX, bY, false, 0, ""))
765774
766775
767776
768-@Callable(cQ)
769-func estimateGetOperationWrapperREADONLY (bu,eh,bw,eg) = {
770- let cm = bt(bu, eh, bw, addressFromStringValue(eg))
777+@Callable(cT)
778+func estimateGetOperationWrapperREADONLY (bu,ei,bw,eh) = {
779+ let cm = bt(bu, ei, bw, addressFromStringValue(eh))
771780 $Tuple2(nil, $Tuple10(cm._1, cm._2, cm._3, cm._4, cm._5, cm._6, cm._7, toString(cm._8), cm._9, cm._10))
772781 }
773782
774783
775-@Verifier(ei)
776-func ej () = {
777- let am = ei
784+@Verifier(ej)
785+func ek () = {
786+ let am = ej
778787 if ($isInstanceOf(am, "Order"))
779788 then {
780- let cD = am
781- let ek = av()
782- let ai = cC(cD)
783- let el = sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
784- let em = sigVerify(cD.bodyBytes, cD.proofs[1], ek)
789+ let cG = am
790+ let el = av()
791+ let ai = cF(cG)
792+ let em = sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey)
793+ let en = sigVerify(cG.bodyBytes, cG.proofs[1], el)
785794 if (if (if (ai)
786- then el
787- else false)
788795 then em
789796 else false)
797+ then en
798+ else false)
790799 then true
791- else ah(ai, el, em)
800+ else ah(ai, em, en)
792801 }
793802 else {
794- let en = valueOrElse(getString(this, L()), i)
795- if ((en == i))
796- then sigVerify(ei.bodyBytes, ei.proofs[0], ei.senderPublicKey)
797- else sigVerify(ei.bodyBytes, ei.proofs[0], fromBase58String(en))
803+ let eo = valueOrElse(getString(this, L()), i)
804+ if ((eo == i))
805+ then sigVerify(ej.bodyBytes, ej.proofs[0], ej.senderPublicKey)
806+ else sigVerify(ej.bodyBytes, ej.proofs[0], fromBase58String(eo))
798807 }
799808 }
800809
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
1414 let f = "100000000"
1515
1616 let g = "1"
1717
1818 let h = "__"
1919
2020 let i = ""
2121
2222 let j = 1
2323
2424 let k = 2
2525
2626 let l = 3
2727
2828 let m = 4
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 5
3939
4040 let s = 6
4141
4242 let t = 7
4343
4444 let u = 8
4545
4646 let v = 9
4747
4848 let w = 1
4949
5050 let x = 7
5151
5252 let y = 10
5353
5454 func z (A,B) = fraction(toBigInt(A), c, toBigInt(B))
5555
5656
5757 func C (D,E) = toInt(fraction(D, toBigInt(E), c))
5858
5959
6060 func F (G,H,I) = fraction(G, H, I)
6161
6262
6363 func J (D) = if ((d > D))
6464 then -(D)
6565 else D
6666
6767
6868 func K () = "%s__factoryContract"
6969
7070
7171 func L () = "%s__managerPublicKey"
7272
7373
7474 func M () = "%s%s__price__last"
7575
7676
7777 func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
7878
7979
8080 func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
8181
8282
8383 func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
8484
8585
8686 func U () = "%s__amountAsset"
8787
8888
8989 func V () = "%s__priceAsset"
9090
9191
9292 func W () = "%s__amp"
9393
9494
9595 func X () = "%s__factoryConfig"
9696
9797
9898 func Y () = "%s%s__matcher__publicKey"
9999
100100
101101 func Z (aa,ab) = (((("%d%d%s__" + aa) + "__") + ab) + "__config")
102102
103103
104104 func ac (ad) = ("%s%s%s__mappings__baseAsset2internalId__" + ad)
105105
106106
107107 func ae () = "%s__shutdown"
108108
109109
110110 func af (ag) = ("%s%s__poolWeight__" + ag)
111111
112112
113113 func ah (ai,aj,ak) = throw(((((("Failed: orderValid=" + toString(ai)) + " senderValid=") + toString(aj)) + " matcherValid=") + toString(ak)))
114114
115115
116116 func al (D) = {
117117 let am = D
118118 if ($isInstanceOf(am, "String"))
119119 then {
120120 let an = am
121121 an
122122 }
123123 else throw("fail cast to String")
124124 }
125125
126126
127127 func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
128128
129129
130130 func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
131131
132132
133133 let as = addressFromStringValue(ao(this, K()))
134134
135135 let at = ao(this, W())
136136
137137 func au () = valueOrElse(getBoolean(as, ae()), false)
138138
139139
140140 func av () = fromBase58String(ao(as, Y()))
141141
142142
143143 func aw () = {
144144 let ax = ao(this, U())
145145 let ay = ao(this, V())
146146 let az = ar(as, ac(ay))
147147 let aa = ar(as, ac(ax))
148148 split(ao(as, Z(toString(aa), toString(az))), h)
149149 }
150150
151151
152152 func aA () = split(ao(as, X()), h)
153153
154154
155155 func aB (aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL)], h)
156156
157157
158158 func aM (aN,aO,aP,aF,aI,aJ) = makeString(["%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aF), toString(aI), toString(aJ)], h)
159159
160160
161161 func aQ (aR) = if ((aR == "WAVES"))
162162 then wavesBalance(this).available
163163 else assetBalance(this, fromBase58String(aR))
164164
165165
166166 func aS (aT,aU) = fraction(aT, c, aU)
167167
168168
169169 func aV (aW,aX,aY) = {
170170 let aZ = fraction((aW - aX), b, aX)
171171 let ba = ((aY - J(aZ)) > d)
172172 if (!(ba))
173173 then throw(((("Too big slippage: " + toString(aZ)) + " vs ") + toString(aY)))
174174 else $Tuple2(ba, min([aW, aX]))
175175 }
176176
177177
178178 func bb (bc,bd,be,bf) = {
179179 let bg = z(be, bc)
180180 let bh = z(bf, bd)
181181 aS(bh, bg)
182182 }
183183
184184
185185 func bi (be,bf,bj) = {
186186 let bk = aw()
187187 let bl = parseIntValue(bk[s])
188188 let bm = parseIntValue(bk[t])
189189 let bn = bb(bl, bm, be, bf)
190190 let aU = z(be, bl)
191191 let aT = z(bf, bm)
192192 let bo = z(bj, a)
193193 let bp = aS(aU, bo)
194194 let bq = aS(aT, bo)
195195 [bn, bp, bq]
196196 }
197197
198198
199199 func br (be,bf,bj) = {
200200 let bs = bi(be, bf, bj)
201201 [C(bs[0], a), C(bs[1], a), C(bs[2], a)]
202202 }
203203
204204
205205 func bt (bu,bv,bw,bx) = {
206206 let bk = aw()
207207 let by = bk[p]
208208 let bz = bk[q]
209209 let bA = bk[r]
210210 let bB = parseIntValue(bk[s])
211211 let bC = parseIntValue(bk[t])
212212 let bD = bk[o]
213213 let bE = valueOrErrorMessage(assetInfo(fromBase58String(by)), "Invalid LP id").quantity
214214 if ((by != bv))
215215 then throw("Invalid pmt asset")
216216 else {
217217 let bF = aQ(bz)
218218 let bG = z(bF, bB)
219219 let bH = aQ(bA)
220220 let bI = z(bH, bC)
221221 let bJ = aS(bI, bG)
222222 let bK = C(bJ, a)
223223 let bL = z(bw, a)
224224 let bM = z(bE, a)
225225 let bN = fraction(bG, bL, bM)
226226 let bO = fraction(bI, bL, bM)
227227 let bP = C(bN, bB)
228228 let bQ = C(bO, bC)
229229 let bR = if ((bu == ""))
230230 then nil
231231 else [ScriptTransfer(bx, bP, if ((bz == "WAVES"))
232232 then unit
233233 else fromBase58String(bz)), ScriptTransfer(bx, bQ, if ((bA == "WAVES"))
234234 then unit
235235 else fromBase58String(bA)), StringEntry(T(toString(bx), bu), aM(bP, bQ, bw, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
236236 $Tuple10(bP, bQ, bz, bA, bF, bH, bE, bJ, bD, bR)
237237 }
238238 }
239239
240240
241241 func bS (bu,aY,bT,bU,bV,bW,bx,bX,bY,bZ,ca,cb) = {
242242 let bk = aw()
243243 let by = fromBase58String(bk[p])
244244 let cc = bk[q]
245245 let cd = bk[r]
246246 let ce = bk[u]
247247 let cf = bk[v]
248248 let cg = parseIntValue(bk[s])
249249 let ch = parseIntValue(bk[t])
250250 let bD = bk[o]
251251 let ci = valueOrErrorMessage(assetInfo(by), "Wr lp as").quantity
252252 let bF = if (bX)
253253 then aQ(cc)
254254 else if (if (bZ)
255255 then (cb == cc)
256256 else false)
257257 then (aQ(cc) - ca)
258258 else if (bZ)
259259 then aQ(cc)
260260 else (aQ(cc) - bT)
261261 let bH = if (bX)
262262 then aQ(cd)
263263 else if (if (bZ)
264264 then (cb == cd)
265265 else false)
266266 then (aQ(cd) - ca)
267267 else if (bZ)
268268 then aQ(cd)
269269 else (aQ(cd) - bV)
270270 let cj = z(bT, cg)
271271 let ck = z(bV, ch)
272272 let cl = aS(ck, cj)
273273 let bG = z(bF, cg)
274274 let bI = z(bH, ch)
275275 let cm = if ((ci == 0))
276276 then {
277277 let bJ = d
278278 let cn = d
279279 let bo = pow((cj * ck), 0, toBigInt(5), 1, 0, DOWN)
280280 $Tuple5(C(bo, a), C(cj, cg), C(ck, ch), aS((bI + ck), (bG + cj)), cn)
281281 }
282282 else {
283283 let bJ = aS(bI, bG)
284284 let co = fraction(J((bJ - cl)), c, bJ)
285285 let cn = z(aY, a)
286286 if (if ((bJ != d))
287287 then (co > cn)
288288 else false)
289289 then throw(((("Price slippage " + toString(co)) + " > ") + toString(cn)))
290290 else {
291291 let bM = z(ci, a)
292292 let cp = fraction(cj, bJ, c)
293293 let cq = fraction(ck, c, bJ)
294294 let cr = if ((cp > ck))
295295 then $Tuple2(cq, ck)
296296 else $Tuple2(cj, cp)
297297 let cs = cr._1
298298 let ct = cr._2
299299 let bo = fraction(bM, ct, bI)
300300 $Tuple5(C(bo, a), C(cs, cg), C(ct, ch), bJ, cn)
301301 }
302302 }
303303 let cu = cm._1
304304 let cv = cm._2
305305 let cw = cm._3
306306 let bK = C(cm._4, a)
307307 let cx = C(cm._5, a)
308308 if ((0 >= cu))
309309 then throw("LP <= 0")
310310 else {
311311 let cy = if (!(bY))
312312 then 0
313313 else cu
314314 let cz = (bT - cv)
315315 let cA = (bV - cw)
316- let cB = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cv, cw, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
317- $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cB, cz, cA, bU, bW)
316+ let cB = if (if (bZ)
317+ then (cb == cc)
318+ else false)
319+ then $Tuple2(ca, 0)
320+ else if (if (bZ)
321+ then (cb == cd)
322+ else false)
323+ then $Tuple2(0, ca)
324+ else $Tuple2(cv, cw)
325+ let cC = cB._1
326+ let cD = cB._2
327+ let cE = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cv, cw, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
328+ $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cE, cz, cA, bU, bW)
318329 }
319330 }
320331
321332
322-func cC (cD) = {
333+func cF (cG) = {
323334 let bk = aw()
324- let cE = bk[q]
325- let cF = bk[r]
335+ let cH = bk[q]
336+ let cI = bk[r]
326337 let bD = parseIntValue(bk[o])
327338 let bl = parseIntValue(bk[s])
328339 let bm = parseIntValue(bk[t])
329- let cG = aQ(cE)
330- let cH = aQ(cF)
331- let bJ = if ((cD.orderType == Buy))
332- then bb(bl, bm, (cG + cD.amount), cH)
333- else bb(bl, bm, (cG - cD.amount), cH)
340+ let cJ = aQ(cH)
341+ let cK = aQ(cI)
342+ let bJ = if ((cG.orderType == Buy))
343+ then bb(bl, bm, (cJ + cG.amount), cK)
344+ else bb(bl, bm, (cJ - cG.amount), cK)
334345 let bK = C(bJ, a)
335346 if (if (if (au())
336347 then true
337348 else (bD == l))
338349 then true
339350 else (bD == m))
340351 then throw("Admin blocked")
341352 else {
342- let cI = cD.assetPair.amountAsset
343- let cJ = if ((cI == unit))
353+ let cL = cG.assetPair.amountAsset
354+ let cM = if ((cL == unit))
344355 then "WAVES"
345- else toBase58String(value(cI))
346- let cK = cD.assetPair.priceAsset
347- let cL = if ((cK == unit))
356+ else toBase58String(value(cL))
357+ let cN = cG.assetPair.priceAsset
358+ let cO = if ((cN == unit))
348359 then "WAVES"
349- else toBase58String(value(cK))
350- if (if ((cJ != cE))
360+ else toBase58String(value(cN))
361+ if (if ((cM != cH))
351362 then true
352- else (cL != cF))
363+ else (cO != cI))
353364 then throw("Wr assets")
354365 else {
355- let cM = cD.price
366+ let cP = cG.price
356367 let ch = fraction(a, bm, bl)
357- let cN = F(cM, a, ch)
358- let cO = if ((cD.orderType == Buy))
359- then (bK >= cN)
360- else (cN >= bK)
368+ let cQ = F(cP, a, ch)
369+ let cR = if ((cG.orderType == Buy))
370+ then (bK >= cQ)
371+ else (cQ >= bK)
361372 true
362373 }
363374 }
364375 }
365376
366377
367-func cP (cQ) = if ((size(cQ.payments) != 1))
368- then throw("1 pmnt expected")
378+func cS (cT) = if ((size(cT.payments) != 1))
379+ then throw("1 pmnt exp")
369380 else {
370- let cR = value(cQ.payments[0])
371- let bv = value(cR.assetId)
372- let ca = cR.amount
373- let cm = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
381+ let cU = value(cT.payments[0])
382+ let bv = value(cU.assetId)
383+ let ca = cU.amount
384+ let cm = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
374385 let bP = cm._1
375386 let bQ = cm._2
376387 let bD = parseIntValue(cm._9)
377388 let bR = cm._10
378389 if (if (au())
379390 then true
380391 else (bD == m))
381- then throw(("Admion blocked: " + toString(bD)))
392+ then throw(("Admin blocked: " + toString(bD)))
382393 else $Tuple5(bP, bQ, ca, bv, bR)
383394 }
384395
385396
386-func cS (cT,S,cU,cV,aY,bY,bZ,ca,cb) = {
387- let cW = bS(S, aY, value(cU).amount, value(cU).assetId, value(cV).amount, value(cV).assetId, cT, false, bY, bZ, ca, cb)
388- let cX = parseIntValue(cW._8)
397+func cV (cW,S,cX,cY,aY,bY,bZ,ca,cb) = {
398+ let cZ = bS(S, aY, value(cX).amount, value(cX).assetId, value(cY).amount, value(cY).assetId, cW, false, bY, bZ, ca, cb)
399+ let da = parseIntValue(cZ._8)
389400 if (if (if (au())
390401 then true
391- else (cX == k))
402+ else (da == k))
392403 then true
393- else (cX == m))
394- then throw(("Admin blocked: " + toString(cX)))
395- else cW
404+ else (da == m))
405+ then throw(("Admin blocked: " + toString(da)))
406+ else cZ
396407 }
397408
398409
399-@Callable(cQ)
400-func constructor (as,cY) = if ((cQ.caller != this))
401- then throw("permission denied")
402- else [StringEntry(K(), as), StringEntry(L(), cY)]
410+@Callable(cT)
411+func constructor (as,db) = if ((cT.caller != this))
412+ then throw("denied")
413+ else [StringEntry(K(), as), StringEntry(L(), db)]
403414
404415
405416
406-@Callable(cQ)
407-func put (cZ,da) = {
408- let db = aA()
409- let dc = valueOrErrorMessage(addressFromString(db[w]), "Wr st addr")
410- let dd = valueOrErrorMessage(addressFromString(db[x]), "Wr sl addr")
411- if ((0 > cZ))
412- then throw("Invalid slippage.")
413- else if ((size(cQ.payments) != 2))
417+@Callable(cT)
418+func put (dc,dd) = {
419+ let de = aA()
420+ let df = valueOrErrorMessage(addressFromString(de[w]), "Wr st addr")
421+ let dg = valueOrErrorMessage(addressFromString(de[x]), "Wr sl addr")
422+ if ((0 > dc))
423+ then throw("Invalid slippage")
424+ else if ((size(cT.payments) != 2))
414425 then throw("2 pmnts expected")
415426 else {
416- let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], cZ, true, false, 0, "")
417- let cy = de._2
418- let df = de._7
419- let bR = de._9
420- let cz = de._10
421- let cA = de._11
422- let bz = de._12
423- let bA = de._13
424- let dg = invoke(as, "emit", [cy], nil)
425- if ((dg == dg))
427+ let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dc, true, false, 0, "")
428+ let cy = dh._2
429+ let di = dh._7
430+ let bR = dh._9
431+ let cz = dh._10
432+ let cA = dh._11
433+ let bz = dh._12
434+ let bA = dh._13
435+ let dj = invoke(as, "emit", [cy], nil)
436+ if ((dj == dj))
426437 then {
427- let dh = if ((cz > 0))
428- then invoke(dd, "put", nil, [AttachedPayment(bz, cz)])
438+ let dk = if ((cz > 0))
439+ then invoke(dg, "put", nil, [AttachedPayment(bz, cz)])
429440 else nil
430- if ((dh == dh))
441+ if ((dk == dk))
431442 then {
432- let di = if ((cA > 0))
433- then invoke(dd, "put", nil, [AttachedPayment(bA, cA)])
443+ let dl = if ((cA > 0))
444+ then invoke(dg, "put", nil, [AttachedPayment(bA, cA)])
434445 else nil
435- if ((di == di))
446+ if ((dl == dl))
436447 then {
437- let dj = if (da)
448+ let dm = if (dd)
438449 then {
439- let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
440- if ((dk == dk))
450+ let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
451+ if ((dn == dn))
441452 then nil
442453 else throw("Strict value is not equal to itself.")
443454 }
444- else [ScriptTransfer(cQ.caller, cy, df)]
445- (bR ++ dj)
455+ else [ScriptTransfer(cT.caller, cy, di)]
456+ (bR ++ dm)
446457 }
447458 else throw("Strict value is not equal to itself.")
448459 }
449460 else throw("Strict value is not equal to itself.")
450461 }
451462 else throw("Strict value is not equal to itself.")
452463 }
453464 }
454465
455466
456467
457-@Callable(cQ)
458-func putOneTkn (dl,dm,dn,aY,da) = {
468+@Callable(cT)
469+func putOneTkn (do,dp,dq,aY,dd) = {
459470 let bk = aA()
460- let dc = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
461- let dd = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
462- let do = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
463- let dp = aw()
464- let bz = dp[q]
465- let bA = dp[r]
466- let bB = parseIntValue(dp[s])
467- let bC = parseIntValue(dp[t])
471+ let df = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
472+ let dg = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
473+ let dr = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
474+ let ds = aw()
475+ let bz = ds[q]
476+ let bA = ds[r]
477+ let bB = parseIntValue(ds[s])
478+ let bC = parseIntValue(ds[t])
468479 if (if (if (if ((0 >= aY))
469480 then true
470- else (0 >= dl))
481+ else (0 >= do))
471482 then true
472- else (0 >= dm))
483+ else (0 >= dp))
473484 then true
474- else (0 >= dn))
485+ else (0 >= dq))
475486 then throw("Wrong params")
476- else if ((size(cQ.payments) != 1))
487+ else if ((size(cT.payments) != 1))
477488 then throw("1 pmnt expected")
478489 else {
479- let cR = value(cQ.payments[0])
480- let bv = toBase58String(value(cR.assetId))
481- let ca = cR.amount
490+ let cU = value(cT.payments[0])
491+ let bv = toBase58String(value(cU.assetId))
492+ let ca = cU.amount
482493 let bF = aQ(bz)
483494 let bH = aQ(bA)
484- let dq = if ((bv == bz))
485- then $Tuple6((bF - ca), bH, (ca - dl), dm, 0, 0)
495+ let dt = if ((bv == bz))
496+ then $Tuple6((bF - ca), bH, (ca - do), dp, 0, 0)
486497 else if ((bv == bA))
487- then $Tuple6(bF, (bH - ca), 0, 0, (ca - dm), dl)
498+ then $Tuple6(bF, (bH - ca), 0, 0, (ca - dp), do)
488499 else throw("wrong pmtAssetId")
489- let dr = dq._1
490- let ds = dq._2
491- let dt = dq._3
492- let du = dq._4
493- let dv = dq._5
494- let dw = dq._6
495- let dx = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
496- let dy = invoke(do, "calcD", [toString(toBigInt(((dr + dt) - dw))), toString(toBigInt(((ds + dv) - du))), at, f, g], nil)
497- let dz = parseBigIntValue(al(dx))
498- let dA = parseBigIntValue(al(dy))
499- let dB = aV(dA, dz, toBigInt(1000))
500- if ((dB == dB))
500+ let du = dt._1
501+ let dv = dt._2
502+ let dw = dt._3
503+ let dx = dt._4
504+ let dy = dt._5
505+ let dz = dt._6
506+ let dA = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
507+ let dB = invoke(dr, "calcD", [toString(toBigInt(((du + dw) - dz))), toString(toBigInt(((dv + dy) - dx))), at, f, g], nil)
508+ let dC = aV(parseBigIntValue(al(dB)), parseBigIntValue(al(dA)), toBigInt(1000))
509+ if ((dC == dC))
501510 then {
502- let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(fromBase58String(bz), dl), AttachedPayment(fromBase58String(bA), dm), 50000000000, true, true, ca, bv)
503- let dC = de._2
504- let df = de._7
505- let bR = de._9
506- let cz = de._10
507- let cA = de._11
508- let dD = aV(toBigInt(dC), toBigInt(dn), toBigInt(aY))
509- let cy = toInt(dD._2)
510- let dg = invoke(as, "emit", [cy], nil)
511- if ((dg == dg))
511+ let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(fromBase58String(bz), do), AttachedPayment(fromBase58String(bA), dp), 50000000000, true, true, ca, bv)
512+ let dD = dh._2
513+ let di = dh._7
514+ let bR = dh._9
515+ let cz = dh._10
516+ let cA = dh._11
517+ let dE = aV(toBigInt(dD), toBigInt(dq), toBigInt(aY))
518+ let cy = toInt(dE._2)
519+ let dj = invoke(as, "emit", [cy], nil)
520+ if ((dj == dj))
512521 then {
513- let dh = if ((cz > 0))
514- then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
522+ let dk = if ((cz > 0))
523+ then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
515524 else nil
516- if ((dh == dh))
525+ if ((dk == dk))
517526 then {
518- let di = if ((cA > 0))
519- then invoke(dd, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
527+ let dl = if ((cA > 0))
528+ then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
520529 else nil
521- if ((di == di))
530+ if ((dl == dl))
522531 then {
523- let dj = if (da)
532+ let dm = if (dd)
524533 then {
525- let dk = invoke(dc, "stake", nil, [AttachedPayment(df, cy)])
526- if ((dk == dk))
534+ let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
535+ if ((dn == dn))
527536 then nil
528537 else throw("Strict value is not equal to itself.")
529538 }
530- else [ScriptTransfer(cQ.caller, cy, df)]
531- (bR ++ dj)
539+ else [ScriptTransfer(cT.caller, cy, di)]
540+ (bR ++ dm)
532541 }
533542 else throw("Strict value is not equal to itself.")
534543 }
535544 else throw("Strict value is not equal to itself.")
536545 }
537546 else throw("Strict value is not equal to itself.")
538547 }
539548 else throw("Strict value is not equal to itself.")
540549 }
541550 }
542551
543552
544553
545-@Callable(cQ)
546-func putForFree (dE) = if ((0 > dE))
554+@Callable(cT)
555+func putForFree (dF) = if ((0 > dF))
547556 then throw("Invalid slippage")
548- else if ((size(cQ.payments) != 2))
549- then throw("2 payments expected")
557+ else if ((size(cT.payments) != 2))
558+ then throw("2 pmnts expected")
550559 else {
551- let de = cS(toString(cQ.caller), toBase58String(cQ.transactionId), AttachedPayment(value(cQ.payments[0]).assetId, value(cQ.payments[0]).amount), cQ.payments[1], dE, false, false, 0, "")
552- de._9
560+ let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dF, false, false, 0, "")
561+ dh._9
553562 }
554563
555564
556565
557-@Callable(cQ)
566+@Callable(cT)
558567 func get () = {
559- let cm = cP(cQ)
560- let dF = cm._1
568+ let cm = cS(cT)
569+ let dG = cm._1
561570 let bQ = cm._2
562571 let ca = cm._3
563572 let bv = cm._4
564573 let bR = cm._5
565- let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
566- if ((dG == dG))
574+ let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
575+ if ((dH == dH))
567576 then bR
568577 else throw("Strict value is not equal to itself.")
569578 }
570579
571580
572581
573-@Callable(cQ)
574-func getOneTkn (dH,dI,dJ,dK,aY) = if ((size(cQ.payments) != 1))
575- then throw("1 payment expected")
582+@Callable(cT)
583+func getOneTkn (dI,dJ,dK,dL,aY) = if ((size(cT.payments) != 1))
584+ then throw("1 pmnt expected")
576585 else {
577586 let bk = aw()
578587 let by = bk[p]
579588 let bz = bk[q]
580589 let bA = bk[r]
581590 let bB = parseIntValue(bk[s])
582591 let bC = parseIntValue(bk[t])
583592 let bD = bk[o]
584- let dL = aA()
585- let do = valueOrErrorMessage(addressFromString(dL[y]), "Wr sl addr")
586- if (if ((dK != bz))
587- then (dK != bA)
593+ let dM = aA()
594+ let dr = valueOrErrorMessage(addressFromString(dM[y]), "Wr sl addr")
595+ if (if ((dL != bz))
596+ then (dL != bA)
588597 else false)
589598 then throw("Wr out as")
590599 else {
591- let dM = if ((dK == bz))
600+ let dN = if ((dL == bz))
592601 then bz
593602 else bA
594- let cR = value(cQ.payments[0])
595- let bx = cQ.caller
596- let bu = toBase58String(cQ.transactionId)
597- let bv = value(cR.assetId)
598- let ca = cR.amount
603+ let cU = value(cT.payments[0])
604+ let bx = cT.caller
605+ let bu = toBase58String(cT.transactionId)
606+ let bv = value(cU.assetId)
607+ let ca = cU.amount
599608 if (if (if (if ((0 > aY))
600- then true
601- else (0 > dH))
602609 then true
603610 else (0 > dI))
604611 then true
605612 else (0 > dJ))
613+ then true
614+ else (0 > dK))
606615 then throw("Wrong params")
607616 else if ((by != toBase58String(bv)))
608617 then throw("Invalid LP")
609618 else {
610- let cW = bt(toBase58String(cQ.transactionId), toBase58String(bv), ca, cQ.caller)
611- let dN = cW._1
612- let dO = cW._2
619+ let cZ = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
620+ let dO = cZ._1
621+ let dP = cZ._2
613622 let bF = aQ(bz)
614623 let bH = aQ(bA)
615- let dP = if ((dK == bz))
616- then $Tuple7((bF - dN), (bH - dO), (dJ - dN), dI, 0, 0, (dN + dH))
617- else if ((dK == bA))
618- then $Tuple7((bF - dN), (bH - dO), 0, 0, (dJ - dO), dH, (dO + dI))
624+ let dQ = if ((dL == bz))
625+ then $Tuple7((bF - dO), (bH - dP), (dK - dO), dJ, 0, 0, (dO + dI))
626+ else if ((dL == bA))
627+ then $Tuple7((bF - dO), (bH - dP), 0, 0, (dK - dP), dI, (dP + dJ))
619628 else throw("wrong outAssetId")
620- let dr = dP._1
621- let ds = dP._2
622- let dt = dP._3
623- let du = dP._4
624- let dv = dP._5
625- let dw = dP._6
626- let dQ = dP._7
627- let dR = invoke(do, "calcD", [toString(dr), toString(ds), at, f, g], nil)
628- let dS = invoke(do, "calcD", [toString(((dr - dt) + dw)), toString(((ds + du) - dv)), at, f, g], nil)
629- let dB = aV(parseBigIntValue(al(dS)), parseBigIntValue(al(dR)), toBigInt(1000))
630- if ((dB == dB))
629+ let du = dQ._1
630+ let dv = dQ._2
631+ let dw = dQ._3
632+ let dx = dQ._4
633+ let dy = dQ._5
634+ let dz = dQ._6
635+ let dR = dQ._7
636+ let dS = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
637+ let dT = invoke(dr, "calcD", [toString(((du - dw) + dz)), toString(((dv + dx) - dy)), at, f, g], nil)
638+ let dC = aV(parseBigIntValue(al(dT)), parseBigIntValue(al(dS)), toBigInt(1000))
639+ if ((dC == dC))
631640 then {
632- let dT = aV(toBigInt(dQ), toBigInt(dJ), toBigInt(aY))
633- if ((dT == dT))
641+ let dU = aV(toBigInt(dR), toBigInt(dK), toBigInt(aY))
642+ if ((dU == dU))
634643 then {
635- let dU = if ((dK == bz))
636- then $Tuple2(toInt(dT._2), 0)
637- else $Tuple2(0, toInt(dT._2))
644+ let dV = if ((dL == bz))
645+ then $Tuple2(toInt(dU._2), 0)
646+ else $Tuple2(0, toInt(dU._2))
638647 let bJ = aS(z(bH, bC), z(bF, bB))
639648 let bK = C(bJ, a)
640- let bR = [ScriptTransfer(bx, if ((dM == bz))
641- then dU._1
642- else dU._2, if ((dM == "WAVES"))
649+ let bR = [ScriptTransfer(bx, if ((dN == bz))
650+ then dV._1
651+ else dV._2, if ((dN == "WAVES"))
643652 then unit
644- else fromBase58String(dM)), StringEntry(T(toString(bx), bu), aM(dU._1, dU._2, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
653+ else fromBase58String(dN)), StringEntry(T(toString(bx), bu), aM(dV._1, dV._2, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
645654 if ((bR == bR))
646655 then {
647- let dV = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
648- if ((dV == dV))
656+ let dW = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
657+ if ((dW == dW))
649658 then bR
650659 else throw("Strict value is not equal to itself.")
651660 }
652661 else throw("Strict value is not equal to itself.")
653662 }
654663 else throw("Strict value is not equal to itself.")
655664 }
656665 else throw("Strict value is not equal to itself.")
657666 }
658667 }
659668 }
660669
661670
662671
663-@Callable(cQ)
664-func getNoLess (dW,dX) = {
665- let cm = cP(cQ)
672+@Callable(cT)
673+func getNoLess (dX,dY) = {
674+ let cm = cS(cT)
666675 let bP = cm._1
667676 let bQ = cm._2
668677 let ca = cm._3
669678 let bv = cm._4
670679 let bR = cm._5
671- if ((dW > bP))
672- then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
673- else if ((dX > bQ))
674- then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dX)))
680+ if ((dX > bP))
681+ then throw(((("Failed: " + toString(bP)) + " < ") + toString(dX)))
682+ else if ((dY > bQ))
683+ then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dY)))
675684 else {
676- let dG = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
677- if ((dG == dG))
685+ let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
686+ if ((dH == dH))
678687 then bR
679688 else throw("Strict value is not equal to itself.")
680689 }
681690 }
682691
683692
684693
685-@Callable(cQ)
686-func unstakeAndGet (dY) = {
687- let dZ = if ((size(cQ.payments) != 0))
694+@Callable(cT)
695+func unstakeAndGet (dZ) = {
696+ let ea = if ((size(cT.payments) != 0))
688697 then throw("No pmnts expected")
689698 else true
690- if ((dZ == dZ))
699+ if ((ea == ea))
691700 then {
692701 let bk = aw()
693- let ea = aA()
694- let df = fromBase58String(bk[p])
695- let eb = valueOrErrorMessage(addressFromString(ea[w]), "Wr st addr")
696- let ec = invoke(eb, "unstake", [toBase58String(df), dY], nil)
697- if ((ec == ec))
702+ let eb = aA()
703+ let di = fromBase58String(bk[p])
704+ let ec = valueOrErrorMessage(addressFromString(eb[w]), "Wr st addr")
705+ let ed = invoke(ec, "unstake", [toBase58String(di), dZ], nil)
706+ if ((ed == ed))
698707 then {
699- let cW = bt(toBase58String(cQ.transactionId), toBase58String(df), dY, cQ.caller)
700- let bD = parseIntValue(cW._9)
701- let bR = cW._10
702- let ed = if (if (au())
708+ let cZ = bt(toBase58String(cT.transactionId), toBase58String(di), dZ, cT.caller)
709+ let bD = parseIntValue(cZ._9)
710+ let bR = cZ._10
711+ let ee = if (if (au())
703712 then true
704713 else (bD == m))
705- then throw(("Admin blocked: " + toString(bD)))
714+ then throw(("Blocked: " + toString(bD)))
706715 else true
707- if ((ed == ed))
716+ if ((ee == ee))
708717 then {
709- let dG = invoke(as, "burn", [dY], [AttachedPayment(df, dY)])
710- if ((dG == dG))
718+ let dH = invoke(as, "burn", [dZ], [AttachedPayment(di, dZ)])
719+ if ((dH == dH))
711720 then bR
712721 else throw("Strict value is not equal to itself.")
713722 }
714723 else throw("Strict value is not equal to itself.")
715724 }
716725 else throw("Strict value is not equal to itself.")
717726 }
718727 else throw("Strict value is not equal to itself.")
719728 }
720729
721730
722731
723-@Callable(cQ)
724-func activate (ee,ef) = if ((toString(cQ.caller) != toString(as)))
725- then throw("permissions denied")
726- else $Tuple2([StringEntry(U(), ee), StringEntry(V(), ef)], "success")
732+@Callable(cT)
733+func activate (ef,eg) = if ((toString(cT.caller) != toString(as)))
734+ then throw("denied")
735+ else $Tuple2([StringEntry(U(), ef), StringEntry(V(), eg)], "success")
727736
728737
729738
730-@Callable(cQ)
739+@Callable(cT)
731740 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aw())
732741
733742
734743
735-@Callable(cQ)
744+@Callable(cT)
736745 func getAccBalanceWrapperREADONLY (aR) = $Tuple2(nil, aQ(aR))
737746
738747
739748
740-@Callable(cQ)
749+@Callable(cT)
741750 func calcPricesWrapperREADONLY (be,bf,bj) = {
742751 let bs = bi(be, bf, bj)
743752 $Tuple2(nil, [toString(bs[0]), toString(bs[1]), toString(bs[2])])
744753 }
745754
746755
747756
748-@Callable(cQ)
757+@Callable(cT)
749758 func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
750759
751760
752761
753-@Callable(cQ)
762+@Callable(cT)
754763 func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
755764
756765
757766
758-@Callable(cQ)
767+@Callable(cT)
759768 func calcPriceBigIntWrapperREADONLY (aT,aU) = $Tuple2(nil, toString(aS(parseBigIntValue(aT), parseBigIntValue(aU))))
760769
761770
762771
763-@Callable(cQ)
764-func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eg,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eg, bX, bY, false, 0, ""))
772+@Callable(cT)
773+func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eh,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eh, bX, bY, false, 0, ""))
765774
766775
767776
768-@Callable(cQ)
769-func estimateGetOperationWrapperREADONLY (bu,eh,bw,eg) = {
770- let cm = bt(bu, eh, bw, addressFromStringValue(eg))
777+@Callable(cT)
778+func estimateGetOperationWrapperREADONLY (bu,ei,bw,eh) = {
779+ let cm = bt(bu, ei, bw, addressFromStringValue(eh))
771780 $Tuple2(nil, $Tuple10(cm._1, cm._2, cm._3, cm._4, cm._5, cm._6, cm._7, toString(cm._8), cm._9, cm._10))
772781 }
773782
774783
775-@Verifier(ei)
776-func ej () = {
777- let am = ei
784+@Verifier(ej)
785+func ek () = {
786+ let am = ej
778787 if ($isInstanceOf(am, "Order"))
779788 then {
780- let cD = am
781- let ek = av()
782- let ai = cC(cD)
783- let el = sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
784- let em = sigVerify(cD.bodyBytes, cD.proofs[1], ek)
789+ let cG = am
790+ let el = av()
791+ let ai = cF(cG)
792+ let em = sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey)
793+ let en = sigVerify(cG.bodyBytes, cG.proofs[1], el)
785794 if (if (if (ai)
786- then el
787- else false)
788795 then em
789796 else false)
797+ then en
798+ else false)
790799 then true
791- else ah(ai, el, em)
800+ else ah(ai, em, en)
792801 }
793802 else {
794- let en = valueOrElse(getString(this, L()), i)
795- if ((en == i))
796- then sigVerify(ei.bodyBytes, ei.proofs[0], ei.senderPublicKey)
797- else sigVerify(ei.bodyBytes, ei.proofs[0], fromBase58String(en))
803+ let eo = valueOrElse(getString(this, L()), i)
804+ if ((eo == i))
805+ then sigVerify(ej.bodyBytes, ej.proofs[0], ej.senderPublicKey)
806+ else sigVerify(ej.bodyBytes, ej.proofs[0], fromBase58String(eo))
798807 }
799808 }
800809

github/deemru/w8io/169f3d6 
242.96 ms