tx · FKXciMLAskSxUe2EW8sfWa6VXQQouEP75nHAXDE4igc1

3Ms7SA6E2ntk65GZD46LCZyGJjc4XNGuWpw:  -0.01400000 Waves

2022.03.11 17:49 [1959429] smart account 3Ms7SA6E2ntk65GZD46LCZyGJjc4XNGuWpw > SELF 0.00000000 Waves

{ "type": 13, "id": "FKXciMLAskSxUe2EW8sfWa6VXQQouEP75nHAXDE4igc1", "fee": 1400000, "feeAssetId": null, "timestamp": 1647010178016, "version": 1, "sender": "3Ms7SA6E2ntk65GZD46LCZyGJjc4XNGuWpw", "senderPublicKey": "Xr66kzm4ArQMXWGfdhubHQuHx1uwhWdjthS9EP1ayUn", "proofs": [ "1iUgonMxErzsNXiWorycbJnrKA2XuH4QcBGLmsJhFJ6dWis74wfbmnzYqB4cXRApGjQksxwnkMGCifzDCbhRGp3" ], "script": "base64:AAIFAAAAAAAAABUIAhIDCgEIEgASAwoBCBIDCgEIEgAAAAAkAAAAAANTRVACAAAAAl9fAAAAAAZzY2FsZTgAAAAAAAX14QAAAAAAEXBvb2xTdGF0c1ByaWNlS2V5AAAAAAAAAAAEAAAAAA5pZHhQb29sQWRkcmVzcwAAAAAAAAAAAQAAAAANaWR4UG9vbFN0YXR1cwAAAAAAAAAAAgAAAAAQaWR4UG9vbExQQXNzZXRJZAAAAAAAAAAAAwAAAAANaWR4QW10QXNzZXRJZAAAAAAAAAAABAAAAAAPaWR4UHJpY2VBc3NldElkAAAAAAAAAAAFAAAAAA5pZHhBbXRBc3NldERjbQAAAAAAAAAABgAAAAAQaWR4UHJpY2VBc3NldERjbQAAAAAAAAAABwAAAAAOaWR4SUFtdEFzc2V0SWQAAAAAAAAAAAgAAAAAEGlkeElQcmljZUFzc2V0SWQAAAAAAAAAAAkAAAAADWlkeExQQXNzZXREY20AAAAAAAAAAAoAAAAAE2lkeE1hdGNoZXJQdWJsaWNLZXkAAAAAAAAAAAsBAAAADmtleVJlZ2lzdGVyUHV0AAAAAgAAAAtwb29sQWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAslcyVzJXNfX1BfXwUAAAALcG9vbEFkZHJlc3MCAAAAAl9fBQAAAAR0eElkAQAAABFrZXlSZWdpc3RlckludmVzdAAAAAIAAAALcG9vbEFkZHJlc3MAAAAEdHhJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQJXMlcyVzX19pbnZlc3RfXwUAAAALcG9vbEFkZHJlc3MCAAAAAl9fBQAAAAR0eElkAQAAABZrZXlQb29sVG90YWxBbXRCeUFzc2V0AAAAAgAAAAtwb29sQWRkcmVzcwAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA8lcyVzJXNfX3RvdGFsX18FAAAAC3Bvb2xBZGRyZXNzAgAAAAJfXwUAAAAHYXNzZXRJZAEAAAASa2V5RmFjdG9yeUNvbnRyYWN0AAAAAAIAAAATJXNfX2ZhY3RvcnlDb250cmFjdAEAAAAga2V5U2xpcHBhZ2VBbXRQZXJBc3NldEN1bXVsYXRpdmUAAAACAAAAC3Bvb2xBZGRyZXNzAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAAC3Bvb2xBZGRyZXNzAgAAAAJfXwUAAAAHYXNzZXRJZAIAAAAUX19zbGlwcGFnZUN1bXVsYXRpdmUBAAAAEGtleUZhY3RvcnlDb25maWcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAATcG9vbENvbnRyYWN0QWRkcmVzcwIAAAAjX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MlBvb2xBc3NldHMBAAAAH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQAAAABAAAAEWludGVybmFsQmFzZUFzc2V0CQABLAAAAAICAAAAKCVzJXMlZF9fbWFwcGluZ3NfX2ludGVybmFsMmJhc2VBc3NldElkX18JAAGkAAAAAQUAAAARaW50ZXJuYWxCYXNlQXNzZXQBAAAADWtleVBvb2xDb25maWcAAAACAAAACWlBbXRBc3NldAAAAAtpUHJpY2VBc3NldAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglZCVkJXNfXwUAAAAJaUFtdEFzc2V0AgAAAAJfXwUAAAALaVByaWNlQXNzZXQCAAAACF9fY29uZmlnAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAIAAAAMJXNfX3NodXRkb3duAQAAAA1rZXlQb29sV2VpZ2h0AAAAAQAAAA9jb250cmFjdEFkZHJlc3MJAAEsAAAAAgIAAAASJXMlc19fcG9vbFdlaWdodF9fBQAAAA9jb250cmFjdEFkZHJlc3MBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABQlc19fbWFuYWdlclB1YmxpY0tleQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAD2ZhY3RvcnlDb250cmFj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AQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlGYWN0b3J5Q29udHJhY3QAAAAABQAAAA9mYWN0b3J5Q29udHJhY3QFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAADcHV0AAAAAAQAAAAEcG9vbAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAC3BtdEFtdEFzc2V0CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApwbXRBc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAC3BtdEFtdEFzc2V0AAAAB2Fzc2V0SWQCAAAABVdBVkVTCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAtwbXRBbXRBc3NldAAAAAdhc3NldElkBAAAAAtwbXRBc3NldEFtdAgFAAAAC3BtdEFtdEFzc2V0AAAABmFtb3VudAQAAAAKcG9vbEFzc2V0cwkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABBQAAAARwb29sAgAAAA5JbnZhbGlkIGNhbGxlcgUAAAADU0VQBAAAAA1hbW91bnRBc3NldElkCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKcG9vbEFzc2V0cwAAAAAAAAAAAQQAAAAMcHJpY2VBc3NldElkCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKcG9vbEFzc2V0cwAAAAAAAAAAAgQAAAALYW1vdW50QXNzZXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAANYW1vdW50QXNzZXRJZAIAAAARQ2Fubm90IGZpbmQgYXNzZXQEAAAACnByaWNlQXNzZXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAAMcHJpY2VBc3NldElkAgAAABFDYW5ub3QgZmluZCBhc3NldAQAAAAIdG90YWxBbXQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAARwb29sBQAAAApwbXRBc3NldElkAAAAAAAAAAAABAAAABVjdW11bGF0aXZlU2xpcHBhZ2VBbXQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAIGtleVNsaXBwYWdlQW10UGVyQXNzZXRDdW11bGF0aXZlAAAAAgUAAAAEcG9vbAUAAAAKcG10QXNzZXRJZAAAAAAAAAAAAAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5UmVnaXN0ZXJQdXQAAAACBQAAAARwb29sCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAABFkYXRhUHV0QWN0aW9uSW5mbwAAAAQFAAAACnBtdEFzc2V0SWQFAAAAC3BtdEFzc2V0QW10BQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWa2V5UG9vbFRvdGFsQW10QnlBc3NldAAAAAIFAAAABHBvb2wFAAAACnBtdEFzc2V0SWQJAABkAAAAAgUAAAAIdG90YWxBbXQFAAAAC3BtdEFzc2V0QW10CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAga2V5U2xpcHBhZ2VBbXRQZXJBc3NldEN1bXVsYXRpdmUAAAACBQAAAARwb29sBQAAAApwbXRBc3NldElkCQAAZAAAAAIFAAAAFWN1bXVsYXRpdmVTbGlwcGFnZUFtdAUAAAALcG10QXNzZXRBbXQFAAAAA25pbAAAAAFpAQAAAAZpbnZlc3QAAAABAAAADnBvb2xBZGRyZXNzU3RyBAAAAAtwb29sQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAADnBvb2xBZGRyZXNzU3RyAgAAABRpbnZhbGlkIHBvb2wgYWRkcmVzcwQAAAAKcG9vbEFzc2V0cwkABLUAAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABBQAAAA5wb29sQWRkcmVzc1N0cgIAAAAUSW52YWxpZCBwb29sIHBhc3NlZC4FAAAAA1NFUAQAAAAEYW1JZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQAAAABCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKcG9vbEFzc2V0cwAAAAAAAAAAAQIAAAAWTm8gYXNzZXQgbWFwcGluZyBmb3VuZAQAAAAEcHJJZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAH2tleU1hcHBpbmdzSW50ZXJuYWwyYmFzZUFzc2V0SWQAAAABCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAKcG9vbEFzc2V0cwAAAAAAAAAAAgIAAAAWTm8gYXNzZXQgbWFwcGluZyBmb3VuZAQAAAAJYW1CYWxhbmNlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABZrZXlQb29sVG90YWxBbXRCeUFzc2V0AAAAAgUAAAAOcG9vbEFkZHJlc3NTdHIFAAAABGFtSWQAAAAAAAAAAAAEAAAACXByQmFsYW5jZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAWa2V5UG9vbFRvdGFsQW10QnlBc3NldAAAAAIFAAAADnBvb2xBZGRyZXNzU3RyBQAAAARwcklkAAAAAAAAAAAABAAAAA1lc3RCeVByUmVzdWx0CQAD/AAAAAQFAAAAC3Bvb2xBZGRyZXNzAgAAAB9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZCQAETAAAAAIFAAAACXByQmFsYW5jZQUAAAADbmlsBQAAAANuaWwEAAAADWVzdEJ5QW1SZXN1bHQJAAP8AAAABAUAAAALcG9vbEFkZHJlc3MCAAAAIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZCQAETAAAAAIFAAAACWFtQmFsYW5jZQUAAAADbmlsBQAAAANuaWwEAAAADklkeEVzdEFtQW1vdW50AAAAAAAAAAAHBAAAAA5JZHhFc3RQckFtb3VudAAAAAAAAAAACAQAAAAIZXN0QW1BbXQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIJAAS1AAAAAgkBAAAACGFzU3RyaW5nAAAAAQUAAAANZXN0QnlQclJlc3VsdAUAAAADU0VQBQAAAA5JZHhFc3RBbUFtb3VudAIAAAAmZmFpbCB0byBwYXJzZSBlc3RpbWF0ZWQgYW1Bc3NldCBhbW91bnQEAAAACGVzdFByQW10CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACCQAEtQAAAAIJAQAAAAhhc1N0cmluZwAAAAEFAAAADWVzdEJ5QW1SZXN1bHQFAAAAA1NFUAUAAAAOSWR4RXN0UHJBbW91bnQCAAAAJmZhaWwgdG8gcGFyc2UgZXN0aW1hdGVkIHByQXNzZXQgYW1vdW50BAAAAAskdDA2NjQzNjc0NAMJAABnAAAAAgUAAAAJYW1CYWxhbmNlBQAAAAhlc3RBbUFtdAkABRQAAAACBQAAAAhlc3RBbUFtdAUAAAAJcHJCYWxhbmNlCQAFFAAAAAIFAAAACWFtQmFsYW5jZQUAAAAIZXN0UHJBbXQEAAAABWFtQW10CAUAAAALJHQwNjY0MzY3NDQAAAACXzEEAAAABXByQW10CAUAAAALJHQwNjY0MzY3NDQAAAACXzIEAAAACWFtQXNzZXRJZAMJAAAAAAAAAgUAAAAEYW1JZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAEYW1JZAQAAAAJcHJBc3NldElkAwkAAAAAAAACBQAAAARwcklkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAARwcklkBAAAAAVscFB1dAkAA/wAAAAEBQAAAAtwb29sQWRkcmVzcwIAAAAKcHV0Rm9yRnJlZQkABEwAAAACAAAAAAAAAAPoBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWFtQXNzZXRJZAUAAAAFYW1BbXQJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACXByQXNzZXRJZAUAAAAFcHJBbXQFAAAAA25pbAMJAAAAAAAAAgUAAAAFbHBQdXQFAAAABWxwUHV0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFrZXlSZWdpc3RlckludmVzdAAAAAIFAAAADnBvb2xBZGRyZXNzU3RyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAABRkYXRhSW52ZXN0QWN0aW9uSW5mbwAAAAQFAAAABWFtQW10BQAAAAVwckFtdAUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAA5wb29sQWRkcmVzc1N0cgUAAAAEYW1JZAkAAGUAAAACBQAAAAlhbUJhbGFuY2UFAAAABWFtQW10CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWa2V5UG9vbFRvdGFsQW10QnlBc3NldAAAAAIFAAAADnBvb2xBZGRyZXNzU3RyBQAAAARwcklkCQAAZQAAAAIFAAAACXByQmFsYW5jZQUAAAAFcHJBbXQFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKc2V0TWFuYWdlcgAAAAEAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAAlkAAAABBQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAAAAAAAAgUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5BQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADmNvbmZpcm1NYW5hZ2VyAAAAAAQAAAACcG0JAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAABWhhc1BNAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAABWhhc1BNBQAAAAVoYXNQTQQAAAAHY2hlY2tQTQMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQEAAAAFdmFsdWUAAAABBQAAAAJwbQYJAAACAAAAAQIAAAAbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAdjaGVja1BNBQAAAAdjaGVja1BNCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAAJwbQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAD3RhcmdldFB1YmxpY0tleQQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAUAAAACcGsDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAA90YXJnZXRQdWJsaWNLZXndp/uh", "chainId": 84, "height": 1959429, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7wMyUpr7Wb1fYFUCyBEr2Xw6sAZ8QTkyT2MjHnodhWVS Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let scale8 = 100000000
77
88 let poolStatsPriceKey = 4
99
1010 let idxPoolAddress = 1
1111
1212 let idxPoolStatus = 2
1313
1414 let idxPoolLPAssetId = 3
1515
1616 let idxAmtAssetId = 4
1717
1818 let idxPriceAssetId = 5
1919
2020 let idxAmtAssetDcm = 6
2121
2222 let idxPriceAssetDcm = 7
2323
2424 let idxIAmtAssetId = 8
2525
2626 let idxIPriceAssetId = 9
2727
2828 let idxLPAssetDcm = 10
2929
3030 let idxMatcherPublicKey = 11
3131
3232 func keyRegisterPut (poolAddress,txId) = ((("%s%s%s__P__" + poolAddress) + "__") + txId)
3333
3434
3535 func keyRegisterInvest (poolAddress,txId) = ((("%s%s%s__invest__" + poolAddress) + "__") + txId)
3636
3737
3838 func keyPoolTotalAmtByAsset (poolAddress,assetId) = ((("%s%s%s__total__" + poolAddress) + "__") + assetId)
3939
4040
4141 func keyFactoryContract () = "%s__factoryContract"
4242
4343
4444 func keySlippageAmtPerAssetCumulative (poolAddress,assetId) = (((("%s%s%s__" + poolAddress) + "__") + assetId) + "__slippageCumulative")
4545
4646
4747 func keyFactoryConfig () = "%s__factoryConfig"
4848
4949
5050 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets")
5151
5252
5353 func keyMappingsInternal2baseAssetId (internalBaseAsset) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(internalBaseAsset))
5454
5555
5656 func keyPoolConfig (iAmtAsset,iPriceAsset) = (((("%d%d%s__" + iAmtAsset) + "__") + iPriceAsset) + "__config")
5757
5858
5959 func keyAllPoolsShutdown () = "%s__shutdown"
6060
6161
6262 func keyPoolWeight (contractAddress) = ("%s%s__poolWeight__" + contractAddress)
6363
6464
6565 func keyManagerPublicKey () = "%s__managerPublicKey"
6666
6767
6868 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
6969
7070
7171 let factoryContract = addressFromStringValue(valueOrErrorMessage(getString(this, keyFactoryContract()), "No Factory Acc found."))
7272
7373 func convertAssetId (assetId) = if (!(isDefined(assetId)))
7474 then "WAVES"
7575 else assetId
7676
7777
7878 func dataPutActionInfo (inAssetId,inAssetAmt,txHeight,txTimestamp) = makeString(["%s%d%d%d", inAssetId, toString(inAssetAmt), toString(txHeight), toString(txTimestamp)], SEP)
7979
8080
8181 func dataInvestActionInfo (outAmountAssetAmt,outPriceAssetAmt,txHeight,txTimestamp) = makeString(["%d%d%d%d", toString(outAmountAssetAmt), toString(outPriceAssetAmt), toString(txHeight), toString(txTimestamp)], SEP)
8282
8383
8484 func asString (val) = match val {
8585 case valStr: String =>
8686 valStr
8787 case _ =>
8888 throw("fail to cast into String")
8989 }
9090
9191
9292 func toScale (amt,resScale,curScale) = fraction(amt, resScale, curScale)
9393
9494
9595 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
9696 case s: String =>
9797 fromBase58String(s)
9898 case _: Unit =>
9999 unit
100100 case _ =>
101101 throw("Match error")
102102 }
103103
104104
105105 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
106106 case s: String =>
107107 fromBase58String(s)
108108 case _: Unit =>
109109 unit
110110 case _ =>
111111 throw("Match error")
112112 }
113113
114114
115115 func mustManager (i) = {
116116 let pd = throw("Permission denied")
117117 match managerPublicKeyOrUnit() {
118118 case pk: ByteVector =>
119119 if ((i.callerPublicKey == pk))
120120 then true
121121 else pd
122122 case _: Unit =>
123123 if ((i.caller == this))
124124 then true
125125 else pd
126126 case _ =>
127127 throw("Match error")
128128 }
129129 }
130130
131131
132132 @Callable(i)
133133 func constructor (factoryContract) = {
134134 let checkCaller = mustManager(i)
135135 if ((checkCaller == checkCaller))
136136 then [StringEntry(keyFactoryContract(), factoryContract)]
137137 else throw("Strict value is not equal to itself.")
138138 }
139139
140140
141141
142142 @Callable(i)
143143 func put () = {
144144 let pool = toString(i.caller)
145145 let pmtAmtAsset = value(i.payments[0])
146146 let pmtAssetId = if (!(isDefined(pmtAmtAsset.assetId)))
147147 then "WAVES"
148148 else toBase58String(value(pmtAmtAsset.assetId))
149149 let pmtAssetAmt = pmtAmtAsset.amount
150150 let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(pool)), "Invalid caller"), SEP)
151151 let amountAssetId = parseIntValue(poolAssets[1])
152152 let priceAssetId = parseIntValue(poolAssets[2])
153153 let amountAsset = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(amountAssetId)), "Cannot find asset")
154154 let priceAsset = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(priceAssetId)), "Cannot find asset")
155155 let totalAmt = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(pool, pmtAssetId)), 0)
156156 let cumulativeSlippageAmt = valueOrElse(getInteger(this, keySlippageAmtPerAssetCumulative(pool, pmtAssetId)), 0)
157157 [StringEntry(keyRegisterPut(pool, toBase58String(i.transactionId)), dataPutActionInfo(pmtAssetId, pmtAssetAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(pool, pmtAssetId), (totalAmt + pmtAssetAmt)), IntegerEntry(keySlippageAmtPerAssetCumulative(pool, pmtAssetId), (cumulativeSlippageAmt + pmtAssetAmt))]
158158 }
159159
160160
161161
162162 @Callable(i)
163163 func invest (poolAddressStr) = {
164164 let poolAddress = valueOrErrorMessage(addressFromString(poolAddressStr), "invalid pool address")
165165 let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(poolAddressStr)), "Invalid pool passed."), SEP)
166166 let amId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[1]))), "No asset mapping found")
167167 let prId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[2]))), "No asset mapping found")
168168 let amBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, amId)), 0)
169169 let prBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, prId)), 0)
170170 let estByPrResult = invoke(poolAddress, "evaluatePutByPriceAssetREADONLY", [prBalance], nil)
171171 let estByAmResult = invoke(poolAddress, "evaluatePutByAmountAssetREADONLY", [amBalance], nil)
172172 let IdxEstAmAmount = 7
173173 let IdxEstPrAmount = 8
174174 let estAmAmt = valueOrErrorMessage(parseIntValue(split(asString(estByPrResult), SEP)[IdxEstAmAmount]), "fail to parse estimated amAsset amount")
175175 let estPrAmt = valueOrErrorMessage(parseIntValue(split(asString(estByAmResult), SEP)[IdxEstPrAmount]), "fail to parse estimated prAsset amount")
176176 let $t066436744 = if ((amBalance >= estAmAmt))
177177 then $Tuple2(estAmAmt, prBalance)
178178 else $Tuple2(amBalance, estPrAmt)
179179 let amAmt = $t066436744._1
180180 let prAmt = $t066436744._2
181181 let amAssetId = if ((amId == "WAVES"))
182182 then unit
183183 else fromBase58String(amId)
184184 let prAssetId = if ((prId == "WAVES"))
185185 then unit
186186 else fromBase58String(prId)
187187 let lpPut = invoke(poolAddress, "putForFree", [1000], [AttachedPayment(amAssetId, amAmt), AttachedPayment(prAssetId, prAmt)])
188188 if ((lpPut == lpPut))
189189 then [StringEntry(keyRegisterInvest(poolAddressStr, toBase58String(i.transactionId)), dataInvestActionInfo(amAmt, prAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, amId), (amBalance - amAmt)), IntegerEntry(keyPoolTotalAmtByAsset(poolAddressStr, prId), (prBalance - prAmt))]
190190 else throw("Strict value is not equal to itself.")
191191 }
192192
193193
194194
195195 @Callable(i)
196196 func setManager (pendingManagerPublicKey) = {
197197 let checkCaller = mustManager(i)
198198 if ((checkCaller == checkCaller))
199199 then {
200200 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
201201 if ((checkManagerPublicKey == checkManagerPublicKey))
202202 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
203203 else throw("Strict value is not equal to itself.")
204204 }
205205 else throw("Strict value is not equal to itself.")
206206 }
207207
208208
209209
210210 @Callable(i)
211211 func confirmManager () = {
212212 let pm = pendingManagerPublicKeyOrUnit()
213213 let hasPM = if (isDefined(pm))
214214 then true
215215 else throw("No pending manager")
216216 if ((hasPM == hasPM))
217217 then {
218218 let checkPM = if ((i.callerPublicKey == value(pm)))
219219 then true
220220 else throw("You are not pending manager")
221221 if ((checkPM == checkPM))
222222 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
223223 else throw("Strict value is not equal to itself.")
224224 }
225225 else throw("Strict value is not equal to itself.")
226226 }
227227
228228
229229 @Verifier(tx)
230230 func verify () = {
231231 let targetPublicKey = match managerPublicKeyOrUnit() {
232232 case pk: ByteVector =>
233233 pk
234234 case _: Unit =>
235235 tx.senderPublicKey
236236 case _ =>
237237 throw("Match error")
238238 }
239239 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
240240 }
241241

github/deemru/w8io/3ef1775 
48.24 ms