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:
OldNewDifferences
2121
2222 let InAsset = unit
2323
24-let InAssetStr = "WAVES"
25-
2624 let caller = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR')
2725
2826 let receiver = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR')
3028 let wxSwapAddress = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
3129
3230 let thisAddressStr = toString(this)
33-
34-func getIntOrZero (key) = valueOrElse(getInteger(key), 0)
35-
3631
3732 func getBalance (asset) = if ((asset == unit))
3833 then wavesBalance(this).regular
266261 if ((result3 == result3))
267262 then {
268263 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))
270268 then throw("Execute fail")
271- else [ScriptTransfer(receiver, profit, InAsset), IntegerEntry(((("profit_" + InAssetStr) + "_") + toString(lastBlock.timestamp)), profit), IntegerEntry(("totalProfit_" + InAssetStr), (getIntOrZero(("totalProfit_" + InAssetStr)) + profit))]
269+ else [ScriptTransfer(receiver, profit, InAsset)]
272270 }
273271 else throw("Strict value is not equal to itself.")
274272 }
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
24-let InAssetStr = "WAVES"
25-
2624 let caller = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR')
2725
2826 let receiver = Address(base58'3P5ji1wvrDLQxgK5c3cGbiSwiZfu5x1S3VR')
2927
3028 let wxSwapAddress = Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93')
3129
3230 let thisAddressStr = toString(this)
33-
34-func getIntOrZero (key) = valueOrElse(getInteger(key), 0)
35-
3631
3732 func getBalance (asset) = if ((asset == unit))
3833 then wavesBalance(this).regular
3934 else assetBalance(this, value(asset))
4035
4136
4237 func getAssetOrWaves (assetStr) = if ((assetStr == "WAVES"))
4338 then unit
4439 else fromBase58String(assetStr)
4540
4641
4742 let inBalance = getBalance(InAsset)
4843
4944 let inBalanceBigInt = toBigInt(inBalance)
5045
5146 func getSwopPool (pool) = {
5247 let assetIdAStr = getStringValue(pool, "A_asset_id")
5348 let assetIdBStr = getStringValue(pool, "B_asset_id")
5449 let assetIdA = getAssetOrWaves(assetIdAStr)
5550 let assetIdB = getAssetOrWaves(assetIdBStr)
5651 let balanceA = getIntegerValue(pool, "A_asset_balance")
5752 let balanceB = getIntegerValue(pool, "B_asset_balance")
5853 let outFee = (Scale6BigInt - toBigInt(getIntegerValue(pool, "commission")))
5954 $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, Scale6BigInt, outFee, pool)
6055 }
6156
6257
6358 func keyAdditionalBalance (assetId) = makeString(["%s%s", "stakedBalance", assetId], SEP)
6459
6560
6661 func keyStakingAssetBalance (assetId) = makeString(["%s%s", "shareAssetBalance", assetId], SEP)
6762
6863
6964 func getAdditionalBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyAdditionalBalance(assetId)), 0)
7065
7166
7267 func getStakingAssetBalanceOrZero (pool,assetId) = valueOrElse(getInteger(pool, keyStakingAssetBalance(assetId)), 0)
7368
7469
7570 func getWxAccountBalance (pool,assetId) = {
7671 let balanceOnPool = if ((assetId == "WAVES"))
7772 then wavesBalance(pool).available
7873 else assetBalance(pool, fromBase58String(assetId))
7974 let totalBalance = ((balanceOnPool + getAdditionalBalanceOrZero(pool, assetId)) - getStakingAssetBalanceOrZero(pool, assetId))
8075 max([0, totalBalance])
8176 }
8277
8378
8479 func getWxPool (pool) = {
8580 let assetIdAStr = getStringValue(pool, "%s__amountAsset")
8681 let assetIdBStr = getStringValue(pool, "%s__priceAsset")
8782 let assetIdA = getAssetOrWaves(assetIdAStr)
8883 let assetIdB = getAssetOrWaves(assetIdBStr)
8984 let balanceA = getWxAccountBalance(pool, assetIdAStr)
9085 let balanceB = getWxAccountBalance(pool, assetIdBStr)
9186 let protocolFee = getIntegerValue(wxSwapAddress, "%s__protocolFee")
9287 let poolFee = getIntegerValue(wxSwapAddress, "%s__poolFee")
9388 let inFee = (Scale6BigInt - fraction(toBigInt((protocolFee + poolFee)), Scale6BigInt, Scale8BigInt))
9489 $Tuple9(toBigInt(balanceA), toBigInt(balanceB), assetIdA, assetIdB, assetIdAStr, assetIdBStr, inFee, Scale6BigInt, wxSwapAddress)
9590 }
9691
9792
9893 func calcSwap (pmtAmount,tokenFrom,tokenTo,inFee,outFee) = {
9994 let cleanAmount = fraction(pmtAmount, inFee, Scale6BigInt)
10095 let amountWithoutFee = fraction(tokenTo, cleanAmount, (cleanAmount + tokenFrom))
10196 let amountWithFee = fraction(amountWithoutFee, outFee, Scale6BigInt)
10297 amountWithFee
10398 }
10499
105100
106101 func estimateSwap (poolInfo,inAsset,inAmount) = {
107102 let routeArgs = if ((inAsset == poolInfo._3))
108103 then $Tuple3(poolInfo._4, poolInfo._6, calcSwap(inAmount, poolInfo._1, poolInfo._2, poolInfo._7, poolInfo._8))
109104 else $Tuple3(poolInfo._3, poolInfo._5, calcSwap(inAmount, poolInfo._2, poolInfo._1, poolInfo._7, poolInfo._8))
110105 let dappArgs = if ((poolInfo._9 == wxSwapAddress))
111106 then $Tuple2("swap", [0, routeArgs._2, thisAddressStr])
112107 else $Tuple2("exchange", [1])
113108 $Tuple4(routeArgs._1, routeArgs._3, dappArgs._1, dappArgs._2)
114109 }
115110
116111
117112 func estimateRoute (pool1,pool2,pool3,pool1Reverse,pool2Reverse,pool3Reverse) = {
118113 let a12 = if (pool1Reverse)
119114 then pool1._2
120115 else pool1._1
121116 let a21 = if (pool1Reverse)
122117 then pool1._1
123118 else pool1._2
124119 let a23 = if (pool2Reverse)
125120 then pool2._2
126121 else pool2._1
127122 let a32 = if (pool2Reverse)
128123 then pool2._1
129124 else pool2._2
130125 let a31 = if (pool3Reverse)
131126 then pool3._2
132127 else pool3._1
133128 let a13 = if (pool3Reverse)
134129 then pool3._1
135130 else pool3._2
136131 let aaDenominator = (a23 + fraction(fraction(a21, pool1._8, Scale6BigInt), pool2._7, Scale6BigInt))
137132 let aa13 = fraction(a12, a23, aaDenominator)
138133 let aa31 = fraction(fraction(fraction(a21, a32, aaDenominator), pool2._7, Scale6BigInt), pool2._8, Scale6BigInt)
139134 let aDenominator = (a31 + fraction(fraction(aa31, pool1._7, Scale6BigInt), pool1._8, Scale6BigInt))
140135 let a = fraction(aa13, a31, aDenominator)
141136 let aa = fraction(fraction(fraction(aa31, a13, aDenominator), pool3._7, Scale6BigInt), pool3._8, Scale6BigInt)
142137 let delta = fraction((sqrtBigInt(fraction(fraction(fraction(aa, a, InScaleBigInt), pool1._7, Scale6BigInt), pool1._8, Scale6BigInt), InDecimals, InDecimals, CEILING) - a), Scale6BigInt, pool1._7)
143138 if ((ZeroBigInt >= delta))
144139 then $Tuple2(0, nil)
145140 else {
146141 let input = if ((delta > inBalanceBigInt))
147142 then inBalanceBigInt
148143 else delta
149144 let swap1 = estimateSwap(pool1, InAsset, input)
150145 let swap2 = estimateSwap(pool2, swap1._1, swap1._2)
151146 let swap3 = estimateSwap(pool3, swap2._1, swap2._2)
152147 $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))])
153148 }
154149 }
155150
156151
157152 func invokeSwap (args) = {
158153 let currentBalance = getBalance(args._4)
159154 let trimmedAmount = if ((args._5 > currentBalance))
160155 then currentBalance
161156 else args._5
162157 let resultAmount = if ((args._4 == InAsset))
163158 then trimmedAmount
164159 else if ((currentBalance > args._5))
165160 then currentBalance
166161 else trimmedAmount
167162 invoke(args._1, args._2, args._3, [AttachedPayment(args._4, resultAmount)])
168163 }
169164
170165
171166 let swop_ethppt_waves = getSwopPool(Address(base58'3P3KU81iteCQxKb8u15yEPcABknLEcCvGyr'))
172167
173168 let swop_pwr_xtn = getSwopPool(Address(base58'3P88KDKWHNKNdbZxe8FfAJP8coAhvfDtuzV'))
174169
175170 let swop_waves_xtn = getSwopPool(Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG'))
176171
177172 let swop_waves_usdtppt = getSwopPool(Address(base58'3P2M9btqYdpENh1SkaHFDdc8XSjXHNiAXF5'))
178173
179174 let swop_wx_xtn = getSwopPool(Address(base58'3PKi4G3VX2k42ZSmNNrmvgdDH7JzRaUhY7R'))
180175
181176 let wx_btcwxg_xtn = getWxPool(Address(base58'3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp'))
182177
183178 let wx_ethppt_waves = getWxPool(Address(base58'3P2yiVnK48evTLr8MAZWavpE4WA4fw1weQg'))
184179
185180 let wx_ethppt_usdtppt = getWxPool(Address(base58'3PATKQATPmnxLd5DjXg8FmbXXbKpA1BVAvS'))
186181
187182 let wx_ethwxg_waves = getWxPool(Address(base58'3P3XGTN6s292g9iwYhs3TEqJqHiffQYojuE'))
188183
189184 let wx_ethwxg_xtn = getWxPool(Address(base58'3PEMqetsaJDbYMw1XGovmE37FB8VUhGnX9A'))
190185
191186 let wx_nsbt_waves = getWxPool(Address(base58'3PPR4zVfWP4w4rshP541aiFtPNQN2sNJwrY'))
192187
193188 let wx_nsbt_xtn = getWxPool(Address(base58'3P97XQCT9VYMXBxasVpDsE7eZfQ6cR9eS9n'))
194189
195190 let wx_pwr_waves = getWxPool(Address(base58'3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t'))
196191
197192 let wx_surf_waves = getWxPool(Address(base58'3PNnCngfvAzyvAQ1cEudZ3o6o3tFktsBVz5'))
198193
199194 let wx_surf_usdcwxg = getWxPool(Address(base58'3PBfTdcoKmMNxZcjP8eTokbLFqYTUdoNKWL'))
200195
201196 let wx_surf_usdtwxg = getWxPool(Address(base58'3PM6YyJauiFTZzVLuRcCkDwWBvWTvPYo1ZM'))
202197
203198 let wx_swaves_waves = getWxPool(Address(base58'3PDVaJDqCadWeBugf768XeKiXtCCLUrYMge'))
204199
205200 let wx_swaves_xtn = getWxPool(Address(base58'3PEmxUzcCbsAcw6Q3VNLTWdd8bjc8KBUEDz'))
206201
207202 let wx_usdtppt_xtn = getWxPool(Address(base58'3P5kfoYW7jPa9zYoTkN6Z6z8xtw8JGhymYB'))
208203
209204 let wx_vires_waves = getWxPool(Address(base58'3P7Z7X5kKXN4TpZ2SmqP2xyLGuotAqht1pU'))
210205
211206 let wx_vires_xtn = getWxPool(Address(base58'3P5HjPowgipiVB3UvXphDiPvKs424WC9xQw'))
212207
213208 let wx_waves_btcwxg = getWxPool(Address(base58'3PPQDcvXuwVToC2QNWzPwxmLxLzMw9Eoe8C'))
214209
215210 let wx_waves_xtn = getWxPool(Address(base58'3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g'))
216211
217212 let wx_waves_usdtppt = getWxPool(Address(base58'3PPeWowdyQLKwW9AExN5CgFa7X9ts7D4LkM'))
218213
219214 let wx_waves_usdcwxg = getWxPool(Address(base58'3P3g3eipfG2NZKKQE8DZXt2E9tRJqii9jcX'))
220215
221216 let wx_waves_usdtwxg = getWxPool(Address(base58'3PKMVZ7kQeaREajYi8Yc25Ro6mcNw5D6QSa'))
222217
223218 let wx_wx_usdtwxg = getWxPool(Address(base58'3PHiXGo7NTRoC2KqkMZ1y9LaA2QSrroGs8y'))
224219
225220 let wx_wx_waves = getWxPool(Address(base58'3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh'))
226221
227222 let wx_wx_xtn = getWxPool(Address(base58'3PCENpEKe8atwELZ7oCSmcdEfcRuKTrUx99'))
228223
229224 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)]
230225
231226 @Callable(i)
232227 func default () = if ((i.caller != caller))
233228 then throw(":D")
234229 else {
235230 func accumFunction (accum,next) = {
236231 let estimation = estimateRoute(next._1, next._2, next._3, next._4, next._5, next._6)
237232 $Tuple2((accum._1 :+ estimation._1), (accum._2 :+ estimation._2))
238233 }
239234
240235 let fold = {
241236 let $l = routes
242237 let $s = size($l)
243238 let $acc0 = $Tuple2(nil, nil)
244239 func $f0_1 ($a,$i) = if (($i >= $s))
245240 then $a
246241 else accumFunction($a, $l[$i])
247242
248243 func $f0_2 ($a,$i) = if (($i >= $s))
249244 then $a
250245 else throw("List size exceeds 30")
251246
252247 $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)
253248 }
254249 let maxSwapProfit = max(fold._1)
255250 if ((0 >= maxSwapProfit))
256251 then throw("Estimate fail")
257252 else {
258253 let estimatedResult = fold._2[value(indexOf(fold._1, maxSwapProfit))]
259254 let result1 = invokeSwap(estimatedResult[0])
260255 if ((result1 == result1))
261256 then {
262257 let result2 = invokeSwap(estimatedResult[1])
263258 if ((result2 == result2))
264259 then {
265260 let result3 = invokeSwap(estimatedResult[2])
266261 if ((result3 == result3))
267262 then {
268263 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))
270268 then throw("Execute fail")
271- else [ScriptTransfer(receiver, profit, InAsset), IntegerEntry(((("profit_" + InAssetStr) + "_") + toString(lastBlock.timestamp)), profit), IntegerEntry(("totalProfit_" + InAssetStr), (getIntOrZero(("totalProfit_" + InAssetStr)) + profit))]
269+ else [ScriptTransfer(receiver, profit, InAsset)]
272270 }
273271 else throw("Strict value is not equal to itself.")
274272 }
275273 else throw("Strict value is not equal to itself.")
276274 }
277275 else throw("Strict value is not equal to itself.")
278276 }
279277 }
280278
281279

github/deemru/w8io/873ac7e 
58.84 ms