tx · EdgjDSwgtroqzQL9exTRgifs3eim34Qy7ZZzZpNWvrC4

3P5NsLwjzAmDwChRouCrBjGxzu8rgkR25Xx:  -0.01000000 Waves

2023.05.21 22:09 [3653622] smart account 3P5NsLwjzAmDwChRouCrBjGxzu8rgkR25Xx > SELF 0.00000000 Waves

{ "type": 13, "id": "EdgjDSwgtroqzQL9exTRgifs3eim34Qy7ZZzZpNWvrC4", "fee": 1000000, "feeAssetId": null, "timestamp": 1684696185247, "version": 2, "chainId": 87, "sender": "3P5NsLwjzAmDwChRouCrBjGxzu8rgkR25Xx", "senderPublicKey": "9nF7sQoZcskcPAt61qPKSvxJ92QZyU5rhKBrr5AfJ1YQ", "proofs": [ "5hX5tNiQ9RypaXGR8PMo5shiSr1CDwHXnjGShNHDmQ3oKcMLGfBhUuuaBBP5J3K3FavgvSczY9N1Y7BoZWGLLCCz" ], "script": "base64:BgLIDQgCEgAiBlNjYWxlNiIMU2NhbGU2QmlnSW50IgpaZXJvQmlnSW50IgZTY2FsZTgiDFNjYWxlOEJpZ0ludCIDU0VQIgdJblNjYWxlIgpJbkRlY2ltYWxzIg1JblNjYWxlQmlnSW50IgdJbkFzc2V0IgZjYWxsZXIiCHJlY2VpdmVyIg13eFN3YXBBZGRyZXNzIg50aGlzQWRkcmVzc1N0ciIKZ2V0QmFsYW5jZSIFYXNzZXQiD2dldEFzc2V0T3JXYXZlcyIIYXNzZXRTdHIiCWluQmFsYW5jZSIPaW5CYWxhbmNlQmlnSW50IgtnZXRTd29wUG9vbCIEcG9vbCILYXNzZXRJZEFTdHIiC2Fzc2V0SWRCU3RyIghhc3NldElkQSIIYXNzZXRJZEIiCGJhbGFuY2VBIghiYWxhbmNlQiIGb3V0RmVlIhRrZXlBZGRpdGlvbmFsQmFsYW5jZSIHYXNzZXRJZCIWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZSIaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8iHGdldFN0YWtpbmdBc3NldEJhbGFuY2VPclplcm8iE2dldFd4QWNjb3VudEJhbGFuY2UiDWJhbGFuY2VPblBvb2wiDHRvdGFsQmFsYW5jZSIJZ2V0V3hQb29sIgtwcm90b2NvbEZlZSIHcG9vbEZlZSIFaW5GZWUiCGNhbGNTd2FwIglwbXRBbW91bnQiCXRva2VuRnJvbSIHdG9rZW5UbyILY2xlYW5BbW91bnQiEGFtb3VudFdpdGhvdXRGZWUiDWFtb3VudFdpdGhGZWUiDGVzdGltYXRlU3dhcCIIcG9vbEluZm8iB2luQXNzZXQiCGluQW1vdW50Iglyb3V0ZUFyZ3MiCGRhcHBBcmdzIg1lc3RpbWF0ZVJvdXRlIgVwb29sMSIFcG9vbDIiBXBvb2wzIgxwb29sMVJldmVyc2UiDHBvb2wyUmV2ZXJzZSIMcG9vbDNSZXZlcnNlIgNhMTIiA2EyMSIDYTIzIgNhMzIiA2EzMSIDYTEzIg1hYURlbm9taW5hdG9yIgRhYTEzIgRhYTMxIgxhRGVub21pbmF0b3IiAWEiAmFhIgVkZWx0YSIFaW5wdXQiBXN3YXAxIgVzd2FwMiIFc3dhcDMiCmludm9rZVN3YXAiBGFyZ3MiDmN1cnJlbnRCYWxhbmNlIg10cmltbWVkQW1vdW50IgxyZXN1bHRBbW91bnQiEXN3b3BfZXRocHB0X3dhdmVzIgxzd29wX3B3cl94dG4iD3N3b3BfcHV6emxlX3h0biIRc3dvcF9wdXp6bGVfd2F2ZXMiDXN3b3Bfc3dvcF94dG4iD3N3b3Bfc3dvcF93YXZlcyIOc3dvcF93YXZlc194dG4iEnN3b3Bfd2F2ZXNfdXNkdHBwdCINc3dvcF93ZXN0X3h0biILc3dvcF93eF94dG4iDXd4X2J0Y3d4Z194dG4iD3d4X2V0aHBwdF93YXZlcyIRd3hfZXRocHB0X3VzZHRwcHQiD3d4X2V0aHd4Z193YXZlcyINd3hfZXRod3hnX3h0biINd3hfbnNidF93YXZlcyILd3hfbnNidF94dG4iD3d4X3B1enpsZV93YXZlcyINd3hfcHV6emxlX3h0biIMd3hfcHdyX3dhdmVzIg13eF9zdXJmX3dhdmVzIg93eF9zdXJmX3VzZGN3eGciD3d4X3N1cmZfdXNkdHd4ZyIPd3hfc3dhdmVzX3dhdmVzIg13eF9zd2F2ZXNfeHRuIg13eF9zd29wX3dhdmVzIgt3eF9zd29wX3h0biIOd3hfdXNkdHBwdF94dG4iDnd4X3ZpcmVzX3dhdmVzIgx3eF92aXJlc194dG4iD3d4X3dhdmVzX2J0Y3d4ZyIMd3hfd2F2ZXNfeHRuIhB3eF93YXZlc191c2R0cHB0IhB3eF93YXZlc191c2Rjd3hnIhB3eF93YXZlc191c2R0d3hnIg13eF93ZXN0X3dhdmVzIgt3eF93ZXN0X3h0biINd3hfd3hfdXNkdHd4ZyILd3hfd3hfd2F2ZXMiCXd4X3d4X3h0biIGcm91dGVzIgFpIg1hY2N1bUZ1bmN0aW9uIgVhY2N1bSIEbmV4dCIKZXN0aW1hdGlvbiIEZm9sZCICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiDW1heFN3YXBQcm9maXQiD2VzdGltYXRlZFJlc3VsdCIHcmVzdWx0MSIHcmVzdWx0MiIHcmVzdWx0MyIGcHJvZml0IgpwdXJlUHJvZml0RgABYQDAhD0AAWIJALYCAQUBYQABYwkAtgIBAAAAAWQAgMLXLwABZQkAtgIBBQFkAAFmAgJfXwABZwCAwtcvAAFoAAgAAWkJALYCAQUBZwABagUEdW5pdAABawkBB0FkZHJlc3MBARoBVynC/E/Rr/hWmH218H5B3YNkoXx/jz1ZAAABbAkBB0FkZHJlc3MBARoBVynC/E/Rr/hWmH218H5B3YNkoXx/jz1ZAAABbQkBB0FkZHJlc3MBARoBVy4qNTWxDbfxeT7ht0bQnnRSTXsx0IOuBgABbgkApQgBBQR0aGlzAQFvAQFwAwkAAAIFAXAFBHVuaXQICQDvBwEFBHRoaXMHcmVndWxhcgkA8AcCBQR0aGlzCQEFdmFsdWUBBQFwAQFxAQFyAwkAAAIFAXICBVdBVkVTBQR1bml0CQDZBAEFAXIAAXMJAQFvAQUBagABdAkAtgIBBQFzAQF1AQF2BAF3CQERQGV4dHJOYXRpdmUoMTA1MykCBQF2AgpBX2Fzc2V0X2lkBAF4CQERQGV4dHJOYXRpdmUoMTA1MykCBQF2AgpCX2Fzc2V0X2lkBAF5CQEBcQEFAXcEAXoJAQFxAQUBeAQBQQkBEUBleHRyTmF0aXZlKDEwNTApAgUBdgIPQV9hc3NldF9iYWxhbmNlBAFCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQF2Ag9CX2Fzc2V0X2JhbGFuY2UEAUMJALgCAgUBYgkAtgIBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQF2Agpjb21taXNzaW9uCQCbCgkJALYCAQUBQQkAtgIBBQFCBQF5BQF6BQF3BQF4BQFiBQFDBQF2AQFEAQFFCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg1zdGFrZWRCYWxhbmNlCQDMCAIFAUUFA25pbAUBZgEBRgEBRQkAuQkCCQDMCAICBCVzJXMJAMwIAgIRc2hhcmVBc3NldEJhbGFuY2UJAMwIAgUBRQUDbmlsBQFmAQFHAgF2AUUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBdgkBAUQBBQFFAAABAUgCAXYBRQkBC3ZhbHVlT3JFbHNlAgkAmggCBQF2CQEBRgEFAUUAAAEBSQIBdgFFBAFKAwkAAAIFAUUCBVdBVkVTCAkA7wcBBQF2CWF2YWlsYWJsZQkA8AcCBQF2CQDZBAEFAUUEAUsJAGUCCQBkAgUBSgkBAUcCBQF2BQFFCQEBSAIFAXYFAUUJAJYDAQkAzAgCAAAJAMwIAgUBSwUDbmlsAQFMAQF2BAF3CQERQGV4dHJOYXRpdmUoMTA1MykCBQF2Ag8lc19fYW1vdW50QXNzZXQEAXgJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAXYCDiVzX19wcmljZUFzc2V0BAF5CQEBcQEFAXcEAXoJAQFxAQUBeAQBQQkBAUkCBQF2BQF3BAFCCQEBSQIFAXYFAXgEAU0JARFAZXh0ck5hdGl2ZSgxMDUwKQIFAW0CDyVzX19wcm90b2NvbEZlZQQBTgkBEUBleHRyTmF0aXZlKDEwNTApAgUBbQILJXNfX3Bvb2xGZWUEAU8JALgCAgUBYgkAvAIDCQC2AgEJAGQCBQFNBQFOBQFiBQFlCQCbCgkJALYCAQUBQQkAtgIBBQFCBQF5BQF6BQF3BQF4BQFPBQFiBQFtAQFQBQFRAVIBUwFPAUMEAVQJALwCAwUBUQUBTwUBYgQBVQkAvAIDBQFTBQFUCQC3AgIFAVQFAVIEAVYJALwCAwUBVQUBQwUBYgUBVgEBVwMBWAFZAVoEAmFhAwkAAAIFAVkIBQFYAl8zCQCVCgMIBQFYAl80CAUBWAJfNgkBAVAFBQFaCAUBWAJfMQgFAVgCXzIIBQFYAl83CAUBWAJfOAkAlQoDCAUBWAJfMwgFAVgCXzUJAQFQBQUBWggFAVgCXzIIBQFYAl8xCAUBWAJfNwgFAVgCXzgEAmFiAwkAAAIIBQFYAl85BQFtCQCUCgICBHN3YXAJAMwIAgAACQDMCAIIBQJhYQJfMgkAzAgCBQFuBQNuaWwJAJQKAgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAJYKBAgFAmFhAl8xCAUCYWECXzMIBQJhYgJfMQgFAmFiAl8yAQJhYwYCYWQCYWUCYWYCYWcCYWgCYWkEAmFqAwUCYWcIBQJhZAJfMggFAmFkAl8xBAJhawMFAmFnCAUCYWQCXzEIBQJhZAJfMgQCYWwDBQJhaAgFAmFlAl8yCAUCYWUCXzEEAmFtAwUCYWgIBQJhZQJfMQgFAmFlAl8yBAJhbgMFAmFpCAUCYWYCXzIIBQJhZgJfMQQCYW8DBQJhaQgFAmFmAl8xCAUCYWYCXzIEAmFwCQC3AgIFAmFsCQC8AgMJALwCAwUCYWsIBQJhZAJfOAUBYggFAmFlAl83BQFiBAJhcQkAvAIDBQJhagUCYWwFAmFwBAJhcgkAvAID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AmJrBQJicwUCYnIHBgcJAMwIAgkAmAoGBQJicgUCYnMFAmJrBgcGCQDMCAIJAJgKBgUCYmsFAmFQBQJiagcGBgkAzAgCCQCYCgYFAmJqBQJhUAUCYmsHBwYJAMwIAgkAmAoGBQJiawUCYVQFAmFTBwYHCQDMCAIJAJgKBgUCYVMFAmFUBQJiawYHBgkAzAgCCQCYCgYFAmJrBQJhRwUCYVkHBgcJAMwIAgkAmAoGBQJhWQUCYUcFAmJrBgcGCQDMCAIJAJgKBgUCYVoFAmJiBQJibgYHBgkAzAgCCQCYCgYFAmJuBQJiYgUCYVoHBgcJAMwIAgkAmAoGBQJhWgUCYmEFAmJtBgcGCQDMCAIJAJgKBgUCYm0FAmJhBQJhWgcGBwkAzAgCCQCYCgYFAmJyBQJicQUCYm4GBwYJAMwIAgkAmAoGBQJibgUCYnEFAmJyBwYHCQDMCAIJAJgKBgUCYmsFAmFWBQJhVQcGBwkAzAgCCQCYCgYFAmFVBQJhVgUCYmsGBwYJAMwIAgkAmAoGBQJiawUCYmQFAmJjBwYHCQDMCAIJAJgKBgUCYmMFAmJkBQJiawYHBgkAzAgCCQCYCgYFAmJrBQJiaQUCYmgHBgcJAMwIAgkAmAoGBQJiaAUCYmkFAmJrBgcGCQDMCAIJAJgKBgUCYmsFAmJnBQJibAcGBgkAzAgCCQCYCgYFAmJsBQJiZwUCYmsHBwYJAMwIAgkAmAoGBQJibAUCYVIFAmFRBwYHCQDMCAIJAJgKBgUCYVEFAmFSBQJibAYHBgkAzAgCCQCYCgYFAmJyBQJhTwUCYUwGBwYJAMwIAgkAmAoGBQJhTAUCYU8FAmJyBwYHCQDMCAIJAJgKBgUCYmsFAmFPBQJicgcGBwkAzAgCCQCYCgYFAmJyBQJhTwUCYmsGBwYJAMwIAgkAmAoGBQJhRgUCYVIFAmFNBgcGCQDMCAIJAJgKBgUCYU0FAmFSBQJhRgcGBwkAzAgCCQCYCgYFAmJvBQJhTgUCYmsGBwYJAMwIAgkAmAoGBQJiawUCYU4FAmJvBwYHCQDMCAIJAJgKBgUCYm8FAmJwBQJiawYHBgkAzAgCCQCYCgYFAmJrBQJicAUCYm8HBgcJAMwIAgkAmAoGBQJiawUCYmYFAmJlBwYHCQDMCAIJAJgKBgUCYmUFAmJmBQJiawYHBgkAzAgCCQCYCgYFAmFLBQJhSgUCYmsGBwYJAMwIAgkAmAoGBQJiawUCYUoFAmFLBwYHCQDMCAIJAJgKBgUCYVcFAmFYBQJiawYHBgkAzAgCCQCYCgYFAmJrBQJhWAUCYVcHBgcJAMwIAgkAmAoGBQJhSQUCYUgFAmJrBgcGCQDMCAIJAJgKBgUCYmsFAmFIBQJhSQcGBwUDbmlsAQJidQEHZGVmYXVsdAADCQECIT0CCAUCYnUGY2FsbGVyBQFrCQACAQICOkQKAQJidgICYncCYngEAmJ5CQECYWMGCAUCYngCXzEIBQJieAJfMggFAmJ4Al8zCAUCYngCXzQIBQJieAJfNQgFAmJ4Al82CQCUCgIJAM0IAggFAmJ3Al8xCAUCYnkCXzEJAM0IAggFAmJ3Al8yCAUCYnkCXzIEAmJ6CgACYkEFAmJ0CgACYkIJAJADAQUCYkEKAAJiQwkAlAoCBQNuaWwFA25pbAoBAmJEAgJiRQJiRgMJAGcCBQJiRgUCYkIFAmJFCQECYnYCBQJiRQkAkQMCBQJiQQUCYkYKAQJiRwICYkUCYkYDCQBnAgUCYkYFAmJCBQJiRQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDQyCQECYkcCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCCQECYkQCBQJiQwAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqBAJiSAkAlgMBCAUCYnoCXzEDCQBnAgAABQJiSAkAAgECDUVzdGltYXRlIGZhaWwEAmJJCQCRAwIIBQJiegJfMgkBBXZhbHVlAQkAzwgCCAUCYnoCXzEFAmJIBAJiSgkBAmFBAQkAkQMCBQJiSQAAAwkAAAIFAmJKBQJiSgQCYksJAQJhQQEJAJEDAgUCYkkAAQMJAAACBQJiSwUCYksEAmJMCQECYUEBCQCRAwIFAmJJAAIDCQAAAgUCYkwFAmJMBAJiTQkAZQIJAQFvAQUBagUBcwQCYk4DCQBmAgkAagIIBQJidQNmZWUACgAACQBlAgUCYk0AgOiSJgkAZQIFAmJNAICJegMJAGcCAAAFAmJOCQACAQIMRXhlY3V0ZSBmYWlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAWwFAmJNBQFqBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AXxcyew==", "height": 3653622, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4C4Gkw4W6b4SUnQTtWDkQ6QfBmrQKYTYHwcztPB3PNYj Next: BrGS84CfKKk16mxmNw5neXSjNJFp4XE5yzxmokzTRTea Diff:
OldNewDifferences
167167
168168 let swop_pwr_xtn = getSwopPool(Address(base58'3P88KDKWHNKNdbZxe8FfAJP8coAhvfDtuzV'))
169169
170+let swop_puzzle_xtn = getSwopPool(Address(base58'3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee'))
171+
172+let swop_puzzle_waves = getSwopPool(Address(base58'3PRFKemXs4rAJYGPccNtP63Kw2UzwEdH7sZ'))
173+
174+let swop_swop_xtn = getSwopPool(Address(base58'3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W'))
175+
176+let swop_swop_waves = getSwopPool(Address(base58'3PH8Np6jwuoikvkHL2qmdpFEHBR4UV5vwSq'))
177+
170178 let swop_waves_xtn = getSwopPool(Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG'))
171179
172180 let swop_waves_usdtppt = getSwopPool(Address(base58'3P2M9btqYdpENh1SkaHFDdc8XSjXHNiAXF5'))
181+
182+let swop_west_xtn = getSwopPool(Address(base58'3P6DLdJTP2EySq9MFdJu6beUevrQd2sVVBh'))
173183
174184 let swop_wx_xtn = getSwopPool(Address(base58'3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R'))
175185
187197
188198 let wx_nsbt_xtn = getWxPool(Address(base58'3P97XQCT9VYMXBxasVpDsE7eZfQ6cR9eS9n'))
189199
200+let wx_puzzle_waves = getWxPool(Address(base58'3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz'))
201+
202+let wx_puzzle_xtn = getWxPool(Address(base58'3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug'))
203+
190204 let wx_pwr_waves = getWxPool(Address(base58'3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t'))
191205
192206 let wx_surf_waves = getWxPool(Address(base58'3PNnCngfvAzyvAQ1cEudZ3o6o3tFktsBVz5'))
198212 let wx_swaves_waves = getWxPool(Address(base58'3PDVaJDqCadWeBugf768XeKiXtCCLUrYMge'))
199213
200214 let wx_swaves_xtn = getWxPool(Address(base58'3PEmxUzcCbsAcw6Q3VNLTWdd8bjc8KBUEDz'))
215+
216+let wx_swop_waves = getWxPool(Address(base58'3PA8nK44sopUpXNcCRTpPSH2F7yjvxzx5cw'))
217+
218+let wx_swop_xtn = getWxPool(Address(base58'3PCApn7kL3UMdCVYA2Ln2UcQvfnkFRL1qDC'))
201219
202220 let wx_usdtppt_xtn = getWxPool(Address(base58'3P5kfoYW7jPa9zYoTkN6Z6z8xtw8JGhymYB'))
203221
215233
216234 let wx_waves_usdtwxg = getWxPool(Address(base58'3PKMVZ7kQeaREajYi8Yc25Ro6mcNw5D6QSa'))
217235
236+let wx_west_waves = getWxPool(Address(base58'3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe'))
237+
238+let wx_west_xtn = getWxPool(Address(base58'3PFxchXqKNjgP1CcbgFZjHyrEj9xMbSeLU3'))
239+
218240 let wx_wx_usdtwxg = getWxPool(Address(base58'3PHiXGo7NTRoC2KqkMZ1y9LaA2QSrroGs8y'))
219241
220242 let wx_wx_waves = getWxPool(Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh'))
221243
222244 let wx_wx_xtn = getWxPool(Address(base58'3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99'))
223245
224-let routes = [$Tuple6(wx_waves_xtn, wx_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_btcwxg_xtn, wx_waves_btcwxg, false, true, true), $Tuple6(wx_waves_btcwxg, wx_btcwxg_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_xtn, wx_ethwxg_xtn, wx_ethwxg_waves, false, true, false), $Tuple6(wx_ethwxg_waves, wx_ethwxg_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_pwr_xtn, wx_pwr_waves, false, true, false), $Tuple6(wx_pwr_waves, swop_pwr_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_surf_waves, wx_surf_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_surf_usdtwxg, wx_surf_waves, false, true, false), $Tuple6(wx_surf_waves, wx_surf_usdcwxg, wx_waves_usdcwxg, true, false, true), $Tuple6(wx_waves_usdcwxg, wx_surf_usdcwxg, wx_surf_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_wx_usdtwxg, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_nsbt_xtn, wx_nsbt_waves, false, true, false), $Tuple6(wx_nsbt_waves, wx_nsbt_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_swaves_xtn, wx_swaves_waves, false, true, false), $Tuple6(wx_swaves_waves, wx_swaves_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_vires_xtn, wx_vires_waves, false, true, false), $Tuple6(wx_vires_waves, wx_vires_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_usdtppt_xtn, wx_waves_usdtppt, false, true, true), $Tuple6(wx_waves_usdtppt, wx_usdtppt_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_usdtppt, wx_ethppt_usdtppt, wx_ethppt_waves, false, true, false), $Tuple6(wx_ethppt_waves, wx_ethppt_usdtppt, wx_waves_usdtppt, true, false, true), $Tuple6(wx_wx_waves, swop_wx_xtn, swop_waves_xtn, true, false, true), $Tuple6(swop_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, swop_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(swop_ethppt_waves, wx_ethppt_usdtppt, swop_waves_usdtppt, true, false, true), $Tuple6(swop_waves_usdtppt, wx_ethppt_usdtppt, swop_ethppt_waves, false, true, false)]
246+let routes = [$Tuple6(wx_waves_xtn, wx_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_btcwxg_xtn, wx_waves_btcwxg, false, true, true), $Tuple6(wx_waves_btcwxg, wx_btcwxg_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_xtn, wx_ethwxg_xtn, wx_ethwxg_waves, false, true, false), $Tuple6(wx_ethwxg_waves, wx_ethwxg_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_pwr_xtn, wx_pwr_waves, false, true, false), $Tuple6(wx_pwr_waves, swop_pwr_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_surf_waves, wx_surf_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_surf_usdtwxg, wx_surf_waves, false, true, false), $Tuple6(wx_surf_waves, wx_surf_usdcwxg, wx_waves_usdcwxg, true, false, true), $Tuple6(wx_waves_usdcwxg, wx_surf_usdcwxg, wx_surf_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_wx_usdtwxg, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_nsbt_xtn, wx_nsbt_waves, false, true, false), $Tuple6(wx_nsbt_waves, wx_nsbt_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_swaves_xtn, wx_swaves_waves, false, true, false), $Tuple6(wx_swaves_waves, wx_swaves_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_vires_xtn, wx_vires_waves, false, true, false), $Tuple6(wx_vires_waves, wx_vires_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_usdtppt_xtn, wx_waves_usdtppt, false, true, true), $Tuple6(wx_waves_usdtppt, wx_usdtppt_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_usdtppt, wx_ethppt_usdtppt, wx_ethppt_waves, false, true, false), $Tuple6(wx_ethppt_waves, wx_ethppt_usdtppt, wx_waves_usdtppt, true, false, true), $Tuple6(wx_wx_waves, swop_wx_xtn, swop_waves_xtn, true, false, true), $Tuple6(swop_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, swop_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(swop_ethppt_waves, wx_ethppt_usdtppt, swop_waves_usdtppt, true, false, true), $Tuple6(swop_waves_usdtppt, wx_ethppt_usdtppt, swop_ethppt_waves, false, true, false), $Tuple6(wx_west_waves, swop_west_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_west_xtn, wx_west_waves, false, true, false), $Tuple6(wx_west_waves, wx_west_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_west_xtn, wx_west_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_swop_xtn, wx_swop_waves, false, true, false), $Tuple6(wx_swop_waves, wx_swop_xtn, wx_waves_xtn, true, false, true), $Tuple6(swop_swop_waves, swop_swop_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_swop_xtn, swop_swop_waves, false, true, false), $Tuple6(wx_puzzle_waves, wx_puzzle_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_puzzle_xtn, wx_puzzle_waves, false, true, false), $Tuple6(swop_puzzle_waves, swop_puzzle_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_puzzle_xtn, swop_puzzle_waves, false, true, false)]
225247
226248 @Callable(i)
227249 func default () = if ((i.caller != caller))
242264
243265 func $f0_2 ($a,$i) = if (($i >= $s))
244266 then $a
245- else throw("List size exceeds 30")
267+ else throw("List size exceeds 42")
246268
247- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
269+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42)
248270 }
249271 let maxSwapProfit = max(fold._1)
250272 if ((0 >= maxSwapProfit))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let Scale6 = 1000000
55
66 let Scale6BigInt = toBigInt(Scale6)
77
88 let ZeroBigInt = toBigInt(0)
99
1010 let Scale8 = 100000000
1111
1212 let Scale8BigInt = toBigInt(Scale8)
1313
1414 let SEP = "__"
1515
1616 let InScale = 100000000
1717
1818 let InDecimals = 8
1919
2020 let InScaleBigInt = toBigInt(InScale)
2121
2222 let InAsset = unit
2323
2424 let caller = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR')
2525
2626 let receiver = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR')
2727
2828 let wxSwapAddress = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
2929
3030 let thisAddressStr = toString(this)
3131
3232 func getBalance (asset) = if ((asset == unit))
3333 then wavesBalance(this).regular
3434 else assetBalance(this, value(asset))
3535
3636
3737 func getAssetOrWaves (assetStr) = if ((assetStr == "WAVES"))
3838 then unit
3939 else fromBase58String(assetStr)
4040
4141
4242 let inBalance = getBalance(InAsset)
4343
4444 let inBalanceBigInt = toBigInt(inBalance)
4545
4646 func getSwopPool (pool) = {
4747 let assetIdAStr = getStringValue(pool, "A_asset_id")
4848 let assetIdBStr = getStringValue(pool, "B_asset_id")
4949 let assetIdA = getAssetOrWaves(assetIdAStr)
5050 let assetIdB = getAssetOrWaves(assetIdBStr)
5151 let balanceA = getIntegerValue(pool, "A_asset_balance")
5252 let balanceB = getIntegerValue(pool, "B_asset_balance")
5353 let outFee = (Scale6BigInt - toBigInt(getIntegerValue(pool, "commission")))
5454 $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, Scale6BigInt, outFee, pool)
5555 }
5656
5757
5858 func keyAdditionalBalance (assetId) = makeString(["%s%s", "stakedBalance", assetId], SEP)
5959
6060
6161 func keyStakingAssetBalance (assetId) = makeString(["%s%s", "shareAssetBalance", assetId], SEP)
6262
6363
6464 func getAdditionalBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyAdditionalBalance(assetId)), 0)
6565
6666
6767 func getStakingAssetBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyStakingAssetBalance(assetId)), 0)
6868
6969
7070 func getWxAccountBalance (pool,assetId) = {
7171 let balanceOnPool = if ((assetId == "WAVES"))
7272 then wavesBalance(pool).available
7373 else assetBalance(pool, fromBase58String(assetId))
7474 let totalBalance = ((balanceOnPool + getAdditionalBalanceOrZero(pool, assetId)) - getStakingAssetBalanceOrZero(pool, assetId))
7575 max([0, totalBalance])
7676 }
7777
7878
7979 func getWxPool (pool) = {
8080 let assetIdAStr = getStringValue(pool, "%s__amountAsset")
8181 let assetIdBStr = getStringValue(pool, "%s__priceAsset")
8282 let assetIdA = getAssetOrWaves(assetIdAStr)
8383 let assetIdB = getAssetOrWaves(assetIdBStr)
8484 let balanceA = getWxAccountBalance(pool, assetIdAStr)
8585 let balanceB = getWxAccountBalance(pool, assetIdBStr)
8686 let protocolFee = getIntegerValue(wxSwapAddress, "%s__protocolFee")
8787 let poolFee = getIntegerValue(wxSwapAddress, "%s__poolFee")
8888 let inFee = (Scale6BigInt - fraction(toBigInt((protocolFee + poolFee)), Scale6BigInt, Scale8BigInt))
8989 $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, inFee, Scale6BigInt, wxSwapAddress)
9090 }
9191
9292
9393 func calcSwap (pmtAmount,tokenFrom,tokenTo,inFee,outFee) = {
9494 let cleanAmount = fraction(pmtAmount, inFee, Scale6BigInt)
9595 let amountWithoutFee = fraction(tokenTo, cleanAmount, (cleanAmount + tokenFrom))
9696 let amountWithFee = fraction(amountWithoutFee, outFee, Scale6BigInt)
9797 amountWithFee
9898 }
9999
100100
101101 func estimateSwap (poolInfo,inAsset,inAmount) = {
102102 let routeArgs = if ((inAsset == poolInfo._3))
103103 then $Tuple3(poolInfo._4, poolInfo._6, calcSwap(inAmount, poolInfo._1, poolInfo._2, poolInfo._7, poolInfo._8))
104104 else $Tuple3(poolInfo._3, poolInfo._5, calcSwap(inAmount, poolInfo._2, poolInfo._1, poolInfo._7, poolInfo._8))
105105 let dappArgs = if ((poolInfo._9 == wxSwapAddress))
106106 then $Tuple2("swap", [0, routeArgs._2, thisAddressStr])
107107 else $Tuple2("exchange", [1])
108108 $Tuple4(routeArgs._1, routeArgs._3, dappArgs._1, dappArgs._2)
109109 }
110110
111111
112112 func estimateRoute (pool1,pool2,pool3,pool1Reverse,pool2Reverse,pool3Reverse) = {
113113 let a12 = if (pool1Reverse)
114114 then pool1._2
115115 else pool1._1
116116 let a21 = if (pool1Reverse)
117117 then pool1._1
118118 else pool1._2
119119 let a23 = if (pool2Reverse)
120120 then pool2._2
121121 else pool2._1
122122 let a32 = if (pool2Reverse)
123123 then pool2._1
124124 else pool2._2
125125 let a31 = if (pool3Reverse)
126126 then pool3._2
127127 else pool3._1
128128 let a13 = if (pool3Reverse)
129129 then pool3._1
130130 else pool3._2
131131 let aaDenominator = (a23 + fraction(fraction(a21, pool1._8, Scale6BigInt), pool2._7, Scale6BigInt))
132132 let aa13 = fraction(a12, a23, aaDenominator)
133133 let aa31 = fraction(fraction(fraction(a21, a32, aaDenominator), pool2._7, Scale6BigInt), pool2._8, Scale6BigInt)
134134 let aDenominator = (a31 + fraction(fraction(aa31, pool1._7, Scale6BigInt), pool1._8, Scale6BigInt))
135135 let a = fraction(aa13, a31, aDenominator)
136136 let aa = fraction(fraction(fraction(aa31, a13, aDenominator), pool3._7, Scale6BigInt), pool3._8, Scale6BigInt)
137137 let delta = fraction((sqrtBigInt(fraction(fraction(fraction(aa, a, InScaleBigInt), pool1._7, Scale6BigInt), pool1._8, Scale6BigInt), InDecimals, InDecimals, CEILING) - a), Scale6BigInt, pool1._7)
138138 if ((ZeroBigInt >= delta))
139139 then $Tuple2(0, nil)
140140 else {
141141 let input = if ((delta > inBalanceBigInt))
142142 then inBalanceBigInt
143143 else delta
144144 let swap1 = estimateSwap(pool1, InAsset, input)
145145 let swap2 = estimateSwap(pool2, swap1._1, swap1._2)
146146 let swap3 = estimateSwap(pool3, swap2._1, swap2._2)
147147 $Tuple2(toInt((swap3._2 - input)), [$Tuple5(pool1._9, swap1._3, swap1._4, InAsset, toInt(input)), $Tuple5(pool2._9, swap2._3, swap2._4, swap1._1, toInt(swap1._2)), $Tuple5(pool3._9, swap3._3, swap3._4, swap2._1, toInt(swap2._2))])
148148 }
149149 }
150150
151151
152152 func invokeSwap (args) = {
153153 let currentBalance = getBalance(args._4)
154154 let trimmedAmount = if ((args._5 > currentBalance))
155155 then currentBalance
156156 else args._5
157157 let resultAmount = if ((args._4 == InAsset))
158158 then trimmedAmount
159159 else if ((currentBalance > args._5))
160160 then currentBalance
161161 else trimmedAmount
162162 invoke(args._1, args._2, args._3, [AttachedPayment(args._4, resultAmount)])
163163 }
164164
165165
166166 let swop_ethppt_waves = getSwopPool(Address(base58'3P3KU81iteCQxKb8u15yEPcABknLEcCvGyr'))
167167
168168 let swop_pwr_xtn = getSwopPool(Address(base58'3P88KDKWHNKNdbZxe8FfAJP8coAhvfDtuzV'))
169169
170+let swop_puzzle_xtn = getSwopPool(Address(base58'3PBHyEwmERR1CEkrTNbPj2bgyisTfPRqfee'))
171+
172+let swop_puzzle_waves = getSwopPool(Address(base58'3PRFKemXs4rAJYGPccNtP63Kw2UzwEdH7sZ'))
173+
174+let swop_swop_xtn = getSwopPool(Address(base58'3P27S9V36kw2McjWRZ37AxTx8iwkd7HXw6W'))
175+
176+let swop_swop_waves = getSwopPool(Address(base58'3PH8Np6jwuoikvkHL2qmdpFEHBR4UV5vwSq'))
177+
170178 let swop_waves_xtn = getSwopPool(Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG'))
171179
172180 let swop_waves_usdtppt = getSwopPool(Address(base58'3P2M9btqYdpENh1SkaHFDdc8XSjXHNiAXF5'))
181+
182+let swop_west_xtn = getSwopPool(Address(base58'3P6DLdJTP2EySq9MFdJu6beUevrQd2sVVBh'))
173183
174184 let swop_wx_xtn = getSwopPool(Address(base58'3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R'))
175185
176186 let wx_btcwxg_xtn = getWxPool(Address(base58'3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp'))
177187
178188 let wx_ethppt_waves = getWxPool(Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg'))
179189
180190 let wx_ethppt_usdtppt = getWxPool(Address(base58'3PATKQATPmnxLd5DjXg8FmbXXbKpA1BVAvS'))
181191
182192 let wx_ethwxg_waves = getWxPool(Address(base58'3P3XGTN6s292g9iwYhs3TEqJqHiffQYojuE'))
183193
184194 let wx_ethwxg_xtn = getWxPool(Address(base58'3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A'))
185195
186196 let wx_nsbt_waves = getWxPool(Address(base58'3PPR4zVfWP4w4rshP541aiFtPNQN2sNJwrY'))
187197
188198 let wx_nsbt_xtn = getWxPool(Address(base58'3P97XQCT9VYMXBxasVpDsE7eZfQ6cR9eS9n'))
189199
200+let wx_puzzle_waves = getWxPool(Address(base58'3PQaYm4pbRVrNTTnL8pDJZTxhcmD4jRskrz'))
201+
202+let wx_puzzle_xtn = getWxPool(Address(base58'3P615yXeQ9Qu4qBM1QGimGzixyMS5W4Ktug'))
203+
190204 let wx_pwr_waves = getWxPool(Address(base58'3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t'))
191205
192206 let wx_surf_waves = getWxPool(Address(base58'3PNnCngfvAzyvAQ1cEudZ3o6o3tFktsBVz5'))
193207
194208 let wx_surf_usdcwxg = getWxPool(Address(base58'3PBfTdcoKmMNxZcjP8eTokbLFqYTUdoNKWL'))
195209
196210 let wx_surf_usdtwxg = getWxPool(Address(base58'3PM6YyJauiFTZzVLuRcCkDwWBvWTvPYo1ZM'))
197211
198212 let wx_swaves_waves = getWxPool(Address(base58'3PDVaJDqCadWeBugf768XeKiXtCCLUrYMge'))
199213
200214 let wx_swaves_xtn = getWxPool(Address(base58'3PEmxUzcCbsAcw6Q3VNLTWdd8bjc8KBUEDz'))
215+
216+let wx_swop_waves = getWxPool(Address(base58'3PA8nK44sopUpXNcCRTpPSH2F7yjvxzx5cw'))
217+
218+let wx_swop_xtn = getWxPool(Address(base58'3PCApn7kL3UMdCVYA2Ln2UcQvfnkFRL1qDC'))
201219
202220 let wx_usdtppt_xtn = getWxPool(Address(base58'3P5kfoYW7jPa9zYoTkN6Z6z8xtw8JGhymYB'))
203221
204222 let wx_vires_waves = getWxPool(Address(base58'3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU'))
205223
206224 let wx_vires_xtn = getWxPool(Address(base58'3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw'))
207225
208226 let wx_waves_btcwxg = getWxPool(Address(base58'3PPQDcvXuwVToC2QNWzPwxmLxLzMw9Eoe8C'))
209227
210228 let wx_waves_xtn = getWxPool(Address(base58'3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g'))
211229
212230 let wx_waves_usdtppt = getWxPool(Address(base58'3PPeWowdyQLKwW9AExN5CgFa7X9ts7D4LkM'))
213231
214232 let wx_waves_usdcwxg = getWxPool(Address(base58'3P3g3eipfG2NZKKQE8DZXt2E9tRJqii9jcX'))
215233
216234 let wx_waves_usdtwxg = getWxPool(Address(base58'3PKMVZ7kQeaREajYi8Yc25Ro6mcNw5D6QSa'))
217235
236+let wx_west_waves = getWxPool(Address(base58'3PCA7wkovBpAGgm5e6rZMXyXY97jUwVENWe'))
237+
238+let wx_west_xtn = getWxPool(Address(base58'3PFxchXqKNjgP1CcbgFZjHyrEj9xMbSeLU3'))
239+
218240 let wx_wx_usdtwxg = getWxPool(Address(base58'3PHiXGo7NTRoC2KqkMZ1y9LaA2QSrroGs8y'))
219241
220242 let wx_wx_waves = getWxPool(Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh'))
221243
222244 let wx_wx_xtn = getWxPool(Address(base58'3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99'))
223245
224-let routes = [$Tuple6(wx_waves_xtn, wx_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_btcwxg_xtn, wx_waves_btcwxg, false, true, true), $Tuple6(wx_waves_btcwxg, wx_btcwxg_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_xtn, wx_ethwxg_xtn, wx_ethwxg_waves, false, true, false), $Tuple6(wx_ethwxg_waves, wx_ethwxg_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_pwr_xtn, wx_pwr_waves, false, true, false), $Tuple6(wx_pwr_waves, swop_pwr_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_surf_waves, wx_surf_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_surf_usdtwxg, wx_surf_waves, false, true, false), $Tuple6(wx_surf_waves, wx_surf_usdcwxg, wx_waves_usdcwxg, true, false, true), $Tuple6(wx_waves_usdcwxg, wx_surf_usdcwxg, wx_surf_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_wx_usdtwxg, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_nsbt_xtn, wx_nsbt_waves, false, true, false), $Tuple6(wx_nsbt_waves, wx_nsbt_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_swaves_xtn, wx_swaves_waves, false, true, false), $Tuple6(wx_swaves_waves, wx_swaves_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_vires_xtn, wx_vires_waves, false, true, false), $Tuple6(wx_vires_waves, wx_vires_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_usdtppt_xtn, wx_waves_usdtppt, false, true, true), $Tuple6(wx_waves_usdtppt, wx_usdtppt_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_usdtppt, wx_ethppt_usdtppt, wx_ethppt_waves, false, true, false), $Tuple6(wx_ethppt_waves, wx_ethppt_usdtppt, wx_waves_usdtppt, true, false, true), $Tuple6(wx_wx_waves, swop_wx_xtn, swop_waves_xtn, true, false, true), $Tuple6(swop_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, swop_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(swop_ethppt_waves, wx_ethppt_usdtppt, swop_waves_usdtppt, true, false, true), $Tuple6(swop_waves_usdtppt, wx_ethppt_usdtppt, swop_ethppt_waves, false, true, false)]
246+let routes = [$Tuple6(wx_waves_xtn, wx_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_btcwxg_xtn, wx_waves_btcwxg, false, true, true), $Tuple6(wx_waves_btcwxg, wx_btcwxg_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_xtn, wx_ethwxg_xtn, wx_ethwxg_waves, false, true, false), $Tuple6(wx_ethwxg_waves, wx_ethwxg_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_pwr_xtn, wx_pwr_waves, false, true, false), $Tuple6(wx_pwr_waves, swop_pwr_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_surf_waves, wx_surf_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_surf_usdtwxg, wx_surf_waves, false, true, false), $Tuple6(wx_surf_waves, wx_surf_usdcwxg, wx_waves_usdcwxg, true, false, true), $Tuple6(wx_waves_usdcwxg, wx_surf_usdcwxg, wx_surf_waves, false, true, false), $Tuple6(wx_wx_waves, wx_wx_usdtwxg, wx_waves_usdtwxg, true, false, true), $Tuple6(wx_waves_usdtwxg, wx_wx_usdtwxg, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_nsbt_xtn, wx_nsbt_waves, false, true, false), $Tuple6(wx_nsbt_waves, wx_nsbt_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_swaves_xtn, wx_swaves_waves, false, true, false), $Tuple6(wx_swaves_waves, wx_swaves_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_vires_xtn, wx_vires_waves, false, true, false), $Tuple6(wx_vires_waves, wx_vires_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_usdtppt_xtn, wx_waves_usdtppt, false, true, true), $Tuple6(wx_waves_usdtppt, wx_usdtppt_xtn, wx_waves_xtn, false, false, true), $Tuple6(wx_waves_usdtppt, wx_ethppt_usdtppt, wx_ethppt_waves, false, true, false), $Tuple6(wx_ethppt_waves, wx_ethppt_usdtppt, wx_waves_usdtppt, true, false, true), $Tuple6(wx_wx_waves, swop_wx_xtn, swop_waves_xtn, true, false, true), $Tuple6(swop_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_waves_xtn, swop_wx_xtn, wx_wx_waves, false, true, false), $Tuple6(wx_wx_waves, swop_wx_xtn, wx_waves_xtn, true, false, true), $Tuple6(swop_ethppt_waves, wx_ethppt_usdtppt, swop_waves_usdtppt, true, false, true), $Tuple6(swop_waves_usdtppt, wx_ethppt_usdtppt, swop_ethppt_waves, false, true, false), $Tuple6(wx_west_waves, swop_west_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_west_xtn, wx_west_waves, false, true, false), $Tuple6(wx_west_waves, wx_west_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_west_xtn, wx_west_waves, false, true, false), $Tuple6(wx_waves_xtn, wx_swop_xtn, wx_swop_waves, false, true, false), $Tuple6(wx_swop_waves, wx_swop_xtn, wx_waves_xtn, true, false, true), $Tuple6(swop_swop_waves, swop_swop_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_swop_xtn, swop_swop_waves, false, true, false), $Tuple6(wx_puzzle_waves, wx_puzzle_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, wx_puzzle_xtn, wx_puzzle_waves, false, true, false), $Tuple6(swop_puzzle_waves, swop_puzzle_xtn, wx_waves_xtn, true, false, true), $Tuple6(wx_waves_xtn, swop_puzzle_xtn, swop_puzzle_waves, false, true, false)]
225247
226248 @Callable(i)
227249 func default () = if ((i.caller != caller))
228250 then throw(":D")
229251 else {
230252 func accumFunction (accum,next) = {
231253 let estimation = estimateRoute(next._1, next._2, next._3, next._4, next._5, next._6)
232254 $Tuple2((accum._1 :+ estimation._1), (accum._2 :+ estimation._2))
233255 }
234256
235257 let fold = {
236258 let $l = routes
237259 let $s = size($l)
238260 let $acc0 = $Tuple2(nil, nil)
239261 func $f0_1 ($a,$i) = if (($i >= $s))
240262 then $a
241263 else accumFunction($a, $l[$i])
242264
243265 func $f0_2 ($a,$i) = if (($i >= $s))
244266 then $a
245- else throw("List size exceeds 30")
267+ else throw("List size exceeds 42")
246268
247- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
269+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42)
248270 }
249271 let maxSwapProfit = max(fold._1)
250272 if ((0 >= maxSwapProfit))
251273 then throw("Estimate fail")
252274 else {
253275 let estimatedResult = fold._2[value(indexOf(fold._1, maxSwapProfit))]
254276 let result1 = invokeSwap(estimatedResult[0])
255277 if ((result1 == result1))
256278 then {
257279 let result2 = invokeSwap(estimatedResult[1])
258280 if ((result2 == result2))
259281 then {
260282 let result3 = invokeSwap(estimatedResult[2])
261283 if ((result3 == result3))
262284 then {
263285 let profit = (getBalance(InAsset) - inBalance)
264286 let pureProfit = if (((i.fee % 10) > 0))
265287 then (profit - 80000000)
266288 else (profit - 2000000)
267289 if ((0 >= pureProfit))
268290 then throw("Execute fail")
269291 else [ScriptTransfer(receiver, profit, InAsset)]
270292 }
271293 else throw("Strict value is not equal to itself.")
272294 }
273295 else throw("Strict value is not equal to itself.")
274296 }
275297 else throw("Strict value is not equal to itself.")
276298 }
277299 }
278300
279301

github/deemru/w8io/873ac7e 
113.79 ms