tx · 7gdnjPCsQrKLF4xCH1Asw3sjN29Qn1qGVw3mRC79UPT3 3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu: -0.04000000 Waves 2022.02.09 18:18 [1916265] smart account 3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu > SELF 0.00000000 Waves
{ "type": 13, "id": "7gdnjPCsQrKLF4xCH1Asw3sjN29Qn1qGVw3mRC79UPT3", "fee": 4000000, "feeAssetId": null, "timestamp": 1644419923839, "version": 2, "chainId": 84, "sender": "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu", "senderPublicKey": "D4v2S9mjah7eEEmuQVBNd4WipC3scs8V4PjuDBweWatE", "proofs": [ "4mmEYTsGwAx5FsmJx88R7Dx6q5v2Yvfz1eztJeWAuJWpiLxjd3pHpLAgzZxmJaHv6wPXBZ25RydH4bGckS6RkZNp" ], "script": "base64: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", "height": 1916265, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3TpcSunPqyBTKmsdcGj4XJF752nm1W1jq8hYk5Gfp3vr Next: HKxVZe2Lya1SsV3tyK97is6xoTXwZHj81BVf7JdJ1yKK Diff:
Old | New | Differences | |
---|---|---|---|
98 | 98 | ||
99 | 99 | ||
100 | 100 | @Callable(i) | |
101 | - | func putForSale (assetId,amount) = | |
102 | - | | |
103 | - | | |
104 | - | | |
105 | - | ||
106 | - | ||
107 | - | | |
108 | - | | |
109 | - | | |
110 | - | ||
111 | - | | |
112 | - | ||
113 | - | ||
114 | - | | |
115 | - | | |
116 | - | | |
117 | - | | |
118 | - | if (if ((callerId != ownerId)) | |
101 | + | func putForSale (assetId,amount) = { | |
102 | + | let callerId = toBase58String(i.caller.bytes) | |
103 | + | let assetData = match assetInfo(fromBase58String(assetId)) { | |
104 | + | case ass: Asset => | |
105 | + | ass | |
106 | + | case _ => | |
107 | + | throw("Asset not found") | |
108 | + | } | |
109 | + | let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name) | |
110 | + | let ownerId = match getString(this, (dataPrefix + "_owner")) { | |
111 | + | case s: String => | |
112 | + | s | |
113 | + | case _ => | |
114 | + | throw("Owner not found in data") | |
115 | + | } | |
116 | + | if ((1 > amount)) | |
117 | + | then throw("Original owner not found ") | |
118 | + | else if (if ((callerId != ownerId)) | |
119 | 119 | then (callerId != holdings) | |
120 | 120 | else false) | |
121 | 121 | then throw("You are not able to put this asset up for sale") | |
125 | 125 | then [StringEntry((("sale_" + assetId) + "_originalOwner"), callerId), StringEntry((("sale_" + assetId) + "_amount"), toString(amount)), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))] | |
126 | 126 | else throw("Strict value is not equal to itself.") | |
127 | 127 | } | |
128 | - | ||
128 | + | } | |
129 | 129 | ||
130 | 130 | ||
131 | 131 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let COLS = 1024 | |
5 | 5 | ||
6 | 6 | let ROWS = 1024 | |
7 | 7 | ||
8 | 8 | let nftDomain = "https://nft.gridgang.io/" | |
9 | 9 | ||
10 | 10 | let DEBUG = true | |
11 | 11 | ||
12 | 12 | let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r" | |
13 | 13 | ||
14 | 14 | let holdingsAddress = Address(fromBase58String(holdings)) | |
15 | 15 | ||
16 | 16 | func getAssetName (x,y) = { | |
17 | 17 | let name = ((x + ",") + y) | |
18 | 18 | name | |
19 | 19 | } | |
20 | 20 | ||
21 | 21 | ||
22 | 22 | func getDataKeyPrefix (x,y,gen) = { | |
23 | 23 | let name = getAssetName(x, y) | |
24 | 24 | let prefix = ((name + ",") + gen) | |
25 | 25 | prefix | |
26 | 26 | } | |
27 | 27 | ||
28 | 28 | ||
29 | 29 | func getXYGenFromName (name) = { | |
30 | 30 | let parts = split(name, ",") | |
31 | 31 | let tuple = $Tuple3(parts[0], parts[1], parts[2]) | |
32 | 32 | tuple | |
33 | 33 | } | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | func getDataKeyPrefixFromAssetName (name) = { | |
37 | 37 | let $t0683723 = getXYGenFromName(name) | |
38 | 38 | let x = $t0683723._1 | |
39 | 39 | let y = $t0683723._2 | |
40 | 40 | let gen = $t0683723._3 | |
41 | 41 | let prefix = getDataKeyPrefix(x, y, gen) | |
42 | 42 | prefix | |
43 | 43 | } | |
44 | 44 | ||
45 | 45 | ||
46 | 46 | func claimSquare (x,y,gen,ownerId,transactionId) = { | |
47 | 47 | let resolvedXStr = x | |
48 | 48 | let resolvedYStr = y | |
49 | 49 | let resolvedGenStr = gen | |
50 | 50 | let assetName = getAssetName(resolvedXStr, resolvedYStr) | |
51 | 51 | let assetUrl = ((nftDomain + transactionId) + ".png") | |
52 | 52 | let asset = Issue(((assetName + ",") + resolvedGenStr), assetUrl, 1, 0, false) | |
53 | 53 | let assetId = calculateAssetId(asset) | |
54 | 54 | let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr, gen) | |
55 | 55 | $Tuple4(asset, assetId, assetUrl, dataKeyPrefix) | |
56 | 56 | } | |
57 | 57 | ||
58 | 58 | ||
59 | 59 | @Callable(i) | |
60 | 60 | func purchase (x,y) = { | |
61 | 61 | let ownerId = toBase58String(i.caller.bytes) | |
62 | 62 | let transactionId = toBase58String(i.transactionId) | |
63 | 63 | let $t015101605 = claimSquare(x, y, "1", ownerId, transactionId) | |
64 | 64 | let asset = $t015101605._1 | |
65 | 65 | let assetId = $t015101605._2 | |
66 | 66 | let assetUrl = $t015101605._3 | |
67 | 67 | let dataKeyPrefix = $t015101605._4 | |
68 | 68 | [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)] | |
69 | 69 | } | |
70 | 70 | ||
71 | 71 | ||
72 | 72 | ||
73 | 73 | @Callable(i) | |
74 | 74 | func autoBuy (x,y) = { | |
75 | 75 | let transactionId = toBase58String(i.transactionId) | |
76 | 76 | let $t020472143 = claimSquare(x, y, "1", holdings, transactionId) | |
77 | 77 | let asset = $t020472143._1 | |
78 | 78 | let assetId = $t020472143._2 | |
79 | 79 | let assetUrl = $t020472143._3 | |
80 | 80 | let dataKeyPrefix = $t020472143._4 | |
81 | 81 | let assetIdStr = toBase58String(assetId) | |
82 | 82 | [asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), holdings), StringEntry((("sale_" + assetIdStr) + "_originalOwner"), holdings), IntegerEntry((("sale_" + assetIdStr) + "_amount"), 2), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(holdingsAddress, 1, assetId)] | |
83 | 83 | } | |
84 | 84 | ||
85 | 85 | ||
86 | 86 | ||
87 | 87 | @Callable(i) | |
88 | 88 | func evolve (x,y,gen,ownerId) = { | |
89 | 89 | let transactionId = toBase58String(i.transactionId) | |
90 | 90 | let $t028732968 = claimSquare(x, y, gen, ownerId, transactionId) | |
91 | 91 | let asset = $t028732968._1 | |
92 | 92 | let assetId = $t028732968._2 | |
93 | 93 | let assetUrl = $t028732968._3 | |
94 | 94 | let dataKeyPrefix = $t028732968._4 | |
95 | 95 | [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)] | |
96 | 96 | } | |
97 | 97 | ||
98 | 98 | ||
99 | 99 | ||
100 | 100 | @Callable(i) | |
101 | - | func putForSale (assetId,amount) = | |
102 | - | | |
103 | - | | |
104 | - | | |
105 | - | ||
106 | - | ||
107 | - | | |
108 | - | | |
109 | - | | |
110 | - | ||
111 | - | | |
112 | - | ||
113 | - | ||
114 | - | | |
115 | - | | |
116 | - | | |
117 | - | | |
118 | - | if (if ((callerId != ownerId)) | |
101 | + | func putForSale (assetId,amount) = { | |
102 | + | let callerId = toBase58String(i.caller.bytes) | |
103 | + | let assetData = match assetInfo(fromBase58String(assetId)) { | |
104 | + | case ass: Asset => | |
105 | + | ass | |
106 | + | case _ => | |
107 | + | throw("Asset not found") | |
108 | + | } | |
109 | + | let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name) | |
110 | + | let ownerId = match getString(this, (dataPrefix + "_owner")) { | |
111 | + | case s: String => | |
112 | + | s | |
113 | + | case _ => | |
114 | + | throw("Owner not found in data") | |
115 | + | } | |
116 | + | if ((1 > amount)) | |
117 | + | then throw("Original owner not found ") | |
118 | + | else if (if ((callerId != ownerId)) | |
119 | 119 | then (callerId != holdings) | |
120 | 120 | else false) | |
121 | 121 | then throw("You are not able to put this asset up for sale") | |
122 | 122 | else { | |
123 | 123 | let res = invoke(holdingsAddress, "addOwnerAndAmount", [callerId, assetId, amount], [AttachedPayment(unit, 0)]) | |
124 | 124 | if ((res == res)) | |
125 | 125 | then [StringEntry((("sale_" + assetId) + "_originalOwner"), callerId), StringEntry((("sale_" + assetId) + "_amount"), toString(amount)), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))] | |
126 | 126 | else throw("Strict value is not equal to itself.") | |
127 | 127 | } | |
128 | - | ||
128 | + | } | |
129 | 129 | ||
130 | 130 | ||
131 | 131 | @Verifier(tx) | |
132 | 132 | func verify () = true | |
133 | 133 |
github/deemru/w8io/169f3d6 41.21 ms ◑![]()