tx · 5WgDKfpRCY65PQwndBsYmf6g8tTqc8G8iyDRrCJAwd4t 3MxYfWouiQamMnVoJJDMXNWDMJGyWBShmAK: -0.01000000 Waves 2021.11.02 11:18 [1773114] smart account 3MxYfWouiQamMnVoJJDMXNWDMJGyWBShmAK > SELF 0.00000000 Waves
{ "type": 13, "id": "5WgDKfpRCY65PQwndBsYmf6g8tTqc8G8iyDRrCJAwd4t", "fee": 1000000, "feeAssetId": null, "timestamp": 1635841108609, "version": 1, "sender": "3MxYfWouiQamMnVoJJDMXNWDMJGyWBShmAK", "senderPublicKey": "3KZkpHRZNoTSqiKJGE6qdHus25re5iVAEZuKAMGikSfk", "proofs": [ "2VedWRUnDeHXrKwvnSHX8wLW8Hx9mn8vhH7JJtEX6WzbWwgmEMkXoak2yUMazeZdPFWL5j3oHZM9V49PjGUXJhAx" ], "script": "base64:AAIFAAAAAAAAAA4IAhIDCgEIEgASAwoBCAAAAB8AAAAAA1NFUAIAAAACX18AAAAABnNjYWxlOAAAAAAABfXhAAAAAAARcG9vbFN0YXRzUHJpY2VLZXkAAAAAAAAAAAQAAAAADmlkeFBvb2xBZGRyZXNzAAAAAAAAAAABAAAAAA1pZHhQb29sU3RhdHVzAAAAAAAAAAACAAAAABBpZHhQb29sTFBBc3NldElkAAAAAAAAAAADAAAAAA1pZHhBbXRBc3NldElkAAAAAAAAAAAEAAAAAA9pZHhQcmljZUFzc2V0SWQAAAAAAAAAAAUAAAAADmlkeEFtdEFzc2V0RGNtAAAAAAAAAAAGAAAAABBpZHhQcmljZUFzc2V0RGNtAAAAAAAAAAAHAAAAAA5pZHhJQW10QXNzZXRJZAAAAAAAAAAACAAAAAAQaWR4SVByaWNlQXNzZXRJZAAAAAAAAAAACQAAAAANaWR4TFBBc3NldERjbQAAAAAAAAAACgAAAAATaWR4TWF0Y2hlclB1YmxpY0tleQAAAAAAAAAACwEAAAAOa2V5UmVnaXN0ZXJQdXQAAAACAAAAC3Bvb2xBZGRyZXNzAAAABHR4SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACyVzJXMlc19fUF9fBQAAAAtwb29sQWRkcmVzcwIAAAACX18FAAAABHR4SWQBAAAAEWtleVJlZ2lzdGVySW52ZXN0AAAAAgAAAAtwb29sQWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABAlcyVzJXNfX2ludmVzdF9fBQAAAAtwb29sQWRkcmVzcwIAAAACX18FAAAABHR4SWQBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACAAAAC3Bvb2xBZGRyZXNzAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADyVzJXMlc19fdG90YWxfXwUAAAALcG9vbEFkZHJlc3MCAAAAAl9fBQAAAAdhc3NldElkAQAAABJrZXlGYWN0b3J5Q29udHJhY3QAAAAAAgAAABMlc19fZmFjdG9yeUNvbnRyYWN0AQAAACBrZXlTbGlwcGFnZUFtdFBlckFzc2V0Q3VtdWxhdGl2ZQAAAAIAAAALcG9vbEFkZHJlc3MAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAALcG9vbEFkZHJlc3MCAAAAAl9fBQAAAAdhc3NldElkAgAAABRfX3NsaXBwYWdlQ3VtdWxhdGl2ZQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAACAAAAESVzX19mYWN0b3J5Q29uZmlnAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAgAAACNfX21hcHBpbmdzX19wb29sQ29udHJhY3QyUG9vbEFzc2V0cwEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEAAAARaW50ZXJuYWxCYXNlQXNzZXQJAAEsAAAAAgIAAAAoJXMlcyVkX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwkAAaQAAAABBQAAABFpbnRlcm5hbEJhc2VBc3NldAEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAAJaUFtdEFzc2V0AAAAC2lQcmljZUFzc2V0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAAAlpQW10QXNzZXQCAAAAAl9fBQAAAAtpUHJpY2VBc3NldAIAAAAIX19jb25maWcBAAAAE2tleUFsbFBvb2xzU2h1dGRvd24AAAAAAgAAAAwlc19fc2h1dGRvd24BAAAADWtleVBvb2xXZWlnaHQAAAABAAAAD2NvbnRyYWN0QWRkcmVzcwkAASwAAAACAgAAABIlcyVzX19wb29sV2VpZ2h0X18FAAAAD2NvbnRyYWN0QWRkcmVzcwAAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAACAAAAFU5vIEZhY3RvcnkgQWNjIGZvdW5kLgEAAAAOY29udmVydEFzc2V0SWQAAAABAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAdhc3NldElkAgAAAAVXQVZFUwUAAAAHYXNzZXRJZAEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAEAAAACWluQXNzZXRJZAAAAAppbkFzc2V0QW10AAAACHR4SGVpZ2h0AAAAC3R4VGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAIJXMlZCVkJWQJAARMAAAAAgUAAAAJaW5Bc3NldElkCQAETAAAAAIJAAGkAAAAAQUAAAAKaW5Bc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAABRkYXRhSW52ZXN0QWN0aW9uSW5mbwAAAAQAAAARb3V0QW1vdW50QXNzZXRBbXQAAAAQb3V0UHJpY2VBc3NldEFtdAAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAACCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAARb3V0QW1vdW50QXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAABBvdXRQcmljZUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAIdHhIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAt0eFRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAACGFzU3RyaW5nAAAAAQAAAAN2YWwEAAAAByRtYXRjaDAFAAAAA3ZhbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZ2YWxTdHIFAAAAByRtYXRjaDAFAAAABnZhbFN0cgkAAAIAAAABAgAAABhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBAAAAB3RvU2NhbGUAAAADAAAAA2FtdAAAAAhyZXNTY2FsZQAAAAhjdXJTY2FsZQkAAGsAAAADBQAAAANhbXQFAAAACHJlc1NjYWxlBQAAAAhjdXJTY2FsZQAAAAMAAAABaQEAAAALY29uc3RydWN0b3IAAAABAAAAD2ZhY3RvcnlDb250cmFjdAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAAFAAAAD2ZhY3RvcnlDb250cmFjdAUAAAADbmlsAAAAAWkBAAAAA3B1dAAAAAAEAAAABHBvb2wJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAtwbXRBbXRBc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKcG10QXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAtwbXRBbXRBc3NldAAAAAdhc3NldElkAgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAALcG10QW10QXNzZXQAAAAHYXNzZXRJZAQAAAALcG10QXNzZXRBbXQIBQAAAAtwbXRBbXRBc3NldAAAAAZhbW91bnQEAAAACnBvb2xBc3NldHMJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQUAAAAEcG9vbAIAAAAOSW52YWxpZCBjYWxsZXIFAAAAA1NFUAQAAAANYW1vdW50QXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAEEAAAADHByaWNlQXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAIEAAAAC2Ftb3VudEFzc2V0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEFAAAADWFtb3VudEFzc2V0SWQCAAAAEUNhbm5vdCBmaW5kIGFzc2V0BAAAAApwcmljZUFzc2V0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEFAAAADHByaWNlQXNzZXRJZAIAAAARQ2Fubm90IGZpbmQgYXNzZXQEAAAACHRvdGFsQW10CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABZrZXlQb29sVG90YWxBbXRCeUFzc2V0AAAAAgUAAAAEcG9vbAUAAAAKcG10QXNzZXRJZAAAAAAAAAAAAAQAAAAVY3VtdWxhdGl2ZVNsaXBwYWdlQW10CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAACBrZXlTbGlwcGFnZUFtdFBlckFzc2V0Q3VtdWxhdGl2ZQAAAAIFAAAABHBvb2wFAAAACnBtdEFzc2V0SWQAAAAAAAAAAAAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleVJlZ2lzdGVyUHV0AAAAAgUAAAAEcG9vbAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAEBQAAAApwbXRBc3NldElkBQAAAAtwbXRBc3NldEFtdAUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAARwb29sBQAAAApwbXRBc3NldElkCQAAZAAAAAIFAAAACHRvdGFsQW10BQAAAAtwbXRBc3NldEFtdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAIGtleVNsaXBwYWdlQW10UGVyQXNzZXRDdW11bGF0aXZlAAAAAgUAAAAEcG9vbAUAAAAKcG10QXNzZXRJZAkAAGQAAAACBQAAABVjdW11bGF0aXZlU2xpcHBhZ2VBbXQFAAAAC3BtdEFzc2V0QW10BQAAAANuaWwAAAABaQEAAAAGaW52ZXN0AAAAAQAAAA5wb29sQWRkcmVzc1N0cgQAAAALcG9vbEFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAA5wb29sQWRkcmVzc1N0cgIAAAAUaW52YWxpZCBwb29sIGFkZHJlc3MEAAAACnBvb2xBc3NldHMJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQUAAAAOcG9vbEFkZHJlc3NTdHICAAAAFEludmFsaWQgcG9vbCBwYXNzZWQuBQAAAANTRVAEAAAABGFtSWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAECAAAAFk5vIGFzc2V0IG1hcHBpbmcgZm91bmQEAAAABHBySWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAICAAAAFk5vIGFzc2V0IG1hcHBpbmcgZm91bmQEAAAACWFtQmFsYW5jZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAWa2V5UG9vbFRvdGFsQW10QnlBc3NldAAAAAIFAAAADnBvb2xBZGRyZXNzU3RyBQAAAARhbUlkAAAAAAAAAAAABAAAAAlwckJhbGFuY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAA5wb29sQWRkcmVzc1N0cgUAAAAEcHJJZAAAAAAAAAAAAAQAAAANZXN0QnlQclJlc3VsdAkAA/wAAAAEBQAAAAtwb29sQWRkcmVzcwIAAAAfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQkABEwAAAACBQAAAAlwckJhbGFuY2UFAAAAA25pbAUAAAADbmlsBAAAAA1lc3RCeUFtUmVzdWx0CQAD/AAAAAQFAAAAC3Bvb2xBZGRyZXNzAgAAACBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQkABEwAAAACBQAAAAlhbUJhbGFuY2UFAAAAA25pbAUAAAADbmlsBAAAAA5JZHhFc3RBbUFtb3VudAAAAAAAAAAABwQAAAAOSWR4RXN0UHJBbW91bnQAAAAAAAAAAAgEAAAACGVzdEFtQW10CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACCQAEtQAAAAIJAQAAAAhhc1N0cmluZwAAAAEFAAAADWVzdEJ5UHJSZXN1bHQFAAAAA1NFUAUAAAAOSWR4RXN0QW1BbW91bnQCAAAAJmZhaWwgdG8gcGFyc2UgZXN0aW1hdGVkIGFtQXNzZXQgYW1vdW50BAAAAAhlc3RQckFtdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgkABLUAAAACCQEAAAAIYXNTdHJpbmcAAAABBQAAAA1lc3RCeUFtUmVzdWx0BQAAAANTRVAFAAAADklkeEVzdFByQW1vdW50AgAAACZmYWlsIHRvIHBhcnNlIGVzdGltYXRlZCBwckFzc2V0IGFtb3VudAQAAAALJHQwNjAzNDYxMzUDCQAAZwAAAAIFAAAACWFtQmFsYW5jZQUAAAAIZXN0QW1BbXQJAAUUAAAAAgUAAAAIZXN0QW1BbXQFAAAACXByQmFsYW5jZQkABRQAAAACBQAAAAlhbUJhbGFuY2UFAAAACGVzdFByQW10BAAAAAVhbUFtdAgFAAAACyR0MDYwMzQ2MTM1AAAAAl8xBAAAAAVwckFtdAgFAAAACyR0MDYwMzQ2MTM1AAAAAl8yBAAAAAlhbUFzc2V0SWQDCQAAAAAAAAIFAAAABGFtSWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAABGFtSWQEAAAACXByQXNzZXRJZAMJAAAAAAAAAgUAAAAEcHJJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAEcHJJZAQAAAAFbHBQdXQJAAP8AAAABAUAAAALcG9vbEFkZHJlc3MCAAAACnB1dEZvckZyZWUJAARMAAAAAgAAAAAAAAAD6AUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlhbUFzc2V0SWQFAAAABWFtQW10CQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlwckFzc2V0SWQFAAAABXByQW10BQAAAANuaWwDCQAAAAAAAAIFAAAABWxwUHV0BQAAAAVscFB1dAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARa2V5UmVnaXN0ZXJJbnZlc3QAAAACBQAAAA5wb29sQWRkcmVzc1N0cgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAAUZGF0YUludmVzdEFjdGlvbkluZm8AAAAEBQAAAAVhbUFtdAUAAAAFcHJBbXQFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlQb29sVG90YWxBbXRCeUFzc2V0AAAAAgUAAAAOcG9vbEFkZHJlc3NTdHIFAAAABGFtSWQJAABlAAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbUFtdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVBvb2xUb3RhbEFtdEJ5QXNzZXQAAAACBQAAAA5wb29sQWRkcmVzc1N0cgUAAAAEcHJJZAkAAGUAAAACBQAAAAlwckJhbGFuY2UFAAAABXByQW10BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXmvrONr", "chainId": 84, "height": 1773114, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let SEP = "__" | |
5 | + | ||
6 | + | let scale8 = 100000000 | |
7 | + | ||
8 | + | let poolStatsPriceKey = 4 | |
9 | + | ||
10 | + | let idxPoolAddress = 1 | |
11 | + | ||
12 | + | let idxPoolStatus = 2 | |
13 | + | ||
14 | + | let idxPoolLPAssetId = 3 | |
15 | + | ||
16 | + | let idxAmtAssetId = 4 | |
17 | + | ||
18 | + | let idxPriceAssetId = 5 | |
19 | + | ||
20 | + | let idxAmtAssetDcm = 6 | |
21 | + | ||
22 | + | let idxPriceAssetDcm = 7 | |
23 | + | ||
24 | + | let idxIAmtAssetId = 8 | |
25 | + | ||
26 | + | let idxIPriceAssetId = 9 | |
27 | + | ||
28 | + | let idxLPAssetDcm = 10 | |
29 | + | ||
30 | + | let idxMatcherPublicKey = 11 | |
31 | + | ||
32 | + | func keyRegisterPut (poolAddress,txId) = ((("%s%s%s__P__" + poolAddress) + "__") + txId) | |
33 | + | ||
34 | + | ||
35 | + | func keyRegisterInvest (poolAddress,txId) = ((("%s%s%s__invest__" + poolAddress) + "__") + txId) | |
36 | + | ||
37 | + | ||
38 | + | func keyPoolTotalAmtByAsset (poolAddress,assetId) = ((("%s%s%s__total__" + poolAddress) + "__") + assetId) | |
39 | + | ||
40 | + | ||
41 | + | func keyFactoryContract () = "%s__factoryContract" | |
42 | + | ||
43 | + | ||
44 | + | func keySlippageAmtPerAssetCumulative (poolAddress,assetId) = (((("%s%s%s__" + poolAddress) + "__") + assetId) + "__slippageCumulative") | |
45 | + | ||
46 | + | ||
47 | + | func keyFactoryConfig () = "%s__factoryConfig" | |
48 | + | ||
49 | + | ||
50 | + | func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets") | |
51 | + | ||
52 | + | ||
53 | + | func keyMappingsInternal2baseAssetId (internalBaseAsset) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(internalBaseAsset)) | |
54 | + | ||
55 | + | ||
56 | + | func keyPoolConfig (iAmtAsset,iPriceAsset) = (((("%d%d%s__" + iAmtAsset) + "__") + iPriceAsset) + "__config") | |
57 | + | ||
58 | + | ||
59 | + | func keyAllPoolsShutdown () = "%s__shutdown" | |
60 | + | ||
61 | + | ||
62 | + | func keyPoolWeight (contractAddress) = ("%s%s__poolWeight__" + contractAddress) | |
63 | + | ||
64 | + | ||
65 | + | let factoryContract = addressFromStringValue(valueOrErrorMessage(getString(this, keyFactoryContract()), "No Factory Acc found.")) | |
66 | + | ||
67 | + | func convertAssetId (assetId) = if (!(isDefined(assetId))) | |
68 | + | then "WAVES" | |
69 | + | else assetId | |
70 | + | ||
71 | + | ||
72 | + | func dataPutActionInfo (inAssetId,inAssetAmt,txHeight,txTimestamp) = makeString(["%s%d%d%d", inAssetId, toString(inAssetAmt), toString(txHeight), toString(txTimestamp)], SEP) | |
73 | + | ||
74 | + | ||
75 | + | func dataInvestActionInfo (outAmountAssetAmt,outPriceAssetAmt,txHeight,txTimestamp) = makeString(["%d%d%d%d", toString(outAmountAssetAmt), toString(outPriceAssetAmt), toString(txHeight), toString(txTimestamp)], SEP) | |
76 | + | ||
77 | + | ||
78 | + | func asString (val) = match val { | |
79 | + | case valStr: String => | |
80 | + | valStr | |
81 | + | case _ => | |
82 | + | throw("fail to cast into String") | |
83 | + | } | |
84 | + | ||
85 | + | ||
86 | + | func toScale (amt,resScale,curScale) = fraction(amt, resScale, curScale) | |
87 | + | ||
88 | + | ||
89 | + | @Callable(i) | |
90 | + | func constructor (factoryContract) = if ((i.caller != this)) | |
91 | + | then throw("permissions denied") | |
92 | + | else [StringEntry(keyFactoryContract(), factoryContract)] | |
93 | + | ||
94 | + | ||
95 | + | ||
96 | + | @Callable(i) | |
97 | + | func put () = { | |
98 | + | let pool = toString(i.caller) | |
99 | + | let pmtAmtAsset = value(i.payments[0]) | |
100 | + | let pmtAssetId = if (!(isDefined(pmtAmtAsset.assetId))) | |
101 | + | then "WAVES" | |
102 | + | else toBase58String(value(pmtAmtAsset.assetId)) | |
103 | + | let pmtAssetAmt = pmtAmtAsset.amount | |
104 | + | let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(pool)), "Invalid caller"), SEP) | |
105 | + | let amountAssetId = parseIntValue(poolAssets[1]) | |
106 | + | let priceAssetId = parseIntValue(poolAssets[2]) | |
107 | + | let amountAsset = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(amountAssetId)), "Cannot find asset") | |
108 | + | let priceAsset = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(priceAssetId)), "Cannot find asset") | |
109 | + | let totalAmt = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(pool, pmtAssetId)), 0) | |
110 | + | let cumulativeSlippageAmt = valueOrElse(getInteger(this, keySlippageAmtPerAssetCumulative(pool, pmtAssetId)), 0) | |
111 | + | [StringEntry(keyRegisterPut(pool, toBase58String(i.transactionId)), dataPutActionInfo(pmtAssetId, pmtAssetAmt, height, lastBlock.timestamp)), IntegerEntry(keyPoolTotalAmtByAsset(pool, pmtAssetId), (totalAmt + pmtAssetAmt)), IntegerEntry(keySlippageAmtPerAssetCumulative(pool, pmtAssetId), (cumulativeSlippageAmt + pmtAssetAmt))] | |
112 | + | } | |
113 | + | ||
114 | + | ||
115 | + | ||
116 | + | @Callable(i) | |
117 | + | func invest (poolAddressStr) = { | |
118 | + | let poolAddress = valueOrErrorMessage(addressFromString(poolAddressStr), "invalid pool address") | |
119 | + | let poolAssets = split(valueOrErrorMessage(getString(factoryContract, keyMappingPoolContractAddressToPoolAssets(poolAddressStr)), "Invalid pool passed."), SEP) | |
120 | + | let amId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[1]))), "No asset mapping found") | |
121 | + | let prId = valueOrErrorMessage(getString(factoryContract, keyMappingsInternal2baseAssetId(parseIntValue(poolAssets[2]))), "No asset mapping found") | |
122 | + | let amBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, amId)), 0) | |
123 | + | let prBalance = valueOrElse(getInteger(this, keyPoolTotalAmtByAsset(poolAddressStr, prId)), 0) | |
124 | + | let estByPrResult = invoke(poolAddress, "evaluatePutByPriceAssetREADONLY", [prBalance], nil) | |
125 | + | let estByAmResult = invoke(poolAddress, "evaluatePutByAmountAssetREADONLY", [amBalance], nil) | |
126 | + | let IdxEstAmAmount = 7 | |
127 | + | let IdxEstPrAmount = 8 | |
128 | + | let estAmAmt = valueOrErrorMessage(parseIntValue(split(asString(estByPrResult), SEP)[IdxEstAmAmount]), "fail to parse estimated amAsset amount") | |
129 | + | let estPrAmt = valueOrErrorMessage(parseIntValue(split(asString(estByAmResult), SEP)[IdxEstPrAmount]), "fail to parse estimated prAsset amount") | |
130 | + | let $t060346135 = if ((amBalance >= estAmAmt)) | |
131 | + | then $Tuple2(estAmAmt, prBalance) | |
132 | + | else $Tuple2(amBalance, estPrAmt) | |
133 | + | let amAmt = $t060346135._1 | |
134 | + | let prAmt = $t060346135._2 | |
135 | + | let amAssetId = if ((amId == "WAVES")) | |
136 | + | then unit | |
137 | + | else fromBase58String(amId) | |
138 | + | let prAssetId = if ((prId == "WAVES")) | |
139 | + | then unit | |
140 | + | else fromBase58String(prId) | |
141 | + | let lpPut = invoke(poolAddress, "putForFree", [1000], [AttachedPayment(amAssetId, amAmt), AttachedPayment(prAssetId, prAmt)]) | |
142 | + | if ((lpPut == lpPut)) | |
143 | + | 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))] | |
144 | + | else throw("Strict value is not equal to itself.") | |
145 | + | } | |
146 | + | ||
147 | + | ||
148 | + | @Verifier(tx) | |
149 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
150 | + |
github/deemru/w8io/169f3d6 27.84 ms ◑