2022.01.27 14:49 [2962340] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "6UAWExMpUiJzDHKsw4GPKizLAcCudiq5EKvn78KwdJjS", "fee": 1400000, "feeAssetId": null, "timestamp": 1643284134548, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "3gwvx54xCDs812T9Agdr6FFDmB9P8zisvLivJFzKdPN7fZVLeFfEkPp7gFoTnyPCc5VexUJbtuN2DbcMkHKqnFtt" ], "script": "base64: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", "height": 2962340, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GUPNhJiQSyGbFjpoC7fmooRfcxYt4AgteEXXLcrbedTJ Next: 8cd8L3hwKGFsD6K8bTtQD352Wd4XWLPaAZGLHWcHPmFR Diff:
OldNewDifferences
4545 let t1Str = $t0906987._4
4646 let t0 = getAssetBytes(t0Str)
4747 let t1 = getAssetBytes(t1Str)
48- let i1 = if ((dAppType == "swopfi"))
49- then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
50- else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 1], [AttachedPayment(t0, amount0)])
51- if ((i1 == i1))
48+ let balanceBefore = getBalance(t1)
49+ if ((balanceBefore == balanceBefore))
5250 then {
53- let balanceAfter = getBalance(t1)
54- if ((balanceAfter == balanceAfter))
55- then if ((t0 != unit))
56- then balanceAfter
57- else (balanceAfter - 100000000)
51+ let i1 = if ((dAppType == "swopfi"))
52+ then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
53+ else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 1], [AttachedPayment(t0, amount0)])
54+ if ((i1 == i1))
55+ then {
56+ let balanceAfter = getBalance(t1)
57+ if ((balanceAfter == balanceAfter))
58+ then (balanceAfter - balanceBefore)
59+ else throw("Strict value is not equal to itself.")
60+ }
5861 else throw("Strict value is not equal to itself.")
5962 }
6063 else throw("Strict value is not equal to itself.")
8386 }
8487
8588 let routes = split(routesStr, "|")
89+ let amountIn = parseIntValue(split(routes[0], "/")[0])
90+ let asset0Id = fromBase58String(split(split(split(routes[0], "/")[1], ";")[0], ",")[2])
8691 let totalOut = {
8792 let $l = routes
8893 let $s = size($l)
106111 let usdnFee = if ((asset1 == usdnId))
107112 then feeAmount
108113 else {
109- let convertedFee = invoke(Address(fromBase58String(tryGetString((("static_asset_" + asset1Str) + "_puzzlePool")))), "swap", [usdnIdStr, 1], [AttachedPayment(asset1, feeAmount)])
110- if ((convertedFee == convertedFee))
111- then getBalance(usdnId)
114+ let usdnBalanceBefore = getBalance(usdnId)
115+ if ((usdnBalanceBefore == usdnBalanceBefore))
116+ then {
117+ let convertedFee = invoke(Address(fromBase58String(tryGetString((("static_asset_" + asset1Str) + "_puzzlePool")))), "swap", [usdnIdStr, 1], [AttachedPayment(asset1, feeAmount)])
118+ if ((convertedFee == convertedFee))
119+ then {
120+ let usdnBalanceAfter = getBalance(usdnId)
121+ if ((usdnBalanceAfter == usdnBalanceAfter))
122+ then (usdnBalanceAfter - usdnBalanceBefore)
123+ else throw("Strict value is not equal to itself.")
124+ }
125+ else throw("Strict value is not equal to itself.")
126+ }
112127 else throw("Strict value is not equal to itself.")
113128 }
114129 if ((usdnFee == usdnFee))
115130 then {
116131 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, usdnFee)])
117132 if ((topUp == topUp))
118- then if ((minToReceive > totalOut))
119- then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
120- else [ScriptTransfer(i.caller, cleanTotalAmount, asset1)]
133+ then if (if ((asset0Id != i.payments[0].assetId))
134+ then true
135+ else (i.payments[0].amount > amountIn))
136+ then throw("please attach correct payment")
137+ else if ((minToReceive > totalOut))
138+ then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
139+ else [ScriptTransfer(i.caller, cleanTotalAmount, asset1)]
121140 else throw("Strict value is not equal to itself.")
122141 }
123142 else throw("Strict value is not equal to itself.")
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 @Callable(i)
3838 func swap (routesStr,minToReceive) = {
3939 func doSwap (amount0,swap) = {
4040 let swapLi = split(swap, ",")
4141 let $t0906987 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
4242 let dApp = $t0906987._1
4343 let dAppType = $t0906987._2
4444 let t0Str = $t0906987._3
4545 let t1Str = $t0906987._4
4646 let t0 = getAssetBytes(t0Str)
4747 let t1 = getAssetBytes(t1Str)
48- let i1 = if ((dAppType == "swopfi"))
49- then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
50- else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 1], [AttachedPayment(t0, amount0)])
51- if ((i1 == i1))
48+ let balanceBefore = getBalance(t1)
49+ if ((balanceBefore == balanceBefore))
5250 then {
53- let balanceAfter = getBalance(t1)
54- if ((balanceAfter == balanceAfter))
55- then if ((t0 != unit))
56- then balanceAfter
57- else (balanceAfter - 100000000)
51+ let i1 = if ((dAppType == "swopfi"))
52+ then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
53+ else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 1], [AttachedPayment(t0, amount0)])
54+ if ((i1 == i1))
55+ then {
56+ let balanceAfter = getBalance(t1)
57+ if ((balanceAfter == balanceAfter))
58+ then (balanceAfter - balanceBefore)
59+ else throw("Strict value is not equal to itself.")
60+ }
5861 else throw("Strict value is not equal to itself.")
5962 }
6063 else throw("Strict value is not equal to itself.")
6164 }
6265
6366 func doRoute (accum,route) = {
6467 let amountIn = parseIntValue(split(route, "/")[0])
6568 let swaps = split(split(route, "/")[1], ";")
6669 let swapsResult = {
6770 let $l = swaps
6871 let $s = size($l)
6972 let $acc0 = amountIn
7073 func $f0_1 ($a,$i) = if (($i >= $s))
7174 then $a
7275 else doSwap($a, $l[$i])
7376
7477 func $f0_2 ($a,$i) = if (($i >= $s))
7578 then $a
7679 else throw("List size exceeds 3")
7780
7881 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
7982 }
8083 if ((swapsResult == swapsResult))
8184 then (accum + swapsResult)
8285 else throw("Strict value is not equal to itself.")
8386 }
8487
8588 let routes = split(routesStr, "|")
89+ let amountIn = parseIntValue(split(routes[0], "/")[0])
90+ let asset0Id = fromBase58String(split(split(split(routes[0], "/")[1], ";")[0], ",")[2])
8691 let totalOut = {
8792 let $l = routes
8893 let $s = size($l)
8994 let $acc0 = 0
9095 func $f0_1 ($a,$i) = if (($i >= $s))
9196 then $a
9297 else doRoute($a, $l[$i])
9398
9499 func $f0_2 ($a,$i) = if (($i >= $s))
95100 then $a
96101 else throw("List size exceeds 5")
97102
98103 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
99104 }
100105 if ((totalOut == totalOut))
101106 then {
102107 let feeAmount = fraction(totalOut, 29, 10000)
103108 let cleanTotalAmount = (totalOut - feeAmount)
104109 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
105110 let asset1 = getAssetBytes(asset1Str)
106111 let usdnFee = if ((asset1 == usdnId))
107112 then feeAmount
108113 else {
109- let convertedFee = invoke(Address(fromBase58String(tryGetString((("static_asset_" + asset1Str) + "_puzzlePool")))), "swap", [usdnIdStr, 1], [AttachedPayment(asset1, feeAmount)])
110- if ((convertedFee == convertedFee))
111- then getBalance(usdnId)
114+ let usdnBalanceBefore = getBalance(usdnId)
115+ if ((usdnBalanceBefore == usdnBalanceBefore))
116+ then {
117+ let convertedFee = invoke(Address(fromBase58String(tryGetString((("static_asset_" + asset1Str) + "_puzzlePool")))), "swap", [usdnIdStr, 1], [AttachedPayment(asset1, feeAmount)])
118+ if ((convertedFee == convertedFee))
119+ then {
120+ let usdnBalanceAfter = getBalance(usdnId)
121+ if ((usdnBalanceAfter == usdnBalanceAfter))
122+ then (usdnBalanceAfter - usdnBalanceBefore)
123+ else throw("Strict value is not equal to itself.")
124+ }
125+ else throw("Strict value is not equal to itself.")
126+ }
112127 else throw("Strict value is not equal to itself.")
113128 }
114129 if ((usdnFee == usdnFee))
115130 then {
116131 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, usdnFee)])
117132 if ((topUp == topUp))
118- then if ((minToReceive > totalOut))
119- then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
120- else [ScriptTransfer(i.caller, cleanTotalAmount, asset1)]
133+ then if (if ((asset0Id != i.payments[0].assetId))
134+ then true
135+ else (i.payments[0].amount > amountIn))
136+ then throw("please attach correct payment")
137+ else if ((minToReceive > totalOut))
138+ then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
139+ else [ScriptTransfer(i.caller, cleanTotalAmount, asset1)]
121140 else throw("Strict value is not equal to itself.")
122141 }
123142 else throw("Strict value is not equal to itself.")
124143 }
125144 else throw("Strict value is not equal to itself.")
126145 }
127146
128147
129148 @Verifier(tx)
130149 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
131150

github/deemru/w8io/786bc32 
31.61 ms