tx · Gx8bdrWvwMTFU9rGfBs79yE7t1U4mJhGNyXpZGPgFvAJ 3PCUJBpMXtqYKxMiDtKcTeEQcKukfMeoctR: -0.01400000 Waves 2021.10.07 13:00 [2800670] smart account 3PCUJBpMXtqYKxMiDtKcTeEQcKukfMeoctR > SELF 0.00000000 Waves
{ "type": 13, "id": "Gx8bdrWvwMTFU9rGfBs79yE7t1U4mJhGNyXpZGPgFvAJ", "fee": 1400000, "feeAssetId": null, "timestamp": 1633600893983, "version": 2, "chainId": 87, "sender": "3PCUJBpMXtqYKxMiDtKcTeEQcKukfMeoctR", "senderPublicKey": "HkhM1YChRvLycTwNa1tmzYCRGFQsFjSmFwad9krdRUYo", "proofs": [ "F9fisBsQaKBLButH75RwJ3Cfm6TFjaiqsLnLSNY6SamGhY64F76TXUm3hhTmRc3jAbbQnQ8qjUJCKPgPSQ1dPrR" ], "script": "base64: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", "height": 2800670, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 967ACe153KHiEZK8Uo6Kao3BAczh5EodB6tyf3uf4brf Next: DKq1aBtCCp5sS8VuGhxnhDDQ19bqzC9sArCbRP3JMxmb Diff:
Old | New | Differences | |
---|---|---|---|
5 | 5 | ||
6 | 6 | let btcPathTokens = [base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] | |
7 | 7 | ||
8 | + | let usdtPathContracts = [Address(base58'3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1'), Address(base58'3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ')] | |
9 | + | ||
10 | + | let usdtPathTokens = [base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] | |
11 | + | ||
12 | + | let ethPathContracts = [Address(base58'3PNEC4YKqZiMMytFrYRVtpW2ujvi3aGXRPm'), Address(base58'3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ')] | |
13 | + | ||
14 | + | let ethPathTokens = [base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] | |
15 | + | ||
8 | 16 | func getPath (assetId) = if ((assetId == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS')) | |
9 | 17 | then $Tuple2(btcPathContracts, btcPathTokens) | |
10 | - | else throw("incorrect asset attached to payment") | |
18 | + | else if ((assetId == base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ')) | |
19 | + | then $Tuple2(usdtPathContracts, usdtPathTokens) | |
20 | + | else if ((assetId == base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu')) | |
21 | + | then $Tuple2(ethPathContracts, ethPathTokens) | |
22 | + | else throw("incorrect asset attached to payment") | |
11 | 23 | ||
12 | 24 | ||
13 | 25 | func getBalance (assetId) = match assetId { | |
23 | 35 | let pmt = i.payments[0] | |
24 | 36 | let asset1Amount = pmt.amount | |
25 | 37 | let assetId = value(pmt.assetId) | |
26 | - | let $ | |
27 | - | let pathContracts = $ | |
28 | - | let pathAssets = $ | |
38 | + | let $t017341784 = getPath(assetId) | |
39 | + | let pathContracts = $t017341784._1 | |
40 | + | let pathAssets = $t017341784._2 | |
29 | 41 | let balance2Before = getBalance(pathAssets[1]) | |
30 | 42 | if ((balance2Before == balance2Before)) | |
31 | 43 | then { |
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 | 6 | let btcPathTokens = [base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS', unit, base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] | |
7 | 7 | ||
8 | + | let usdtPathContracts = [Address(base58'3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1'), Address(base58'3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ')] | |
9 | + | ||
10 | + | let usdtPathTokens = [base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] | |
11 | + | ||
12 | + | let ethPathContracts = [Address(base58'3PNEC4YKqZiMMytFrYRVtpW2ujvi3aGXRPm'), Address(base58'3PEeJQRJT4v4XvSUBPmxhdWKz439nae7KtQ')] | |
13 | + | ||
14 | + | let ethPathTokens = [base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu', base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p', base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'] | |
15 | + | ||
8 | 16 | func getPath (assetId) = if ((assetId == base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS')) | |
9 | 17 | then $Tuple2(btcPathContracts, btcPathTokens) | |
10 | - | else throw("incorrect asset attached to payment") | |
18 | + | else if ((assetId == base58'34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ')) | |
19 | + | then $Tuple2(usdtPathContracts, usdtPathTokens) | |
20 | + | else if ((assetId == base58'474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu')) | |
21 | + | then $Tuple2(ethPathContracts, ethPathTokens) | |
22 | + | else throw("incorrect asset attached to payment") | |
11 | 23 | ||
12 | 24 | ||
13 | 25 | func getBalance (assetId) = match assetId { | |
14 | 26 | case x: Unit => | |
15 | 27 | wavesBalance(this).available | |
16 | 28 | case _ => | |
17 | 29 | assetBalance(this, value(assetId)) | |
18 | 30 | } | |
19 | 31 | ||
20 | 32 | ||
21 | 33 | @Callable(i) | |
22 | 34 | func buyEgg () = { | |
23 | 35 | let pmt = i.payments[0] | |
24 | 36 | let asset1Amount = pmt.amount | |
25 | 37 | let assetId = value(pmt.assetId) | |
26 | - | let $ | |
27 | - | let pathContracts = $ | |
28 | - | let pathAssets = $ | |
38 | + | let $t017341784 = getPath(assetId) | |
39 | + | let pathContracts = $t017341784._1 | |
40 | + | let pathAssets = $t017341784._2 | |
29 | 41 | let balance2Before = getBalance(pathAssets[1]) | |
30 | 42 | if ((balance2Before == balance2Before)) | |
31 | 43 | then { | |
32 | 44 | let i1 = invoke(pathContracts[0], "exchange", [1], [AttachedPayment(pathAssets[0], asset1Amount)]) | |
33 | 45 | if ((i1 == i1)) | |
34 | 46 | then { | |
35 | 47 | let balance2After = getBalance(pathAssets[1]) | |
36 | 48 | if ((balance2After == balance2After)) | |
37 | 49 | then { | |
38 | 50 | let asset2Amount = (balance2After - balance2Before) | |
39 | 51 | let balance3Before = getBalance(pathAssets[2]) | |
40 | 52 | if ((balance3Before == balance3Before)) | |
41 | 53 | then { | |
42 | 54 | let i2 = invoke(pathContracts[1], "exchange", [1], [AttachedPayment(pathAssets[1], asset2Amount)]) | |
43 | 55 | if ((i2 == i2)) | |
44 | 56 | then { | |
45 | 57 | let balance3After = getBalance(pathAssets[2]) | |
46 | 58 | if ((balance3After == balance3After)) | |
47 | 59 | then { | |
48 | 60 | let asset3Amount = (balance3After - balance3Before) | |
49 | 61 | [ScriptTransfer(i.caller, asset3Amount, pathAssets[2])] | |
50 | 62 | } | |
51 | 63 | else throw("Strict value is not equal to itself.") | |
52 | 64 | } | |
53 | 65 | else throw("Strict value is not equal to itself.") | |
54 | 66 | } | |
55 | 67 | else throw("Strict value is not equal to itself.") | |
56 | 68 | } | |
57 | 69 | else throw("Strict value is not equal to itself.") | |
58 | 70 | } | |
59 | 71 | else throw("Strict value is not equal to itself.") | |
60 | 72 | } | |
61 | 73 | else throw("Strict value is not equal to itself.") | |
62 | 74 | } | |
63 | 75 | ||
64 | 76 | ||
65 | 77 | @Verifier(tx) | |
66 | 78 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
67 | 79 |
github/deemru/w8io/3ef1775 43.56 ms ◑