tx · GsVnsydJmGXQJ8rHDvu12Sns6DHyTwJ9KbT9SN6ny1jC

3PP7Hn6RodpJgWzxPT4YLfirunyF2RMnNNt:  -0.01300000 Waves

2024.04.12 20:33 [4125826] smart account 3PP7Hn6RodpJgWzxPT4YLfirunyF2RMnNNt > SELF 0.00000000 Waves

{ "type": 13, "id": "GsVnsydJmGXQJ8rHDvu12Sns6DHyTwJ9KbT9SN6ny1jC", "fee": 1300000, "feeAssetId": null, "timestamp": 1712943255926, "version": 2, "chainId": 87, "sender": "3PP7Hn6RodpJgWzxPT4YLfirunyF2RMnNNt", "senderPublicKey": "5Htdw89Brdi28PfJ8QZnSNDccuDTwnmMaicBCTyBceJ9", "proofs": [ "ji6bvScZyUB6nEgD9KDp3UVcPsksMtBhZiUet6EnTzacXM9uUWhKipq5WHVGwZHQxfJ1HZqzVpaozSitPyKnroF" ], "script": "base64:AAIFAAAAAAAABFIIAhIFCgMICAESBwoFCAgIAQgSBgoECAgBCBIECgIIARIECgIIARIECgIIASIMdHJ5R2V0U3RyaW5nIgNrZXkiByRtYXRjaDAiAWIiDmdldEFzc2V0U3RyaW5nIgdhc3NldElkIg1nZXRBc3NldEJ5dGVzIgphc3NldElkU3RyIgpnZXRCYWxhbmNlIgF4IhRjYWxjdWxhdGVNaW5Ub0dldFB6bCIKYW1tQWRkcmVzcyIGYXNzZXQxIgZhc3NldDIiDGFtb3VudFRvU3dhcCIGU2NhbGU4IghGZWVTY2FsZSIHYWRkcmVzcyIJa0JhbGFuY2VBIg9BX2Fzc2V0X2JhbGFuY2UiCWtCYWxhbmNlQiIPQl9hc3NldF9iYWxhbmNlIghrV2VpZ2h0QSIIa1dlaWdodEIiB3dlaWdodEEiB3dlaWdodEIiA0ZlZSIFdG9HZXQiCWZlZUFtb3VudCIOY2xlYW5BbW91bnRPdXQiDWNhbGN1bGF0ZUZlZXMiCXBtdEFtb3VudCIJdG9rZW5Gcm9tIgd0b2tlblRvIgNmZWUiCWZlZVNjYWxlNiIQYW1vdW50V2l0aG91dEZlZSINYW1vdW50V2l0aEZlZSIVY2FsY3VsYXRlTWluVG9HZXRTd29wIglrQXNzZXRJZEEiCWtBc3NldElkQiIEa0ZlZSILc3RyQXNzZXRJZEEiC3N0ckFzc2V0SWRCIghhc3NldElkQSIIYXNzZXRJZEIiCGJhbGFuY2VBIghiYWxhbmNlQiIFYXNJbnQiBXZhbHVlIgNpbnQiBnN0cmluZyIOYXNTd29wUmVzcG9uc2UiA2ludiILJHQwMzc0MTM3NzkiC2Fzc2V0SWRTZW5kIgRsaXN0IgFpIghhc3NldE91dCIHbWluaW11bSIDcG10IghBbW91bnRJbiIHQXNzZXRJbiIIbWluVG9HZXQiAnR4IgR0eXBlIglhbW91bnRPdXQiCXJvdXRlc1N0ciIJYmFsYW5jZUluIgxzd2FwVmFsaWRhdGUiCGFtb3VudEluIgRzd2FwIghzd2FwTGlzdCIEZEFwcCIJZnJvbUFzc2V0Igd0b0Fzc2V0IgxieXRlc0Fzc2V0SW4iDWJ5dGVzQXNzZXRPdXQiFGZvckVhY2hSb3V0ZVZhbGlkYXRlIgphY2N1bVJvdXRlIgVy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", "height": 4125826, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Hbj8GW9s5Ma3vS3cwTCuUinwfPx7BmL3rFFtJJVgtv3c Next: 614NPwPy7UUgCQacRcQBgPkHSYp4f5vpsiiLwv4nkBYH Diff:
OldNewDifferences
237237 let dApp = swapList[0]
238238 let fromAsset = swapList[1]
239239 let toAsset = swapList[2]
240+ let type = if ((size(swapList) == 4))
241+ then swapList[3]
242+ else "pzl"
240243 let bytesAssetIn = getAssetBytes(fromAsset)
241244 let bytesAssetOut = getAssetBytes(toAsset)
242- let minToGet = calculateMinToGetPzl(dApp, fromAsset, toAsset, amountIn)
245+ let minToGet = if ((type == "pzl"))
246+ then calculateMinToGetPzl(dApp, fromAsset, toAsset, amountIn)
247+ else calculateMinToGetSwop(dApp, fromAsset, toAsset, amountIn)
243248 if ((minToGet == minToGet))
244249 then minToGet
245250 else throw("Strict value is not equal to itself.")
250255 let dApp = swapList[0]
251256 let fromAsset = swapList[1]
252257 let toAsset = swapList[2]
258+ let type = if ((size(swapList) == 4))
259+ then swapList[3]
260+ else "pzl"
253261 let bytesAssetIn = getAssetBytes(fromAsset)
254262 let bytesAssetOut = getAssetBytes(toAsset)
255263 let balanceBefore = getBalance(bytesAssetOut)
256264 if ((balanceBefore == balanceBefore))
257265 then {
258- let tx = invoke(Address(fromBase58String(dApp)), "swap", [toAsset, 0], [AttachedPayment(bytesAssetIn, amountIn)])
266+ let tx = if ((type == "pzl"))
267+ then asInt(invoke(Address(fromBase58String(dApp)), "swap", [toAsset, 1], i.payments))
268+ else asSwopResponse(invoke(Address(fromBase58String(dApp)), "exchange", [1], i.payments))
259269 if ((tx == tx))
260270 then {
261271 let balanceAfter = getBalance(bytesAssetOut)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetString (key) = match getString(this, key) {
55 case b: String =>
66 b
77 case _ =>
88 ""
99 }
1010
1111
1212 func getAssetString (assetId) = match assetId {
1313 case b: ByteVector =>
1414 toBase58String(b)
1515 case _ =>
1616 "WAVES"
1717 }
1818
1919
2020 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
2121 then unit
2222 else fromBase58String(assetIdStr)
2323
2424
2525 func getBalance (assetId) = match assetId {
2626 case x: Unit =>
2727 wavesBalance(this).available
2828 case _ =>
2929 assetBalance(this, value(assetId))
3030 }
3131
3232
3333 func calculateMinToGetPzl (ammAddress,asset1,asset2,amountToSwap) = {
3434 let Scale8 = 100000000
3535 let FeeScale = 10000
3636 let address = addressFromStringValue(ammAddress)
3737 let kBalanceA = (("global_" + asset1) + "_balance")
3838 let A_asset_balance = getIntegerValue(address, kBalanceA)
3939 let kBalanceB = (("global_" + asset2) + "_balance")
4040 let B_asset_balance = getIntegerValue(address, kBalanceB)
4141 let kWeightA = (("static_" + asset1) + "_weight")
4242 let kWeightB = (("static_" + asset2) + "_weight")
4343 let weightA = getIntegerValue(address, kWeightA)
4444 let weightB = getIntegerValue(address, kWeightB)
4545 let Fee = getIntegerValue(address, "static_fee")
4646 let toGet = fraction(B_asset_balance, ((Scale8 * Scale8) - toInt(pow(fraction(toBigInt(A_asset_balance), toBigInt((Scale8 * Scale8)), toBigInt((A_asset_balance + amountToSwap)), HALFUP), 16, toBigInt(fraction(weightA, 10000, weightB)), 4, 16, CEILING))), (Scale8 * Scale8), DOWN)
4747 let feeAmount = fraction(toGet, Fee, FeeScale)
4848 if ((feeAmount == feeAmount))
4949 then {
5050 let cleanAmountOut = (toGet - feeAmount)
5151 if ((cleanAmountOut == cleanAmountOut))
5252 then cleanAmountOut
5353 else throw("Strict value is not equal to itself.")
5454 }
5555 else throw("Strict value is not equal to itself.")
5656 }
5757
5858
5959 func calculateFees (pmtAmount,tokenFrom,tokenTo,fee) = {
6060 let feeScale6 = 1000000
6161 let amountWithoutFee = fraction(tokenTo, pmtAmount, (pmtAmount + tokenFrom))
6262 let amountWithFee = fraction(amountWithoutFee, (feeScale6 - fee), feeScale6)
6363 amountWithFee
6464 }
6565
6666
6767 func calculateMinToGetSwop (ammAddress,asset1,asset2,amountToSwap) = {
6868 let address = addressFromStringValue(ammAddress)
6969 let kBalanceA = "A_asset_balance"
7070 let kBalanceB = "B_asset_balance"
7171 let kAssetIdA = "A_asset_id"
7272 let kAssetIdB = "B_asset_id"
7373 let kFee = "commission"
7474 let strAssetIdA = getStringValue(address, kAssetIdA)
7575 let strAssetIdB = getStringValue(address, kAssetIdB)
7676 let assetIdA = getAssetBytes(strAssetIdA)
7777 let assetIdB = getAssetBytes(strAssetIdB)
7878 let fee = getIntegerValue(address, kFee)
7979 let balanceA = getIntegerValue(address, kBalanceA)
8080 let balanceB = getIntegerValue(address, kBalanceB)
8181 if (if ((balanceA == 0))
8282 then true
8383 else (balanceB == 0))
8484 then throw("Can't exchange with zero balance")
8585 else if ((fromBase58String(asset1) == assetIdA))
8686 then calculateFees(amountToSwap, balanceA, balanceB, fee)
8787 else if ((fromBase58String(asset1) == assetIdB))
8888 then calculateFees(amountToSwap, balanceB, balanceA, fee)
8989 else throw(((("Incorrect asset attached. Expected: " + strAssetIdA) + " or ") + strAssetIdB))
9090 }
9191
9292
9393 func asInt (value) = match value {
9494 case int: Int =>
9595 int
9696 case string: String =>
9797 throw(("Wrong type, expected: Int, but got string: " + string))
9898 case _ =>
9999 throw("Wrong type, expected: Int")
100100 }
101101
102102
103103 func asSwopResponse (value) = match value {
104104 case inv: (Int, ByteVector) =>
105105 let $t037413779 = inv
106106 let amountWithFee = $t037413779._1
107107 let assetIdSend = $t037413779._2
108108 amountWithFee
109109 case int: Int =>
110110 int
111111 case list: List[Any] =>
112112 asInt(list[0])
113113 case _ =>
114114 throw("Incorrect invoke result: expected amountWithFee and assetsIdSend ")
115115 }
116116
117117
118118 @Callable(i)
119119 func swapAndCheck (ammAddress,assetOut,minimum) = {
120120 let pmt = value(i.payments[0])
121121 let AmountIn = value(i.payments[0].amount)
122122 let AssetIn = pmt.assetId
123123 let minToGet = calculateMinToGetPzl(ammAddress, getAssetString(AssetIn), assetOut, AmountIn)
124124 if ((minToGet == minToGet))
125125 then if ((minimum > minToGet))
126126 then throw("Early exec, not enough funds!")
127127 else {
128128 let tx = asInt(invoke(Address(fromBase58String(ammAddress)), "swap", [assetOut, minimum], i.payments))
129129 if ((tx == tx))
130130 then [ScriptTransfer(i.caller, tx, getAssetBytes(assetOut))]
131131 else throw("Strict value is not equal to itself.")
132132 }
133133 else throw("Strict value is not equal to itself.")
134134 }
135135
136136
137137
138138 @Callable(i)
139139 func readOnlyFunc (ammAddress,asset1,asset2,amountToSwap,type) = {
140140 let amountOut = if ((type == "pzl"))
141141 then calculateMinToGetPzl(ammAddress, asset1, asset2, amountToSwap)
142142 else calculateMinToGetSwop(ammAddress, asset1, asset2, amountToSwap)
143143 [IntegerEntry("DEBUG", amountOut)]
144144 }
145145
146146
147147
148148 @Callable(i)
149149 func swapAndCheckType (ammAddress,assetOut,minimum,type) = {
150150 let pmt = value(i.payments[0])
151151 let AmountIn = value(i.payments[0].amount)
152152 let AssetIn = pmt.assetId
153153 let minToGet = if ((type == "pzl"))
154154 then calculateMinToGetPzl(ammAddress, getAssetString(AssetIn), assetOut, AmountIn)
155155 else calculateMinToGetSwop(ammAddress, getAssetString(AssetIn), assetOut, AmountIn)
156156 if ((minToGet == minToGet))
157157 then if ((minimum > minToGet))
158158 then throw("Early exec, not enough funds!")
159159 else {
160160 let tx = if ((type == "pzl"))
161161 then asInt(invoke(Address(fromBase58String(ammAddress)), "swap", [assetOut, minimum], i.payments))
162162 else asSwopResponse(invoke(Address(fromBase58String(ammAddress)), "exchange", [minimum], i.payments))
163163 if ((tx == tx))
164164 then [ScriptTransfer(i.caller, tx, getAssetBytes(assetOut))]
165165 else throw("Strict value is not equal to itself.")
166166 }
167167 else throw("Strict value is not equal to itself.")
168168 }
169169
170170
171171
172172 @Callable(i)
173173 func readOnlyFuncAggregator (routesStr,amountToSwap) = {
174174 let balanceIn = amountToSwap
175175 func swapValidate (amountIn,swap) = {
176176 let swapList = split(swap, ",")
177177 let dApp = swapList[0]
178178 let fromAsset = swapList[1]
179179 let toAsset = swapList[2]
180180 let bytesAssetIn = getAssetBytes(fromAsset)
181181 let bytesAssetOut = getAssetBytes(toAsset)
182182 let minToGet = calculateMinToGetPzl(dApp, fromAsset, toAsset, amountIn)
183183 if ((minToGet == minToGet))
184184 then minToGet
185185 else throw("Strict value is not equal to itself.")
186186 }
187187
188188 func forEachRouteValidate (accumRoute,route) = {
189189 let pathList = split(route, ";")
190190 let swapResults = {
191191 let $l = pathList
192192 let $s = size($l)
193193 let $acc0 = balanceIn
194194 func $f0_1 ($a,$i) = if (($i >= $s))
195195 then $a
196196 else swapValidate($a, $l[$i])
197197
198198 func $f0_2 ($a,$i) = if (($i >= $s))
199199 then $a
200200 else throw("List size exceeds 4")
201201
202202 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
203203 }
204204 if ((swapResults == swapResults))
205205 then (accumRoute + swapResults)
206206 else throw("Strict value is not equal to itself.")
207207 }
208208
209209 let routesList = split(routesStr, "|")
210210 let validateMinAmount = {
211211 let $l = routesList
212212 let $s = size($l)
213213 let $acc0 = 0
214214 func $f0_1 ($a,$i) = if (($i >= $s))
215215 then $a
216216 else forEachRouteValidate($a, $l[$i])
217217
218218 func $f0_2 ($a,$i) = if (($i >= $s))
219219 then $a
220220 else throw("List size exceeds 2")
221221
222222 $f0_2($f0_1($f0_1($acc0, 0), 1), 2)
223223 }
224224 if ((validateMinAmount == validateMinAmount))
225225 then [IntegerEntry("DEBUG", validateMinAmount)]
226226 else throw("Strict value is not equal to itself.")
227227 }
228228
229229
230230
231231 @Callable(i)
232232 func swapPreCheck (routesStr,minToReceive) = {
233233 let balanceIn = i.payments[0].amount
234234 let assetIn = i.payments[0].assetId
235235 func swapValidate (amountIn,swap) = {
236236 let swapList = split(swap, ",")
237237 let dApp = swapList[0]
238238 let fromAsset = swapList[1]
239239 let toAsset = swapList[2]
240+ let type = if ((size(swapList) == 4))
241+ then swapList[3]
242+ else "pzl"
240243 let bytesAssetIn = getAssetBytes(fromAsset)
241244 let bytesAssetOut = getAssetBytes(toAsset)
242- let minToGet = calculateMinToGetPzl(dApp, fromAsset, toAsset, amountIn)
245+ let minToGet = if ((type == "pzl"))
246+ then calculateMinToGetPzl(dApp, fromAsset, toAsset, amountIn)
247+ else calculateMinToGetSwop(dApp, fromAsset, toAsset, amountIn)
243248 if ((minToGet == minToGet))
244249 then minToGet
245250 else throw("Strict value is not equal to itself.")
246251 }
247252
248253 func swap (amountIn,swap) = {
249254 let swapList = split(swap, ",")
250255 let dApp = swapList[0]
251256 let fromAsset = swapList[1]
252257 let toAsset = swapList[2]
258+ let type = if ((size(swapList) == 4))
259+ then swapList[3]
260+ else "pzl"
253261 let bytesAssetIn = getAssetBytes(fromAsset)
254262 let bytesAssetOut = getAssetBytes(toAsset)
255263 let balanceBefore = getBalance(bytesAssetOut)
256264 if ((balanceBefore == balanceBefore))
257265 then {
258- let tx = invoke(Address(fromBase58String(dApp)), "swap", [toAsset, 0], [AttachedPayment(bytesAssetIn, amountIn)])
266+ let tx = if ((type == "pzl"))
267+ then asInt(invoke(Address(fromBase58String(dApp)), "swap", [toAsset, 1], i.payments))
268+ else asSwopResponse(invoke(Address(fromBase58String(dApp)), "exchange", [1], i.payments))
259269 if ((tx == tx))
260270 then {
261271 let balanceAfter = getBalance(bytesAssetOut)
262272 if ((balanceAfter == balanceAfter))
263273 then (balanceAfter - balanceBefore)
264274 else throw("Strict value is not equal to itself.")
265275 }
266276 else throw("Strict value is not equal to itself.")
267277 }
268278 else throw("Strict value is not equal to itself.")
269279 }
270280
271281 func forEachRouteValidate (accumRoute,route) = {
272282 let pathList = split(route, ";")
273283 let swapResults = {
274284 let $l = pathList
275285 let $s = size($l)
276286 let $acc0 = balanceIn
277287 func $f0_1 ($a,$i) = if (($i >= $s))
278288 then $a
279289 else swapValidate($a, $l[$i])
280290
281291 func $f0_2 ($a,$i) = if (($i >= $s))
282292 then $a
283293 else throw("List size exceeds 4")
284294
285295 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
286296 }
287297 if ((swapResults == swapResults))
288298 then (accumRoute + swapResults)
289299 else throw("Strict value is not equal to itself.")
290300 }
291301
292302 func forEachRoute (accumRoute,route) = {
293303 let pathList = split(route, ";")
294304 let swapResults = {
295305 let $l = pathList
296306 let $s = size($l)
297307 let $acc0 = balanceIn
298308 func $f0_1 ($a,$i) = if (($i >= $s))
299309 then $a
300310 else swap($a, $l[$i])
301311
302312 func $f0_2 ($a,$i) = if (($i >= $s))
303313 then $a
304314 else throw("List size exceeds 4")
305315
306316 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
307317 }
308318 if ((swapResults == swapResults))
309319 then (accumRoute + swapResults)
310320 else throw("Strict value is not equal to itself.")
311321 }
312322
313323 let routesList = split(routesStr, "|")
314324 let validateMinAmount = {
315325 let $l = routesList
316326 let $s = size($l)
317327 let $acc0 = 0
318328 func $f0_1 ($a,$i) = if (($i >= $s))
319329 then $a
320330 else forEachRouteValidate($a, $l[$i])
321331
322332 func $f0_2 ($a,$i) = if (($i >= $s))
323333 then $a
324334 else throw("List size exceeds 2")
325335
326336 $f0_2($f0_1($f0_1($acc0, 0), 1), 2)
327337 }
328338 if ((validateMinAmount == validateMinAmount))
329339 then if ((minToReceive > validateMinAmount))
330340 then throw(((("amount to receive is lower than expected one, expected: " + toString(minToReceive)) + " calculated:") + toString(validateMinAmount)))
331341 else {
332342 let outAmount = {
333343 let $l = routesList
334344 let $s = size($l)
335345 let $acc0 = 0
336346 func $f1_1 ($a,$i) = if (($i >= $s))
337347 then $a
338348 else forEachRoute($a, $l[$i])
339349
340350 func $f1_2 ($a,$i) = if (($i >= $s))
341351 then $a
342352 else throw("List size exceeds 2")
343353
344354 $f1_2($f1_1($f1_1($acc0, 0), 1), 2)
345355 }
346356 if ((outAmount == outAmount))
347357 then {
348358 let assetOutStr = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
349359 let assetOut = getAssetBytes(assetOutStr)
350360 let assetInFromRoute = getAssetBytes(split(split(routesList[0], ";")[0], ",")[1])
351361 if ((minToReceive > outAmount))
352362 then throw(("amount to receive is lower than expected one " + toString(outAmount)))
353363 else if (if ((assetIn != assetInFromRoute))
354364 then true
355365 else (balanceIn > i.payments[0].amount))
356366 then throw("wrong asset attached as payment")
357367 else [ScriptTransfer(i.caller, outAmount, assetOut)]
358368 }
359369 else throw("Strict value is not equal to itself.")
360370 }
361371 else throw("Strict value is not equal to itself.")
362372 }
363373
364374
365375
366376 @Callable(i)
367377 func swap (routesStr,minToReceive) = {
368378 let balanceIn = i.payments[0].amount
369379 let assetIn = i.payments[0].assetId
370380 func swap (amountIn,swap) = {
371381 let swapList = split(swap, ",")
372382 let dApp = swapList[0]
373383 let fromAsset = swapList[1]
374384 let toAsset = swapList[2]
375385 let bytesAssetIn = getAssetBytes(fromAsset)
376386 let bytesAssetOut = getAssetBytes(toAsset)
377387 let balanceBefore = getBalance(bytesAssetOut)
378388 if ((balanceBefore == balanceBefore))
379389 then {
380390 let tx = invoke(Address(fromBase58String(dApp)), "swap", [toAsset, 0], [AttachedPayment(bytesAssetIn, amountIn)])
381391 if ((tx == tx))
382392 then {
383393 let balanceAfter = getBalance(bytesAssetOut)
384394 if ((balanceAfter == balanceAfter))
385395 then (balanceAfter - balanceBefore)
386396 else throw("Strict value is not equal to itself.")
387397 }
388398 else throw("Strict value is not equal to itself.")
389399 }
390400 else throw("Strict value is not equal to itself.")
391401 }
392402
393403 func forEachRoute (accumRoute,route) = {
394404 let pathList = split(route, ";")
395405 let swapResults = {
396406 let $l = pathList
397407 let $s = size($l)
398408 let $acc0 = balanceIn
399409 func $f0_1 ($a,$i) = if (($i >= $s))
400410 then $a
401411 else swap($a, $l[$i])
402412
403413 func $f0_2 ($a,$i) = if (($i >= $s))
404414 then $a
405415 else throw("List size exceeds 4")
406416
407417 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
408418 }
409419 if ((swapResults == swapResults))
410420 then (accumRoute + swapResults)
411421 else throw("Strict value is not equal to itself.")
412422 }
413423
414424 let routesList = split(routesStr, "|")
415425 let outAmount = {
416426 let $l = routesList
417427 let $s = size($l)
418428 let $acc0 = 0
419429 func $f0_1 ($a,$i) = if (($i >= $s))
420430 then $a
421431 else forEachRoute($a, $l[$i])
422432
423433 func $f0_2 ($a,$i) = if (($i >= $s))
424434 then $a
425435 else throw("List size exceeds 2")
426436
427437 $f0_2($f0_1($f0_1($acc0, 0), 1), 2)
428438 }
429439 if ((outAmount == outAmount))
430440 then {
431441 let assetOutStr = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
432442 let assetOut = getAssetBytes(assetOutStr)
433443 let assetInFromRoute = getAssetBytes(split(split(routesList[0], ";")[0], ",")[1])
434444 if ((minToReceive > outAmount))
435445 then throw(("amount to receive is lower than expected one " + toString(outAmount)))
436446 else if (if ((assetIn != assetInFromRoute))
437447 then true
438448 else (balanceIn > i.payments[0].amount))
439449 then throw("wrong asset attached as payment")
440450 else [ScriptTransfer(i.caller, outAmount, assetOut)]
441451 }
442452 else throw("Strict value is not equal to itself.")
443453 }
444454
445455

github/deemru/w8io/873ac7e 
64.67 ms