tx · Gv2bQAYSTry9ww2XnXLpTa5ZocJeNeo59jPxGPtFAPSc

3PJcupzAhUyuBAqEWyKGccGXN9sM2K5mHja:  -0.01400000 Waves

2022.11.01 16:44 [3363478] smart account 3PJcupzAhUyuBAqEWyKGccGXN9sM2K5mHja > SELF 0.00000000 Waves

{ "type": 13, "id": "Gv2bQAYSTry9ww2XnXLpTa5ZocJeNeo59jPxGPtFAPSc", "fee": 1400000, "feeAssetId": null, "timestamp": 1667310393882, "version": 2, "chainId": 87, "sender": "3PJcupzAhUyuBAqEWyKGccGXN9sM2K5mHja", "senderPublicKey": "J9eh4VQXtQ56xyr9CrAWffT4jSc7Xn9x3w21a5z83Wwu", "proofs": [ "AgthVkowHqYXPa7STmTe3s8zJ6LEHatDk2SBzgdLrzbxf1SiWT84XX2XtTzQS9FBqgVzxc3WPNfFbvDjAzdCc24" ], "script": "base64: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", "height": 3363478, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EGKQhzLguTtwnYcr6bx2rMagajakKXaqn5E8x4Rt4GQj Next: GFK6Pi87r65NZSS8J3hQ9RvaYMfzxizE7rWWxFUjDkD8 Diff:
OldNewDifferences
66 else fromBase58String(assetIdStr)
77
88
9+func getBalance (assetIdStr) = if ((assetIdStr == "WAVES"))
10+ then wavesBalance(this).available
11+ else assetBalance(this, fromBase58String(assetIdStr))
12+
13+
914 @Callable(i)
1015 func swap (asset0,asset1,pool0,pool1,amount0) = {
11- let inv1 = invoke(addressFromStringValue(pool0), "swap", [asset1, 0], [AttachedPayment(getAssetBytes(asset0), amount0)])
12- if ((inv1 == inv1))
16+ let balanceBefore = getBalance(asset1)
17+ if ((balanceBefore == balanceBefore))
1318 then {
14- let amount1 = match inv1 {
15- case x: Int =>
16- x
17- case _ =>
18- throw("error while swapping")
19- }
20- if ((amount1 == amount1))
19+ let inv1 = invoke(addressFromStringValue(pool0), "swap", [asset1, 0], [AttachedPayment(getAssetBytes(asset0), amount0)])
20+ if ((inv1 == inv1))
2121 then {
22- let inv2 = invoke(addressFromStringValue(pool1), "swap", [asset0, 0], [AttachedPayment(getAssetBytes(asset1), amount1)])
23- if ((inv2 == inv2))
22+ let amount1 = (getBalance(asset1) - balanceBefore)
23+ if ((amount1 == amount1))
2424 then {
25- let resultAmount = match inv2 {
26- case x: Int =>
27- x
28- case _ =>
29- throw("error while swapping")
30- }
31- if ((resultAmount == resultAmount))
32- then [ScriptTransfer(i.caller, resultAmount, getAssetBytes(asset1))]
25+ let inv2 = invoke(addressFromStringValue(pool1), "swap", [asset0, 0], [AttachedPayment(getAssetBytes(asset1), amount1)])
26+ if ((inv2 == inv2))
27+ then {
28+ let resultAmount = match inv2 {
29+ case x: Int =>
30+ x
31+ case _ =>
32+ throw("error while swapping")
33+ }
34+ if ((resultAmount == resultAmount))
35+ then [ScriptTransfer(i.caller, resultAmount, getAssetBytes(asset1))]
36+ else throw("Strict value is not equal to itself.")
37+ }
3338 else throw("Strict value is not equal to itself.")
3439 }
3540 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
55 then unit
66 else fromBase58String(assetIdStr)
77
88
9+func getBalance (assetIdStr) = if ((assetIdStr == "WAVES"))
10+ then wavesBalance(this).available
11+ else assetBalance(this, fromBase58String(assetIdStr))
12+
13+
914 @Callable(i)
1015 func swap (asset0,asset1,pool0,pool1,amount0) = {
11- let inv1 = invoke(addressFromStringValue(pool0), "swap", [asset1, 0], [AttachedPayment(getAssetBytes(asset0), amount0)])
12- if ((inv1 == inv1))
16+ let balanceBefore = getBalance(asset1)
17+ if ((balanceBefore == balanceBefore))
1318 then {
14- let amount1 = match inv1 {
15- case x: Int =>
16- x
17- case _ =>
18- throw("error while swapping")
19- }
20- if ((amount1 == amount1))
19+ let inv1 = invoke(addressFromStringValue(pool0), "swap", [asset1, 0], [AttachedPayment(getAssetBytes(asset0), amount0)])
20+ if ((inv1 == inv1))
2121 then {
22- let inv2 = invoke(addressFromStringValue(pool1), "swap", [asset0, 0], [AttachedPayment(getAssetBytes(asset1), amount1)])
23- if ((inv2 == inv2))
22+ let amount1 = (getBalance(asset1) - balanceBefore)
23+ if ((amount1 == amount1))
2424 then {
25- let resultAmount = match inv2 {
26- case x: Int =>
27- x
28- case _ =>
29- throw("error while swapping")
30- }
31- if ((resultAmount == resultAmount))
32- then [ScriptTransfer(i.caller, resultAmount, getAssetBytes(asset1))]
25+ let inv2 = invoke(addressFromStringValue(pool1), "swap", [asset0, 0], [AttachedPayment(getAssetBytes(asset1), amount1)])
26+ if ((inv2 == inv2))
27+ then {
28+ let resultAmount = match inv2 {
29+ case x: Int =>
30+ x
31+ case _ =>
32+ throw("error while swapping")
33+ }
34+ if ((resultAmount == resultAmount))
35+ then [ScriptTransfer(i.caller, resultAmount, getAssetBytes(asset1))]
36+ else throw("Strict value is not equal to itself.")
37+ }
3338 else throw("Strict value is not equal to itself.")
3439 }
3540 else throw("Strict value is not equal to itself.")
3641 }
3742 else throw("Strict value is not equal to itself.")
3843 }
3944 else throw("Strict value is not equal to itself.")
4045 }
4146
4247
4348 @Verifier(tx)
4449 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
4550

github/deemru/w8io/3ef1775 
34.28 ms