tx · 2BT2UKNzJm83rykZj6a7iMsyRVnA6nSx7LMXoLMf4bhx

3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki:  -0.01400000 Waves

2021.11.08 12:40 [2846881] smart account 3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki > SELF 0.00000000 Waves

{ "type": 13, "id": "2BT2UKNzJm83rykZj6a7iMsyRVnA6nSx7LMXoLMf4bhx", "fee": 1400000, "feeAssetId": null, "timestamp": 1636364462435, "version": 2, "chainId": 87, "sender": "3PDrYPF6izza2sXWffzTPF7e2Fcir2CMpki", "senderPublicKey": "BHGZUnraSaYR29gbS4KuRhjkKjKbD22KfX6vjJdcMQd3", "proofs": [ "4oWvcJaD7EsbHNijC6S7uvCroZsuzNVjp1TP5a4XsSrc6eDZWH27mEz952zKeWy93XixNW3wadZJXYD3ZpoCoSEs" ], "script": "base64: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", "height": 2846881, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Ah9S2wyFvm9TiQwRzqTvwmNzqxPnvvphxy69JPcmsC4D Next: Em8D44ihVnNMnG5qayiwu7Zp9YJqLU93ddXL3ofmPsiM Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let T = 10
55
6-let assetIds = [unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS', base58'5nk9JW8yRonyNBEwhChoksLxpBECVxbVLqaNuQs9EJn1', base58'DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p', base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g', base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg', base58'9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y', base58'4K35syPfY2tYrNWzjh1vbmH39qE4qPV7SwLwekrzD82r', base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p']
6+let assetIds = [unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS', base58'Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT', base58'DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p', base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g', base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg', base58'9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y', base58'4K35syPfY2tYrNWzjh1vbmH39qE4qPV7SwLwekrzD82r', base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p']
77
88 let AssetsWeights = [20, 20, 8, 8, 6, 6, 4, 4, 12, 12]
99
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let T = 10
55
6-let assetIds = [unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS', base58'5nk9JW8yRonyNBEwhChoksLxpBECVxbVLqaNuQs9EJn1', base58'DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p', base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g', base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg', base58'9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y', base58'4K35syPfY2tYrNWzjh1vbmH39qE4qPV7SwLwekrzD82r', base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p']
6+let assetIds = [unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS', base58'Ehie5xYpeN8op1Cctc6aGUrqx8jq3jtf1DSjXDbfm7aT', base58'DSbbhLsSTeDg5Lsiufk2Aneh3DjVqJuPr2M9uU1gwy5p', base58'6nSpVyNH7yM69eg446wrQR94ipbbcmZMU1ENPwanC97g', base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg', base58'9sQutD5HnRvjM1uui5cVC4w9xkMPAfYEV8ymug3Mon2Y', base58'4K35syPfY2tYrNWzjh1vbmH39qE4qPV7SwLwekrzD82r', base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p']
77
88 let AssetsWeights = [20, 20, 8, 8, 6, 6, 4, 4, 12, 12]
99
1010 let AssetsWeightsDecimals = 2
1111
1212 let PoolTokenDecimals = 8
1313
1414 let Decimals = [8, 8, 8, 8, 6, 8, 8, 6, 6, 6]
1515
1616 let Scales = [100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 100000000, 1000000]
1717
1818 let Fee = 200
1919
2020 let Scale = 10000
2121
2222 let FeeScale = 10000
2323
2424 let feeAggregator = Address(base58'3PBmAwjkwsM83KQhjSMNZvgdFeYeLz9tdBD')
2525
2626 func tryGetInteger (key) = match getInteger(this, key) {
2727 case b: Int =>
2828 b
2929 case _ =>
3030 0
3131 }
3232
3333
3434 func tryGetBinary (key) = match getBinary(this, key) {
3535 case b: ByteVector =>
3636 b
3737 case _ =>
3838 base58''
3939 }
4040
4141
4242 func getAssetString (assetId) = match assetId {
4343 case b: ByteVector =>
4444 toBase58String(b)
4545 case _ =>
4646 "WAVES"
4747 }
4848
4949
5050 func getAssetBytes (assetId) = if ((assetId == "WAVES"))
5151 then unit
5252 else fromBase58String(assetId)
5353
5454
5555 func getCurrentTokenBalance (tokenType) = {
5656 let tokenId = getAssetString(assetIds[tokenType])
5757 tryGetInteger((("global_" + tokenId) + "_balance"))
5858 }
5959
6060
6161 func calculatePIssued (amount,tokenId) = {
6262 let Psupply = tryGetInteger("global_poolToken_amount")
6363 let Balance = tryGetInteger((("global_" + getAssetString(tokenId)) + "_balance"))
6464 fraction(amount, Psupply, Balance, DOWN)
6565 }
6666
6767
6868 func getMinPIssued (payments) = {
6969 func handler (accum,current) = {
7070 let PIssued = calculatePIssued(current.amount, value(current.assetId))
7171 if (if ((accum == 0))
7272 then true
7373 else (accum > PIssued))
7474 then PIssued
7575 else accum
7676 }
7777
7878 let minPIssed = {
7979 let $l = payments
8080 let $s = size($l)
8181 let $acc0 = 0
8282 func 1 ($a,$i) = if (($i >= $s))
8383 then $a
8484 else handler($a, $l[$i])
8585
8686 func 2 ($a,$i) = if (($i >= $s))
8787 then $a
8888 else throw("List size exceeds 10")
8989
9090 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
9191 }
9292 minPIssed
9393 }
9494
9595
9696 func checkTokensValidity (payments) = {
9797 func handler1 (accum,payment) = (accum ++ [value(payment.assetId)])
9898
9999 let ids = {
100100 let $l = payments
101101 let $s = size($l)
102102 let $acc0 = nil
103103 func 1 ($a,$i) = if (($i >= $s))
104104 then $a
105105 else handler1($a, $l[$i])
106106
107107 func 2 ($a,$i) = if (($i >= $s))
108108 then $a
109109 else throw("List size exceeds 10")
110110
111111 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
112112 }
113113 func handler2 (accum,assetId) = if ((indexOf(ids, assetId) != unit))
114114 then (accum + 1)
115115 else throw(("asset not attached: " + getAssetString(assetId)))
116116
117117 let checks = {
118118 let $l = assetIds
119119 let $s = size($l)
120120 let $acc0 = 0
121121 func 1 ($a,$i) = if (($i >= $s))
122122 then $a
123123 else handler2($a, $l[$i])
124124
125125 func 2 ($a,$i) = if (($i >= $s))
126126 then $a
127127 else throw("List size exceeds 10")
128128
129129 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
130130 }
131131 if ((checks == checks))
132132 then true
133133 else throw("Strict value is not equal to itself.")
134134 }
135135
136136
137137 func handlePoolTokensAdd (PIssued,payments,userAddress) = {
138138 func getTokenPaymentAmount (tokenId) = {
139139 func handler (accum,payment) = if ((payment.assetId == tokenId))
140140 then payment.amount
141141 else accum
142142
143143 let $l = payments
144144 let $s = size($l)
145145 let $acc0 = 0
146146 func 1 ($a,$i) = if (($i >= $s))
147147 then $a
148148 else handler($a, $l[$i])
149149
150150 func 2 ($a,$i) = if (($i >= $s))
151151 then $a
152152 else throw("List size exceeds 10")
153153
154154 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
155155 }
156156
157157 func handleTokenChange (accum,tokenId) = {
158158 let Bk = tryGetInteger((("global_" + getAssetString(tokenId)) + "_balance"))
159159 let PSupply = tryGetInteger("global_poolToken_amount")
160160 let tokenDecimals = tryGetInteger((("static_" + getAssetString(tokenId)) + "_scale"))
161161 let Dk = fraction((fraction((PSupply + PIssued), tokenDecimals, PSupply, DOWN) - tokenDecimals), Bk, tokenDecimals, DOWN)
162162 (accum ++ [IntegerEntry((("global_" + getAssetString(tokenId)) + "_balance"), (Bk + Dk))])
163163 }
164164
165165 func handleTokenChange2 (accum,tokenId) = {
166166 let Bk = tryGetInteger((("global_" + getAssetString(tokenId)) + "_balance"))
167167 let PSupply = tryGetInteger("global_poolToken_amount")
168168 let tokenDecimals = tryGetInteger((("static_" + getAssetString(tokenId)) + "_scale"))
169169 let Dk = fraction((fraction((PSupply + PIssued), tokenDecimals, PSupply, DOWN) - tokenDecimals), Bk, tokenDecimals, DOWN)
170170 let paymentAmount = getTokenPaymentAmount(tokenId)
171171 let toReturn = ((if ((paymentAmount != 0))
172172 then paymentAmount
173173 else 0) - Dk)
174174 (accum ++ [ScriptTransfer(userAddress, toReturn, tokenId)])
175175 }
176176
177177 ({
178178 let $l = assetIds
179179 let $s = size($l)
180180 let $acc0 = nil
181181 func 1 ($a,$i) = if (($i >= $s))
182182 then $a
183183 else handleTokenChange($a, $l[$i])
184184
185185 func 2 ($a,$i) = if (($i >= $s))
186186 then $a
187187 else throw("List size exceeds 10")
188188
189189 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
190190 } ++ {
191191 let $l = assetIds
192192 let $s = size($l)
193193 let $acc0 = nil
194194 func 1 ($a,$i) = if (($i >= $s))
195195 then $a
196196 else handleTokenChange2($a, $l[$i])
197197
198198 func 2 ($a,$i) = if (($i >= $s))
199199 then $a
200200 else throw("List size exceeds 10")
201201
202202 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
203203 })
204204 }
205205
206206
207207 func handlePoolTokensRedeem (PRedeemed,userAddress) = {
208208 func handleTokenRedeem (accum,tokenId) = {
209209 let Bk = tryGetInteger((("global_" + getAssetString(tokenId)) + "_balance"))
210210 let PSupply = tryGetInteger("global_poolToken_amount")
211211 let tokenDecimals = tryGetInteger((("static_" + getAssetString(tokenId)) + "_scale"))
212212 let amount = fraction((tokenDecimals - fraction((PSupply - PRedeemed), tokenDecimals, PSupply, DOWN)), Bk, tokenDecimals, DOWN)
213213 (accum ++ [IntegerEntry((("global_" + getAssetString(tokenId)) + "_balance"), (Bk - amount))])
214214 }
215215
216216 func handleTokenRedeem2 (accum,tokenId) = {
217217 let Bk = tryGetInteger((("global_" + getAssetString(tokenId)) + "_balance"))
218218 let PSupply = tryGetInteger("global_poolToken_amount")
219219 let tokenDecimals = tryGetInteger((("static_" + getAssetString(tokenId)) + "_scale"))
220220 let amount = fraction((tokenDecimals - fraction((PSupply - PRedeemed), tokenDecimals, PSupply, DOWN)), Bk, tokenDecimals, DOWN)
221221 (accum ++ [ScriptTransfer(userAddress, amount, tokenId)])
222222 }
223223
224224 ({
225225 let $l = assetIds
226226 let $s = size($l)
227227 let $acc0 = nil
228228 func 1 ($a,$i) = if (($i >= $s))
229229 then $a
230230 else handleTokenRedeem($a, $l[$i])
231231
232232 func 2 ($a,$i) = if (($i >= $s))
233233 then $a
234234 else throw("List size exceeds 10")
235235
236236 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
237237 } ++ {
238238 let $l = assetIds
239239 let $s = size($l)
240240 let $acc0 = nil
241241 func 1 ($a,$i) = if (($i >= $s))
242242 then $a
243243 else handleTokenRedeem2($a, $l[$i])
244244
245245 func 2 ($a,$i) = if (($i >= $s))
246246 then $a
247247 else throw("List size exceeds 10")
248248
249249 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
250250 })
251251 }
252252
253253
254254 func calculateOutAmount (AmountIn,assetIn,assetOut) = {
255255 let IndexIn = value(indexOf(assetIds, assetIn))
256256 let IndexOut = value(indexOf(assetIds, assetOut))
257257 if ((IndexIn == IndexOut))
258258 then throw("inalid tokens pair")
259259 else {
260260 let BalanceIn = tryGetInteger((("global_" + getAssetString(assetIn)) + "_balance"))
261261 let BalanceOut = tryGetInteger((("global_" + getAssetString(assetOut)) + "_balance"))
262262 fraction(BalanceOut, (Scales[IndexOut] - pow(((BalanceIn * Scales[IndexIn]) / (BalanceIn + AmountIn)), Decimals[IndexIn], fraction(AssetsWeights[IndexIn], 10000, AssetsWeights[IndexOut]), 4, Decimals[IndexOut], FLOOR)), Scales[IndexOut], DOWN)
263263 }
264264 }
265265
266266
267267 @Callable(i)
268268 func preInit () = [IntegerEntry((("static_" + getAssetString(assetIds[0])) + "_scale"), Scales[0]), IntegerEntry((("static_" + getAssetString(assetIds[1])) + "_scale"), Scales[1]), IntegerEntry((("static_" + getAssetString(assetIds[2])) + "_scale"), Scales[2]), IntegerEntry((("static_" + getAssetString(assetIds[3])) + "_scale"), Scales[3]), IntegerEntry((("static_" + getAssetString(assetIds[4])) + "_scale"), Scales[4]), IntegerEntry((("static_" + getAssetString(assetIds[5])) + "_scale"), Scales[5]), IntegerEntry((("static_" + getAssetString(assetIds[6])) + "_scale"), Scales[6]), IntegerEntry((("static_" + getAssetString(assetIds[7])) + "_scale"), Scales[7]), IntegerEntry((("static_" + getAssetString(assetIds[8])) + "_scale"), Scales[8]), IntegerEntry((("static_" + getAssetString(assetIds[9])) + "_scale"), Scales[9]), IntegerEntry((("static_" + getAssetString(assetIds[0])) + "_weight"), AssetsWeights[0]), IntegerEntry((("static_" + getAssetString(assetIds[1])) + "_weight"), AssetsWeights[1]), IntegerEntry((("static_" + getAssetString(assetIds[2])) + "_weight"), AssetsWeights[2]), IntegerEntry((("static_" + getAssetString(assetIds[3])) + "_weight"), AssetsWeights[3]), IntegerEntry((("static_" + getAssetString(assetIds[4])) + "_weight"), AssetsWeights[4]), IntegerEntry((("static_" + getAssetString(assetIds[5])) + "_weight"), AssetsWeights[5]), IntegerEntry((("static_" + getAssetString(assetIds[6])) + "_weight"), AssetsWeights[6]), IntegerEntry((("static_" + getAssetString(assetIds[7])) + "_weight"), AssetsWeights[7]), IntegerEntry((("static_" + getAssetString(assetIds[8])) + "_weight"), AssetsWeights[8]), IntegerEntry((("static_" + getAssetString(assetIds[9])) + "_weight"), AssetsWeights[9])]
269269
270270
271271
272272 @Callable(i)
273273 func init () = {
274274 func prepareList () = {
275275 func handler (accum,n) = (accum ++ [IntegerEntry((("global_" + getAssetString(n.assetId)) + "_balance"), n.amount)])
276276
277277 let $l = i.payments
278278 let $s = size($l)
279279 let $acc0 = nil
280280 func 1 ($a,$i) = if (($i >= $s))
281281 then $a
282282 else handler($a, $l[$i])
283283
284284 func 2 ($a,$i) = if (($i >= $s))
285285 then $a
286286 else throw("List size exceeds 10")
287287
288288 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
289289 }
290290
291291 func calculatePoolTokensAmount (payments) = {
292292 func handler (accum,pmt) = {
293293 let assetId = pmt.assetId
294294 func handler2 (accum,n) = if ((n == assetId))
295295 then value(indexOf(assetIds, n))
296296 else accum
297297
298298 let Token = {
299299 let $l = assetIds
300300 let $s = size($l)
301301 let $acc0 = 1
302302 func 1 ($a,$i) = if (($i >= $s))
303303 then $a
304304 else handler2($a, $l[$i])
305305
306306 func 2 ($a,$i) = if (($i >= $s))
307307 then $a
308308 else throw("List size exceeds 10")
309309
310310 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
311311 }
312312 (accum * pow(pmt.amount, Decimals[Token], AssetsWeights[Token], AssetsWeightsDecimals, 1, FLOOR))
313313 }
314314
315315 let $l = payments
316316 let $s = size($l)
317317 let $acc0 = 1
318318 func 1 ($a,$i) = if (($i >= $s))
319319 then $a
320320 else handler($a, $l[$i])
321321
322322 func 2 ($a,$i) = if (($i >= $s))
323323 then $a
324324 else throw("List size exceeds 10")
325325
326326 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
327327 }
328328
329329 if ((tryGetInteger("global_wasInited") > 0))
330330 then throw("pool already inited")
331331 else {
332332 let initialPoolTokens = calculatePoolTokensAmount(i.payments)
333333 let poolTokenIssue = Issue("PZ-DeFi Index", "Puzzle Swap DeFi Pool Index", initialPoolTokens, PoolTokenDecimals, true, unit, 0)
334334 let poolTokenId = calculateAssetId(poolTokenIssue)
335335 (prepareList() ++ [poolTokenIssue, IntegerEntry("global_poolToken_amount", initialPoolTokens), IntegerEntry("global_wasInited", 1), BinaryEntry("global_poolToken_id", poolTokenId), ScriptTransfer(i.caller, initialPoolTokens, poolTokenId)])
336336 }
337337 }
338338
339339
340340
341341 @Callable(i)
342342 func addLiquidity () = if ((size(i.payments) != T))
343343 then throw(("you need to attach all pool tokens. amount of pool tokens: " + toString(T)))
344344 else if (!(checkTokensValidity(i.payments)))
345345 then throw("wrong assets attached")
346346 else {
347347 let PIssued = getMinPIssued(i.payments)
348348 let result = handlePoolTokensAdd(PIssued, i.payments, i.caller)
349349 let reissue = Reissue(tryGetBinary("global_poolToken_id"), PIssued, true)
350350 (result ++ [reissue, ScriptTransfer(i.caller, PIssued, tryGetBinary("global_poolToken_id")), IntegerEntry("global_poolToken_amount", (tryGetInteger("global_poolToken_amount") + PIssued))])
351351 }
352352
353353
354354
355355 @Callable(i)
356356 func removeLiquidity () = {
357357 let pmt = i.payments[0]
358358 if ((pmt.assetId != tryGetBinary("global_poolToken_id")))
359359 then throw("please attach pool share token")
360360 else {
361361 let PRedeemed = pmt.amount
362362 let result = handlePoolTokensRedeem(PRedeemed, i.caller)
363363 (result ++ [Burn(tryGetBinary("global_poolToken_id"), PRedeemed), IntegerEntry("global_poolToken_amount", (tryGetInteger("global_poolToken_amount") - PRedeemed))])
364364 }
365365 }
366366
367367
368368
369369 @Callable(i)
370370 func swap (assetOut,minimum) = {
371371 let pmt = value(i.payments[0])
372372 let AmountIn = value(i.payments[0].amount)
373373 let AssetIn = pmt.assetId
374374 let AssetOut = getAssetBytes(assetOut)
375375 let AmountOut = calculateOutAmount(AmountIn, AssetIn, AssetOut)
376376 if ((minimum > AmountOut))
377377 then throw(("amount to recieve it lower than given one: " + toString(AmountOut)))
378378 else if (((Scales[value(indexOf(assetIds, AssetIn))] / 10000) > AmountIn))
379379 then throw("sum to exchange is too small")
380380 else if ((0 > (tryGetInteger((("global_" + getAssetString(AssetOut)) + "_balance")) - AmountOut)))
381381 then throw("contract is out of reserves")
382382 else {
383383 let feeAmount = fraction(AmountOut, Fee, FeeScale)
384384 let cleanAmountOut = (AmountOut - feeAmount)
385385 [ScriptTransfer(feeAggregator, feeAmount, AssetOut), IntegerEntry((("global_" + getAssetString(AssetOut)) + "_balance"), (tryGetInteger((("global_" + getAssetString(AssetOut)) + "_balance")) - AmountOut)), IntegerEntry((("global_" + getAssetString(AssetIn)) + "_balance"), (tryGetInteger((("global_" + getAssetString(AssetIn)) + "_balance")) + AmountIn)), ScriptTransfer(i.caller, cleanAmountOut, AssetOut)]
386386 }
387387 }
388388
389389
390390 @Verifier(tx)
391391 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
392392

github/deemru/w8io/873ac7e 
97.34 ms