2023.01.24 11:55 [3484336] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "4SsxnQU7ym4Ljb2scyiwc2FSTHDgyzm1Tb7gmmoYKQBb", "fee": 1300000, "feeAssetId": null, "timestamp": 1674550570123, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "2RrMjJ9XfotDEH6HEus4ZnoC9dibibLuy1zyRXo77JxvhNsWJiesfcHEHCkMsN8QapUswAufSLf1tPZEaWjceX71" ], "script": "base64:AAIFAAAAAAAAABUIAhIECgIIARIFCgMIAQgSBAoCCAgAAAAIAAAAAAl1c2RuSWRTdHICAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAAAAAZ1c2RuSWQBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgIAAAAAAQAAAA5nZXRBc3NldFN0cmluZwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAkAAlgAAAABBQAAAAFiAgAAAAVXQVZFUwEAAAANZ2V0QXNzZXRCeXRlcwAAAAEAAAAKYXNzZXRJZFN0cgMJAAAAAAAAAgUAAAAKYXNzZXRJZFN0cgIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAKYXNzZXRJZFN0cgEAAAAKZ2V0QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABeAUAAAAHJG1hdGNoMAgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAPwAAAAAgUAAAAEdGhpcwkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAEAAAAGc3dhcFdYAAAAAwAAAAZhc3NldDAAAAAGYXNzZXQxAAAAB2Ftb3VudDAEAAAACnByaWNlQXNzZXQDAwkAAAAAAAACBQAAAAZhc3NldDACAAAABVdBVkVTBgkAAAAAAAACBQAAAAZhc3NldDECAAAABVdBVkVTAgAAAAVXQVZFUwMDCQAAAAAAAAIFAAAABmFzc2V0MAUAAAAJdXNkbklkU3RyBgkAAAAAAAACBQAAAAZhc3NldDEFAAAACXVzZG5JZFN0cgUAAAAJdXNkbklkU3RyAwMJAAAAAAAAAgUAAAAGYXNzZXQwAgAAACw4TFFXOGY3UDVkNVBaTTdHdFpFQmdhcVJQR1N6UzNEZlB1aVhyVVJKNEFKUwYJAAAAAAAAAgUAAAAGYXNzZXQxAgAAACw4TFFXOGY3UDVkNVBaTTdHdFpFQmdhcVJQR1N6UzNEZlB1aVhyVVJKNEFKUwIAAAAsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMCAAAALDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKBAAAAA5mYWN0b3J5QWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV3hb3oq+USquizHqbxOQJb70qbiiuwkCQQQAAAAIYXNzZXRJbnQJAAGkAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAOZmFjdG9yeUFkZHJlc3MJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwMJAQAAAAIhPQAAAAIFAAAABmFzc2V0MQUAAAAKcHJpY2VBc3NldAUAAAAGYXNzZXQxBQAAAAZhc3NldDAEAAAAB3VzZG5JbnQJAAGkAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAOZmFjdG9yeUFkZHJlc3MJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAKcHJpY2VBc3NldAQAAAAKcG9vbENvbmZpZwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAA5mYWN0b3J5QWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglZCVkJXNfXwUAAAAIYXNzZXRJbnQCAAAAAl9fBQAAAAd1c2RuSW50AgAAAAhfX2NvbmZpZwIAAAACX18EAAAAC3Bvb2xBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcAAAAAAAAAAAEEAAAAC3Bvb2xBc3NldElkCQEAAAANZ2V0QXNzZXRCeXRlcwAA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b3VudAMJAABmAAAAAgUAAAAMbWluVG9SZWNlaXZlBQAAABBjbGVhblRvdGFsQW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAtYW1vdW50IHRvIHJlY2VpdmUgaXMgbG93ZXIgdGhhbiBleHBlY3RlZCBvbmUgCQABpAAAAAEFAAAAEGNsZWFuVG90YWxBbW91bnQEAAAAB3VzZG5GZWUDCQAAAAAAAAIFAAAABmFzc2V0MQUAAAAGdXNkbklkBQAAAAlmZWVBbW91bnQEAAAADnBvb2xBZGRyZXNzU3RyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAADXN0YXRpY19hc3NldF8FAAAACWFzc2V0MVN0cgIAAAALX3B1enpsZVBvb2wDCQAAAAAAAAIFAAAADnBvb2xBZGRyZXNzU3RyAgAAAAAAAAAAAAAAAAAEAAAAEXVzZG5CYWxhbmNlQmVmb3JlCQEAAAAKZ2V0QmFsYW5jZQAAAAEFAAAABnVzZG5JZAMJAAAAAAAAAgUAAAARdXNkbkJhbGFuY2VCZWZvcmUFAAAAEXVzZG5CYWxhbmNlQmVmb3JlBAAAAAxjb252ZXJ0ZWRGZWUJAAP8AAAABAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAOcG9vbEFkZHJlc3NTdHICAAAABHN3YXAJAARMAAAAAgUAAAAJdXNkbklkU3RyCQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAGYXNzZXQxBQAAAAlmZWVBbW91bnQFAAAAA25pbAMJAAAAAAAAAgUAAAAMY29udmVydGVkRmVlBQAAAAxjb252ZXJ0ZWRGZWUEAAAAEHVzZG5CYWxhbmNlQWZ0ZXIJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAAGdXNkbklkAwkAAAAAAAACBQAAABB1c2RuQmFsYW5jZUFmdGVyBQAAABB1c2RuQmFsYW5jZUFmdGVyCQAAZQAAAAIFAAAAEHVzZG5CYWxhbmNlQWZ0ZXIFAAAAEXVzZG5CYWxhbmNlQmVmb3JlCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIA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", "height": 3484336, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H7W2ES2WUishoNLfiFRowTSusMyvJAWWZENAkJvB3RLN Next: 9fbZK5ELSXCnE29BHGurhJzXhDhRnanGJsZ2joEVk4oz Diff:
OldNewDifferences
3535
3636
3737 func swapWX (asset0,asset1,amount0) = {
38- let priceAsset = if (if ((asset0 == usdnIdStr))
38+ let priceAsset = if (if ((asset0 == "WAVES"))
3939 then true
40- else (asset1 == usdnIdStr))
41- then usdnIdStr
42- else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
40+ else (asset1 == "WAVES"))
41+ then "WAVES"
42+ else if (if ((asset0 == usdnIdStr))
4343 then true
44- else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
45- then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
46- else if (if ((asset0 == "WAVES"))
44+ else (asset1 == usdnIdStr))
45+ then usdnIdStr
46+ else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
4747 then true
48- else (asset1 == "WAVES"))
49- then "WAVES"
48+ else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
49+ then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
5050 else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
5151 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
5252 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
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))
38+ let priceAsset = if (if ((asset0 == "WAVES"))
3939 then true
40- else (asset1 == usdnIdStr))
41- then usdnIdStr
42- else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
40+ else (asset1 == "WAVES"))
41+ then "WAVES"
42+ else if (if ((asset0 == usdnIdStr))
4343 then true
44- else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
45- then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
46- else if (if ((asset0 == "WAVES"))
44+ else (asset1 == usdnIdStr))
45+ then usdnIdStr
46+ else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
4747 then true
48- else (asset1 == "WAVES"))
49- then "WAVES"
48+ else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
49+ then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
5050 else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
5151 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
5252 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
5353 then asset1
5454 else asset0))))
5555 let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
5656 let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
5757 let poolAddress = addressFromStringValue(poolConfig[1])
5858 let poolAssetId = getAssetBytes(poolConfig[3])
5959 let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
6060 if ((inv1 == inv1))
6161 then {
6262 let poolTokenAmount = getBalance(poolAssetId)
6363 if ((poolTokenAmount == poolTokenAmount))
6464 then {
6565 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
6666 if ((asset1BalanceBefore == asset1BalanceBefore))
6767 then {
6868 let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(poolAssetId, poolTokenAmount)])
6969 if ((inv2 == inv2))
7070 then {
7171 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
7272 if ((amount1 == amount1))
7373 then amount1
7474 else throw("Strict value is not equal to itself.")
7575 }
7676 else throw("Strict value is not equal to itself.")
7777 }
7878 else throw("Strict value is not equal to itself.")
7979 }
8080 else throw("Strict value is not equal to itself.")
8181 }
8282 else throw("Strict value is not equal to itself.")
8383 }
8484
8585
8686 func swapInternal (i,routesStr,minToReceive,refKey) = {
8787 func doSwap (amount,swap) = {
8888 let swapLi = split(swap, ",")
8989 let $t024232504 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
9090 let dApp = $t024232504._1
9191 let dAppType = $t024232504._2
9292 let t0Str = $t024232504._3
9393 let t1Str = $t024232504._4
9494 let t0 = getAssetBytes(t0Str)
9595 let amount0 = if ((amount != 0))
9696 then amount
9797 else getBalance(t0)
9898 let i1 = if ((dAppType == "swopfi"))
9999 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
100100 else if ((dAppType == "puzzle"))
101101 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
102102 else if ((dAppType == "wx"))
103103 then swapWX(t0Str, t1Str, amount0)
104104 else throw("internal aggregator issue: unknow pool type")
105105 if ((i1 == i1))
106106 then 0
107107 else throw("Strict value is not equal to itself.")
108108 }
109109
110110 func doRoute (accum,route) = {
111111 let amountIn = parseIntValue(split(route, "/")[0])
112112 let swaps = split(split(route, "/")[1], ";")
113113 let swapsResult = {
114114 let $l = swaps
115115 let $s = size($l)
116116 let $acc0 = amountIn
117117 func $f0_1 ($a,$i) = if (($i >= $s))
118118 then $a
119119 else doSwap($a, $l[$i])
120120
121121 func $f0_2 ($a,$i) = if (($i >= $s))
122122 then $a
123123 else throw("List size exceeds 3")
124124
125125 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
126126 }
127127 if ((swapsResult == swapsResult))
128128 then (accum + swapsResult)
129129 else throw("Strict value is not equal to itself.")
130130 }
131131
132132 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
133133 let asset1 = getAssetBytes(asset1Str)
134134 let routes = split(routesStr, "|")
135135 let swaps = {
136136 let $l = routes
137137 let $s = size($l)
138138 let $acc0 = 0
139139 func $f0_1 ($a,$i) = if (($i >= $s))
140140 then $a
141141 else doRoute($a, $l[$i])
142142
143143 func $f0_2 ($a,$i) = if (($i >= $s))
144144 then $a
145145 else throw("List size exceeds 4")
146146
147147 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
148148 }
149149 if ((swaps == swaps))
150150 then {
151151 let totalOut = getBalance(asset1)
152152 let feeAmount = fraction(totalOut, 29, 10000)
153153 let cleanTotalAmount = (totalOut - feeAmount)
154154 if ((minToReceive > cleanTotalAmount))
155155 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
156156 else {
157157 let usdnFee = if ((asset1 == usdnId))
158158 then feeAmount
159159 else {
160160 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
161161 if ((poolAddressStr == ""))
162162 then 0
163163 else {
164164 let usdnBalanceBefore = getBalance(usdnId)
165165 if ((usdnBalanceBefore == usdnBalanceBefore))
166166 then {
167167 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
168168 if ((convertedFee == convertedFee))
169169 then {
170170 let usdnBalanceAfter = getBalance(usdnId)
171171 if ((usdnBalanceAfter == usdnBalanceAfter))
172172 then (usdnBalanceAfter - usdnBalanceBefore)
173173 else throw("Strict value is not equal to itself.")
174174 }
175175 else throw("Strict value is not equal to itself.")
176176 }
177177 else throw("Strict value is not equal to itself.")
178178 }
179179 }
180180 if ((usdnFee == usdnFee))
181181 then {
182182 let referralAddress = if ((refKey == "muna"))
183183 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
184184 else if ((refKey == "keeper"))
185185 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
186186 else if ((refKey == "tci"))
187187 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
188188 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
189189 let refUsdnShare = if ((refKey == "noref"))
190190 then 0
191191 else fraction(usdnFee, 2, 10)
192192 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
193193 if ((topUp == topUp))
194194 then {
195195 let asset0 = i.payments[0].assetId
196196 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
197197 then refUsdnShare
198198 else 0))
199199 let amount1 = (getBalance(asset1) - (if ((asset1 == usdnId))
200200 then refUsdnShare
201201 else 0))
202202 (([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
203203 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
204204 else nil)) ++ (if ((amount0 != 0))
205205 then [ScriptTransfer(i.caller, amount0, asset0)]
206206 else nil))
207207 }
208208 else throw("Strict value is not equal to itself.")
209209 }
210210 else throw("Strict value is not equal to itself.")
211211 }
212212 }
213213 else throw("Strict value is not equal to itself.")
214214 }
215215
216216
217217 @Callable(i)
218218 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
219219
220220
221221
222222 @Callable(i)
223223 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
224224
225225
226226
227227 @Callable(i)
228228 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
229229 then throw("admin only")
230230 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
231231
232232
233233 @Verifier(tx)
234234 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
235235

github/deemru/w8io/786bc32 
44.09 ms