tx · BEZTiQrfzFgWmMMUBTJx1F9vHdGbWRys3a6JHymYAy8J 3N1H8WuGGzDHEPQLJcTZ7SerBBPychSMs12: -0.01000000 Waves 2023.01.14 16:57 [2404709] smart account 3N1H8WuGGzDHEPQLJcTZ7SerBBPychSMs12 > SELF 0.00000000 Waves
{ "type": 13, "id": "BEZTiQrfzFgWmMMUBTJx1F9vHdGbWRys3a6JHymYAy8J", "fee": 1000000, "feeAssetId": null, "timestamp": 1673704702181, "version": 2, "chainId": 84, "sender": "3N1H8WuGGzDHEPQLJcTZ7SerBBPychSMs12", "senderPublicKey": "64Y9SYSmCggny95DgwVbnPHQnj4sKHxP5KndYB7LB5d7", "proofs": [ "UwY1FtjrDRL7Hc2WUQTvazwxWc1ZiqDXZcXQi4YUV66DhPz84uhvfcTuF3xvzVTswQDaTwbZz3DmvrbhDYqkFVg" ], "script": "base64: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", "height": 2404709, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: rQ53ZGhmen7qej7UUwDiQeLgWwfskkYtUgycmkWnVCC Next: none Diff:
Old | New | Differences | |
---|---|---|---|
49 | 49 | ||
50 | 50 | ||
51 | 51 | @Callable(i) | |
52 | - | func initiateAssets (incomingAsset, | |
52 | + | func initiateAssets (incomingAsset,outgoingAsset) = if ((tryGetString(incomingAssetKey(incomingAsset)) != "")) | |
53 | 53 | then throw("Asset already listed!") | |
54 | - | else { | |
55 | - | let issue = if (mintOutgoingAsset) | |
56 | - | then { | |
57 | - | let issue = Issue(incomingAssetName, incomingAssetDescription, 1, decimals, true) | |
58 | - | let assetId = calculateAssetId(issue) | |
59 | - | $Tuple2([issue], toBase58String(assetId)) | |
60 | - | } | |
61 | - | else $Tuple2(nil, outgoingAsset) | |
62 | - | (issue._1 ++ [StringEntry(incomingAssetKey(incomingAsset), issue._2), StringEntry(outgoingAssetKey(issue._2), incomingAsset), BooleanEntry(mintOutGoingAsset(issue._2), mintOutgoingAsset)]) | |
63 | - | } | |
54 | + | else [StringEntry(incomingAssetKey(incomingAsset), outgoingAsset), StringEntry(outgoingAssetKey(outgoingAsset), incomingAsset)] | |
64 | 55 | ||
65 | 56 | ||
66 | 57 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func tryGetStringExternal (address,key) = match getString(address, key) { | |
5 | 5 | case a: String => | |
6 | 6 | a | |
7 | 7 | case _ => | |
8 | 8 | "" | |
9 | 9 | } | |
10 | 10 | ||
11 | 11 | ||
12 | 12 | func tryGetIntegerExternal (address,key) = match getInteger(address, key) { | |
13 | 13 | case b: Int => | |
14 | 14 | b | |
15 | 15 | case _ => | |
16 | 16 | 0 | |
17 | 17 | } | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | func tryGetString (key) = tryGetStringExternal(this, key) | |
21 | 21 | ||
22 | 22 | ||
23 | 23 | func tryGetInteger (key) = tryGetIntegerExternal(this, key) | |
24 | 24 | ||
25 | 25 | ||
26 | 26 | func assetIdToString (assetId) = toBase58String(value(assetId)) | |
27 | 27 | ||
28 | 28 | ||
29 | 29 | func incomingAssetKey (incomingAsset) = ("incomingAsset_" + incomingAsset) | |
30 | 30 | ||
31 | 31 | ||
32 | 32 | func outgoingAssetKey (outgoingAsset) = ("outgoingAsset" + outgoingAsset) | |
33 | 33 | ||
34 | 34 | ||
35 | 35 | func mintOutGoingAsset (outgoingAsset) = ("mintOutGoingAsset_" + outgoingAsset) | |
36 | 36 | ||
37 | 37 | ||
38 | 38 | func validatePayment (payment) = { | |
39 | 39 | let pmt = value(payment) | |
40 | 40 | if (!(isDefined(pmt.assetId))) | |
41 | 41 | then throw("It needs to be an asset") | |
42 | 42 | else { | |
43 | 43 | let assetDetails = value(assetInfo(value(pmt.assetId))) | |
44 | 44 | if ((1 > pmt.amount)) | |
45 | 45 | then throw("You didnt attached a payment!") | |
46 | 46 | else assetIdToString(pmt.assetId) | |
47 | 47 | } | |
48 | 48 | } | |
49 | 49 | ||
50 | 50 | ||
51 | 51 | @Callable(i) | |
52 | - | func initiateAssets (incomingAsset, | |
52 | + | func initiateAssets (incomingAsset,outgoingAsset) = if ((tryGetString(incomingAssetKey(incomingAsset)) != "")) | |
53 | 53 | then throw("Asset already listed!") | |
54 | - | else { | |
55 | - | let issue = if (mintOutgoingAsset) | |
56 | - | then { | |
57 | - | let issue = Issue(incomingAssetName, incomingAssetDescription, 1, decimals, true) | |
58 | - | let assetId = calculateAssetId(issue) | |
59 | - | $Tuple2([issue], toBase58String(assetId)) | |
60 | - | } | |
61 | - | else $Tuple2(nil, outgoingAsset) | |
62 | - | (issue._1 ++ [StringEntry(incomingAssetKey(incomingAsset), issue._2), StringEntry(outgoingAssetKey(issue._2), incomingAsset), BooleanEntry(mintOutGoingAsset(issue._2), mintOutgoingAsset)]) | |
63 | - | } | |
54 | + | else [StringEntry(incomingAssetKey(incomingAsset), outgoingAsset), StringEntry(outgoingAssetKey(outgoingAsset), incomingAsset)] | |
64 | 55 | ||
65 | 56 | ||
66 | 57 | ||
67 | 58 | @Callable(i) | |
68 | 59 | func initiateOutGoingTx (destination) = { | |
69 | 60 | let payment = i.payments | |
70 | 61 | if ((size(payment) != 1)) | |
71 | 62 | then throw("Invalid payment added!") | |
72 | 63 | else if ((1 > payment[0].amount)) | |
73 | 64 | then throw("Invalid amount added!") | |
74 | 65 | else { | |
75 | 66 | let assetId = validatePayment(payment[0]) | |
76 | 67 | [StringEntry((("tx_" + toBase58String(i.transactionId)) + "_dest"), destination), StringEntry((("tx_" + toBase58String(i.transactionId)) + "_status"), "UNPROCESSED"), Burn(fromBase58String(assetId), payment[0].amount)] | |
77 | 68 | } | |
78 | 69 | } | |
79 | 70 | ||
80 | 71 | ||
81 | 72 | ||
82 | 73 | @Callable(i) | |
83 | 74 | func storeDataIncomingTx (txId,destination,assetId,amount) = if ((i.caller != this)) | |
84 | 75 | then throw("Dirty hacker") | |
85 | 76 | else [StringEntry((("tx_" + txId) + "_dest"), destination), StringEntry((("tx_" + txId) + "_status"), "UNPROCESSED"), StringEntry((("tx_" + txId) + "_assetId"), assetId), IntegerEntry((("tx_" + txId) + "_amount"), amount)] | |
86 | 77 | ||
87 | 78 | ||
88 | 79 | ||
89 | 80 | @Callable(i) | |
90 | 81 | func releaseIncomingTx (txId) = { | |
91 | 82 | let status = tryGetString((("tx_" + txId) + "_status")) | |
92 | 83 | if ((status == "")) | |
93 | 84 | then throw("No such txid found!") | |
94 | 85 | else if ((status == "PROCESSED")) | |
95 | 86 | then throw("Already processed!") | |
96 | 87 | else { | |
97 | 88 | let destination = tryGetString((("tx_" + txId) + "_dest")) | |
98 | 89 | let amount = tryGetInteger((("tx_" + txId) + "_amount")) | |
99 | 90 | let assetId = tryGetString((("tx_" + txId) + "_assetId")) | |
100 | 91 | [ScriptTransfer(addressFromStringValue(destination), amount, fromBase58String(assetId)), StringEntry((("tx_" + txId) + "_status"), "PROCESSED"), StringEntry((("tx_" + txId) + "_otherId"), toBase58String(i.transactionId))] | |
101 | 92 | } | |
102 | 93 | } | |
103 | 94 | ||
104 | 95 | ||
105 | 96 | ||
106 | 97 | @Callable(i) | |
107 | 98 | func finalizeOutgoingTx (txId,otherTxId) = if ((i.caller != this)) | |
108 | 99 | then throw("Dirty hacker!") | |
109 | 100 | else [StringEntry((("tx_" + txId) + "_status"), "PROCESSED"), StringEntry((("tx_" + txId) + "_otherId"), otherTxId)] | |
110 | 101 | ||
111 | 102 |
github/deemru/w8io/169f3d6 32.19 ms ◑