tx · AktGFhFvhxV5AtGjZzpz9UY3u7JyYpfHLNQBa8HLGeGH 3PAv42skNMWedMSNx75fMDuMcFzggaELYqK: -0.01200000 Waves 2023.04.09 08:15 [3592220] smart account 3PAv42skNMWedMSNx75fMDuMcFzggaELYqK > SELF 0.00000000 Waves
{ "type": 13, "id": "AktGFhFvhxV5AtGjZzpz9UY3u7JyYpfHLNQBa8HLGeGH", "fee": 1200000, "feeAssetId": null, "timestamp": 1681017339540, "version": 2, "chainId": 87, "sender": "3PAv42skNMWedMSNx75fMDuMcFzggaELYqK", "senderPublicKey": "2S8hdm8hsS8LEgawkBAPztpWr6tkd4qFjb3TPzqmm7D1", "proofs": [ "f225f3TxxbHV1UgEau4rUjPvseo5adSBieH7AocJPfx4hwXvctrj9RkaKNEEmD2YeTZRaMdV24miHJQkoohp94b" ], "script": "base64:AAIFAAAAAAAAABMIAhIAEgASAwoBARIAEgASABIAAAAAEgAAAAALZGV4Q29udHJhY3QBAAAAGgFXymv8n9fLujU9O2aaHo6wilKnNKKaQ5SCAAAAABBuZXV0cmlub0NvbnRyYWN0AQAAABoBV3AEYqZHm+mtVmiUy++FjDCCICiaCBSWsgAAAAAWbmV1dHJpbm9TdGFraW5nQWRkcmVzcwEAAAAaAVdraDjhA9SajJ8SG8YsvCMHOQvN7RLXCl8AAAAACnh0bkFzc2V0SWQBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAAAAAAtzdXJmQXNzZXRJZAEAAAAgktH0SuIRASv0fureIY49xfvJ8n3Oh7LtUhnwOk4kWPUAAAAACXd4QXNzZXRJZAEAAAAgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEAAAAAFGNhc2VYdG5Td2FwU3RhdGVJZGxlAAAAAAAAAAAAAAAAABxjYXNlWHRuU3dhcFN0YXRlWHRuVG9SZXdhcmRzAAAAAAAAAAABAAAAACRjYXNlWHRuU3dhcFN0YXRlRXhjaGFuZ2VSZXdhcmRzT25EZXgAAAAAAAAAAAIAAAAAE3h0blN3YXBTdGF0ZUVudW1LZXkCAAAAEHh0blN3YXBTdGF0ZUVudW0AAAAAEXh0blN3YXBCbG9ja0lkS2V5AgAAAA54dG5Td2FwQmxvY2tJZAAAAAAXeHRuU3dhcFRyYW5zYWN0aW9uSWRLZXkCAAAAFHh0blN3YXBUcmFuc2FjdGlvbklkAAAAABR4dG5Td2FwUHJpY2VJbmRleEtleQIAAAAReHRuU3dhcFByaWNlSW5kZXgAAAAAGnh0blN3YXBYdG5Td2FwcGVkQW1vdW50S2V5AgAAABd4dG5Td2FwWHRuU3dhcHBlZEFtb3VudAAAAAAceHRuU3dhcFdhdmVzQmFsYW5jZUF0U3dhcEtleQIAAAAZeHRuU3dhcFdhdmVzQmFsYW5jZUF0U3dhcAAAAAAZeHRuU3dhcFd4QmFsYW5jZUF0U3dhcEtleQIAAAAWeHRuU3dhcFd4QmFsYW5jZUF0U3dhcAAAAAAeeHRuU3dhcFh0bkJhbGFuY2VBdEV4Y2hhbmdlS2V5AgAAABt4dG5Td2FwWHRuQmFsYW5jZUF0RXhjaGFuZ2UAAAAAGXh0blN3YXBFeGNoYW5nZUJsb2NrSWRLZXkCAAAAFnh0blN3YXBFeGNoYW5nZUJsb2NrSWQAAAAHAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATeHRuU3dhcFN0YXRlRW51bUtleQUAAAAUY2FzZVh0blN3YXBTdGF0ZUlkbGUFAAAAA25pbAAAAAFpAQAAAB94dG5Td2FwUGFydDFzd2FwWFRORnJvbU5ldXRyaW5vAAAAAAMJAQAAAAIhPQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAAE3h0blN3YXBTdGF0ZUVudW1LZXkFAAAAFGNhc2VYdG5Td2FwU3RhdGVJZGxlCQAAAgAAAAECAAAAGVdyb25nIHN0YXRlLCBtdXN0IGJlIElkbGUEAAAABnJlc3VsdAkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAEG5ldXRyaW5vQ29udHJhY3QCAAAAG3N3YXBQYXJhbXNCeVVzZXJTWVNSRUFET05MWQkABEwAAAACCQAEJQAAAAEFAAAABHRoaXMJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAABnJlc3VsdAUAAAAGcmVzdWx0BAAAAAckbWF0Y2gwBQAAAAZyZXN1bHQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAIyhJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQpBAAAAAV0dXBsZQUAAAAHJG1hdGNoMAMJAABmAAAAAggFAAAABXR1cGxlAAAAAl8zAAAAAAAAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACdUaW1lIGlzIG5vdCBjb21lIHlldCwgeW91IG5lZWQgdG8gd2FpdCAJAAGkAAAAAQgFAAAABXR1cGxlAAAAAl8zAgAAAAcgYmxvY2tzBAAAAA1tYXhTd2FwQW1vdW50CAUAAAAFdHVwbGUAAAACXzcDCQAAZgAAAAIAAAAAAAAPQkAFAAAADW1heFN3YXBBbW91bnQJAAACAAAAAQIAAAAsTWluIFhUTiBhbW91bnQgdG8gc3dhcCBpcyAxLCBzdGFrZSBtb3JlIFNVUkYDCQAAZgAAAAIFAAAADW1heFN3YXBBbW91bnQJAAPwAAAAAgUAAAAEdGhpcwUAAAAKeHRuQXNzZXRJZAkAAAIAAAABAgAAAE5YVE4gQmFsYW5jZSBvbiBjb250cmFjdCBpcyBzbWFsbGVyIHRoYW4gbWF4IHN3YXAgYW1vdW50LCBpbmNyZWFzZSB5b3VyIGJhbGFuY2UEAAAAE2N1cnJlbnRXYXZlc0JhbGFuY2UJAAPvAAAAAQUAAAAEdGhpcwQAAAAQY3VycmVudFdYQmFsYW5jZQkAA/AAAAACBQAAAAR0aGlzBQAAAAl3eEFzc2V0SWQEAAAAFHN3YXBOZXV0cmlub1RvQXNzZXRzCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAAQbmV1dHJpbm9Db250cmFjdAIAAAAUc3dhcE5ldXRyaW5vVG9CYXNrZXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAKeHRuQXNzZXRJZAUAAAANbWF4U3dhcEFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAABRzd2FwTmV1dHJpbm9Ub0Fzc2V0cwUAAAAUc3dhcE5ldXRyaW5vVG9Bc3NldHMEAAAACnByaWNlSW5kZXgJAABkAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgkBAAAAB0FkZHJlc3MAAAABAQAAABoBVyOzrRJck6TK7Dn+T0bWzVZNLfsQ+2OYegIAAAALcHJpY2VfaW5kZXgAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEXh0blN3YXBCbG9ja0lkS2V5BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAXeHRuU3dhcFRyYW5zYWN0aW9uSWRLZXkJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUeHRuU3dhcFByaWNlSW5kZXhLZXkFAAAACnByaWNlSW5kZXgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGnh0blN3YXBYdG5Td2FwcGVkQW1vdW50S2V5BQAAAA1tYXhTd2FwQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABx4dG5Td2FwV2F2ZXNCYWxhbmNlQXRTd2FwS2V5CAUAAAATY3VycmVudFdhdmVzQmFsYW5jZQAAAAlhdmFpbGFibGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGXh0blN3YXBXeEJhbGFuY2VBdFN3YXBLZXkFAAAAEGN1cnJlbnRXWEJhbGFuY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE3h0blN3YXBTdGF0ZUVudW1LZXkFAAAAHGNhc2VYdG5Td2FwU3RhdGVYdG5Ub1Jld2FyZHMFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAArSW5jb3JyZWN0IGRhdGEgZnJvbSBuZXV0cmlubyBzbWFydCBjb250cmFjdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAQc2V0TmV3UHJpY2VJbmRleAAAAAEAAAAFaW5kZXgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFHh0blN3YXBQcmljZUluZGV4S2V5BQAAAAVpbmRleAUAAAADbmlsAAAAAWkBAAAAF2V4dGVuZFByaWNlSW5kZXhCeU9uZVVwAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUeHRuU3dhcFByaWNlSW5kZXhLZXkJAABkAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAUeHRuU3dhcFByaWNlSW5kZXhLZXkAAAAAAAAAAAEFAAAAA25pbAAAAAFpAQAAABlleHRlbmRQcmljZUluZGV4QnlPbmVEb3duAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUeHRuU3dhcFByaWNlSW5kZXhLZXkJAABlAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAUeHRuU3dhcFByaWNlSW5kZXhLZXkAAAAAAAAAAAEFAAAAA25pbAAAAAFpAQAAACd4dG5Td2FwUGFydDJleGNoYW5nZVh0blN3YXBSZXdhcmRzT25EZXgAAAAAAwkBAAAAAiE9AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAATeHRuU3dhcFN0YXRlRW51bUtleQUAAAAcY2FzZVh0blN3YXBTdGF0ZVh0blRvUmV3YXJkcwkAAAIAAAABAgAAACFXcm9uZyBzdGF0ZSwgbXVzdCBiZSBYdG5Ub1Jld2FyZHMDCQAAZwAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAAEXh0blN3YXBCbG9ja0lkS2V5BQAAAAZoZWlnaHQJAAACAAAAAQIAAAAVTXVzdCB3YWl0IGZvciAxIGJsb2NrBAAAABBzd2FwVHJhbnNhdGlvbklkCQEAAAARQGV4dHJOYXRpdmUoMTA1OCkAAAABBQAAABd4dG5Td2FwVHJhbnNhY3Rpb25JZEtleQQAAAAOc3dhcFByaWNlSW5kZXgJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAAFHh0blN3YXBQcmljZUluZGV4S2V5BAAAAAx3aXRoZHJhd19yZXMJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABBQAAABBuZXV0cmlub0NvbnRyYWN0AgAAAAh3aXRoZHJhdwkABEwAAAACCQAEJQAAAAEFAAAABHRoaXMJAARMAAAAAgUAAAAOc3dhcFByaWNlSW5kZXgJAARMAAAAAgUAAAAQc3dhcFRyYW5zYXRpb25JZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAADHdpdGhkcmF3X3JlcwUAAAAMd2l0aGRyYXdfcmVzBAAAABJ3YXZlc0JhbGFuY2VBdFN3YXAJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAAHHh0blN3YXBXYXZlc0JhbGFuY2VBdFN3YXBLZXkEAAAAD3d4QmFsYW5jZUF0U3dhcAkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAAZeHRuU3dhcFd4QmFsYW5jZUF0U3dhcEtleQQAAAATY3VycmVudFdhdmVzQmFsYW5jZQkAA+8AAAABBQAAAAR0aGlzBAAAABBjdXJyZW50V1hCYWxhbmNlCQAD8AAAAAIFAAAABHRoaXMFAAAACXd4QXNzZXRJZAQAAAAMd2F2ZXNSZXdhcmRzCQAAZQAAAAIIBQAAABNjdXJyZW50V2F2ZXNCYWxhbmNlAAAACWF2YWlsYWJsZQUAAAASd2F2ZXNCYWxhbmNlQXRTd2FwBAAAAAl3eFJld2FyZHMJAABlAAAAAgUAAAAQY3VycmVudFdYQmFsYW5jZQUAAAAPd3hCYWxhbmNlQXRTd2FwAwkAAGYAAAACBQAAAAx3YXZlc1Jld2FyZHMAAAAAAAAAAAAEAAAACXdhdmVzU3dhcAkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEFAAAAC2RleENvbnRyYWN0AgAAABRleGNoYW5nZVRoZW5UcmFuc2ZlcgkABEwAAAACCQAEJQAAAAEJAQAAAAdBZGRyZXNzAAAAAQUAAAAKeHRuQXNzZXRJZAkABEwAAAACCQAEJQAAAAEFAAAABHRoaXMJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAR1bml0AwkAAGYAAAACBQAAAAx3YXZlc1Jld2FyZHMAAAAAAAAAAAAFAAAADHdhdmVzUmV3YXJkcwAAAAAAAAAAAAUAAAADbmlsAwkAAAAAAAACBQAAAAl3YXZlc1N3YXAFAAAACXdhdmVzU3dhcAQAAAAGd3hTd2FwCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAALZGV4Q29udHJhY3QCAAAAFGV4Y2hhbmdlVGhlblRyYW5zZmVyCQAETAAAAAIJAAQlAAAAAQkBAAAAB0FkZHJlc3MAAAABBQAAAAp4dG5Bc3NldElkCQAETAAAAAIJAAQlAAAAAQUAAAAEdGhpcwkABEwAAAACAAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACXd4QXNzZXRJZAUAAAAJd3hSZXdhcmRzBQAAAANuaWwDCQAAAAAAAAIFAAAABnd4U3dhcAUAAAAGd3hTd2FwCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABZXQVZFU19SRVdBUkRTX0ZPUl9TV0FQBQAAAAx3YXZlc1Jld2FyZHMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAE1dYX1JFV0FSRFNfRk9SX1NXQVAFAAAACXd4UmV3YXJkcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAeeHRuU3dhcFh0bkJhbGFuY2VBdEV4Y2hhbmdlS2V5CQAD8AAAAAIFAAAABHRoaXMFAAAACnh0bkFzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGXh0blN3YXBFeGNoYW5nZUJsb2NrSWRLZXkFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATeHRuU3dhcFN0YXRlRW51bUtleQUAAAAkY2FzZVh0blN3YXBTdGF0ZUV4Y2hhbmdlUmV3YXJkc09uRGV4BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgQAAAAGd3hTd2FwCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQUAAAALZGV4Q29udHJhY3QCAAAAFGV4Y2hhbmdlVGhlblRyYW5zZmVyCQAETAAAAAIJAAQlAAAAAQkBAAAAB0FkZHJlc3MAAAABBQAAAAp4dG5Bc3NldElkCQAETAAAAAIJAAQlAAAAAQUAAAAEdGhpcwkABEwAAAACAAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACXd4QXNzZXRJZAUAAAAJd3hSZXdhcmRzBQAAAANuaWwDCQAAAAAAAAIFAAAABnd4U3dhcAUAAAAGd3hTd2FwCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABZXQVZFU19SRVdBUkRTX0ZPUl9TV0FQBQAAAAx3YXZlc1Jld2FyZHMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAE1dYX1JFV0FSRFNfRk9SX1NXQVAFAAAACXd4UmV3YXJkcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAeeHRuU3dhcFh0bkJhbGFuY2VBdEV4Y2hhbmdlS2V5CQAD8AAAAAIFAAAABHRoaXMFAAAACnh0bkFzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAGXh0blN3YXBFeGNoYW5nZUJsb2NrSWRLZXkFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATeHRuU3dhcFN0YXRlRW51bUtleQUAAAAkY2FzZVh0blN3YXBTdGF0ZUV4Y2hhbmdlUmV3YXJkc09uRGV4BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABh4dG5Td2FwUGFydDNGaW5hbGl6ZVN3YXAAAAAAAwkBAAAAAiE9AAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNTUpAAAAAQUAAAATeHRuU3dhcFN0YXRlRW51bUtleQUAAAAkY2FzZVh0blN3YXBTdGF0ZUV4Y2hhbmdlUmV3YXJkc09uRGV4CQAAAgAAAAECAAAAJVdyb25nIHN0YXRlLCBtdXN0IGJlIEV4Y2hhbmdlIHJld2FyZHMDCQAAZwAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAAGXh0blN3YXBFeGNoYW5nZUJsb2NrSWRLZXkFAAAABmhlaWdodAkAAAIAAAABAgAAABVNdXN0IHdhaXQgZm9yIDEgYmxvY2sEAAAAF3h0bkFtb3VudEJlZm9yZUV4Y2hhbmdlCQEAAAARQGV4dHJOYXRpdmUoMTA1NSkAAAABBQAAAB54dG5Td2FwWHRuQmFsYW5jZUF0RXhjaGFuZ2VLZXkEAAAACnh0blN3YXBwZWQJAQAAABFAZXh0ck5hdGl2ZSgxMDU1KQAAAAEFAAAAGnh0blN3YXBYdG5Td2FwcGVkQW1vdW50S2V5BAAAABBjdXJyZW50WHRuQW1vdW50CQAD8AAAAAIFAAAABHRoaXMFAAAACnh0bkFzc2V0SWQEAAAABnJld2FyZAkAAGUAAAACBQAAABBjdXJyZW50WHRuQW1vdW50CQAAZAAAAAIFAAAAF3h0bkFtb3VudEJlZm9yZUV4Y2hhbmdlBQAAAAp4dG5Td2FwcGVkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAB5DVVJSRU5UX1NXQVBfWFROX1JFV0FSRF9BTU9VTlQFAAAABnJld2FyZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATeHRuU3dhcFN0YXRlRW51bUtleQUAAAAUY2FzZVh0blN3YXBTdGF0ZUlkbGUFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5JLsnFA==", "height": 3592220, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5fpUK5Hyzs7P16EmeUHUrsyLifenihF7epYvyF5FGgmY Next: 4gzp5FNuE7Jhmj39oiyw1e8W1uez3H4DScYFu717u2g6 Diff:
Old | New | Differences | |
---|---|---|---|
101 | 101 | else { | |
102 | 102 | let swapTransationId = getStringValue(xtnSwapTransactionIdKey) | |
103 | 103 | let swapPriceIndex = getIntegerValue(xtnSwapPriceIndexKey) | |
104 | - | let withdraw_res = invoke(Address(neutrinoContract), "withdraw", [toString(this), | |
104 | + | let withdraw_res = invoke(Address(neutrinoContract), "withdraw", [toString(this), swapPriceIndex, swapTransationId], nil) | |
105 | 105 | if ((withdraw_res == withdraw_res)) | |
106 | 106 | then { | |
107 | 107 | let wavesBalanceAtSwap = getIntegerValue(xtnSwapWavesBalanceAtSwapKey) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let dexContract = base58'3PLPCb3wF2H2gtzohoAjeWcGaMKEiJvtE5X' | |
5 | 5 | ||
6 | 6 | let neutrinoContract = base58'3PC9BfRwJWWiw9AREE2B3eWzCks3CYtg4yo' | |
7 | 7 | ||
8 | 8 | let neutrinoStakingAddress = base58'3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C' | |
9 | 9 | ||
10 | 10 | let xtnAssetId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p' | |
11 | 11 | ||
12 | 12 | let surfAssetId = base58'At8D6NFFpheCbvKVnjVoeLL84Eo8NZn6ovManxfLaFWL' | |
13 | 13 | ||
14 | 14 | let wxAssetId = base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
15 | 15 | ||
16 | 16 | let caseXtnSwapStateIdle = 0 | |
17 | 17 | ||
18 | 18 | let caseXtnSwapStateXtnToRewards = 1 | |
19 | 19 | ||
20 | 20 | let caseXtnSwapStateExchangeRewardsOnDex = 2 | |
21 | 21 | ||
22 | 22 | let xtnSwapStateEnumKey = "xtnSwapStateEnum" | |
23 | 23 | ||
24 | 24 | let xtnSwapBlockIdKey = "xtnSwapBlockId" | |
25 | 25 | ||
26 | 26 | let xtnSwapTransactionIdKey = "xtnSwapTransactionId" | |
27 | 27 | ||
28 | 28 | let xtnSwapPriceIndexKey = "xtnSwapPriceIndex" | |
29 | 29 | ||
30 | 30 | let xtnSwapXtnSwappedAmountKey = "xtnSwapXtnSwappedAmount" | |
31 | 31 | ||
32 | 32 | let xtnSwapWavesBalanceAtSwapKey = "xtnSwapWavesBalanceAtSwap" | |
33 | 33 | ||
34 | 34 | let xtnSwapWxBalanceAtSwapKey = "xtnSwapWxBalanceAtSwap" | |
35 | 35 | ||
36 | 36 | let xtnSwapXtnBalanceAtExchangeKey = "xtnSwapXtnBalanceAtExchange" | |
37 | 37 | ||
38 | 38 | let xtnSwapExchangeBlockIdKey = "xtnSwapExchangeBlockId" | |
39 | 39 | ||
40 | 40 | @Callable(i) | |
41 | 41 | func constructor () = [IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateIdle)] | |
42 | 42 | ||
43 | 43 | ||
44 | 44 | ||
45 | 45 | @Callable(i) | |
46 | 46 | func xtnSwapPart1swapXTNFromNeutrino () = if ((getIntegerValue(xtnSwapStateEnumKey) != caseXtnSwapStateIdle)) | |
47 | 47 | then throw("Wrong state, must be Idle") | |
48 | 48 | else { | |
49 | 49 | let result = invoke(Address(neutrinoContract), "swapParamsByUserSYSREADONLY", [toString(this), 0], nil) | |
50 | 50 | if ((result == result)) | |
51 | 51 | then match result { | |
52 | 52 | case tuple: (Int, Int, Int, Int, Int, Int, Int) => | |
53 | 53 | if ((tuple._3 > 0)) | |
54 | 54 | then throw((("Time is not come yet, you need to wait " + toString(tuple._3)) + " blocks")) | |
55 | 55 | else { | |
56 | 56 | let maxSwapAmount = tuple._7 | |
57 | 57 | if ((1000000 > maxSwapAmount)) | |
58 | 58 | then throw("Min XTN amount to swap is 1, stake more SURF") | |
59 | 59 | else if ((maxSwapAmount > assetBalance(this, xtnAssetId))) | |
60 | 60 | then throw("XTN Balance on contract is smaller than max swap amount, increase your balance") | |
61 | 61 | else { | |
62 | 62 | let currentWavesBalance = wavesBalance(this) | |
63 | 63 | let currentWXBalance = assetBalance(this, wxAssetId) | |
64 | 64 | let swapNeutrinoToAssets = invoke(Address(neutrinoContract), "swapNeutrinoToBasket", nil, [AttachedPayment(xtnAssetId, maxSwapAmount)]) | |
65 | 65 | if ((swapNeutrinoToAssets == swapNeutrinoToAssets)) | |
66 | 66 | then { | |
67 | 67 | let priceIndex = (getIntegerValue(Address(base58'3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP'), "price_index") + 1) | |
68 | 68 | [IntegerEntry(xtnSwapBlockIdKey, height), StringEntry(xtnSwapTransactionIdKey, toBase58String(i.transactionId)), IntegerEntry(xtnSwapPriceIndexKey, priceIndex), IntegerEntry(xtnSwapXtnSwappedAmountKey, maxSwapAmount), IntegerEntry(xtnSwapWavesBalanceAtSwapKey, currentWavesBalance.available), IntegerEntry(xtnSwapWxBalanceAtSwapKey, currentWXBalance), IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateXtnToRewards)] | |
69 | 69 | } | |
70 | 70 | else throw("Strict value is not equal to itself.") | |
71 | 71 | } | |
72 | 72 | } | |
73 | 73 | case _ => | |
74 | 74 | throw("Incorrect data from neutrino smart contract") | |
75 | 75 | } | |
76 | 76 | else throw("Strict value is not equal to itself.") | |
77 | 77 | } | |
78 | 78 | ||
79 | 79 | ||
80 | 80 | ||
81 | 81 | @Callable(i) | |
82 | 82 | func setNewPriceIndex (index) = [IntegerEntry(xtnSwapPriceIndexKey, index)] | |
83 | 83 | ||
84 | 84 | ||
85 | 85 | ||
86 | 86 | @Callable(i) | |
87 | 87 | func extendPriceIndexByOneUp () = [IntegerEntry(xtnSwapPriceIndexKey, (getIntegerValue(xtnSwapPriceIndexKey) + 1))] | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | ||
91 | 91 | @Callable(i) | |
92 | 92 | func extendPriceIndexByOneDown () = [IntegerEntry(xtnSwapPriceIndexKey, (getIntegerValue(xtnSwapPriceIndexKey) - 1))] | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | ||
96 | 96 | @Callable(i) | |
97 | 97 | func xtnSwapPart2exchangeXtnSwapRewardsOnDex () = if ((getIntegerValue(xtnSwapStateEnumKey) != caseXtnSwapStateXtnToRewards)) | |
98 | 98 | then throw("Wrong state, must be XtnToRewards") | |
99 | 99 | else if ((getIntegerValue(xtnSwapBlockIdKey) >= height)) | |
100 | 100 | then throw("Must wait for 1 block") | |
101 | 101 | else { | |
102 | 102 | let swapTransationId = getStringValue(xtnSwapTransactionIdKey) | |
103 | 103 | let swapPriceIndex = getIntegerValue(xtnSwapPriceIndexKey) | |
104 | - | let withdraw_res = invoke(Address(neutrinoContract), "withdraw", [toString(this), | |
104 | + | let withdraw_res = invoke(Address(neutrinoContract), "withdraw", [toString(this), swapPriceIndex, swapTransationId], nil) | |
105 | 105 | if ((withdraw_res == withdraw_res)) | |
106 | 106 | then { | |
107 | 107 | let wavesBalanceAtSwap = getIntegerValue(xtnSwapWavesBalanceAtSwapKey) | |
108 | 108 | let wxBalanceAtSwap = getIntegerValue(xtnSwapWxBalanceAtSwapKey) | |
109 | 109 | let currentWavesBalance = wavesBalance(this) | |
110 | 110 | let currentWXBalance = assetBalance(this, wxAssetId) | |
111 | 111 | let wavesRewards = (currentWavesBalance.available - wavesBalanceAtSwap) | |
112 | 112 | let wxRewards = (currentWXBalance - wxBalanceAtSwap) | |
113 | 113 | if ((wavesRewards > 0)) | |
114 | 114 | then { | |
115 | 115 | let wavesSwap = invoke(Address(dexContract), "exchangeThenTransfer", [toString(Address(xtnAssetId)), toString(this), 0], [AttachedPayment(unit, if ((wavesRewards > 0)) | |
116 | 116 | then wavesRewards | |
117 | 117 | else 0)]) | |
118 | 118 | if ((wavesSwap == wavesSwap)) | |
119 | 119 | then { | |
120 | 120 | let wxSwap = invoke(Address(dexContract), "exchangeThenTransfer", [toString(Address(xtnAssetId)), toString(this), 0], [AttachedPayment(wxAssetId, wxRewards)]) | |
121 | 121 | if ((wxSwap == wxSwap)) | |
122 | 122 | then [IntegerEntry("WAVES_REWARDS_FOR_SWAP", wavesRewards), IntegerEntry("WX_REWARDS_FOR_SWAP", wxRewards), IntegerEntry(xtnSwapXtnBalanceAtExchangeKey, assetBalance(this, xtnAssetId)), IntegerEntry(xtnSwapExchangeBlockIdKey, height), IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateExchangeRewardsOnDex)] | |
123 | 123 | else throw("Strict value is not equal to itself.") | |
124 | 124 | } | |
125 | 125 | else throw("Strict value is not equal to itself.") | |
126 | 126 | } | |
127 | 127 | else { | |
128 | 128 | let wxSwap = invoke(Address(dexContract), "exchangeThenTransfer", [toString(Address(xtnAssetId)), toString(this), 0], [AttachedPayment(wxAssetId, wxRewards)]) | |
129 | 129 | if ((wxSwap == wxSwap)) | |
130 | 130 | then [IntegerEntry("WAVES_REWARDS_FOR_SWAP", wavesRewards), IntegerEntry("WX_REWARDS_FOR_SWAP", wxRewards), IntegerEntry(xtnSwapXtnBalanceAtExchangeKey, assetBalance(this, xtnAssetId)), IntegerEntry(xtnSwapExchangeBlockIdKey, height), IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateExchangeRewardsOnDex)] | |
131 | 131 | else throw("Strict value is not equal to itself.") | |
132 | 132 | } | |
133 | 133 | } | |
134 | 134 | else throw("Strict value is not equal to itself.") | |
135 | 135 | } | |
136 | 136 | ||
137 | 137 | ||
138 | 138 | ||
139 | 139 | @Callable(i) | |
140 | 140 | func xtnSwapPart3FinalizeSwap () = if ((getIntegerValue(xtnSwapStateEnumKey) != caseXtnSwapStateExchangeRewardsOnDex)) | |
141 | 141 | then throw("Wrong state, must be Exchange rewards") | |
142 | 142 | else if ((getIntegerValue(xtnSwapExchangeBlockIdKey) >= height)) | |
143 | 143 | then throw("Must wait for 1 block") | |
144 | 144 | else { | |
145 | 145 | let xtnAmountBeforeExchange = getIntegerValue(xtnSwapXtnBalanceAtExchangeKey) | |
146 | 146 | let xtnSwapped = getIntegerValue(xtnSwapXtnSwappedAmountKey) | |
147 | 147 | let currentXtnAmount = assetBalance(this, xtnAssetId) | |
148 | 148 | let reward = (currentXtnAmount - (xtnAmountBeforeExchange + xtnSwapped)) | |
149 | 149 | [IntegerEntry("CURRENT_SWAP_XTN_REWARD_AMOUNT", reward), IntegerEntry(xtnSwapStateEnumKey, caseXtnSwapStateIdle)] | |
150 | 150 | } | |
151 | 151 | ||
152 | 152 | ||
153 | 153 | @Verifier(tx) | |
154 | 154 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
155 | 155 |
github/deemru/w8io/3ef1775 38.56 ms ◑