tx · HLve1Rn1vbFTbJJRXWN8oLxPYrF6tM3vt5NVA5f9KSsA

3P6wck5d7WTNE6VgC15c4iZ2u3tUoRAAoFA:  -0.00800000 Waves

2022.08.22 16:58 [3261256] smart account 3P6wck5d7WTNE6VgC15c4iZ2u3tUoRAAoFA > SELF 0.00000000 Waves

{ "type": 13, "id": "HLve1Rn1vbFTbJJRXWN8oLxPYrF6tM3vt5NVA5f9KSsA", "fee": 800000, "feeAssetId": null, "timestamp": 1661176730236, "version": 2, "chainId": 87, "sender": "3P6wck5d7WTNE6VgC15c4iZ2u3tUoRAAoFA", "senderPublicKey": "HVWqiwKqBXXeqDMUkgxCa7ctfYD5jDUiDphT61yagACE", "proofs": [ "4HWDgiVmrEWCbpEtBuPGE5s4ooqepNhy2KsqLHLUjuuyBAP7bB1YvVDxn1SSqgwXx8Z9Cb6bWvHU2qzjqQP4PXjh" ], "script": "base64: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", "height": 3261256, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: L7Nzg2HTYv1TCCWr4bHUHh4WezGd335LWZdeNrJYfzT Next: GECbpWPLgFfkBihFyDgHLisqKxN8BAZ2wFFFaMkDz9hi Diff:
OldNewDifferences
4444 else throw("Strict value is not equal to itself.")
4545 }
4646
47- func doRoute (accum,route) = {
47+ func doRoute (route) = {
4848 let amountIn = parseIntValue(split(route, "/")[0])
4949 let swaps = split(split(route, "/")[1], ";")
5050 let swapsResult = {
5757
5858 func $f0_2 ($a,$i) = if (($i >= $s))
5959 then $a
60- else throw("List size exceeds 3")
60+ else throw("List size exceeds 5")
6161
62- $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
62+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
6363 }
6464 if ((swapsResult == swapsResult))
65- then (accum + swapsResult)
65+ then swapsResult
6666 else throw("Strict value is not equal to itself.")
6767 }
6868
69- let routes = split(routesStr, "|")
70- let amountIn = parseIntValue(split(routes[0], "/")[0])
71- let asset0Id = getAssetBytes(split(split(split(routes[0], "/")[1], ";")[0], ",")[2])
72- let totalOut = {
73- let $l = routes
74- let $s = size($l)
75- let $acc0 = 0
76- func $f0_1 ($a,$i) = if (($i >= $s))
77- then $a
78- else doRoute($a, $l[$i])
79-
80- func $f0_2 ($a,$i) = if (($i >= $s))
81- then $a
82- else throw("List size exceeds 5")
83-
84- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
85- }
69+ let amountIn = parseIntValue(split(routesStr, "/")[0])
70+ let asset0Id = getAssetBytes(split(split(split(routesStr, "/")[1], ";")[0], ",")[2])
71+ let totalOut = doRoute(routesStr)
8672 if ((totalOut == totalOut))
8773 then {
8874 let cleanTotalAmount = totalOut
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
55 then unit
66 else fromBase58String(assetIdStr)
77
88
99 func getBalance (assetId) = match assetId {
1010 case x: Unit =>
1111 wavesBalance(this).available
1212 case _ =>
1313 assetBalance(this, value(assetId))
1414 }
1515
1616
1717 @Callable(i)
1818 func swap (routesStr,minToReceive) = {
1919 let balance0 = (getBalance(i.payments[0].assetId) - i.payments[0].amount)
2020 func doSwap (amount0,swap) = {
2121 let swapLi = split(swap, ",")
2222 let $t0599680 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
2323 let dApp = $t0599680._1
2424 let dAppType = $t0599680._2
2525 let t0Str = $t0599680._3
2626 let t1Str = $t0599680._4
2727 let t0 = getAssetBytes(t0Str)
2828 let t1 = getAssetBytes(t1Str)
2929 let balanceBefore = getBalance(t1)
3030 if ((balanceBefore == balanceBefore))
3131 then {
3232 let i1 = if ((dAppType == "swopfi"))
3333 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
3434 else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
3535 if ((i1 == i1))
3636 then {
3737 let balanceAfter = getBalance(t1)
3838 if ((balanceAfter == balanceAfter))
3939 then (balanceAfter - balanceBefore)
4040 else throw("Strict value is not equal to itself.")
4141 }
4242 else throw("Strict value is not equal to itself.")
4343 }
4444 else throw("Strict value is not equal to itself.")
4545 }
4646
47- func doRoute (accum,route) = {
47+ func doRoute (route) = {
4848 let amountIn = parseIntValue(split(route, "/")[0])
4949 let swaps = split(split(route, "/")[1], ";")
5050 let swapsResult = {
5151 let $l = swaps
5252 let $s = size($l)
5353 let $acc0 = amountIn
5454 func $f0_1 ($a,$i) = if (($i >= $s))
5555 then $a
5656 else doSwap($a, $l[$i])
5757
5858 func $f0_2 ($a,$i) = if (($i >= $s))
5959 then $a
60- else throw("List size exceeds 3")
60+ else throw("List size exceeds 5")
6161
62- $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
62+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
6363 }
6464 if ((swapsResult == swapsResult))
65- then (accum + swapsResult)
65+ then swapsResult
6666 else throw("Strict value is not equal to itself.")
6767 }
6868
69- let routes = split(routesStr, "|")
70- let amountIn = parseIntValue(split(routes[0], "/")[0])
71- let asset0Id = getAssetBytes(split(split(split(routes[0], "/")[1], ";")[0], ",")[2])
72- let totalOut = {
73- let $l = routes
74- let $s = size($l)
75- let $acc0 = 0
76- func $f0_1 ($a,$i) = if (($i >= $s))
77- then $a
78- else doRoute($a, $l[$i])
79-
80- func $f0_2 ($a,$i) = if (($i >= $s))
81- then $a
82- else throw("List size exceeds 5")
83-
84- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
85- }
69+ let amountIn = parseIntValue(split(routesStr, "/")[0])
70+ let asset0Id = getAssetBytes(split(split(split(routesStr, "/")[1], ";")[0], ",")[2])
71+ let totalOut = doRoute(routesStr)
8672 if ((totalOut == totalOut))
8773 then {
8874 let cleanTotalAmount = totalOut
8975 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
9076 let asset1 = getAssetBytes(asset1Str)
9177 if ((minToReceive > cleanTotalAmount))
9278 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
9379 else if (if ((asset0Id != i.payments[0].assetId))
9480 then true
9581 else (amountIn > i.payments[0].amount))
9682 then throw("wrong asset attached as payment")
9783 else [ScriptTransfer(i.caller, cleanTotalAmount, asset1)]
9884 }
9985 else throw("Strict value is not equal to itself.")
10086 }
10187
10288
10389 @Verifier(tx)
10490 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
10591

github/deemru/w8io/3ef1775 
51.69 ms