tx · CxdkqHTV6sbnjLpnm2mySezyiY4eURoB5PQDmFsUxvYP
3PCUJBpMXtqYKxMiDtKcTeEQcKukfMeoctR: -0.01400000 Waves
2021.10.07 12:55 [2800664] smart account 3PCUJBpMXtqYKxMiDtKcTeEQcKukfMeoctR > SELF 0.00000000 Waves
{
"type": 13,
"id": "CxdkqHTV6sbnjLpnm2mySezyiY4eURoB5PQDmFsUxvYP",
"fee": 1400000,
"feeAssetId": null,
"timestamp": 1633600558922,
"version": 2,
"chainId": 87,
"sender": "3PCUJBpMXtqYKxMiDtKcTeEQcKukfMeoctR",
"senderPublicKey": "HkhM1YChRvLycTwNa1tmzYCRGFQsFjSmFwad9krdRUYo",
"proofs": [
"3uXerDdBGKf1GWxV3AenhTPwCCLiEq7jUUw3FCw5X3tKHkHmVYZ2C3GS46YrCos41Wpkc476kPNKBRsPvUsLVrjK"
],
"script": "base64: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",
"height": 2800664,
"applicationStatus": "succeeded",
"spentComplexity": 0
}
View: original | compacted
Prev: DsHB3eRcLa5R3JgdTcPw4D7wwVErp3n8VJP986oBkrm7
Next: 4pxkA1sJcFLs8sfWoZWTLAaiqDHUgQNxMmSWtVY5zxHh
Diff:
Old | New | | Differences |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let btcPathContracts = [Address(base58'3P8FVZgAJUAq32UEZtTw84qS4zLqEREiEiP'), Address(base58'3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ')] |
---|
5 | 5 | | |
---|
6 | | - | let btcPathTokens = [base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] |
---|
| 6 | + | let btcPathTokens = [base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', base58'', base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] |
---|
7 | 7 | | |
---|
8 | 8 | | func getPath (assetId) = if ((assetId == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS')) |
---|
9 | 9 | | then $Tuple2(btcPathContracts, btcPathTokens) |
---|
10 | 10 | | else throw("incorrect asset attached to payment") |
---|
| 11 | + | |
---|
| 12 | + | |
---|
| 13 | + | func getBalance (assetId) = match assetId { |
---|
| 14 | + | case x: Unit => |
---|
| 15 | + | wavesBalance(this).available |
---|
| 16 | + | case _ => |
---|
| 17 | + | assetBalance(this, value(assetId)) |
---|
| 18 | + | } |
---|
11 | 19 | | |
---|
12 | 20 | | |
---|
13 | 21 | | @Callable(i) |
---|
|
15 | 23 | | let pmt = i.payments[0] |
---|
16 | 24 | | let asset1Amount = pmt.amount |
---|
17 | 25 | | let assetId = value(pmt.assetId) |
---|
18 | | - | let $t0690740 = getPath(assetId) |
---|
19 | | - | let pathContracts = $t0690740._1 |
---|
20 | | - | let pathAssets = $t0690740._2 |
---|
21 | | - | let balance2Before = assetBalance(this, value(pathAssets[1])) |
---|
| 26 | + | let $t0864914 = getPath(assetId) |
---|
| 27 | + | let pathContracts = $t0864914._1 |
---|
| 28 | + | let pathAssets = $t0864914._2 |
---|
| 29 | + | let balance2Before = getBalance(pathAssets[1]) |
---|
22 | 30 | | if ((balance2Before == balance2Before)) |
---|
23 | 31 | | then { |
---|
24 | 32 | | let i1 = invoke(pathContracts[0], "exchange", [0], [AttachedPayment(pathAssets[0], asset1Amount)]) |
---|
25 | 33 | | if ((i1 == i1)) |
---|
26 | 34 | | then { |
---|
27 | | - | let balance2After = assetBalance(this, value(pathAssets[1])) |
---|
| 35 | + | let balance2After = getBalance(pathAssets[1]) |
---|
28 | 36 | | if ((balance2After == balance2After)) |
---|
29 | 37 | | then { |
---|
30 | 38 | | let asset2Amount = (balance2After - balance2Before) |
---|
31 | | - | let balance3Before = assetBalance(this, value(pathAssets[2])) |
---|
| 39 | + | let balance3Before = getBalance(pathAssets[2]) |
---|
32 | 40 | | if ((balance3Before == balance3Before)) |
---|
33 | 41 | | then { |
---|
34 | 42 | | let i2 = invoke(pathContracts[1], "exchange", [0], [AttachedPayment(pathAssets[1], asset2Amount)]) |
---|
35 | 43 | | if ((i2 == i2)) |
---|
36 | 44 | | then { |
---|
37 | | - | let balance3After = assetBalance(this, value(pathAssets[2])) |
---|
| 45 | + | let balance3After = getBalance(pathAssets[2]) |
---|
38 | 46 | | if ((balance3After == balance3After)) |
---|
39 | 47 | | then { |
---|
40 | 48 | | let asset3Amount = (balance3After - balance3Before) |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 5 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let btcPathContracts = [Address(base58'3P8FVZgAJUAq32UEZtTw84qS4zLqEREiEiP'), Address(base58'3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ')] |
---|
5 | 5 | | |
---|
6 | | - | let btcPathTokens = [base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] |
---|
| 6 | + | let btcPathTokens = [base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', base58'', base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] |
---|
7 | 7 | | |
---|
8 | 8 | | func getPath (assetId) = if ((assetId == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS')) |
---|
9 | 9 | | then $Tuple2(btcPathContracts, btcPathTokens) |
---|
10 | 10 | | else throw("incorrect asset attached to payment") |
---|
| 11 | + | |
---|
| 12 | + | |
---|
| 13 | + | func getBalance (assetId) = match assetId { |
---|
| 14 | + | case x: Unit => |
---|
| 15 | + | wavesBalance(this).available |
---|
| 16 | + | case _ => |
---|
| 17 | + | assetBalance(this, value(assetId)) |
---|
| 18 | + | } |
---|
11 | 19 | | |
---|
12 | 20 | | |
---|
13 | 21 | | @Callable(i) |
---|
14 | 22 | | func buyEgg () = { |
---|
15 | 23 | | let pmt = i.payments[0] |
---|
16 | 24 | | let asset1Amount = pmt.amount |
---|
17 | 25 | | let assetId = value(pmt.assetId) |
---|
18 | | - | let $t0690740 = getPath(assetId) |
---|
19 | | - | let pathContracts = $t0690740._1 |
---|
20 | | - | let pathAssets = $t0690740._2 |
---|
21 | | - | let balance2Before = assetBalance(this, value(pathAssets[1])) |
---|
| 26 | + | let $t0864914 = getPath(assetId) |
---|
| 27 | + | let pathContracts = $t0864914._1 |
---|
| 28 | + | let pathAssets = $t0864914._2 |
---|
| 29 | + | let balance2Before = getBalance(pathAssets[1]) |
---|
22 | 30 | | if ((balance2Before == balance2Before)) |
---|
23 | 31 | | then { |
---|
24 | 32 | | let i1 = invoke(pathContracts[0], "exchange", [0], [AttachedPayment(pathAssets[0], asset1Amount)]) |
---|
25 | 33 | | if ((i1 == i1)) |
---|
26 | 34 | | then { |
---|
27 | | - | let balance2After = assetBalance(this, value(pathAssets[1])) |
---|
| 35 | + | let balance2After = getBalance(pathAssets[1]) |
---|
28 | 36 | | if ((balance2After == balance2After)) |
---|
29 | 37 | | then { |
---|
30 | 38 | | let asset2Amount = (balance2After - balance2Before) |
---|
31 | | - | let balance3Before = assetBalance(this, value(pathAssets[2])) |
---|
| 39 | + | let balance3Before = getBalance(pathAssets[2]) |
---|
32 | 40 | | if ((balance3Before == balance3Before)) |
---|
33 | 41 | | then { |
---|
34 | 42 | | let i2 = invoke(pathContracts[1], "exchange", [0], [AttachedPayment(pathAssets[1], asset2Amount)]) |
---|
35 | 43 | | if ((i2 == i2)) |
---|
36 | 44 | | then { |
---|
37 | | - | let balance3After = assetBalance(this, value(pathAssets[2])) |
---|
| 45 | + | let balance3After = getBalance(pathAssets[2]) |
---|
38 | 46 | | if ((balance3After == balance3After)) |
---|
39 | 47 | | then { |
---|
40 | 48 | | let asset3Amount = (balance3After - balance3Before) |
---|
41 | 49 | | [ScriptTransfer(i.caller, asset3Amount, pathAssets[2])] |
---|
42 | 50 | | } |
---|
43 | 51 | | else throw("Strict value is not equal to itself.") |
---|
44 | 52 | | } |
---|
45 | 53 | | else throw("Strict value is not equal to itself.") |
---|
46 | 54 | | } |
---|
47 | 55 | | else throw("Strict value is not equal to itself.") |
---|
48 | 56 | | } |
---|
49 | 57 | | else throw("Strict value is not equal to itself.") |
---|
50 | 58 | | } |
---|
51 | 59 | | else throw("Strict value is not equal to itself.") |
---|
52 | 60 | | } |
---|
53 | 61 | | else throw("Strict value is not equal to itself.") |
---|
54 | 62 | | } |
---|
55 | 63 | | |
---|
56 | 64 | | |
---|
57 | 65 | | @Verifier(tx) |
---|
58 | 66 | | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) |
---|
59 | 67 | | |
---|