2022.07.25 13:02 [3220717] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "HCP2A6J5n7ZuXrWc4NpMLqyxGihFLfngKgwHTqX5Kp3W", "fee": 1100000, "feeAssetId": null, "timestamp": 1658743353911, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "3jyPdsRDx6Sh5kv6iaT8afqRcrzY1aV7X4xtmJg8teWTCoz8iZC4vyd27SjcTQUVrNGgQjgGA6oeN2TFCBPhdM99" ], "script": "base64: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", "height": 3220717, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 48rPVrx52qCrQ36ehQDvkYqfrjbcm2NVBRKXWMsiQZV1 Next: AB5zo9CMBtTFzzhzqiFGpzrZHqhQk8Ra1DqALnykcyFg Diff:
OldNewDifferences
104104 let usdnFee = if ((asset1 == usdnId))
105105 then feeAmount
106106 else {
107- let usdnBalanceBefore = getBalance(usdnId)
108- if ((usdnBalanceBefore == usdnBalanceBefore))
109- then {
110- let convertedFee = invoke(Address(fromBase58String(tryGetString((("static_asset_" + asset1Str) + "_puzzlePool")))), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
111- if ((convertedFee == convertedFee))
107+ let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
108+ if ((poolAddressStr == ""))
109+ then 0
110+ else {
111+ let usdnBalanceBefore = getBalance(usdnId)
112+ if ((usdnBalanceBefore == usdnBalanceBefore))
112113 then {
113- let usdnBalanceAfter = getBalance(usdnId)
114- if ((usdnBalanceAfter == usdnBalanceAfter))
115- then (usdnBalanceAfter - usdnBalanceBefore)
114+ let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
115+ if ((convertedFee == convertedFee))
116+ then {
117+ let usdnBalanceAfter = getBalance(usdnId)
118+ if ((usdnBalanceAfter == usdnBalanceAfter))
119+ then (usdnBalanceAfter - usdnBalanceBefore)
120+ else throw("Strict value is not equal to itself.")
121+ }
116122 else throw("Strict value is not equal to itself.")
117123 }
118124 else throw("Strict value is not equal to itself.")
119125 }
120- else throw("Strict value is not equal to itself.")
121126 }
122127 if ((usdnFee == usdnFee))
123128 then {
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 swapInternal (i,routesStr,minToReceive,refKey) = {
3838 func doSwap (amount,swap) = {
3939 let swapLi = split(swap, ",")
4040 let $t09311012 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
4141 let dApp = $t09311012._1
4242 let dAppType = $t09311012._2
4343 let t0Str = $t09311012._3
4444 let t1Str = $t09311012._4
4545 let t0 = getAssetBytes(t0Str)
4646 let amount0 = if ((amount != 0))
4747 then amount
4848 else getBalance(t0)
4949 let i1 = if ((dAppType == "swopfi"))
5050 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
5151 else invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
5252 if ((i1 == i1))
5353 then 0
5454 else throw("Strict value is not equal to itself.")
5555 }
5656
5757 func doRoute (accum,route) = {
5858 let amountIn = parseIntValue(split(route, "/")[0])
5959 let swaps = split(split(route, "/")[1], ";")
6060 let swapsResult = {
6161 let $l = swaps
6262 let $s = size($l)
6363 let $acc0 = amountIn
6464 func $f0_1 ($a,$i) = if (($i >= $s))
6565 then $a
6666 else doSwap($a, $l[$i])
6767
6868 func $f0_2 ($a,$i) = if (($i >= $s))
6969 then $a
7070 else throw("List size exceeds 3")
7171
7272 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
7373 }
7474 if ((swapsResult == swapsResult))
7575 then (accum + swapsResult)
7676 else throw("Strict value is not equal to itself.")
7777 }
7878
7979 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
8080 let asset1 = getAssetBytes(asset1Str)
8181 let routes = split(routesStr, "|")
8282 let swaps = {
8383 let $l = routes
8484 let $s = size($l)
8585 let $acc0 = 0
8686 func $f0_1 ($a,$i) = if (($i >= $s))
8787 then $a
8888 else doRoute($a, $l[$i])
8989
9090 func $f0_2 ($a,$i) = if (($i >= $s))
9191 then $a
9292 else throw("List size exceeds 5")
9393
9494 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
9595 }
9696 if ((swaps == swaps))
9797 then {
9898 let totalOut = getBalance(asset1)
9999 let feeAmount = fraction(totalOut, 29, 10000)
100100 let cleanTotalAmount = (totalOut - feeAmount)
101101 if ((minToReceive > cleanTotalAmount))
102102 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
103103 else {
104104 let usdnFee = if ((asset1 == usdnId))
105105 then feeAmount
106106 else {
107- let usdnBalanceBefore = getBalance(usdnId)
108- if ((usdnBalanceBefore == usdnBalanceBefore))
109- then {
110- let convertedFee = invoke(Address(fromBase58String(tryGetString((("static_asset_" + asset1Str) + "_puzzlePool")))), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
111- if ((convertedFee == convertedFee))
107+ let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
108+ if ((poolAddressStr == ""))
109+ then 0
110+ else {
111+ let usdnBalanceBefore = getBalance(usdnId)
112+ if ((usdnBalanceBefore == usdnBalanceBefore))
112113 then {
113- let usdnBalanceAfter = getBalance(usdnId)
114- if ((usdnBalanceAfter == usdnBalanceAfter))
115- then (usdnBalanceAfter - usdnBalanceBefore)
114+ let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
115+ if ((convertedFee == convertedFee))
116+ then {
117+ let usdnBalanceAfter = getBalance(usdnId)
118+ if ((usdnBalanceAfter == usdnBalanceAfter))
119+ then (usdnBalanceAfter - usdnBalanceBefore)
120+ else throw("Strict value is not equal to itself.")
121+ }
116122 else throw("Strict value is not equal to itself.")
117123 }
118124 else throw("Strict value is not equal to itself.")
119125 }
120- else throw("Strict value is not equal to itself.")
121126 }
122127 if ((usdnFee == usdnFee))
123128 then {
124129 let referralAddress = if ((refKey == "muna"))
125130 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
126131 else if ((refKey == "keeper"))
127132 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
128133 else if ((refKey == "tci"))
129134 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
130135 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
131136 let refUsdnShare = if ((refKey == "noref"))
132137 then 0
133138 else fraction(usdnFee, 2, 10)
134139 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
135140 if ((topUp == topUp))
136141 then {
137142 let asset0 = i.payments[0].assetId
138143 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
139144 then refUsdnShare
140145 else 0))
141146 let amount1 = (getBalance(asset1) - (if ((asset1 == usdnId))
142147 then refUsdnShare
143148 else 0))
144149 (([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
145150 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
146151 else nil)) ++ (if ((amount0 != 0))
147152 then [ScriptTransfer(i.caller, amount0, asset0)]
148153 else nil))
149154 }
150155 else throw("Strict value is not equal to itself.")
151156 }
152157 else throw("Strict value is not equal to itself.")
153158 }
154159 }
155160 else throw("Strict value is not equal to itself.")
156161 }
157162
158163
159164 @Callable(i)
160165 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
161166
162167
163168
164169 @Callable(i)
165170 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
166171
167172
168173
169174 @Callable(i)
170175 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
171176 then throw("admin only")
172177 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
173178
174179
175180 @Verifier(tx)
176181 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
177182

github/deemru/w8io/786bc32 
39.10 ms