2023.01.23 17:03 [3483206] smart account 3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU > SELF 0.00000000 Waves

{ "type": 13, "id": "88BaFMYbro6zqB29Xnb3iDjg9s9rqfdLwMXvyJ7WrXcL", "fee": 1300000, "feeAssetId": null, "timestamp": 1674482595768, "version": 2, "chainId": 87, "sender": "3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU", "senderPublicKey": "Dmn1fWHxpwN789LPfoMHFj7uSYKSsb5VFfyNQyQ629f9", "proofs": [ "2PY6km5ktCAaGSZsVLQjxrVU5zYAcqx2u55Tes86tMzwWZnMUuKz3HWpJSuw2L9F6gocStRxh7bbhYX3izqq5jrd" ], "script": "base64:AAIFAAAAAAAAABUIAhIECgIIARIFCgMIAQgSBAoCCAgAAAAIAAAAAAl1c2RuSWRTdHICAAAALERHMnhGa1BkRHdLVW9Ca3pHQWhRdExwU0d6ZlhMaUNZUEV6ZUtIMkFkMjRwAAAAAAZ1c2RuSWQBAAAAILYmKcME9c5TkaQOS3UkL2SMUbH6369UKb1I0h0qsqrRAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgIAAAAAAQAAAA5nZXRBc3NldFN0cmluZwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAABYgUAAAAHJG1hdGNoMAkAAlgAAAABBQAAAAFiAgAAAAVXQVZFUwEAAAANZ2V0QXNzZXRCeXRlcwAAAAEAAAAKYXNzZXRJZFN0cgMJAAAAAAAAAgUAAAAKYXNzZXRJZFN0cgIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAKYXNzZXRJZFN0cgEAAAAKZ2V0QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAABeAUAAAAHJG1hdGNoMAgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAPwAAAAAgUAAAAEdGhpcwkBAAAABXZhbHVlAAAAAQUAAAAHYXNzZXRJZAEAAAAGc3dhcFdYAAAAAwAAAAZhc3NldDAAAAAGYXNzZXQxAAAAB2Ftb3VudDAEAAAACnByaWNlQXNzZXQDAwkAAAAAAAACBQAAAAZhc3NldDAFAAAACXVzZG5JZFN0cgYJAAAAAAAAAgUAAAAGYXNzZXQxBQAAAAl1c2RuSWRTdHIFAAAACXVzZG5JZFN0cgMDCQAAAAAAAAIFAAAABmFzc2V0MAIAAAAsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMGCQAAAAAAAAIFAAAABmFzc2V0MQIAAAAsOExRVzhmN1A1ZDVQWk03R3RaRUJnYXFSUEdTelMzRGZQdWlYclVSSjRBSlMCAAAALDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTAwMJAAAAAAAAAgUAAAAGYXNzZXQwAgAAAAVXQVZFUwYJAAAAAAAAAgUAAAAGYXNzZXQxAgAAAAVXQVZFUwIAAAAFV0FWRVMCAAAALDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKBAAAAA5mYWN0b3J5QWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV3hb3oq+USquizHqbxOQJb70qbiiuwkCQQQAAAAIYXNzZXRJbnQJAAGkAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAOZmFjdG9yeUFkZHJlc3MJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwMJAQAAAAIhPQAAAAIFAAAABmFzc2V0MQUAAAAKcHJpY2VBc3NldAUAAAAGYXNzZXQxBQAAAAZhc3NldDAEAAAAB3VzZG5JbnQJAAGkAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAOZmFjdG9yeUFkZHJlc3MJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAKcHJpY2VBc3NldAQAAAAKcG9vbENvbmZpZwkABLUAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAA5mYWN0b3J5QWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglZCVkJXNfXwUAAAAIYXNzZXRJbnQCAAAAAl9fBQAAAAd1c2RuSW50AgAAAAhfX2NvbmZpZwIAAAACX18EAAAAC3Bvb2xBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcAAAAAAAAAAAEEAAAAC3Bvb2xBc3NldElkCQEAAAANZ2V0QXNzZXRCeXRlcwAA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b3VudAMJAABmAAAAAgUAAAAMbWluVG9SZWNlaXZlBQAAABBjbGVhblRvdGFsQW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAtYW1vdW50IHRvIHJlY2VpdmUgaXMgbG93ZXIgdGhhbiBleHBlY3RlZCBvbmUgCQABpAAAAAEFAAAAEGNsZWFuVG90YWxBbW91bnQEAAAAB3VzZG5GZWUDCQAAAAAAAAIFAAAABmFzc2V0MQUAAAAGdXNkbklkBQAAAAlmZWVBbW91bnQEAAAADnBvb2xBZGRyZXNzU3RyCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAADXN0YXRpY19hc3NldF8FAAAACWFzc2V0MVN0cgIAAAALX3B1enpsZVBvb2wDCQAAAAAAAAIFAAAADnBvb2xBZGRyZXNzU3RyAgAAAAAAAAAAAAAAAAAEAAAAEXVzZG5CYWxhbmNlQmVmb3JlCQEAAAAKZ2V0QmFsYW5jZQAAAAEFAAAABnVzZG5JZAMJAAAAAAAAAgUAAAARdXNkbkJhbGFuY2VCZWZvcmUFAAAAEXVzZG5CYWxhbmNlQmVmb3JlBAAAAAxjb252ZXJ0ZWRGZWUJAAP8AAAABAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAOcG9vbEFkZHJlc3NTdHICAAAABHN3YXAJAARMAAAAAgUAAAAJdXNkbklkU3RyCQAETAAAAAIAAAAAAAAAAAAFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAGYXNzZXQxBQAAAAlmZWVBbW91bnQFAAAAA25pbAMJAAAAAAAAAgUAAAAMY29udmVydGVkRmVlBQAAAAxjb252ZXJ0ZWRGZWUEAAAAEHVzZG5CYWxhbmNlQWZ0ZXIJAQAAAApnZXRCYWxhbmNlAAAAAQUAAAAGdXNkbklkAwkAAAAAAAACBQAAABB1c2RuQmFsYW5jZUFmdGVyBQAAABB1c2RuQmFsYW5jZUFmdGVyCQAAZQAAAAIFAAAAEHVzZG5CYWxhbmNlQWZ0ZXIFAAAAEXVzZG5CYWxhbmNlQmVmb3JlCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIA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", "height": 3483206, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DLHjAd9YF6bimB9kULa6G8wrd45JLoiGnRC3mg5dmDCX Next: EXw88XAUPj6WruszQtgPrBbFEbxktd2bDHuRXQwUWhR Diff:
OldNewDifferences
3939 then true
4040 else (asset1 == usdnIdStr))
4141 then usdnIdStr
42- else if (if ((asset0 == "WAVES"))
42+ else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
4343 then true
44- else (asset1 == "WAVES"))
45- then "WAVES"
46- else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
44+ else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
45+ then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
46+ else if (if ((asset0 == "WAVES"))
47+ then true
48+ else (asset1 == "WAVES"))
49+ then "WAVES"
50+ else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
4751 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
4852 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
4953 then asset1
8286 func swapInternal (i,routesStr,minToReceive,refKey) = {
8387 func doSwap (amount,swap) = {
8488 let swapLi = split(swap, ",")
85- let $t022402321 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
86- let dApp = $t022402321._1
87- let dAppType = $t022402321._2
88- let t0Str = $t022402321._3
89- let t1Str = $t022402321._4
89+ let $t024232504 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
90+ let dApp = $t024232504._1
91+ let dAppType = $t024232504._2
92+ let t0Str = $t024232504._3
93+ let t1Str = $t024232504._4
9094 let t0 = getAssetBytes(t0Str)
9195 let amount0 = if ((amount != 0))
9296 then amount
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) = {
3838 let priceAsset = if (if ((asset0 == usdnIdStr))
3939 then true
4040 else (asset1 == usdnIdStr))
4141 then usdnIdStr
42- else if (if ((asset0 == "WAVES"))
42+ else if (if ((asset0 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
4343 then true
44- else (asset1 == "WAVES"))
45- then "WAVES"
46- else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
44+ else (asset1 == "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"))
45+ then "8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS"
46+ else if (if ((asset0 == "WAVES"))
47+ then true
48+ else (asset1 == "WAVES"))
49+ then "WAVES"
50+ else "34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ"
4751 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
4852 let assetInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + (if ((asset1 != priceAsset))
4953 then asset1
5054 else asset0))))
5155 let usdnInt = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + priceAsset)))
5256 let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + assetInt) + "__") + usdnInt) + "__config")), "__")
5357 let poolAddress = addressFromStringValue(poolConfig[1])
5458 let poolAssetId = getAssetBytes(poolConfig[3])
5559 let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
5660 if ((inv1 == inv1))
5761 then {
5862 let poolTokenAmount = getBalance(poolAssetId)
5963 if ((poolTokenAmount == poolTokenAmount))
6064 then {
6165 let asset1BalanceBefore = getBalance(getAssetBytes(asset1))
6266 if ((asset1BalanceBefore == asset1BalanceBefore))
6367 then {
6468 let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(poolAssetId, poolTokenAmount)])
6569 if ((inv2 == inv2))
6670 then {
6771 let amount1 = (getBalance(getAssetBytes(asset1)) - asset1BalanceBefore)
6872 if ((amount1 == amount1))
6973 then amount1
7074 else throw("Strict value is not equal to itself.")
7175 }
7276 else throw("Strict value is not equal to itself.")
7377 }
7478 else throw("Strict value is not equal to itself.")
7579 }
7680 else throw("Strict value is not equal to itself.")
7781 }
7882 else throw("Strict value is not equal to itself.")
7983 }
8084
8185
8286 func swapInternal (i,routesStr,minToReceive,refKey) = {
8387 func doSwap (amount,swap) = {
8488 let swapLi = split(swap, ",")
85- let $t022402321 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
86- let dApp = $t022402321._1
87- let dAppType = $t022402321._2
88- let t0Str = $t022402321._3
89- let t1Str = $t022402321._4
89+ let $t024232504 = $Tuple4(swapLi[0], swapLi[1], swapLi[2], swapLi[3])
90+ let dApp = $t024232504._1
91+ let dAppType = $t024232504._2
92+ let t0Str = $t024232504._3
93+ let t1Str = $t024232504._4
9094 let t0 = getAssetBytes(t0Str)
9195 let amount0 = if ((amount != 0))
9296 then amount
9397 else getBalance(t0)
9498 let i1 = if ((dAppType == "swopfi"))
9599 then invoke(Address(fromBase58String(dApp)), "exchange", [1], [AttachedPayment(t0, amount0)])
96100 else if ((dAppType == "puzzle"))
97101 then invoke(Address(fromBase58String(dApp)), "swap", [t1Str, 0], [AttachedPayment(t0, amount0)])
98102 else if ((dAppType == "wx"))
99103 then swapWX(t0Str, t1Str, amount0)
100104 else throw("internal aggregator issue: unknow pool type")
101105 if ((i1 == i1))
102106 then 0
103107 else throw("Strict value is not equal to itself.")
104108 }
105109
106110 func doRoute (accum,route) = {
107111 let amountIn = parseIntValue(split(route, "/")[0])
108112 let swaps = split(split(route, "/")[1], ";")
109113 let swapsResult = {
110114 let $l = swaps
111115 let $s = size($l)
112116 let $acc0 = amountIn
113117 func $f0_1 ($a,$i) = if (($i >= $s))
114118 then $a
115119 else doSwap($a, $l[$i])
116120
117121 func $f0_2 ($a,$i) = if (($i >= $s))
118122 then $a
119123 else throw("List size exceeds 3")
120124
121125 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
122126 }
123127 if ((swapsResult == swapsResult))
124128 then (accum + swapsResult)
125129 else throw("Strict value is not equal to itself.")
126130 }
127131
128132 let asset1Str = split(routesStr, ",")[(size(split(routesStr, ",")) - 1)]
129133 let asset1 = getAssetBytes(asset1Str)
130134 let routes = split(routesStr, "|")
131135 let swaps = {
132136 let $l = routes
133137 let $s = size($l)
134138 let $acc0 = 0
135139 func $f0_1 ($a,$i) = if (($i >= $s))
136140 then $a
137141 else doRoute($a, $l[$i])
138142
139143 func $f0_2 ($a,$i) = if (($i >= $s))
140144 then $a
141145 else throw("List size exceeds 4")
142146
143147 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
144148 }
145149 if ((swaps == swaps))
146150 then {
147151 let totalOut = getBalance(asset1)
148152 let feeAmount = fraction(totalOut, 29, 10000)
149153 let cleanTotalAmount = (totalOut - feeAmount)
150154 if ((minToReceive > cleanTotalAmount))
151155 then throw(("amount to receive is lower than expected one " + toString(cleanTotalAmount)))
152156 else {
153157 let usdnFee = if ((asset1 == usdnId))
154158 then feeAmount
155159 else {
156160 let poolAddressStr = tryGetString((("static_asset_" + asset1Str) + "_puzzlePool"))
157161 if ((poolAddressStr == ""))
158162 then 0
159163 else {
160164 let usdnBalanceBefore = getBalance(usdnId)
161165 if ((usdnBalanceBefore == usdnBalanceBefore))
162166 then {
163167 let convertedFee = invoke(addressFromStringValue(poolAddressStr), "swap", [usdnIdStr, 0], [AttachedPayment(asset1, feeAmount)])
164168 if ((convertedFee == convertedFee))
165169 then {
166170 let usdnBalanceAfter = getBalance(usdnId)
167171 if ((usdnBalanceAfter == usdnBalanceAfter))
168172 then (usdnBalanceAfter - usdnBalanceBefore)
169173 else throw("Strict value is not equal to itself.")
170174 }
171175 else throw("Strict value is not equal to itself.")
172176 }
173177 else throw("Strict value is not equal to itself.")
174178 }
175179 }
176180 if ((usdnFee == usdnFee))
177181 then {
178182 let referralAddress = if ((refKey == "muna"))
179183 then Address(base58'3PGFHzVGT4NTigwCKP1NcwoXkodVZwvBuuU')
180184 else if ((refKey == "keeper"))
181185 then Address(base58'3PNgw6Db2TGUQbjnV7ekve6q126xBC1e7eM')
182186 else if ((refKey == "tci"))
183187 then Address(base58'3P93R2GBkTGVehRPhytHr7sdxYww93jkbhm')
184188 else Address(base58'3PQxXXiQXpWsjDwQLYxyuoPiaLnVHjJguFo')
185189 let refUsdnShare = if ((refKey == "noref"))
186190 then 0
187191 else fraction(usdnFee, 2, 10)
188192 let topUp = invoke(Address(base58'3PKUxbZaSYfsR7wu2HaAgiirHYwAMupDrYW'), "topUpReward", nil, [AttachedPayment(usdnId, (usdnFee - refUsdnShare))])
189193 if ((topUp == topUp))
190194 then {
191195 let asset0 = i.payments[0].assetId
192196 let amount0 = (getBalance(asset0) - (if ((asset0 == usdnId))
193197 then refUsdnShare
194198 else 0))
195199 let amount1 = (getBalance(asset1) - (if ((asset1 == usdnId))
196200 then refUsdnShare
197201 else 0))
198202 (([ScriptTransfer(i.caller, amount1, asset1)] ++ (if ((refUsdnShare != 0))
199203 then [ScriptTransfer(referralAddress, refUsdnShare, usdnId)]
200204 else nil)) ++ (if ((amount0 != 0))
201205 then [ScriptTransfer(i.caller, amount0, asset0)]
202206 else nil))
203207 }
204208 else throw("Strict value is not equal to itself.")
205209 }
206210 else throw("Strict value is not equal to itself.")
207211 }
208212 }
209213 else throw("Strict value is not equal to itself.")
210214 }
211215
212216
213217 @Callable(i)
214218 func swap (routesStr,minToReceive) = swapInternal(i, routesStr, minToReceive, "noref")
215219
216220
217221
218222 @Callable(i)
219223 func swapWithReferral (routesStr,minToReceive,refKey) = swapInternal(i, routesStr, minToReceive, refKey)
220224
221225
222226
223227 @Callable(i)
224228 func addTokenPuzzlePool (assetIdStr,poolAddressStr) = if ((i.caller != Address(base58'3P8qVX189qpoTJZQQQdKS9endHK5sxWsvrd')))
225229 then throw("admin only")
226230 else [StringEntry((("static_asset_" + assetIdStr) + "_puzzlePool"), poolAddressStr)]
227231
228232
229233 @Verifier(tx)
230234 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
231235

github/deemru/w8io/786bc32 
38.46 ms