2023.01.10 17:17 [3464484] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "CZ15ZDL3KPQkGPNuKGU9SHTcfnLEn7h2XUHucmJT9qNE", "fee": 1300000, "feeAssetId": null, "timestamp": 1673360352397, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "cwBNKfjJ7zmXjXsd5w7RJtj2Wa3FzbFFy1Ld8ygvp7JYM5E2fF7ezhxX58MvXpRaQs99M9BDLhrtsApzSXnSreE" ], "script": "base64:AAIFAAAAAAAAABUIAhIECgIIARIFCgMIAQgSBAoCCAgAAAAIAAAAAAl1c2RuSWRTdHICAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAAAAAZ1c2RuSWQBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgIAAAAAAQAAAA5nZXRBc3NldFN0cmluZwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAkAAlgAAAABBQAAAAFiAgAAAAVXQVZFUwEAAAANZ2V0QXNzZXRCeXRlcwAAAAEAAAAKYXNzZXRJZFN0cgMJAAAAAAAAAgUAAAAKYXNzZXRJZFN0cgIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAKYXNzZXRJZFN0cgEAAAAKZ2V0QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABeAUAAAAHJG1hdGNoMAgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAPwAAAAAgUAAAAEdGhpcwkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAEAAAAGc3dhcFdYAAAAAwAAAAZhc3NldDAAAAAGYXNzZXQxAAAAB2Ftb3VudDAEAAAADmZhY3RvcnlBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXeFveir5RKq6LMepvE5AlvvSpuKK7CQJBBAAAAAhhc3NldEludAkAAaQAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAA5mYWN0b3J5QWRkcmVzcwkAASwAAAACAgAAACglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fAwkBAAAAAiE9AAAAAgUAAAAGYXNzZXQxBQAAAAl1c2RuSWRTdHIFAAAABmFzc2V0MQUAAAAGYXNzZXQwBAAAAAd1c2RuSW50CQABpAAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAADmZhY3RvcnlBZGRyZXNzCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAACXVzZG5JZFN0cgQAAAAKcG9vbENvbmZpZwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAA5mYWN0b3J5QWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglZCVkJXNfXwUAAAAIYXNzZXRJbnQCAAAAAl9fBQAAAAd1c2RuSW50AgAAAAhfX2NvbmZpZwIAAAACX18EAAAAC3Bvb2xBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcAAAAAAAAAAAEEAAAAC3Bvb2xBc3NldElkCQABkQAAAAIFAAAACnBvb2xDb25maWcAAAAAAAAAAAMEAAAABGludjEJAAP8AAAABAUAAAALcG9vbEFkZHJlc3MCAAAACXB1dE9uZVRrbgkABEwAAAACAAAAAAAAAAAACQAETAAAAAIHBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAAGYXNzZXQwBQAAAAdhbW91bnQwBQAAAANuaWwDCQAAAAAAAAIFAAAABGludjEFAAAABGludjEEAAAAD3Bvb2xUb2tlbkFtb3VudAkBAAAACmdldEJhbGFuY2UAAAABCQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAAC3Bvb2xBc3NldElkAwkAAAAAAAACBQAAAA9wb29sVG9rZW5BbW91bnQFAAAAD3Bvb2xUb2tlbkFtb3VudAQAAAATYXNzZXQxQmFsYW5jZUJlZm9yZQkBAAAACmdldEJhbGFuY2UAAAABCQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAABmFzc2V0MQMJAAAAAAAAAgUAAAATYXNzZXQxQmFsYW5jZUJlZm9yZQUAAAATYXNzZXQxQmFsYW5jZUJlZm9yZQQAAAAEaW52MgkAA/wAAAAEBQAAAAtwb29sQWRkcmVzcwIAAAAJZ2V0T25lVGtuCQAETAAAAAIFAAAABmFzc2V0MQkABEwAAAACAAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAALcG9vbEFzc2V0SWQFAAAAD3Bvb2xUb2tlbkFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAARpbnYyBQAAAARpbnYyBAAAAAdhbW91bnQxCQAAZQAAAAIJAQAAAApnZXRCYWxhbmNlAAAAAQkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAAZhc3NldDEFAAAAE2Fzc2V0MUJhbGFuY2VCZWZvcmUDCQAAAAAAAAIFAAAAB2Ftb3VudDEFAAAAB2Ftb3VudDEFAAAAB2Ftb3VudDEJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEAAAAMc3dhcEludGVybmFsAAAABAAAAAFpAAAACXJvdXRlc1N0cgAAAAxtaW5Ub1JlY2VpdmUAAAAGcmVmS2V5CgEAAAAGZG9Td2FwAAAAAgAAAAZhbW91bnQAAAAEc3dhcAQAAAAGc3dhcExpCQAEtQAAAAIFAAAABHN3YXACAAAAASwEAAAACyR0MDIwNzQyMTU1CQAFFgAAAAQJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAAACQABkQAAAAIFAAAABnN3YXBMaQAAAAAAAAAAAQkAAZEAAAACBQAAAAZzd2FwTGkAAAAAAAAAAAIJAAGRAAAAAgUAAAAGc3dhcExpAAAAAAAAAAADBAAAAARkQXBwCAUAAAALJHQwMjA3NDIxNTUAAAACXzEEAAAACGRBcHBUeXBlCAUAAAALJHQwMjA3NDIxNTUAAAACXzIEAAAABXQwU3RyCAUAAAALJHQwMjA3NDIxNTUAAAACXzMEAAAABXQxU3RyCAUAAAALJHQwMjA3NDIxNTUAAAACXzQEAAAAAnQwCQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAABXQwU3RyBAAAAAdhbW91bnQwAwkBAAAAAiE9AAAAAgUAAAAGYW1vdW50AAAAAAAAAAAABQAAAAZhbW91bnQJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAACdDAEAAAAAmkxAwkAAAAAAAACBQAAAAhkQXBwVHlwZQIAAAAGc3dvcGZpCQAD/AAAAAQJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAARkQXBwAgAAAAhleGNoYW5nZQkABEwAAAACAAAAAAAAAAABBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAAAnQwBQAAAAdhbW91bnQwBQAAAANuaWwDCQAAAAAAAAIFAAAACGRBcHBUeXBlAgAAAAZwdXp6bGUJAAP8AAAABAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAABGRBcHACAAAABHN3YXAJAARMAAAAAgUAAAAFdDFTdHIJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAJ0MAUAAAAHYW1vdW50MAUAAAADbmlsAwkAAAAAAAACBQAAAAhkQXBwVHlwZQIAAAACd3gJAQAAAAZzd2FwV1gAAAADBQAAAAV0MFN0cgUAAAAFdDFTdHIFAAAAB2Ftb3VudDAJAAACAAAAAQIAAAAraW50ZXJuYWwgYWdncmVnYXRvciBpc3N1ZTogdW5rbm93IHBvb2wgdHlwZQMJAAAAAAAAAgUAAAACaTEFAAAAAmkxAAAAAAAAAAAACQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgoBAAAAB2RvUm91dGUAAAACAAAABWFjY3VtAAAABXJvdXRlBAAAAAhhbW91bnRJbgkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIJAAS1AAAAAgUAAAAFcm91dGUCAAAAAS8AAAAAAAAAAAAEAAAABXN3YXBzCQAEtQAAAAIJAAGRAAAAAgkABLUAAAACBQAAAAVyb3V0ZQIAAAABLwAAAAAAAAAAAQIAAAABOwQAAAALc3dhcHNSZXN1bHQKAAAAAAIkbAUAAAAFc3dhcHMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwBQAAAAhhbW91bnRJbgoBAAAABSRmMF8xAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkBAAAABmRvU3dhcAAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkcyAzCQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwMJAAAAAAAAAgUAAAALc3dhcHNSZXN1bHQFAAAAC3N3YXBzUmVzdWx0CQAAZAAAAAIFAAAABWFjY3VtBQAAAAtzd2Fwc1Jlc3VsdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAAAACWFzc2V0MVN0cgkAAZEAAAACCQAEtQAAAAIFAAAACXJvdXRlc1N0cgIAAAABLAkAAGUAAAACCQABkAAAAAEJAAS1AAAAAgUAAAAJcm91dGVzU3RyAgAAAAEsAAAAAAAAAAABBAAAAAZhc3NldDEJAQAAAA1nZXRBc3NldEJ5dGVzAAAAAQUAAAAJYXNzZXQxU3RyBAAAAAZyb3V0ZXMJAAS1AAAAAgUAAAAJcm91dGVzU3RyAgAAAAF8BAAAAAVzd2FwcwoAAAAAAiRsBQAAAAZyb3V0ZXMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwAAAAAAAAAAAACgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAAHZG9Sb3V0ZQAAAAIFAAAAAiRhCQABkQAAAAIFAAAAAiRsBQAAAAIkaQoBAAAABSRmMF8yAAAAAgAAAAIkYQAAAAIkaQMJAABnAAAAAgUAAAACJGkFAAAAAiRzBQAAAAIkYQkAAAIAAAABAgAAABNMaXN0IHNpemUgZXhjZWVkcyA0CQEAAAAFJGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAMJAAAAAAAAAgUAAAAFc3dhcHMFAAAABXN3YXBzBAAAAAh0b3RhbE91dAkBAAAACmdldEJhbGFuY2UAAAABBQAAAAZhc3NldDEEAAAACWZlZUFtb3VudAkAAGsAAAADBQAAAAh0b3RhbE91dAAAAAAAAAAAHQAAAAAAAAAnEAQAAAAQY2xlYW5Ub3RhbEFtb3VudAkAAGUAAAACBQAAAAh0b3RhbE91dAUAAAAJZmVlQW1vdW50AwkAAGYAAAACBQAAAAxtaW5Ub1JlY2VpdmUFAAAAEGNsZWFuVG90YWxBbW91bnQJAAACAAAAAQkAASwAAAACAgAAAC1hbW91bnQgdG8gcmVjZWl2ZSBpcyBsb3dlciB0aGFuIGV4cGVjdGVkIG9uZSAJAAGkAAAAAQUAAAAQY2xlYW5Ub3RhbEFtb3VudAQAAAAHdXNkbkZlZQMJAAAAAAAAAgUAAAAGYXNzZXQxBQAAAAZ1c2RuSWQFAAAACWZlZUFtb3VudAQAAAAOcG9vbEFkZHJlc3NTdHIJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQABLAAAAAIJAAEsAAAAAgIAAAANc3RhdGljX2Fzc2V0XwUAAAAJYXNzZXQxU3RyAgAAAAtfcHV6emxlUG9vbAMJAAAAAAAAAgUAAAAOcG9vbEFkZHJlc3NTdHICAAAAAAAAAAAAAAAAAAQAAAARdXNkbkJhbGFuY2VCZWZvcmUJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAAGdXNkbklkAwkAAAAAAAACBQAAABF1c2RuQmFsYW5jZUJlZm9yZQUAAAARdXNkbkJhbGFuY2VCZWZvcmUEAAAADGNvbnZlcnRlZEZlZQkAA/wAAAAECQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAA5wb29sQWRkcmVzc1N0cgIAAAAEc3dhcAkABEwAAAACBQAAAAl1c2RuSWRTdHIJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAZhc3NldDEFAAAACWZlZUFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAAxjb252ZXJ0ZWRGZWUFAAAADGNvbnZlcnRlZEZlZQQAAAAQdXNkbkJhbGFuY2VBZnRlcgkBAAAACmdldEJhbGFuY2UAAAABBQAAAAZ1c2RuSWQDCQAAAAAAAAIFAAAAEHVzZG5CYWxhbmNlQWZ0ZXIFAAAAEHVzZG5CYWxhbmNlQWZ0ZXIJAABlAAAAAgUAAAAQdXNkbkJhbGFuY2VBZnRlcgUAAAARdXNkbkJhbGFuY2VCZWZvcmUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4DCQAAAAAAAAIFAAAAB3VzZG5GZWUFAAAAB3VzZG5GZWUEAAAAD3JlZmVycmFsQWRkcmVzcwMJAAAAAAAAAgUAAAAGcmVmS2V5AgAAAARtdW5hCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXnQyqxhNRqW7LgPdjfcFkeOLvck2oDLrTAwkAAAAAAAACBQAAAAZyZWZLZXkCAAAABmtlZXBlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV+O2yhI07m9Gb/DKqIDji69xTfFemaw79gMJAAAAAAAAAgUAAAAGcmVmS2V5AgAAAAN0Y2kJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVdOBKn1coze5/nSUkrduGtTRYx6p5o4fZwJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVf8mgdw4W/e0ZQhIW16to1Y0kJYeywHJhIEAAAADHJlZlVzZG5TaGFyZQMJAAAAAAAAAgUAAAAGcmVmS2V5AgAAAAVub3JlZgAAAAAAAAAAAAkAAGsAAAADBQAAAAd1c2RuRmVlAAAAAAAAAAACAAAAAAAAAAAKBAAAAAV0b3BVcAkAA/wAAAAECQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXwIqtc5QhM72wGFYPKLW5PkF3zr9v8v7XAgAAAAt0b3BVcFJld2FyZAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAZ1c2RuSWQJAABlAAAAAgUAAAAHdXNkbkZlZQUAAAAMcmVmVXNkblNoYXJlBQAAAANuaWwDCQAAAAAAAAIFAAAABXRvcFVwBQAAAAV0b3BVcAQAAAAGYXNzZXQwCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAdhbW91bnQwCQAAZQAAAAIJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAAGYXNzZXQwAwkAAAAAAAACBQAAAAZhc3NldDAFAAAABnVzZG5JZAUAAAAMcmVmVXNkblNoYXJlAAAAAAAAAAAABAAAAAdhbW91bnQxCQAAZQAAAAIJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAAGYXNzZXQxAwkAAAAAAAACBQAAAAZhc3NldDEFAAAABnVzZG5JZAUAAAAMcmVmVXNkblNoYXJlAAAAAAAAAAAACQAETgAAAAIJAAROAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAB2Ftb3VudDEFAAAABmFzc2V0MQUAAAADbmlsAwkBAAAAAiE9AAAAAgUAAAAMcmVmVXNkblNoYXJlAAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAD3JlZmVycmFsQWRkcmVzcwUAAAAMcmVmVXNkblNoYXJlBQAAAAZ1c2RuSWQFAAAAA25pbAUAAAADbmlsAwkBAAAAAiE9AAAAAgUAAAAHYW1vdW50MAAAAAAAAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAB2Ftb3VudDAFAAAABmFzc2V0MAUAAAADbmlsBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAADAAAAAWkBAAAABHN3YXAAAAACAAAACXJvdXRlc1N0cgAAAAxtaW5Ub1JlY2VpdmUJAQAAAAxzd2FwSW50ZXJuYWwAAAAEBQAAAAFpBQAAAAlyb3V0ZXNTdHIFAAAADG1pblRvUmVjZWl2ZQIAAAAFbm9yZWYAAAABaQEAAAAQc3dhcFdpdGhSZWZlcnJhbAAAAAMAAAAJcm91dGVzU3RyAAAADG1pblRvUmVjZWl2ZQAAAAZyZWZLZXkJAQAAAAxzd2FwSW50ZXJuYWwAAAAEBQAAAAFpBQAAAAlyb3V0ZXNTdHIFAAAADG1pblRvUmVjZWl2ZQUAAAAGcmVmS2V5AAAAAWkBAAAAEmFkZFRva2VuUHV6emxlUG9vbAAAAAIAAAAKYXNzZXRJZFN0cgAAAA5wb29sQWRkcmVzc1N0cgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV0vDbM77M1hDWENREO7v7iEQF0vyeMt8MgkAAAIAAAABAgAAAAphZG1pbiBvbmx5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1zdGF0aWNfYXNzZXRfBQAAAAphc3NldElkU3RyAgAAAAtfcHV6emxlUG9vbAUAAAAOcG9vbEFkZHJlc3NTdHIFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5F/Drqw==", "height": 3464484, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: U4W8pyTvZNpZmMd2AZw7J3gFYFRj7wqhkA5jbUh1ARd Next: DLHjAd9YF6bimB9kULa6G8wrd45JLoiGnRC3mg5dmDCX Diff:
OldNewDifferences
3434 }
3535
3636
37+func swapWX (asset0,asset1,amount0) = {
38+ let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
39+ let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != usdnIdStr))
40+ then asset1
41+ else asset0))))
42+ let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + usdnIdStr)))
43+ let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
44+ let poolAddress = addressFromStringValue(poolConfig[1])
45+ let poolAssetId = poolConfig[3]
46+ let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
47+ if ((inv1 == inv1))
48+ then {
49+ let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
50+ if ((poolTokenAmount == poolTokenAmount))
51+ then {
52+ let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
53+ if ((asset1BalanceBefore == asset1BalanceBefore))
54+ then {
55+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
56+ if ((inv2 == inv2))
57+ then {
58+ let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
59+ if ((amount1 == amount1))
60+ then amount1
61+ else throw("Strict value is not equal to itself.")
62+ }
63+ else throw("Strict value is not equal to itself.")
64+ }
65+ else throw("Strict value is not equal to itself.")
66+ }
67+ else throw("Strict value is not equal to itself.")
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+
72+
3773 func swapInternal (i,routesStr,minToReceive,refKey) = {
3874 func doSwap (amount,swap) = {
3975 let swapLi = split(swap, ",")
40- let $t09311012 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
41- let dApp = $t09311012._1
42- let dAppType = $t09311012._2
43- let t0Str = $t09311012._3
44- let t1Str = $t09311012._4
76+ let $t020742155 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
77+ let dApp = $t020742155._1
78+ let dAppType = $t020742155._2
79+ let t0Str = $t020742155._3
80+ let t1Str = $t020742155._4
4581 let t0 = getAssetBytes(t0Str)
4682 let amount0 = if ((amount != 0))
4783 then amount
4884 else getBalance(t0)
4985 let i1 = if ((dAppType == "swopfi"))
5086 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
51- else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
87+ else if ((dAppType == "puzzle"))
88+ then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
89+ else if ((dAppType == "wx"))
90+ then swapWX(t0Str, t1Str, amount0)
91+ else throw("internal aggregator issue: unknow pool type")
5292 if ((i1 == i1))
5393 then 0
5494 else throw("Strict value is not equal to itself.")
89129
90130 func $f0_2 ($a,$i) = if (($i >= $s))
91131 then $a
92- else throw("List size exceeds 5")
132+ else throw("List size exceeds 4")
93133
94- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
134+ $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
95135 }
96136 if ((swaps == swaps))
97137 then {
131171 else if ((refKey == "keeper"))
132172 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
133173 else if ((refKey == "tci"))
134- then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
174+ then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
135175 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
136176 let refUsdnShare = if ((refKey == "noref"))
137177 then 0
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
55
66 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 func tryGetString (key) = match getString(this, key) {
99 case b: String =>
1010 b
1111 case _ =>
1212 ""
1313 }
1414
1515
1616 func getAssetString (assetId) = match assetId {
1717 case b: ByteVector =>
1818 toBase58String(b)
1919 case _ =>
2020 "WAVES"
2121 }
2222
2323
2424 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2525 then unit
2626 else fromBase58String(assetIdStr)
2727
2828
2929 func getBalance (assetId) = match assetId {
3030 case x: Unit =>
3131 wavesBalance(this).available
3232 case _ =>
3333 assetBalance(this, value(assetId))
3434 }
3535
3636
37+func swapWX (asset0,asset1,amount0) = {
38+ let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
39+ let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != usdnIdStr))
40+ then asset1
41+ else asset0))))
42+ let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + usdnIdStr)))
43+ let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
44+ let poolAddress = addressFromStringValue(poolConfig[1])
45+ let poolAssetId = poolConfig[3]
46+ let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
47+ if ((inv1 == inv1))
48+ then {
49+ let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
50+ if ((poolTokenAmount == poolTokenAmount))
51+ then {
52+ let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
53+ if ((asset1BalanceBefore == asset1BalanceBefore))
54+ then {
55+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
56+ if ((inv2 == inv2))
57+ then {
58+ let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
59+ if ((amount1 == amount1))
60+ then amount1
61+ else throw("Strict value is not equal to itself.")
62+ }
63+ else throw("Strict value is not equal to itself.")
64+ }
65+ else throw("Strict value is not equal to itself.")
66+ }
67+ else throw("Strict value is not equal to itself.")
68+ }
69+ else throw("Strict value is not equal to itself.")
70+ }
71+
72+
3773 func swapInternal (i,routesStr,minToReceive,refKey) = {
3874 func doSwap (amount,swap) = {
3975 let swapLi = split(swap, ",")
40- let $t09311012 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
41- let dApp = $t09311012._1
42- let dAppType = $t09311012._2
43- let t0Str = $t09311012._3
44- let t1Str = $t09311012._4
76+ let $t020742155 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
77+ let dApp = $t020742155._1
78+ let dAppType = $t020742155._2
79+ let t0Str = $t020742155._3
80+ let t1Str = $t020742155._4
4581 let t0 = getAssetBytes(t0Str)
4682 let amount0 = if ((amount != 0))
4783 then amount
4884 else getBalance(t0)
4985 let i1 = if ((dAppType == "swopfi"))
5086 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
51- else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
87+ else if ((dAppType == "puzzle"))
88+ then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
89+ else if ((dAppType == "wx"))
90+ then swapWX(t0Str, t1Str, amount0)
91+ else throw("internal aggregator issue: unknow pool type")
5292 if ((i1 == i1))
5393 then 0
5494 else throw("Strict value is not equal to itself.")
5595 }
5696
5797 func doRoute (accum,route) = {
5898 let amountIn = parseIntValue(split(route, "/")[0])
5999 let swaps = split(split(route, "/")[1], ";")
60100 let swapsResult = {
61101 let $l = swaps
62102 let $s = size($l)
63103 let $acc0 = amountIn
64104 func $f0_1 ($a,$i) = if (($i >= $s))
65105 then $a
66106 else doSwap($a, $l[$i])
67107
68108 func $f0_2 ($a,$i) = if (($i >= $s))
69109 then $a
70110 else throw("List size exceeds 3")
71111
72112 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
73113 }
74114 if ((swapsResult == swapsResult))
75115 then (accum + swapsResult)
76116 else throw("Strict value is not equal to itself.")
77117 }
78118
79119 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
80120 let asset1 = getAssetBytes(asset1Str)
81121 let routes = split(routesStr, "|")
82122 let swaps = {
83123 let $l = routes
84124 let $s = size($l)
85125 let $acc0 = 0
86126 func $f0_1 ($a,$i) = if (($i >= $s))
87127 then $a
88128 else doRoute($a, $l[$i])
89129
90130 func $f0_2 ($a,$i) = if (($i >= $s))
91131 then $a
92- else throw("List size exceeds 5")
132+ else throw("List size exceeds 4")
93133
94- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
134+ $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
95135 }
96136 if ((swaps == swaps))
97137 then {
98138 let totalOut = getBalance(asset1)
99139 let feeAmount = fraction(totalOut, 29, 10000)
100140 let cleanTotalAmount = (totalOut - feeAmount)
101141 if ((minToReceive > cleanTotalAmount))
102142 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
103143 else {
104144 let usdnFee = if ((asset1 == usdnId))
105145 then feeAmount
106146 else {
107147 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
108148 if ((poolAddressStr == ""))
109149 then 0
110150 else {
111151 let usdnBalanceBefore = getBalance(usdnId)
112152 if ((usdnBalanceBefore == usdnBalanceBefore))
113153 then {
114154 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
115155 if ((convertedFee == convertedFee))
116156 then {
117157 let usdnBalanceAfter = getBalance(usdnId)
118158 if ((usdnBalanceAfter == usdnBalanceAfter))
119159 then (usdnBalanceAfter - usdnBalanceBefore)
120160 else throw("Strict value is not equal to itself.")
121161 }
122162 else throw("Strict value is not equal to itself.")
123163 }
124164 else throw("Strict value is not equal to itself.")
125165 }
126166 }
127167 if ((usdnFee == usdnFee))
128168 then {
129169 let referralAddress = if ((refKey == "muna"))
130170 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
131171 else if ((refKey == "keeper"))
132172 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
133173 else if ((refKey == "tci"))
134- then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
174+ then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
135175 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
136176 let refUsdnShare = if ((refKey == "noref"))
137177 then 0
138178 else fraction(usdnFee, 2, 10)
139179 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
140180 if ((topUp == topUp))
141181 then {
142182 let asset0 = i.payments[0].assetId
143183 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
144184 then refUsdnShare
145185 else 0))
146186 let amount1 = (getBalance(asset1) - (if ((asset1 == usdnId))
147187 then refUsdnShare
148188 else 0))
149189 (([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
150190 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
151191 else nil)) ++ (if ((amount0 != 0))
152192 then [ScriptTransfer(i.caller, amount0, asset0)]
153193 else nil))
154194 }
155195 else throw("Strict value is not equal to itself.")
156196 }
157197 else throw("Strict value is not equal to itself.")
158198 }
159199 }
160200 else throw("Strict value is not equal to itself.")
161201 }
162202
163203
164204 @Callable(i)
165205 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
166206
167207
168208
169209 @Callable(i)
170210 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
171211
172212
173213
174214 @Callable(i)
175215 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
176216 then throw("admin only")
177217 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
178218
179219
180220 @Verifier(tx)
181221 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
182222

github/deemru/w8io/786bc32 
44.37 ms