tx · BEgHGPfwGV64oqw6fi133S4nqhbbx2dUMYcn8DQierNx 3P5NsLwjzAmDwChRouCrBjGxzu8rgkR25Xx: -0.01000000 Waves 2023.05.13 11:37 [3641391] smart account 3P5NsLwjzAmDwChRouCrBjGxzu8rgkR25Xx > SELF 0.00000000 Waves
{ "type": 13, "id": "BEgHGPfwGV64oqw6fi133S4nqhbbx2dUMYcn8DQierNx", "fee": 1000000, "feeAssetId": null, "timestamp": 1683967049399, "version": 2, "chainId": 87, "sender": "3P5NsLwjzAmDwChRouCrBjGxzu8rgkR25Xx", "senderPublicKey": "9nF7sQoZcskcPAt61qPKSvxJ92QZyU5rhKBrr5AfJ1YQ", "proofs": [ "2YTtgv3PRUcUvfkuxdX7UEP6DchttN4DktEuZx9wpZYY8CfoJRDoCjGm1ATuBcLLLhHwjbiPRwwPehLs4E6dtjA4" ], "script": "base64:BgKdDAgCEgAiBlNjYWxlNiIMU2NhbGU2QmlnSW50IgpaZXJvQmlnSW50IgZTY2FsZTgiDFNjYWxlOEJpZ0ludCIDU0VQIgdJblNjYWxlIgpJbkRlY2ltYWxzIg1JblNjYWxlQmlnSW50IgdJbkFzc2V0IgZjYWxsZXIiCHJlY2VpdmVyIg13eFN3YXBBZGRyZXNzIg50aGlzQWRkcmVzc1N0ciIKZ2V0QmFsYW5jZSIFYXNzZXQiD2dldEFzc2V0T3JXYXZlcyIIYXNzZXRTdHIiCWluQmFsYW5jZSIPaW5CYWxhbmNlQmlnSW50IgtnZXRTd29wUG9vbCIEcG9vbCILYXNzZXRJZEFTdHIiC2Fzc2V0SWRCU3RyIghhc3NldElkQSIIYXNzZXRJZEIiCGJhbGFuY2VBIghiYWxhbmNlQiIGb3V0RmVlIhRrZXlBZGRpdGlvbmFsQmFsYW5jZSIHYXNzZXRJZCIWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZSIaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8iHGdldFN0YWtpbmdBc3NldEJhbGFuY2VPclplcm8iE2dldFd4QWNjb3VudEJhbGFuY2UiDWJhbGFuY2VPblBvb2wiDHRvdGFsQmFsYW5jZSIJZ2V0V3hQb29sIgtwcm90b2NvbEZlZSIHcG9vbEZlZSIFaW5GZWUiCGNhbGNTd2FwIglwbXRBbW91bnQiCXRva2VuRnJvbSIHdG9rZW5UbyILY2xlYW5BbW91bnQiEGFtb3VudFdpdGhvdXRGZWUiDWFtb3VudFdpdGhGZWUiDGVzdGltYXRlU3dhcCIIcG9vbEluZm8iB2luQXNzZXQiCGluQW1vdW50Iglyb3V0ZUFyZ3MiCGRhcHBBcmdzIg1lc3RpbWF0ZVJvdXRlIgVwb29sMSIFcG9vbDIiBXBvb2wzIgxwb29sMVJldmVyc2UiDHBvb2wyUmV2ZXJzZSIMcG9vbDNSZXZlcnNlIgNhMTIiA2EyMSIDYTIzIgNhMzIiA2EzMSIDYTEzIg1hYURlbm9taW5hdG9yIgRhYTEzIgRhYTMxIgxhRGVub21pbmF0b3IiAWEiAmFhIgVkZWx0YSIFaW5wdXQiBXN3YXAxIgVzd2FwMiIFc3dhcDMiCmludm9rZVN3YXAiBGFyZ3MiDmN1cnJlbnRCYWxhbmNlIg10cmltbWVkQW1vdW50IgxyZXN1bHRBbW91bnQiEXN3b3BfZXRocHB0X3dhdmVzIgxzd29wX3B3cl94dG4iDnN3b3Bfd2F2ZXNfeHRuIhJzd29wX3dhdmVzX3VzZHRwcHQiC3N3b3Bfd3hfeHRuIg13eF9idGN3eGdfeHRuIg93eF9ldGhwcHRfd2F2ZXMiEXd4X2V0aHBwdF91c2R0cHB0Ig93eF9ldGh3eGdfd2F2ZXMiDXd4X2V0aHd4Z194dG4iDXd4X25zYnRfd2F2ZXMiC3d4X25zYnRfeHRuIgx3eF9wd3Jfd2F2ZXMiDXd4X3N1cmZfd2F2ZXMiD3d4X3N1cmZfdXNkY3d4ZyIPd3hfc3VyZl91c2R0d3hnIg93eF9zd2F2ZXNfd2F2ZXMiDXd4X3N3YXZlc194dG4iDnd4X3VzZHRwcHRfeHRuIg53eF92aXJlc193YXZlcyIMd3hfdmlyZXNfeHRuIg93eF93YXZlc19idGN3eGciDHd4X3dhdmVzX3h0biIQd3hfd2F2ZXNfdXNkdHBwdCIQd3hfd2F2ZXNfdXNkY3d4ZyIQd3hfd2F2ZXNfdXNkdHd4ZyINd3hfd3hfdXNkdHd4ZyILd3hfd3hfd2F2ZXMiCXd4X3d4X3h0biIGcm91dGVzIgFpIg1hY2N1bUZ1bmN0aW9uIgVhY2N1bSIEbmV4dCIKZXN0aW1hdGlvbiIEZm9sZCICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiDW1heFN3YXBQcm9maXQiD2VzdGltYXRlZFJlc3VsdCIHcmVzdWx0MSIHcmVzdWx0MiIHcmVzdWx0MyIGcHJvZml0IgpwdXJlUHJvZml0OwABYQDAhD0AAWIJALYCAQUBYQABYwkAtgIBAAAAAWQAgMLXLwABZQkAtgIBBQFkAAFmAgJfXwABZwCAwtcvAAFoAAgAAWkJALYCAQUBZwABagUEdW5pdAABawkBB0FkZHJlc3MBARoBVynC/E/Rr/hWmH218H5B3YNkoXx/jz1ZAAABbAkBB0FkZHJlc3MBARoBVynC/E/Rr/hWmH218H5B3YNkoXx/jz1ZAAABbQkBB0FkZHJlc3MBARoBVy4qNTWxDbfxeT7ht0bQnnRSTXsx0IOuBgABbgkApQgBBQR0aGlzAQFvAQFwAwkAAAIFAXAFBHVuaXQICQDvBwEFBHRoaXMHcmVndWxhcgkA8AcCBQR0aGlzCQEFdmFsdWUBBQFwAQFxAQFyAwkAAAIFAXICBVdBVkVTBQR1bml0CQDZBAEFAXIAAXMJAQFvAQUBagABdAkAtgIBBQFzAQF1AQF2BAF3CQERQGV4dHJOYXRpdmUoMTA1MykCBQF2AgpBX2Fzc2V0X2lkBAF4CQERQGV4dHJOYXRpdmUoMTA1MykCBQF2AgpCX2Fzc2V0X2lkBAF5CQEBcQEFAXcEAXoJAQFxAQUBeAQBQQkBEUBleHRyTmF0aXZlKDEwNTApAgUBdgIPQV9hc3NldF9iYWxhbmNlBAFCCQERQGV4dHJOYXRpdmUoMTA1MCkCBQF2Ag9CX2Fzc2V0X2JhbGFuY2UEAUMJALgCAgUBYgkAtgIBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQF2Agpjb21taXNzaW9uCQCbCgkJALYCAQUBQQkAtgIBBQFCBQF5BQF6BQF3BQF4BQFiBQFDBQF2AQFEAQFFCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg1zdGFrZWRCYWxhbmNlCQDMCAIFAUUFA25pbAUBZgEBRgEBRQkAuQkCCQDMCAICBCVzJXMJAMwIAgIRc2hhcmVBc3NldEJhbGFuY2UJAMwIAgUBRQUDbmlsBQFmAQFHAgF2AUUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBdgkBAUQBBQFFAAABAUgCAXYBRQkBC3ZhbHVlT3JFbHNlAgkAmggCBQF2CQEBRgEFAUUAAAEBSQIBdgFFBAFKAwkAAAIFAUUCBVdBVkVTCAkA7wcBBQF2CWF2YWlsYWJsZQkA8AcCBQF2CQDZBAEFAUUEAUsJAGUCCQBkAgUBSgkBAUcCBQF2BQFFCQEBSAIFAXYFAUUJAJYDAQkAzAgCAAAJAMwIAgUBSwUDbmlsAQFMAQF2BAF3CQERQGV4dHJOYXRpdmUoMTA1MykCBQF2Ag8lc19fYW1vdW50QXNzZXQEAXgJARFAZXh0ck5hdGl2ZSgxMDUzKQIFAXYCDiVzX19wcmljZUFzc2V0BAF5CQEBcQEFAXcEAXoJAQFxAQUBeAQBQQkBAUkCBQF2BQF3BAFCCQEBSQIFAXYFAXgEAU0JARFAZXh0ck5hdGl2ZSgxMDUwKQIFAW0CDyVzX19wcm90b2NvbEZlZQQBTgkBEUBleHRyTmF0aXZlKDEwNTApAgUBbQILJXNfX3Bvb2xGZWUEAU8JALgCAgUBYgkAvAIDCQC2AgEJAGQCBQFNBQFOBQFiBQFlCQCbCgkJALYCAQUBQQkAtgIBBQFCBQF5BQF6BQF3BQF4BQFPBQFiBQFtAQFQBQFRAVIBUwFPAUMEAVQJALwCAwUBUQUBTwUBYgQBVQkAvAIDBQFTBQFUCQC3AgIFAVQFAVIEAVYJALwCAwUBVQUBQwUBYgUBVgEBVwMBWAFZAVoEAmFhAwkAAAIFAVkIBQFYAl8zCQCVCgMIBQFYAl80CAUBWAJfNgkBAVAFBQFaCAUBWAJfMQgFAVgCXzIIBQFYAl83CAUBWAJfOAkAlQoDCAUBWAJfMwgFAVgCXzUJAQFQBQUBWggFAVgCXzIIBQFYAl8xCAUBWAJfNwgFAVgCXzgEAmFiAwkAAAIIBQFYAl85BQFtCQCUCgICBHN3YXAJAMwIAgAACQDMCAIIBQJhYQJfMgkAzAgCBQFuBQNuaWwJAJQKAgIIZXhjaGFuZ2UJAMwIAgABBQNuaWwJAJYKBAgFAmFhAl8xCAUCYWECXzMIBQJhYgJfMQgFAmFiAl8yAQJhYwYCYWQCYWUCYWYCYWcCYWgCYWkEAmFqAwUCYWcIBQJhZAJfMggFAmFkAl8xBAJhawMFAmFnCAUCYWQCXzEIBQJhZAJfMgQCYWwDBQJhaAgFAmFlAl8yCAUCYWUCXzEEAmFtAwUCYWgIBQJhZQJfMQgFAmFlAl8yBAJhbgMFAmFpCAUCYWYCXzIIBQJhZgJfMQQCYW8DBQJhaQgFAmFmAl8xCAUCYWYCXzIEAmFwCQC3AgIFAmFsCQC8AgMJALwCAwUCYWsIBQJhZAJfOAUBYggFAmFlAl83BQFiBAJhcQkAvAIDBQJhagUCYWwFAmFwBAJhcgkAvAIDCQC8AgMJALwCAwUCYWsFAmFtBQJhcAgFAmFlAl83BQFiCAUCYWUCXzgFAWIEAmFzCQC3AgIFAmFuCQC8AgMJALwCAwUCYXIIBQJhZAJfNwUBYggFAmFkAl84BQFiBAJhdAkAvAIDBQJhcQUCYW4FAmFzBAJhdQkAvAIDCQC8AgMJALwCAwUCYXIFAmFvBQJhcwgFAmFmAl83BQFiCAUCYWYCXzgFAWIEAmF2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AUwBCQEHQWRkcmVzcwEBGgFXvyExMPhYogtFPRYgqEzgsrm9PLX4ojcPAAJiZgkBAUwBCQEHQWRkcmVzcwEBGgFXrSscQu6KOPwUR+ZfLOrRHJYv6qJj/J1uAAJiZwkBAUwBCQEHQWRkcmVzcwEBGgFXmkQFmJm8tKiQ5rdVb7cYKMuIhtMFfR9WAAJiaAkBAUwBCQEHQWRkcmVzcwEBGgFXcP/GLmZEDfQ7+dCMZc3p0TNjnM9yD+GcAAJiaQkAzAgCCQCYCgYFAmJiBQJiaAUCYmcHBgcJAMwIAgkAmAoGBQJiZwUCYmgFAmJiBgcGCQDMCAIJAJgKBgUCYmIFAmFLBQJiYQcGBgkAzAgCCQCYCgYFAmJhBQJhSwUCYmIHBwYJAMwIAgkAmAoGBQJiYgUCYU8FAmFOBwYHCQDMCAIJAJgKBgUCYU4FAmFPBQJiYgYHBgkAzAgCCQCYCgYFAmJiBQJhRwUCYVIHBgcJAMwIAgkAmAoGBQJhUgUCYUcFAmJiBgcGCQDMCAIJAJgKBgUCYVMFAmFVBQJiZQYHBgkAzAgCCQCYCgYFAmJlBQJhVQUCYVMHBgcJAMwIAgkAmAoGBQJhUwUCYVQFAmJkBgcGCQDMCAIJAJgKBgUCYmQFAmFUBQJhUwcGBwkAzAgCCQCYCgYFAmJnBQJiZgUCYmUGBwYJAMwIAgkAmAoGBQJiZQUCYmYFAmJnBwYHCQDMCAIJAJgKBgUCYmIFAmFRBQJhUAcGBwkAzAgCCQCYCgYFAmFQBQJhUQUCYmIGBwYJAMwIAgkAmAoGBQJiYgUCYVcFAmFWBwYHCQDMCAIJAJgKBgUCYVYFAmFXBQJiYgYHBgkAzAgCCQCYCgYFAmJiBQJhWgUCYVkHBgcJAMwIAgkAmAoGBQJhWQUCYVoFAmJiBgcGCQDMCAIJAJgKBgUCYmIFAmFYBQJiYwcGBgkAzAgCCQCYCgYFAmJjBQJhWAUCYmIHBwYJAMwIAgkAmAoGBQJiYwUCYU0FAmFMBwYHCQDMCAIJAJgKBgUCYUwFAmFNBQJiYwYHBgkAzAgCCQCYCgYFAmJnBQJhSgUCYUgGBwYJAMwIAgkAmAoGBQJhSAUCYUoFAmJnBwYHCQDMCAIJAJgKBgUCYmIFAmFKBQJiZwcGBwkAzAgCCQCYCgYFAmJnBQJhSgUCYmIGBwYJAMwIAgkAmAoGBQJhRgUCYU0FAmFJBgcGCQDMCAIJAJgKBgUCYUkFAmFNBQJhRgcGBwUDbmlsAQJiagEHZGVmYXVsdAADCQECIT0CCAUCYmoGY2FsbGVyBQFrCQACAQICOkQKAQJiawICYmwCYm0EAmJuCQECYWMGCAUCYm0CXzEIBQJibQJfMggFAmJtAl8zCAUCYm0CXzQIBQJibQJfNQgFAmJtAl82CQCUCgIJAM0IAggFAmJsAl8xCAUCYm4CXzEJAM0IAggFAmJsAl8yCAUCYm4CXzIEAmJvCgACYnAFAmJpCgACYnEJAJADAQUCYnAKAAJicgkAlAoCBQNuaWwFA25pbAoBAmJzAgJidAJidQMJAGcCBQJidQUCYnEFAmJ0CQECYmsCBQJidAkAkQMCBQJicAUCYnUKAQJidgICYnQCYnUDCQBnAgUCYnUFAmJxBQJidAkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDMwCQECYnYCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCCQECYnMCBQJicgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeBAJidwkAlgMBCAUCYm8CXzEDCQBnAgAABQJidwkAAgECDUVzdGltYXRlIGZhaWwEAmJ4CQCRAwIIBQJibwJfMgkBBXZhbHVlAQkAzwgCCAUCYm8CXzEFAmJ3BAJieQkBAmFBAQkAkQMCBQJieAAAAwkAAAIFAmJ5BQJieQQCYnoJAQJhQQEJAJEDAgUCYngAAQMJAAACBQJiegUCYnoEAmJBCQECYUEBCQCRAwIFAmJ4AAIDCQAAAgUCYkEFAmJBBAJiQgkAZQIJAQFvAQUBagUBcwQCYkMDCQBmAgkAagIIBQJiagNmZWUACgAACQBlAgUCYkIAgOiSJgkAZQIFAmJCAICJegMJAGcCBQJiQwAACQACAQIMRXhlY3V0ZSBmYWlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAWwFAmJCBQFqBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4An9yNFw==", "height": 3641391, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GUWVGeaugSKfVfEzqJMszYLd9AuCgdPiGkyHNHv2C5ge Next: 4C4Gkw4W6b4SUnQTtWDkQ6QfBmrQKYTYHwcztPB3PNYj Diff:
Old | New | Differences | |
---|---|---|---|
21 | 21 | ||
22 | 22 | let InAsset = unit | |
23 | 23 | ||
24 | - | let InAssetStr = "WAVES" | |
25 | - | ||
26 | 24 | let caller = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR') | |
27 | 25 | ||
28 | 26 | let receiver = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR') | |
30 | 28 | let wxSwapAddress = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93') | |
31 | 29 | ||
32 | 30 | let thisAddressStr = toString(this) | |
33 | - | ||
34 | - | func getIntOrZero (key) = valueOrElse(getInteger(key), 0) | |
35 | - | ||
36 | 31 | ||
37 | 32 | func getBalance (asset) = if ((asset == unit)) | |
38 | 33 | then wavesBalance(this).regular | |
266 | 261 | if ((result3 == result3)) | |
267 | 262 | then { | |
268 | 263 | let profit = (getBalance(InAsset) - inBalance) | |
269 | - | if ((2000000 >= profit)) | |
264 | + | let pureProfit = if (((i.fee % 10) > 0)) | |
265 | + | then (profit - 80000000) | |
266 | + | else (profit - 2000000) | |
267 | + | if ((pureProfit >= 0)) | |
270 | 268 | then throw("Execute fail") | |
271 | - | else [ScriptTransfer(receiver, profit, InAsset) | |
269 | + | else [ScriptTransfer(receiver, profit, InAsset)] | |
272 | 270 | } | |
273 | 271 | else throw("Strict value is not equal to itself.") | |
274 | 272 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let Scale6 = 1000000 | |
5 | 5 | ||
6 | 6 | let Scale6BigInt = toBigInt(Scale6) | |
7 | 7 | ||
8 | 8 | let ZeroBigInt = toBigInt(0) | |
9 | 9 | ||
10 | 10 | let Scale8 = 100000000 | |
11 | 11 | ||
12 | 12 | let Scale8BigInt = toBigInt(Scale8) | |
13 | 13 | ||
14 | 14 | let SEP = "__" | |
15 | 15 | ||
16 | 16 | let InScale = 100000000 | |
17 | 17 | ||
18 | 18 | let InDecimals = 8 | |
19 | 19 | ||
20 | 20 | let InScaleBigInt = toBigInt(InScale) | |
21 | 21 | ||
22 | 22 | let InAsset = unit | |
23 | 23 | ||
24 | - | let InAssetStr = "WAVES" | |
25 | - | ||
26 | 24 | let caller = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR') | |
27 | 25 | ||
28 | 26 | let receiver = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR') | |
29 | 27 | ||
30 | 28 | let wxSwapAddress = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93') | |
31 | 29 | ||
32 | 30 | let thisAddressStr = toString(this) | |
33 | - | ||
34 | - | func getIntOrZero (key) = valueOrElse(getInteger(key), 0) | |
35 | - | ||
36 | 31 | ||
37 | 32 | func getBalance (asset) = if ((asset == unit)) | |
38 | 33 | then wavesBalance(this).regular | |
39 | 34 | else assetBalance(this, value(asset)) | |
40 | 35 | ||
41 | 36 | ||
42 | 37 | func getAssetOrWaves (assetStr) = if ((assetStr == "WAVES")) | |
43 | 38 | then unit | |
44 | 39 | else fromBase58String(assetStr) | |
45 | 40 | ||
46 | 41 | ||
47 | 42 | let inBalance = getBalance(InAsset) | |
48 | 43 | ||
49 | 44 | let inBalanceBigInt = toBigInt(inBalance) | |
50 | 45 | ||
51 | 46 | func getSwopPool (pool) = { | |
52 | 47 | let assetIdAStr = getStringValue(pool, "A_asset_id") | |
53 | 48 | let assetIdBStr = getStringValue(pool, "B_asset_id") | |
54 | 49 | let assetIdA = getAssetOrWaves(assetIdAStr) | |
55 | 50 | let assetIdB = getAssetOrWaves(assetIdBStr) | |
56 | 51 | let balanceA = getIntegerValue(pool, "A_asset_balance") | |
57 | 52 | let balanceB = getIntegerValue(pool, "B_asset_balance") | |
58 | 53 | let outFee = (Scale6BigInt - toBigInt(getIntegerValue(pool, "commission"))) | |
59 | 54 | $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, Scale6BigInt, outFee, pool) | |
60 | 55 | } | |
61 | 56 | ||
62 | 57 | ||
63 | 58 | func keyAdditionalBalance (assetId) = makeString(["%s%s", "stakedBalance", assetId], SEP) | |
64 | 59 | ||
65 | 60 | ||
66 | 61 | func keyStakingAssetBalance (assetId) = makeString(["%s%s", "shareAssetBalance", assetId], SEP) | |
67 | 62 | ||
68 | 63 | ||
69 | 64 | func getAdditionalBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyAdditionalBalance(assetId)), 0) | |
70 | 65 | ||
71 | 66 | ||
72 | 67 | func getStakingAssetBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyStakingAssetBalance(assetId)), 0) | |
73 | 68 | ||
74 | 69 | ||
75 | 70 | func getWxAccountBalance (pool,assetId) = { | |
76 | 71 | let balanceOnPool = if ((assetId == "WAVES")) | |
77 | 72 | then wavesBalance(pool).available | |
78 | 73 | else assetBalance(pool, fromBase58String(assetId)) | |
79 | 74 | let totalBalance = ((balanceOnPool + getAdditionalBalanceOrZero(pool, assetId)) - getStakingAssetBalanceOrZero(pool, assetId)) | |
80 | 75 | max([0, totalBalance]) | |
81 | 76 | } | |
82 | 77 | ||
83 | 78 | ||
84 | 79 | func getWxPool (pool) = { | |
85 | 80 | let assetIdAStr = getStringValue(pool, "%s__amountAsset") | |
86 | 81 | let assetIdBStr = getStringValue(pool, "%s__priceAsset") | |
87 | 82 | let assetIdA = getAssetOrWaves(assetIdAStr) | |
88 | 83 | let assetIdB = getAssetOrWaves(assetIdBStr) | |
89 | 84 | let balanceA = getWxAccountBalance(pool, assetIdAStr) | |
90 | 85 | let balanceB = getWxAccountBalance(pool, assetIdBStr) | |
91 | 86 | let protocolFee = getIntegerValue(wxSwapAddress, "%s__protocolFee") | |
92 | 87 | let poolFee = getIntegerValue(wxSwapAddress, "%s__poolFee") | |
93 | 88 | let inFee = (Scale6BigInt - fraction(toBigInt((protocolFee + poolFee)), Scale6BigInt, Scale8BigInt)) | |
94 | 89 | $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, inFee, Scale6BigInt, wxSwapAddress) | |
95 | 90 | } | |
96 | 91 | ||
97 | 92 | ||
98 | 93 | func calcSwap (pmtAmount,tokenFrom,tokenTo,inFee,outFee) = { | |
99 | 94 | let cleanAmount = fraction(pmtAmount, inFee, Scale6BigInt) | |
100 | 95 | let amountWithoutFee = fraction(tokenTo, cleanAmount, (cleanAmount + tokenFrom)) | |
101 | 96 | let amountWithFee = fraction(amountWithoutFee, outFee, Scale6BigInt) | |
102 | 97 | amountWithFee | |
103 | 98 | } | |
104 | 99 | ||
105 | 100 | ||
106 | 101 | func estimateSwap (poolInfo,inAsset,inAmount) = { | |
107 | 102 | let routeArgs = if ((inAsset == poolInfo._3)) | |
108 | 103 | then $Tuple3(poolInfo._4, poolInfo._6, calcSwap(inAmount, poolInfo._1, poolInfo._2, poolInfo._7, poolInfo._8)) | |
109 | 104 | else $Tuple3(poolInfo._3, poolInfo._5, calcSwap(inAmount, poolInfo._2, poolInfo._1, poolInfo._7, poolInfo._8)) | |
110 | 105 | let dappArgs = if ((poolInfo._9 == wxSwapAddress)) | |
111 | 106 | then $Tuple2("swap", [0, routeArgs._2, thisAddressStr]) | |
112 | 107 | else $Tuple2("exchange", [1]) | |
113 | 108 | $Tuple4(routeArgs._1, routeArgs._3, dappArgs._1, dappArgs._2) | |
114 | 109 | } | |
115 | 110 | ||
116 | 111 | ||
117 | 112 | func estimateRoute (pool1,pool2,pool3,pool1Reverse,pool2Reverse,pool3Reverse) = { | |
118 | 113 | let a12 = if (pool1Reverse) | |
119 | 114 | then pool1._2 | |
120 | 115 | else pool1._1 | |
121 | 116 | let a21 = if (pool1Reverse) | |
122 | 117 | then pool1._1 | |
123 | 118 | else pool1._2 | |
124 | 119 | let a23 = if (pool2Reverse) | |
125 | 120 | then pool2._2 | |
126 | 121 | else pool2._1 | |
127 | 122 | let a32 = if (pool2Reverse) | |
128 | 123 | then pool2._1 | |
129 | 124 | else pool2._2 | |
130 | 125 | let a31 = if (pool3Reverse) | |
131 | 126 | then pool3._2 | |
132 | 127 | else pool3._1 | |
133 | 128 | let a13 = if (pool3Reverse) | |
134 | 129 | then pool3._1 | |
135 | 130 | else pool3._2 | |
136 | 131 | let aaDenominator = (a23 + fraction(fraction(a21, pool1._8, Scale6BigInt), pool2._7, Scale6BigInt)) | |
137 | 132 | let aa13 = fraction(a12, a23, aaDenominator) | |
138 | 133 | let aa31 = fraction(fraction(fraction(a21, a32, aaDenominator), pool2._7, Scale6BigInt), pool2._8, Scale6BigInt) | |
139 | 134 | let aDenominator = (a31 + fraction(fraction(aa31, pool1._7, Scale6BigInt), pool1._8, Scale6BigInt)) | |
140 | 135 | let a = fraction(aa13, a31, aDenominator) | |
141 | 136 | let aa = fraction(fraction(fraction(aa31, a13, aDenominator), pool3._7, Scale6BigInt), pool3._8, Scale6BigInt) | |
142 | 137 | let delta = fraction((sqrtBigInt(fraction(fraction(fraction(aa, a, InScaleBigInt), pool1._7, Scale6BigInt), pool1._8, Scale6BigInt), InDecimals, InDecimals, CEILING) - a), Scale6BigInt, pool1._7) | |
143 | 138 | if ((ZeroBigInt >= delta)) | |
144 | 139 | then $Tuple2(0, nil) | |
145 | 140 | else { | |
146 | 141 | let input = if ((delta > inBalanceBigInt)) | |
147 | 142 | then inBalanceBigInt | |
148 | 143 | else delta | |
149 | 144 | let swap1 = estimateSwap(pool1, InAsset, input) | |
150 | 145 | let swap2 = estimateSwap(pool2, swap1._1, swap1._2) | |
151 | 146 | let swap3 = estimateSwap(pool3, swap2._1, swap2._2) | |
152 | 147 | $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))]) | |
153 | 148 | } | |
154 | 149 | } | |
155 | 150 | ||
156 | 151 | ||
157 | 152 | func invokeSwap (args) = { | |
158 | 153 | let currentBalance = getBalance(args._4) | |
159 | 154 | let trimmedAmount = if ((args._5 > currentBalance)) | |
160 | 155 | then currentBalance | |
161 | 156 | else args._5 | |
162 | 157 | let resultAmount = if ((args._4 == InAsset)) | |
163 | 158 | then trimmedAmount | |
164 | 159 | else if ((currentBalance > args._5)) | |
165 | 160 | then currentBalance | |
166 | 161 | else trimmedAmount | |
167 | 162 | invoke(args._1, args._2, args._3, [AttachedPayment(args._4, resultAmount)]) | |
168 | 163 | } | |
169 | 164 | ||
170 | 165 | ||
171 | 166 | let swop_ethppt_waves = getSwopPool(Address(base58'3P3KU81iteCQxKb8u15yEPcABknLEcCvGyr')) | |
172 | 167 | ||
173 | 168 | let swop_pwr_xtn = getSwopPool(Address(base58'3P88KDKWHNKNdbZxe8FfAJP8coAhvfDtuzV')) | |
174 | 169 | ||
175 | 170 | let swop_waves_xtn = getSwopPool(Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')) | |
176 | 171 | ||
177 | 172 | let swop_waves_usdtppt = getSwopPool(Address(base58'3P2M9btqYdpENh1SkaHFDdc8XSjXHNiAXF5')) | |
178 | 173 | ||
179 | 174 | let swop_wx_xtn = getSwopPool(Address(base58'3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R')) | |
180 | 175 | ||
181 | 176 | let wx_btcwxg_xtn = getWxPool(Address(base58'3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp')) | |
182 | 177 | ||
183 | 178 | let wx_ethppt_waves = getWxPool(Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg')) | |
184 | 179 | ||
185 | 180 | let wx_ethppt_usdtppt = getWxPool(Address(base58'3PATKQATPmnxLd5DjXg8FmbXXbKpA1BVAvS')) | |
186 | 181 | ||
187 | 182 | let wx_ethwxg_waves = getWxPool(Address(base58'3P3XGTN6s292g9iwYhs3TEqJqHiffQYojuE')) | |
188 | 183 | ||
189 | 184 | let wx_ethwxg_xtn = getWxPool(Address(base58'3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A')) | |
190 | 185 | ||
191 | 186 | let wx_nsbt_waves = getWxPool(Address(base58'3PPR4zVfWP4w4rshP541aiFtPNQN2sNJwrY')) | |
192 | 187 | ||
193 | 188 | let wx_nsbt_xtn = getWxPool(Address(base58'3P97XQCT9VYMXBxasVpDsE7eZfQ6cR9eS9n')) | |
194 | 189 | ||
195 | 190 | let wx_pwr_waves = getWxPool(Address(base58'3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t')) | |
196 | 191 | ||
197 | 192 | let wx_surf_waves = getWxPool(Address(base58'3PNnCngfvAzyvAQ1cEudZ3o6o3tFktsBVz5')) | |
198 | 193 | ||
199 | 194 | let wx_surf_usdcwxg = getWxPool(Address(base58'3PBfTdcoKmMNxZcjP8eTokbLFqYTUdoNKWL')) | |
200 | 195 | ||
201 | 196 | let wx_surf_usdtwxg = getWxPool(Address(base58'3PM6YyJauiFTZzVLuRcCkDwWBvWTvPYo1ZM')) | |
202 | 197 | ||
203 | 198 | let wx_swaves_waves = getWxPool(Address(base58'3PDVaJDqCadWeBugf768XeKiXtCCLUrYMge')) | |
204 | 199 | ||
205 | 200 | let wx_swaves_xtn = getWxPool(Address(base58'3PEmxUzcCbsAcw6Q3VNLTWdd8bjc8KBUEDz')) | |
206 | 201 | ||
207 | 202 | let wx_usdtppt_xtn = getWxPool(Address(base58'3P5kfoYW7jPa9zYoTkN6Z6z8xtw8JGhymYB')) | |
208 | 203 | ||
209 | 204 | let wx_vires_waves = getWxPool(Address(base58'3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU')) | |
210 | 205 | ||
211 | 206 | let wx_vires_xtn = getWxPool(Address(base58'3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw')) | |
212 | 207 | ||
213 | 208 | let wx_waves_btcwxg = getWxPool(Address(base58'3PPQDcvXuwVToC2QNWzPwxmLxLzMw9Eoe8C')) | |
214 | 209 | ||
215 | 210 | let wx_waves_xtn = getWxPool(Address(base58'3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g')) | |
216 | 211 | ||
217 | 212 | let wx_waves_usdtppt = getWxPool(Address(base58'3PPeWowdyQLKwW9AExN5CgFa7X9ts7D4LkM')) | |
218 | 213 | ||
219 | 214 | let wx_waves_usdcwxg = getWxPool(Address(base58'3P3g3eipfG2NZKKQE8DZXt2E9tRJqii9jcX')) | |
220 | 215 | ||
221 | 216 | let wx_waves_usdtwxg = getWxPool(Address(base58'3PKMVZ7kQeaREajYi8Yc25Ro6mcNw5D6QSa')) | |
222 | 217 | ||
223 | 218 | let wx_wx_usdtwxg = getWxPool(Address(base58'3PHiXGo7NTRoC2KqkMZ1y9LaA2QSrroGs8y')) | |
224 | 219 | ||
225 | 220 | let wx_wx_waves = getWxPool(Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh')) | |
226 | 221 | ||
227 | 222 | let wx_wx_xtn = getWxPool(Address(base58'3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99')) | |
228 | 223 | ||
229 | 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)] | |
230 | 225 | ||
231 | 226 | @Callable(i) | |
232 | 227 | func default () = if ((i.caller != caller)) | |
233 | 228 | then throw(":D") | |
234 | 229 | else { | |
235 | 230 | func accumFunction (accum,next) = { | |
236 | 231 | let estimation = estimateRoute(next._1, next._2, next._3, next._4, next._5, next._6) | |
237 | 232 | $Tuple2((accum._1 :+ estimation._1), (accum._2 :+ estimation._2)) | |
238 | 233 | } | |
239 | 234 | ||
240 | 235 | let fold = { | |
241 | 236 | let $l = routes | |
242 | 237 | let $s = size($l) | |
243 | 238 | let $acc0 = $Tuple2(nil, nil) | |
244 | 239 | func $f0_1 ($a,$i) = if (($i >= $s)) | |
245 | 240 | then $a | |
246 | 241 | else accumFunction($a, $l[$i]) | |
247 | 242 | ||
248 | 243 | func $f0_2 ($a,$i) = if (($i >= $s)) | |
249 | 244 | then $a | |
250 | 245 | else throw("List size exceeds 30") | |
251 | 246 | ||
252 | 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) | |
253 | 248 | } | |
254 | 249 | let maxSwapProfit = max(fold._1) | |
255 | 250 | if ((0 >= maxSwapProfit)) | |
256 | 251 | then throw("Estimate fail") | |
257 | 252 | else { | |
258 | 253 | let estimatedResult = fold._2[value(indexOf(fold._1, maxSwapProfit))] | |
259 | 254 | let result1 = invokeSwap(estimatedResult[0]) | |
260 | 255 | if ((result1 == result1)) | |
261 | 256 | then { | |
262 | 257 | let result2 = invokeSwap(estimatedResult[1]) | |
263 | 258 | if ((result2 == result2)) | |
264 | 259 | then { | |
265 | 260 | let result3 = invokeSwap(estimatedResult[2]) | |
266 | 261 | if ((result3 == result3)) | |
267 | 262 | then { | |
268 | 263 | let profit = (getBalance(InAsset) - inBalance) | |
269 | - | if ((2000000 >= profit)) | |
264 | + | let pureProfit = if (((i.fee % 10) > 0)) | |
265 | + | then (profit - 80000000) | |
266 | + | else (profit - 2000000) | |
267 | + | if ((pureProfit >= 0)) | |
270 | 268 | then throw("Execute fail") | |
271 | - | else [ScriptTransfer(receiver, profit, InAsset) | |
269 | + | else [ScriptTransfer(receiver, profit, InAsset)] | |
272 | 270 | } | |
273 | 271 | else throw("Strict value is not equal to itself.") | |
274 | 272 | } | |
275 | 273 | else throw("Strict value is not equal to itself.") | |
276 | 274 | } | |
277 | 275 | else throw("Strict value is not equal to itself.") | |
278 | 276 | } | |
279 | 277 | } | |
280 | 278 | ||
281 | 279 |
github/deemru/w8io/873ac7e 58.84 ms ◑![]()