tx · D1QppE9PVGvGvJmF2QeEQ4otEd6Qs5iGpkM9YpB7Np2g

3P5iS5FnZHLoEcSwmDpShmNn9Z5KCL2XdbU:  -0.01000000 Waves

2022.11.21 01:11 [3391431] smart account 3P5iS5FnZHLoEcSwmDpShmNn9Z5KCL2XdbU > SELF 0.00000000 Waves

{ "type": 13, "id": "D1QppE9PVGvGvJmF2QeEQ4otEd6Qs5iGpkM9YpB7Np2g", "fee": 1000000, "feeAssetId": null, "timestamp": 1668982314267, "version": 2, "chainId": 87, "sender": "3P5iS5FnZHLoEcSwmDpShmNn9Z5KCL2XdbU", "senderPublicKey": "FQ1hCr2qX8MTXUGfsXkucpF5apQVnwe7my5z7nFk2ggQ", "proofs": [ "4HKGKcXMyW5mWc1vHzGWdUaqJWRdtFUkVQ25pFgsVPRgkBFkgPNtmKUVnPgwD6613R3TVaMwQS6SqiJZrwfz1jne" ], "script": "base64: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", "height": 3391431, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CYTCJjsSX7NTQnFoyUHmHnJB2M6i8iV7vU3nCtbB1AN9 Next: 9WGLsXmeadUoYRbCvVwAzqJkJjwhv4Smwxrw7uUg3K2 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+func getAssetString (assetId) = match assetId {
5+ case b: ByteVector =>
6+ toBase58String(b)
7+ case _ =>
8+ "WAVES"
9+}
10+
11+
12+func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
13+ then unit
14+ else fromBase58String(assetIdStr)
15+
16+
17+func getBalance (assetIdStr) = if ((assetIdStr == "WAVES"))
18+ then wavesBalance(this).available
19+ else assetBalance(this, fromBase58String(assetIdStr))
420
521
622 @Callable(i)
7-func swapWX (asset0,asset1) = {
23+func swapWX (asset1) = {
24+ let amount0 = i.payments[0].amount
25+ let asset0 = getAssetString(i.payments[0].assetId)
826 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
927 let asset0Int = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + asset0)))
1028 let asset1Int = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + asset1)))
11- let poolConfig = getStringValue(factoryAddress, (((("%d%d%s__" + asset0Int) + "__") + asset1Int) + "__config"))
12- let poolAssetId = split(poolConfig, "__")[3]
13- throw(poolConfig)
29+ let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + asset0Int) + "__") + asset1Int) + "__config")), "__")
30+ let poolAddress = addressFromStringValue(poolConfig[1])
31+ let poolAssetId = poolConfig[3]
32+ let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
33+ if ((inv1 == inv1))
34+ then {
35+ let poolTokenAmount = getBalance(poolAssetId)
36+ if ((poolTokenAmount == poolTokenAmount))
37+ then {
38+ let asset1BalanceBefore = getBalance(asset1)
39+ if ((asset1BalanceBefore == asset1BalanceBefore))
40+ then {
41+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
42+ if ((inv2 == inv2))
43+ then {
44+ let amount1 = (getBalance(asset1) - asset1BalanceBefore)
45+ if ((amount1 == amount1))
46+ then [ScriptTransfer(i.caller, amount1, getAssetBytes(asset1))]
47+ else throw("Strict value is not equal to itself.")
48+ }
49+ else throw("Strict value is not equal to itself.")
50+ }
51+ else throw("Strict value is not equal to itself.")
52+ }
53+ else throw("Strict value is not equal to itself.")
54+ }
55+ else throw("Strict value is not equal to itself.")
1456 }
1557
1658
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+func getAssetString (assetId) = match assetId {
5+ case b: ByteVector =>
6+ toBase58String(b)
7+ case _ =>
8+ "WAVES"
9+}
10+
11+
12+func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
13+ then unit
14+ else fromBase58String(assetIdStr)
15+
16+
17+func getBalance (assetIdStr) = if ((assetIdStr == "WAVES"))
18+ then wavesBalance(this).available
19+ else assetBalance(this, fromBase58String(assetIdStr))
420
521
622 @Callable(i)
7-func swapWX (asset0,asset1) = {
23+func swapWX (asset1) = {
24+ let amount0 = i.payments[0].amount
25+ let asset0 = getAssetString(i.payments[0].assetId)
826 let factoryAddress = Address(base58'3PCuHsTU58WKhCqotbcSwABvdPzqqVAbbTv')
927 let asset0Int = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + asset0)))
1028 let asset1Int = toString(getIntegerValue(factoryAddress, ("%s%s%s__mappings__baseAsset2internalId__" + asset1)))
11- let poolConfig = getStringValue(factoryAddress, (((("%d%d%s__" + asset0Int) + "__") + asset1Int) + "__config"))
12- let poolAssetId = split(poolConfig, "__")[3]
13- throw(poolConfig)
29+ let poolConfig = split(getStringValue(factoryAddress, (((("%d%d%s__" + asset0Int) + "__") + asset1Int) + "__config")), "__")
30+ let poolAddress = addressFromStringValue(poolConfig[1])
31+ let poolAssetId = poolConfig[3]
32+ let inv1 = invoke(poolAddress, "putOneTkn", [0, false], [AttachedPayment(getAssetBytes(asset0), amount0)])
33+ if ((inv1 == inv1))
34+ then {
35+ let poolTokenAmount = getBalance(poolAssetId)
36+ if ((poolTokenAmount == poolTokenAmount))
37+ then {
38+ let asset1BalanceBefore = getBalance(asset1)
39+ if ((asset1BalanceBefore == asset1BalanceBefore))
40+ then {
41+ let inv2 = invoke(poolAddress, "getOneTkn", [asset1, 0], [AttachedPayment(getAssetBytes(poolAssetId), poolTokenAmount)])
42+ if ((inv2 == inv2))
43+ then {
44+ let amount1 = (getBalance(asset1) - asset1BalanceBefore)
45+ if ((amount1 == amount1))
46+ then [ScriptTransfer(i.caller, amount1, getAssetBytes(asset1))]
47+ else throw("Strict value is not equal to itself.")
48+ }
49+ else throw("Strict value is not equal to itself.")
50+ }
51+ else throw("Strict value is not equal to itself.")
52+ }
53+ else throw("Strict value is not equal to itself.")
54+ }
55+ else throw("Strict value is not equal to itself.")
1456 }
1557
1658
1759 @Verifier(tx)
1860 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
1961

github/deemru/w8io/3ef1775 
25.06 ms