tx · 9ysHx2K1c3K9uKmBfpho5wq7tZ6htpy3UdEmSTAropJ7

3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU:  -0.02000000 Waves

2023.02.22 15:33 [3526358] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "9ysHx2K1c3K9uKmBfpho5wq7tZ6htpy3UdEmSTAropJ7", "fee": 2000000, "feeAssetId": null, "timestamp": 1677069170704, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "5CkKFZw2SVJbW4FDoXqnJmyauAMbDgWYR4ELeD8S3jSLeFzvkSEojgNktzCew29JhicvT12e4skd7dCT22Mi5WTa" ], "script": "base64:BgIVCAISBAoCCAESBQoDCAEIEgQKAggICAAJdXNkbklkU3RyAixERzJ4RmtQZER3S1VvQmt6R0FoUXRMcFNHemZYTGlDWVBFemVLSDJBZDI0cAAGdXNkbklkASC2JinDBPXOU5GkDkt1JC9kjFGx+t+vVCm9SNIdKrKq0QEMdHJ5R2V0U3RyaW5nAQNrZXkEByRtYXRjaDAJAJ0IAgUEdGhpcwUDa2V5AwkAAQIFByRtYXRjaDACBlN0cmluZwQBYgUHJG1hdGNoMAUBYgIAAQ5nZXRBc3NldFN0cmluZwEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDYBAEFAWICBVdBVkVTAQ1nZXRBc3NldEJ5dGVzAQphc3NldElkU3RyAwkAAAIFCmFzc2V0SWRTdHICBVdBVkVTBQR1bml0CQDZBAEFCmFzc2V0SWRTdHIBCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIEVW5pdAQBeAUHJG1hdGNoMAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkBBXZhbHVlAQUHYXNzZXRJZAEGc3dhcFdYAwZhc3NldDAGYXNzZXQxB2Ftb3VudDAEE2Fzc2V0MUJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDEDCQAAAgUTYXNzZXQxQmFsYW5jZUJlZm9yZQUTYXNzZXQxQmFsYW5jZUJlZm9yZQQEaW52MQkA/AcECQEHQWRkcmVzcwEBGgFXLio1NbENt/F5PuG3RtCedFJNezHQg64GAgRzd2FwCQDMCAIAAQkAzAgCBQZhc3NldDEJAMwIAgkApQgBBQR0aGlzBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJAQ1nZXRBc3NldEJ5dGVzAQUGYXNzZXQwBQdhbW91bnQwBQNuaWwDCQAAAgUEaW52MQUEaW52MQQHYW1vdW50MQkAZQIJAQpnZXRCYWxhbmNlAQkBDWdldEFzc2V0Qnl0ZXMBBQZhc3NldDEFE2Fzc2V0MUJhbGFuY2VCZWZvcmUDCQAAAgUHYW1vdW50MQUHYW1vdW50MQUHYW1vdW50MQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMc3dhcEludGVybmFsBAFpCXJvdXRlc1N0cgxtaW5Ub1JlY2VpdmUGcmVmS2V5CgEGZG9Td2FwAgZhbW91bnQEc3dhcAQGc3dhcExpCQC1CQIFBHN3YXACASwECyR0MDMxMTgzMTk5CQCWCgQJAJEDAgUGc3dhcExpAAAJAJEDAgUGc3dhcExpAAEJAJEDAgUGc3dhcExpAAIJAJEDAgUGc3dhcExpAAMEBGRBcHAIBQskdDAzMTE4MzE5OQJfMQQIZEFwcFR5cGUIBQskdDAzMTE4MzE5OQJfMgQFdDBTdHIIBQskdDAzMTE4MzE5OQJfMwQFdDFTdHIIBQskdDAzMTE4MzE5OQJfNAQCdDAJAQ1nZXRBc3NldEJ5dGVzAQUFdDBTdHIEB2Ftb3VudDADCQECIT0CBQZhbW91bnQAAAUGYW1vdW50CQEKZ2V0QmFsYW5jZQEFAnQwBAJpMQMJAAACBQhkQXBwVHlwZQIGc3dvcGZpCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQRkQXBwAghleGNoYW5nZQkAzAgCAAEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCdDAFB2Ftb3VudDAFA25pbAMJAAACBQhkQXBwVHlwZQIGcHV6emxlCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQRkQXBwAgRzd2FwCQDMCAIFBXQxU3RyCQDMCAIAAAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJ0MAUHYW1vdW50MAUDbmlsAwkAAAIFCGRBcHBUeXBlAgJ3eAkBBnN3YXBXWAMFBXQwU3RyBQV0MVN0cgUHYW1vdW50MAkAAgECK2ludGVybmFsIGFnZ3JlZ2F0b3IgaXNzdWU6IHVua25vdyBwb29sIHR5cGUDCQAAAgUCaTEFAmkxAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4KAQdkb1JvdXRlAgVhY2N1bQVyb3V0ZQQIYW1vdW50SW4JAQ1wYXJzZUludFZhbHVlAQkAkQMCCQC1CQIFBXJvdXRlAgEvAAAEBXN3YXBzCQC1CQIJAJEDAgkAtQkCBQVyb3V0ZQIBLwABAgE7BAtzd2Fwc1Jlc3VsdAoAAiRsBQVzd2FwcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAFCGFtb3VudEluCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZkb1N3YXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDMJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMDCQAAAgULc3dhcHNSZXN1bHQFC3N3YXBzUmVzdWx0CQBkAgUFYWNjdW0FC3N3YXBzUmVzdWx0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBA1zcGxpdHRlZFJvdXRlCQC1CQIJALICAgUJcm91dGVzU3RyADICASwECWFzc2V0MVN0cgkAkQMCBQ1zcGxpdHRlZFJvdXRlCQBlAgkAkAMBBQ1zcGxpdHRlZFJvdXRlAAEEBmFzc2V0MQkBDWdldEFzc2V0Qnl0ZXMBBQlhc3NldDFTdHIEBnJvdXRlcwkAvAkCBQlyb3V0ZXNTdHICAXwEBXN3YXBzCgACJGwFBnJvdXRlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEHZG9Sb3V0ZQIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAwkAAAIFBXN3YXBzBQVzd2FwcwQIdG90YWxPdXQJAQpnZXRCYWxhbmNlAQUGYXNzZXQxBAlmZWVBbW91bnQJAGsDBQh0b3RhbE91dAAdAJBOBBBjbGVhblRvdGFsQW1vdW50CQBlAgUIdG90YWxPdXQFCWZlZUFtb3VudAMJAGYCBQxtaW5Ub1JlY2VpdmUFEGNsZWFuVG90YWxBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAl9hbW91bnQgdG8gcmVjZWl2ZSBpcyB0b28gbG93LiBwbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBhbW91bnQgb3Igd2FpdCAxIG1pbnV0ZS4gZXhwZWN0ZWQ6IAkApAMBBQxtaW5Ub1JlY2VpdmUCBywgcmVhbCAJAKQDAQUQY2xlYW5Ub3RhbEFtb3VudAQHdXNkbkZlZQMJAAACBQZhc3NldDEFBnVzZG5JZAUJZmVlQW1vdW50BA5wb29sQWRkcmVzc1N0cgkBDHRyeUdldFN0cmluZwEJAKwCAgkArAICAg1zdGF0aWNfYXNzZXRfBQlhc3NldDFTdHICC19wdXp6bGVQb29sAwkAAAIFDnBvb2xBZGRyZXNzU3RyAgAAAAQRdXNkbkJhbGFuY2VCZWZvcmUJAQpnZXRCYWxhbmNlAQUGdXNkbklkAwkAAAIFEXVzZG5CYWxhbmNlQmVmb3JlBRF1c2RuQmFsYW5jZUJlZm9yZQQMY29udmVydGVkRmVlCQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDnBvb2xBZGRyZXNzU3RyAgRzd2FwCQDMCAIFCXVzZG5JZFN0cgkAzAgCAAAFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGYXNzZXQxBQlmZWVBbW91bnQFA25pbAMJAAACBQxjb252ZXJ0ZWRGZWUFDGNvbnZlcnRlZEZlZQQQdXNkbkJhbGFuY2VBZnRlcgkBCmdldEJhbGFuY2UBBQZ1c2RuSWQDCQAAAgUQdXNkbkJhbGFuY2VBZnRlcgUQdXNkbkJhbGFuY2VBZnRlcgkAZQIFEHVzZG5CYWxhbmNlQWZ0ZXIFEXVzZG5CYWxhbmNlQmVmb3JlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAwkAAAIFB3VzZG5GZWUFB3VzZG5GZWUED3JlZmVycmFsQWRkcmVzcwMJAAACBQZyZWZLZXkCBG11bmEJAQdBZGRyZXNzAQEaAVedDKrGE1GpbsuA92N9wWR44u9yTagMutMDCQAAAgUGcmVmS2V5AgZrZWVwZXIJAQdBZGRyZXNzAQEaAVfjtsoSNO5vRm/wyqiA44uvcU3xXpmsO/YDCQAAAgUGcmVmS2V5AgN0Y2kJAQdBZGRyZXNzAQEaAVdOBKn1coze5/nSUkrduGtTRYx6p5o4fZwJAQdBZGRyZXNzAQEaAVf8mgdw4W/e0ZQhIW16to1Y0kJYeywHJhIEDHJlZlVzZG5TaGFyZQMJAAACBQZyZWZLZXkCBW5vcmVmAAAJAGsDBQd1c2RuRmVlAAIACgQFdG9wVXADCQECIT0CBQd1c2RuRmVlAAAJAPwHBAkBB0FkZHJlc3MBARoBV8CKrXOUITO9sBhWDyi1uT5Bd86/b/L+1wILdG9wVXBSZXdhcmQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUGdXNkbklkCQBlAgUHdXNkbkZlZQUMcmVmVXNkblNoYXJlBQNuaWwFBHVuaXQDCQAAAgUFdG9wVXAFBXRvcFVwBAZhc3NldDAICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQHYW1vdW50MAkAZQIJAQpnZXRCYWxhbmNlAQUGYXNzZXQwAwkAAAIFBmFzc2V0MAUGdXNkbklkBQxyZWZVc2RuU2hhcmUAAAQHYW1vdW50MQkAZQIFEGNsZWFuVG90YWxBbW91bnQDCQAAAgUGYXNzZXQxBQZ1c2RuSWQFDHJlZlVzZG5TaGFyZQAACQDOCAIJAM4IAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUHYW1vdW50MQUGYXNzZXQxBQNuaWwDCQECIT0CBQxyZWZVc2RuU2hhcmUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ9yZWZlcnJhbEFkZHJlc3MFDHJlZlVzZG5TaGFyZQUGdXNkbklkBQNuaWwFA25pbAMJAQIhPQIFB2Ftb3VudDAAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFB2Ftb3VudDAFBmFzc2V0MAUDbmlsBQNuaWwDCQAAAgUHdXNkbkZlZQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQEaAVce4ftAMWuB5uxLVhsFLFGhk27fCbE80sEFCWZlZUFtb3VudAUGYXNzZXQxBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMBaQEEc3dhcAIJcm91dGVzU3RyDG1pblRvUmVjZWl2ZQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlAgVub3JlZgFpARBzd2FwV2l0aFJlZmVycmFsAwlyb3V0ZXNTdHIMbWluVG9SZWNlaXZlBnJlZktleQkBDHN3YXBJbnRlcm5hbAQFAWkFCXJvdXRlc1N0cgUMbWluVG9SZWNlaXZlBQZyZWZLZXkBaQESYWRkVG9rZW5QdXp6bGVQb29sAgphc3NldElkU3RyDnBvb2xBZGRyZXNzU3RyAwkBAiE9AggFAWkGY2FsbGVyCQEHQWRkcmVzcwEBGgFXzlfzJNEHpLNO/tK64iisxZCW1orRbQXuCQACAQIKYWRtaW4gb25seQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgINc3RhdGljX2Fzc2V0XwUKYXNzZXRJZFN0cgILX3B1enpsZVBvb2wFDnBvb2xBZGRyZXNzU3RyBQNuaWwBAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5/mCwGQ==", "height": 3526358, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6JbNKyLTCw3AZPSZAk9KF6Mw2wA77RnWuUaxBBgWkMpw Next: ExGqdZ9fP481SHbytbrhA6Canu8ePm2ig8hJASRPeKud Diff:
OldNewDifferences
3535
3636
3737 func swapWX (asset0,asset1,amount0) = {
38- let priceAsset = if (if ((asset0 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
39- then true
40- else (asset1 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
41- then "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
42- else if (if ((asset0 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
43- then true
44- else (asset1 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
45- then "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"
46- else if (if ((asset0 == usdnIdStr))
47- then true
48- else (asset1 == usdnIdStr))
49- then usdnIdStr
50- else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
51- then true
52- else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
53- then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
54- else if (if ((asset0 == "WAVES"))
55- then true
56- else (asset1 == "WAVES"))
57- then "WAVES"
58- else usdnIdStr
59- let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
60- let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
61- then asset1
62- else asset0))))
63- let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
64- let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
65- let poolAddress = addressFromStringValue(poolConfig[1])
66- let poolAssetId = poolConfig[3]
67- let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
68- if ((inv1 == inv1))
38+ let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
39+ if ((asset1BalanceBefore == asset1BalanceBefore))
6940 then {
70- let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
71- if ((poolTokenAmount == poolTokenAmount))
41+ let inv1 = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, asset1, toString(this)], [AttachedPayment(getAssetBytes(asset0), amount0)])
42+ if ((inv1 == inv1))
7243 then {
73- let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
74- if ((asset1BalanceBefore == asset1BalanceBefore))
75- then {
76- let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
77- if ((inv2 == inv2))
78- then {
79- let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
80- if ((amount1 == amount1))
81- then amount1
82- else throw("Strict value is not equal to itself.")
83- }
84- else throw("Strict value is not equal to itself.")
85- }
44+ let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
45+ if ((amount1 == amount1))
46+ then amount1
8647 else throw("Strict value is not equal to itself.")
8748 }
8849 else throw("Strict value is not equal to itself.")
9455 func swapInternal (i,routesStr,minToReceive,refKey) = {
9556 func doSwap (amount,swap) = {
9657 let swapLi = split(swap, ",")
97- let $t027722853 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
98- let dApp = $t027722853._1
99- let dAppType = $t027722853._2
100- let t0Str = $t027722853._3
101- let t1Str = $t027722853._4
58+ let $t031183199 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
59+ let dApp = $t031183199._1
60+ let dAppType = $t031183199._2
61+ let t0Str = $t031183199._3
62+ let t1Str = $t031183199._4
10263 let t0 = getAssetBytes(t0Str)
10364 let amount0 = if ((amount != 0))
10465 then amount
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
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
3737 func swapWX (asset0,asset1,amount0) = {
38- let priceAsset = if (if ((asset0 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
39- then true
40- else (asset1 == "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"))
41- then "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
42- else if (if ((asset0 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
43- then true
44- else (asset1 == "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"))
45- then "6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ"
46- else if (if ((asset0 == usdnIdStr))
47- then true
48- else (asset1 == usdnIdStr))
49- then usdnIdStr
50- else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
51- then true
52- else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
53- then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
54- else if (if ((asset0 == "WAVES"))
55- then true
56- else (asset1 == "WAVES"))
57- then "WAVES"
58- else usdnIdStr
59- let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
60- let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
61- then asset1
62- else asset0))))
63- let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
64- let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
65- let poolAddress = addressFromStringValue(poolConfig[1])
66- let poolAssetId = poolConfig[3]
67- let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
68- if ((inv1 == inv1))
38+ let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
39+ if ((asset1BalanceBefore == asset1BalanceBefore))
6940 then {
70- let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
71- if ((poolTokenAmount == poolTokenAmount))
41+ let inv1 = invoke(Address(base58'3P68zNiufsu1viZpu1aY3cdahRRKcvV5N93'), "swap", [1, asset1, toString(this)], [AttachedPayment(getAssetBytes(asset0), amount0)])
42+ if ((inv1 == inv1))
7243 then {
73- let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
74- if ((asset1BalanceBefore == asset1BalanceBefore))
75- then {
76- let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
77- if ((inv2 == inv2))
78- then {
79- let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
80- if ((amount1 == amount1))
81- then amount1
82- else throw("Strict value is not equal to itself.")
83- }
84- else throw("Strict value is not equal to itself.")
85- }
44+ let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
45+ if ((amount1 == amount1))
46+ then amount1
8647 else throw("Strict value is not equal to itself.")
8748 }
8849 else throw("Strict value is not equal to itself.")
8950 }
9051 else throw("Strict value is not equal to itself.")
9152 }
9253
9354
9455 func swapInternal (i,routesStr,minToReceive,refKey) = {
9556 func doSwap (amount,swap) = {
9657 let swapLi = split(swap, ",")
97- let $t027722853 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
98- let dApp = $t027722853._1
99- let dAppType = $t027722853._2
100- let t0Str = $t027722853._3
101- let t1Str = $t027722853._4
58+ let $t031183199 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
59+ let dApp = $t031183199._1
60+ let dAppType = $t031183199._2
61+ let t0Str = $t031183199._3
62+ let t1Str = $t031183199._4
10263 let t0 = getAssetBytes(t0Str)
10364 let amount0 = if ((amount != 0))
10465 then amount
10566 else getBalance(t0)
10667 let i1 = if ((dAppType == "swopfi"))
10768 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
10869 else if ((dAppType == "puzzle"))
10970 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
11071 else if ((dAppType == "wx"))
11172 then swapWX(t0Str, t1Str, amount0)
11273 else throw("internal aggregator issue: unknow pool type")
11374 if ((i1 == i1))
11475 then 0
11576 else throw("Strict value is not equal to itself.")
11677 }
11778
11879 func doRoute (accum,route) = {
11980 let amountIn = parseIntValue(split(route, "/")[0])
12081 let swaps = split(split(route, "/")[1], ";")
12182 let swapsResult = {
12283 let $l = swaps
12384 let $s = size($l)
12485 let $acc0 = amountIn
12586 func $f0_1 ($a,$i) = if (($i >= $s))
12687 then $a
12788 else doSwap($a, $l[$i])
12889
12990 func $f0_2 ($a,$i) = if (($i >= $s))
13091 then $a
13192 else throw("List size exceeds 3")
13293
13394 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
13495 }
13596 if ((swapsResult == swapsResult))
13697 then (accum + swapsResult)
13798 else throw("Strict value is not equal to itself.")
13899 }
139100
140101 let splittedRoute = split(takeRight(routesStr, 50), ",")
141102 let asset1Str = splittedRoute[(size(splittedRoute) - 1)]
142103 let asset1 = getAssetBytes(asset1Str)
143104 let routes = split_4C(routesStr, "|")
144105 let swaps = {
145106 let $l = routes
146107 let $s = size($l)
147108 let $acc0 = 0
148109 func $f0_1 ($a,$i) = if (($i >= $s))
149110 then $a
150111 else doRoute($a, $l[$i])
151112
152113 func $f0_2 ($a,$i) = if (($i >= $s))
153114 then $a
154115 else throw("List size exceeds 4")
155116
156117 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
157118 }
158119 if ((swaps == swaps))
159120 then {
160121 let totalOut = getBalance(asset1)
161122 let feeAmount = fraction(totalOut, 29, 10000)
162123 let cleanTotalAmount = (totalOut - feeAmount)
163124 if ((minToReceive > cleanTotalAmount))
164125 then throw(((("amount to receive is too low. please try again with another amount or wait 1 minute. expected: " + toString(minToReceive)) + ", real ") + toString(cleanTotalAmount)))
165126 else {
166127 let usdnFee = if ((asset1 == usdnId))
167128 then feeAmount
168129 else {
169130 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
170131 if ((poolAddressStr == ""))
171132 then 0
172133 else {
173134 let usdnBalanceBefore = getBalance(usdnId)
174135 if ((usdnBalanceBefore == usdnBalanceBefore))
175136 then {
176137 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
177138 if ((convertedFee == convertedFee))
178139 then {
179140 let usdnBalanceAfter = getBalance(usdnId)
180141 if ((usdnBalanceAfter == usdnBalanceAfter))
181142 then (usdnBalanceAfter - usdnBalanceBefore)
182143 else throw("Strict value is not equal to itself.")
183144 }
184145 else throw("Strict value is not equal to itself.")
185146 }
186147 else throw("Strict value is not equal to itself.")
187148 }
188149 }
189150 if ((usdnFee == usdnFee))
190151 then {
191152 let referralAddress = if ((refKey == "muna"))
192153 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
193154 else if ((refKey == "keeper"))
194155 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
195156 else if ((refKey == "tci"))
196157 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
197158 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
198159 let refUsdnShare = if ((refKey == "noref"))
199160 then 0
200161 else fraction(usdnFee, 2, 10)
201162 let topUp = if ((usdnFee != 0))
202163 then invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
203164 else unit
204165 if ((topUp == topUp))
205166 then {
206167 let asset0 = i.payments[0].assetId
207168 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
208169 then refUsdnShare
209170 else 0))
210171 let amount1 = (cleanTotalAmount - (if ((asset1 == usdnId))
211172 then refUsdnShare
212173 else 0))
213174 ((([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
214175 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
215176 else nil)) ++ (if ((amount0 != 0))
216177 then [ScriptTransfer(i.caller, amount0, asset0)]
217178 else nil)) ++ (if ((usdnFee == 0))
218179 then [ScriptTransfer(Address(base58'3P4kBiU4wr2yV1S5gMfu3MdkVvy7kxXHsKe'), feeAmount, asset1)]
219180 else nil))
220181 }
221182 else throw("Strict value is not equal to itself.")
222183 }
223184 else throw("Strict value is not equal to itself.")
224185 }
225186 }
226187 else throw("Strict value is not equal to itself.")
227188 }
228189
229190
230191 @Callable(i)
231192 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
232193
233194
234195
235196 @Callable(i)
236197 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
237198
238199
239200
240201 @Callable(i)
241202 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3PLjwHcz9NEuaTo63NZR9B9okQiKQxZSbmf')))
242203 then throw("admin only")
243204 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
244205
245206
246207 @Verifier(tx)
247208 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
248209

github/deemru/w8io/6500d08 
37.95 ms