2023.01.11 12:43 [3465633] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "DLHjAd9YF6bimB9kULa6G8wrd45JLoiGnRC3mg5dmDCX", "fee": 2000000, "feeAssetId": null, "timestamp": 1673430189462, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "2wqGrZ8Kq1VXFttoHjJTqmz4GeMQtMdF2TC4V1nZfqJjETS7pd29akntBDXJ1Pgcjoumi4x8zSL1bFWJpgCbXP7Z" ], "script": "base64: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bW91bnQwBQAAAANuaWwDCQAAAAAAAAIFAAAABGludjEFAAAABGludjEEAAAAD3Bvb2xUb2tlbkFtb3VudAkBAAAACmdldEJhbGFuY2UAAAABBQAAAAtwb29sQXNzZXRJZAMJAAAAAAAAAgUAAAAPcG9vbFRva2VuQW1vdW50BQAAAA9wb29sVG9rZW5BbW91bnQEAAAAE2Fzc2V0MUJhbGFuY2VCZWZvcmUJAQAAAApnZXRCYWxhbmNlAAAAAQkBAAAADWdldEFzc2V0Qnl0ZXMAAAABBQAAAAZhc3NldDEDCQAAAAAAAAIFAAAAE2Fzc2V0MUJhbGFuY2VCZWZvcmUFAAAAE2Fzc2V0MUJhbGFuY2VCZWZvcmUEAAAABGludjIJAAP8AAAABAUAAAALcG9vbEFkZHJlc3MCAAAACWdldE9uZVRrbgkABEwAAAACBQAAAAZhc3NldDEJAARMAAAAAgAAAAAAAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAtwb29sQXNzZXRJZAUAAAAPcG9vbFRva2VuQW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAABGludjIFAAAABGludjIEAAAAB2Ftb3VudDEJAABlAAAAAgkBAAAACmdldEJhbGFuY2UAAAABCQEAAAANZ2V0QXNzZXRCeXRlcwAAAAEFAAAABmFzc2V0MQUAAAATYXNzZXQxQmFsYW5jZUJlZm9yZQMJAAAAAAAAAgUAAAAHYW1vdW50MQUAAAAHYW1vdW50MQUAAAAHYW1vdW50MQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQAAAAxzd2FwSW50ZXJuYWwAAAAEAAAAAWkAAAAJcm91dGVz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ZAUAAAAJZmVlQW1vdW50BAAAAA5wb29sQWRkcmVzc1N0cgkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAA1zdGF0aWNfYXNzZXRfBQAAAAlhc3NldDFTdHICAAAAC19wdXp6bGVQb29sAwkAAAAAAAACBQAAAA5wb29sQWRkcmVzc1N0cgIAAAAAAAAAAAAAAAAABAAAABF1c2RuQmFsYW5jZUJlZm9yZQkBAAAACmdldEJhbGFuY2UAAAABBQAAAAZ1c2RuSWQDCQAAAAAAAAIFAAAAEXVzZG5CYWxhbmNlQmVmb3JlBQAAABF1c2RuQmFsYW5jZUJlZm9yZQQAAAAMY29udmVydGVkRmVlCQAD/AAAAAQJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAADnBvb2xBZGRyZXNzU3RyAgAAAARzd2FwCQAETAAAAAIFAAAACXVzZG5JZFN0cgkABEwAAAACAAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAABmFzc2V0MQUAAAAJZmVlQW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAADGNvbnZlcnRlZEZlZQUAAAAMY29udmVydGVkRmVlBAAAABB1c2RuQmFsYW5jZUFmdGVyCQEAAAAKZ2V0QmFsYW5jZQAAAAEFAAAABnVzZG5JZAMJAAAAAAAAAgUAAAAQdXNkbkJhbGFuY2VBZnRlcgUAAAAQdXNkbkJhbGFuY2VBZnRlcgkAAGUAAAACBQAAABB1c2RuQmFsYW5jZUFmdGVyBQAAABF1c2RuQmFsYW5jZUJlZm9yZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAAAAAAAAgUAAAAHdXNkbkZlZQUAAAAHdXNkbkZlZQQAAAAPcmVmZXJyYWxBZGRyZXNzAwkAAAAAAAACBQAAAAZyZWZLZXkCAAAABG11bmEJAQAAAAdBZGRyZXNz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", "height": 3465633, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CZ15ZDL3KPQkGPNuKGU9SHTcfnLEn7h2XUHucmJT9qNE Next: 88BaFMYbro6zqB29Xnb3iDjg9s9rqfdLwMXvyJ7WrXcL Diff:
OldNewDifferences
3535
3636
3737 func swapWX (asset0,asset1,amount0) = {
38+ let priceAsset = if (if ((asset0 == usdnIdStr))
39+ then true
40+ else (asset1 == usdnIdStr))
41+ then usdnIdStr
42+ else if (if ((asset0 == "WAVES"))
43+ then true
44+ else (asset1 == "WAVES"))
45+ then "WAVES"
46+ else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
3847 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
39- let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != usdnIdStr))
48+ let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
4049 then asset1
4150 else asset0))))
42- let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + usdnIdStr)))
51+ let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
4352 let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
4453 let poolAddress = addressFromStringValue(poolConfig[1])
45- let poolAssetId = poolConfig[3]
54+ let poolAssetId = getAssetBytes(poolConfig[3])
4655 let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
4756 if ((inv1 == inv1))
4857 then {
49- let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
58+ let poolTokenAmount = getBalance(poolAssetId)
5059 if ((poolTokenAmount == poolTokenAmount))
5160 then {
5261 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
5362 if ((asset1BalanceBefore == asset1BalanceBefore))
5463 then {
55- let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
64+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(poolAssetId, poolTokenAmount)])
5665 if ((inv2 == inv2))
5766 then {
5867 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
7382 func swapInternal (i,routesStr,minToReceive,refKey) = {
7483 func doSwap (amount,swap) = {
7584 let swapLi = split(swap, ",")
76- let $t020742155 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
77- let dApp = $t020742155._1
78- let dAppType = $t020742155._2
79- let t0Str = $t020742155._3
80- let t1Str = $t020742155._4
85+ let $t022402321 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
86+ let dApp = $t022402321._1
87+ let dAppType = $t022402321._2
88+ let t0Str = $t022402321._3
89+ let t1Str = $t022402321._4
8190 let t0 = getAssetBytes(t0Str)
8291 let amount0 = if ((amount != 0))
8392 then amount
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let usdnIdStr = "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p"
55
66 let usdnId = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
77
88 func tryGetString (key) = match getString(this, key) {
99 case b: String =>
1010 b
1111 case _ =>
1212 ""
1313 }
1414
1515
1616 func getAssetString (assetId) = match assetId {
1717 case b: ByteVector =>
1818 toBase58String(b)
1919 case _ =>
2020 "WAVES"
2121 }
2222
2323
2424 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2525 then unit
2626 else fromBase58String(assetIdStr)
2727
2828
2929 func getBalance (assetId) = match assetId {
3030 case x: Unit =>
3131 wavesBalance(this).available
3232 case _ =>
3333 assetBalance(this, value(assetId))
3434 }
3535
3636
3737 func swapWX (asset0,asset1,amount0) = {
38+ let priceAsset = if (if ((asset0 == usdnIdStr))
39+ then true
40+ else (asset1 == usdnIdStr))
41+ then usdnIdStr
42+ else if (if ((asset0 == "WAVES"))
43+ then true
44+ else (asset1 == "WAVES"))
45+ then "WAVES"
46+ else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
3847 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
39- let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != usdnIdStr))
48+ let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
4049 then asset1
4150 else asset0))))
42- let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + usdnIdStr)))
51+ let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
4352 let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
4453 let poolAddress = addressFromStringValue(poolConfig[1])
45- let poolAssetId = poolConfig[3]
54+ let poolAssetId = getAssetBytes(poolConfig[3])
4655 let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
4756 if ((inv1 == inv1))
4857 then {
49- let poolTokenAmount = getBalance(getAssetBytes(poolAssetId))
58+ let poolTokenAmount = getBalance(poolAssetId)
5059 if ((poolTokenAmount == poolTokenAmount))
5160 then {
5261 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
5362 if ((asset1BalanceBefore == asset1BalanceBefore))
5463 then {
55- let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
64+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(poolAssetId, poolTokenAmount)])
5665 if ((inv2 == inv2))
5766 then {
5867 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
5968 if ((amount1 == amount1))
6069 then amount1
6170 else throw("Strict value is not equal to itself.")
6271 }
6372 else throw("Strict value is not equal to itself.")
6473 }
6574 else throw("Strict value is not equal to itself.")
6675 }
6776 else throw("Strict value is not equal to itself.")
6877 }
6978 else throw("Strict value is not equal to itself.")
7079 }
7180
7281
7382 func swapInternal (i,routesStr,minToReceive,refKey) = {
7483 func doSwap (amount,swap) = {
7584 let swapLi = split(swap, ",")
76- let $t020742155 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
77- let dApp = $t020742155._1
78- let dAppType = $t020742155._2
79- let t0Str = $t020742155._3
80- let t1Str = $t020742155._4
85+ let $t022402321 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
86+ let dApp = $t022402321._1
87+ let dAppType = $t022402321._2
88+ let t0Str = $t022402321._3
89+ let t1Str = $t022402321._4
8190 let t0 = getAssetBytes(t0Str)
8291 let amount0 = if ((amount != 0))
8392 then amount
8493 else getBalance(t0)
8594 let i1 = if ((dAppType == "swopfi"))
8695 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
8796 else if ((dAppType == "puzzle"))
8897 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
8998 else if ((dAppType == "wx"))
9099 then swapWX(t0Str, t1Str, amount0)
91100 else throw("internal aggregator issue: unknow pool type")
92101 if ((i1 == i1))
93102 then 0
94103 else throw("Strict value is not equal to itself.")
95104 }
96105
97106 func doRoute (accum,route) = {
98107 let amountIn = parseIntValue(split(route, "/")[0])
99108 let swaps = split(split(route, "/")[1], ";")
100109 let swapsResult = {
101110 let $l = swaps
102111 let $s = size($l)
103112 let $acc0 = amountIn
104113 func $f0_1 ($a,$i) = if (($i >= $s))
105114 then $a
106115 else doSwap($a, $l[$i])
107116
108117 func $f0_2 ($a,$i) = if (($i >= $s))
109118 then $a
110119 else throw("List size exceeds 3")
111120
112121 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
113122 }
114123 if ((swapsResult == swapsResult))
115124 then (accum + swapsResult)
116125 else throw("Strict value is not equal to itself.")
117126 }
118127
119128 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
120129 let asset1 = getAssetBytes(asset1Str)
121130 let routes = split(routesStr, "|")
122131 let swaps = {
123132 let $l = routes
124133 let $s = size($l)
125134 let $acc0 = 0
126135 func $f0_1 ($a,$i) = if (($i >= $s))
127136 then $a
128137 else doRoute($a, $l[$i])
129138
130139 func $f0_2 ($a,$i) = if (($i >= $s))
131140 then $a
132141 else throw("List size exceeds 4")
133142
134143 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
135144 }
136145 if ((swaps == swaps))
137146 then {
138147 let totalOut = getBalance(asset1)
139148 let feeAmount = fraction(totalOut, 29, 10000)
140149 let cleanTotalAmount = (totalOut - feeAmount)
141150 if ((minToReceive > cleanTotalAmount))
142151 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
143152 else {
144153 let usdnFee = if ((asset1 == usdnId))
145154 then feeAmount
146155 else {
147156 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
148157 if ((poolAddressStr == ""))
149158 then 0
150159 else {
151160 let usdnBalanceBefore = getBalance(usdnId)
152161 if ((usdnBalanceBefore == usdnBalanceBefore))
153162 then {
154163 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
155164 if ((convertedFee == convertedFee))
156165 then {
157166 let usdnBalanceAfter = getBalance(usdnId)
158167 if ((usdnBalanceAfter == usdnBalanceAfter))
159168 then (usdnBalanceAfter - usdnBalanceBefore)
160169 else throw("Strict value is not equal to itself.")
161170 }
162171 else throw("Strict value is not equal to itself.")
163172 }
164173 else throw("Strict value is not equal to itself.")
165174 }
166175 }
167176 if ((usdnFee == usdnFee))
168177 then {
169178 let referralAddress = if ((refKey == "muna"))
170179 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
171180 else if ((refKey == "keeper"))
172181 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
173182 else if ((refKey == "tci"))
174183 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
175184 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
176185 let refUsdnShare = if ((refKey == "noref"))
177186 then 0
178187 else fraction(usdnFee, 2, 10)
179188 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
180189 if ((topUp == topUp))
181190 then {
182191 let asset0 = i.payments[0].assetId
183192 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
184193 then refUsdnShare
185194 else 0))
186195 let amount1 = (getBalance(asset1) - (if ((asset1 == usdnId))
187196 then refUsdnShare
188197 else 0))
189198 (([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
190199 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
191200 else nil)) ++ (if ((amount0 != 0))
192201 then [ScriptTransfer(i.caller, amount0, asset0)]
193202 else nil))
194203 }
195204 else throw("Strict value is not equal to itself.")
196205 }
197206 else throw("Strict value is not equal to itself.")
198207 }
199208 }
200209 else throw("Strict value is not equal to itself.")
201210 }
202211
203212
204213 @Callable(i)
205214 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
206215
207216
208217
209218 @Callable(i)
210219 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
211220
212221
213222
214223 @Callable(i)
215224 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
216225 then throw("admin only")
217226 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
218227
219228
220229 @Verifier(tx)
221230 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
222231

github/deemru/w8io/786bc32 
53.92 ms