tx · CXby1ycB5GJ57S2AZNA1rW69gEXFiRmkqgbrEEAFetSv

3N7J6mMMkjVViBREz9y53JmcX7r7KZRXQpL:  -0.04000000 Waves

2022.04.20 01:15 [2016027] smart account 3N7J6mMMkjVViBREz9y53JmcX7r7KZRXQpL > SELF 0.00000000 Waves

{ "type": 13, "id": "CXby1ycB5GJ57S2AZNA1rW69gEXFiRmkqgbrEEAFetSv", "fee": 4000000, "feeAssetId": null, "timestamp": 1650406610032, "version": 2, "chainId": 84, "sender": "3N7J6mMMkjVViBREz9y53JmcX7r7KZRXQpL", "senderPublicKey": "G6aSmaqLJ4p7jzm7BnQcZuqa2NRRLVtzqdYNjYErnEZZ", "proofs": [ "2FyeD6ZKKk589DUa3NWis2TtxX5i88JDhsbWpNLN2t4tWre2vqELuKWz5XNdJAZ83BfgGewczpWzppE8CiXctFXV" ], "script": "base64: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", "height": 2016027, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H4q7CifcWtyMzAMdu8dgS8ViTYYxgB34zqoXw85vNbT3 Next: Ef3zYniofQUL7D4jzkYeGDLp8qEQohmi16uN8SiSq9fp Diff:
OldNewDifferences
6363 func getTransactionEntries (prefix,assetId,asset,owner,gen) = [StringEntry((prefix + "_assetId"), assetId), StringEntry((prefix + "_asset"), asset), StringEntry((prefix + "_owner"), owner), StringEntry((prefix + "_gen"), gen)]
6464
6565
66-func burnFold (accum,next) = {
67- let resolvedNext = match next {
68- case _: Unit =>
69- "unset"
70- case val: String =>
71- val
72- case _ =>
73- throw("Match error")
74- }
75- if ((resolvedNext == "unset"))
76- then accum
77- else {
78- let assetId = match getString(this, (resolvedNext + "_assetId")) {
79- case _: Unit =>
80- "unset"
81- case val: String =>
82- val
83- case _ =>
84- throw("Match error")
85- }
86- if ((assetId == "unset"))
87- then accum
88- else (accum ++ [Burn(fromBase58String(assetId), 1)])
89- }
90- }
91-
92-
9366 @Callable(i)
9467 func purchase (x,y,userText) = {
9568 let prefix = getDataKeyPrefix(x, y)
10780 else {
10881 let ownerId = toBase58String(i.caller.bytes)
10982 let transactionId = toBase58String(i.transactionId)
110- let $t028612956 = claimSquare(x, y, "1", ownerId, transactionId)
111- let asset = $t028612956._1
112- let assetId = $t028612956._2
113- let assetUrl = $t028612956._3
114- let dataKeyPrefix = $t028612956._4
83+ let $t023862481 = claimSquare(x, y, "1", ownerId, transactionId)
84+ let asset = $t023862481._1
85+ let assetId = $t023862481._2
86+ let assetUrl = $t023862481._3
87+ let dataKeyPrefix = $t023862481._4
11588 (getTransactionEntries(dataKeyPrefix, toBase58String(assetId), assetUrl, ownerId, "1") ++ [asset, StringEntry((ownerId + "_handle"), userText), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)])
11689 }
11790 }
127100 then throw("This can only be triggering internally")
128101 else {
129102 let transactionId = toBase58String(i.transactionId)
130- let $t034913587 = claimSquare(x, y, "1", holdings, transactionId)
131- let asset = $t034913587._1
132- let assetId = $t034913587._2
133- let assetUrl = $t034913587._3
134- let dataKeyPrefix = $t034913587._4
103+ let $t030163112 = claimSquare(x, y, "1", holdings, transactionId)
104+ let asset = $t030163112._1
105+ let assetId = $t030163112._2
106+ let assetUrl = $t030163112._3
107+ let dataKeyPrefix = $t030163112._4
135108 let assetIdStr = toBase58String(assetId)
136109 let res = invoke(holdingsAddress, addOwnerAndAmountFunc, [holdings, assetIdStr, 3], [AttachedPayment(unit, 0)])
137110 if ((res == res))
143116
144117
145118 @Callable(i)
146-func evolve (x,y,gen,ownerId,coordsToBurn) = {
119+func evolve (x,y,gen,ownerId) = {
147120 let callerId = toBase58String(i.caller.bytes)
148121 if ((callerId != holdings))
149122 then throw("This can only be triggering internally")
150123 else {
151124 let transactionId = toBase58String(i.transactionId)
152- let $t042654655 = claimSquare(x, y, gen, ownerId, transactionId)
153- let asset = $t042654655._1
154- let assetId = $t042654655._2
155- let assetUrl = $t042654655._3
156- let dataKeyPrefix = $t042654655._4
157- let burnTransactions = {
158- let $l = split(coordsToBurn, "|")
159- let $s = size($l)
160- let $acc0 = nil
161- func $f0_1 ($a,$i) = if (($i >= $s))
162- then $a
163- else burnFold($a, $l[$i])
164-
165- func $f0_2 ($a,$i) = if (($i >= $s))
166- then $a
167- else throw("List size exceeds 110")
168-
169- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110)
170- }
171- ((burnTransactions ++ getTransactionEntries(dataKeyPrefix, toBase58String(assetId), assetUrl, ownerId, gen)) ++ [asset, StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)])
125+ let $t037683863 = claimSquare(x, y, gen, ownerId, transactionId)
126+ let asset = $t037683863._1
127+ let assetId = $t037683863._2
128+ let assetUrl = $t037683863._3
129+ let dataKeyPrefix = $t037683863._4
130+ (getTransactionEntries(dataKeyPrefix, toBase58String(assetId), assetUrl, ownerId, gen) ++ [asset, StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)])
172131 }
173132 }
174133
231190 then throw("This can only be triggering internally")
232191 else {
233192 let transactionId = toBase58String(i.transactionId)
234- let $t066346739 = claimSquare(x, y, "1", desinationAddress, transactionId)
235- let asset = $t066346739._1
236- let assetId = $t066346739._2
237- let assetUrl = $t066346739._3
238- let dataKeyPrefix = $t066346739._4
193+ let $t057445849 = claimSquare(x, y, "1", desinationAddress, transactionId)
194+ let asset = $t057445849._1
195+ let assetId = $t057445849._2
196+ let assetUrl = $t057445849._3
197+ let dataKeyPrefix = $t057445849._4
239198 let assetIdStr = toBase58String(assetId)
240199 (getTransactionEntries(dataKeyPrefix, assetIdStr, assetUrl, desinationAddress, "1") ++ [asset, StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)])
241200 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let COLS = 1024
55
66 let ROWS = 1024
77
88 let nftDomain = "https://nft.gridgang.io/"
99
1010 let addOwnerAndAmountFunc = "addOwnerAndAmount"
1111
1212 let DEBUG = true
1313
1414 let minForSaleWavlets = 100000000
1515
1616 let minPurchasePrice = 1000000
1717
1818 let dapp = "3N7J6mMMkjVViBREz9y53JmcX7r7KZRXQpL"
1919
2020 let dappAddress = Address(fromBase58String(dapp))
2121
2222 let holdingsPublicKey = "AyAwWbMPM7a4VYkn1bhEBftC5WZgfvUXgrYDe98mvLsv"
2323
2424 let holdings = "3MwPsLy9F1mUQrdP37sCAKvHuE5HvPE674Y"
2525
2626 let holdingsAddress = Address(fromBase58String(holdings))
2727
2828 func getAssetName (x,y) = ((x + ",") + y)
2929
3030
3131 func getDataKeyPrefix (x,y) = getAssetName(x, y)
3232
3333
3434 func getXYGenFromName (name) = {
3535 let parts = split(name, ",")
3636 let tuple = $Tuple2(parts[0], parts[1])
3737 tuple
3838 }
3939
4040
4141 func getDataKeyPrefixFromAssetName (name) = {
4242 let $t0906941 = getXYGenFromName(name)
4343 let x = $t0906941._1
4444 let y = $t0906941._2
4545 let prefix = getDataKeyPrefix(x, y)
4646 prefix
4747 }
4848
4949
5050 func claimSquare (x,y,gen,ownerId,transactionId) = {
5151 let resolvedXStr = x
5252 let resolvedYStr = y
5353 let resolvedGenStr = gen
5454 let assetName = getAssetName(resolvedXStr, resolvedYStr)
5555 let assetUrl = ((nftDomain + transactionId) + ".png")
5656 let asset = Issue(assetName, assetUrl, 1, 0, false)
5757 let assetId = calculateAssetId(asset)
5858 let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr)
5959 $Tuple4(asset, assetId, assetUrl, dataKeyPrefix)
6060 }
6161
6262
6363 func getTransactionEntries (prefix,assetId,asset,owner,gen) = [StringEntry((prefix + "_assetId"), assetId), StringEntry((prefix + "_asset"), asset), StringEntry((prefix + "_owner"), owner), StringEntry((prefix + "_gen"), gen)]
6464
6565
66-func burnFold (accum,next) = {
67- let resolvedNext = match next {
68- case _: Unit =>
69- "unset"
70- case val: String =>
71- val
72- case _ =>
73- throw("Match error")
74- }
75- if ((resolvedNext == "unset"))
76- then accum
77- else {
78- let assetId = match getString(this, (resolvedNext + "_assetId")) {
79- case _: Unit =>
80- "unset"
81- case val: String =>
82- val
83- case _ =>
84- throw("Match error")
85- }
86- if ((assetId == "unset"))
87- then accum
88- else (accum ++ [Burn(fromBase58String(assetId), 1)])
89- }
90- }
91-
92-
9366 @Callable(i)
9467 func purchase (x,y,userText) = {
9568 let prefix = getDataKeyPrefix(x, y)
9669 let paymentAmount = valueOrElse(i.payments[0].amount, 0)
9770 let existingAssetId = match getString(this, (prefix + "_assetId")) {
9871 case _: Unit =>
9972 "unset"
10073 case err: String =>
10174 throw("This square has already been purchased")
10275 case _ =>
10376 throw("Match error")
10477 }
10578 if ((minPurchasePrice > paymentAmount))
10679 then throw((("You need to send at least " + toString(minPurchasePrice)) + "WAVLETS to purchase a square"))
10780 else {
10881 let ownerId = toBase58String(i.caller.bytes)
10982 let transactionId = toBase58String(i.transactionId)
110- let $t028612956 = claimSquare(x, y, "1", ownerId, transactionId)
111- let asset = $t028612956._1
112- let assetId = $t028612956._2
113- let assetUrl = $t028612956._3
114- let dataKeyPrefix = $t028612956._4
83+ let $t023862481 = claimSquare(x, y, "1", ownerId, transactionId)
84+ let asset = $t023862481._1
85+ let assetId = $t023862481._2
86+ let assetUrl = $t023862481._3
87+ let dataKeyPrefix = $t023862481._4
11588 (getTransactionEntries(dataKeyPrefix, toBase58String(assetId), assetUrl, ownerId, "1") ++ [asset, StringEntry((ownerId + "_handle"), userText), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)])
11689 }
11790 }
11891
11992
12093
12194 @Callable(i)
12295 func autoBuy (x,y) = {
12396 let callerId = toBase58String(i.caller.bytes)
12497 if (if ((callerId != holdings))
12598 then (callerId != dapp)
12699 else false)
127100 then throw("This can only be triggering internally")
128101 else {
129102 let transactionId = toBase58String(i.transactionId)
130- let $t034913587 = claimSquare(x, y, "1", holdings, transactionId)
131- let asset = $t034913587._1
132- let assetId = $t034913587._2
133- let assetUrl = $t034913587._3
134- let dataKeyPrefix = $t034913587._4
103+ let $t030163112 = claimSquare(x, y, "1", holdings, transactionId)
104+ let asset = $t030163112._1
105+ let assetId = $t030163112._2
106+ let assetUrl = $t030163112._3
107+ let dataKeyPrefix = $t030163112._4
135108 let assetIdStr = toBase58String(assetId)
136109 let res = invoke(holdingsAddress, addOwnerAndAmountFunc, [holdings, assetIdStr, 3], [AttachedPayment(unit, 0)])
137110 if ((res == res))
138111 then (getTransactionEntries(dataKeyPrefix, assetIdStr, assetUrl, holdings, "1") ++ [asset, StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(holdingsAddress, 1, assetId)])
139112 else throw("Strict value is not equal to itself.")
140113 }
141114 }
142115
143116
144117
145118 @Callable(i)
146-func evolve (x,y,gen,ownerId,coordsToBurn) = {
119+func evolve (x,y,gen,ownerId) = {
147120 let callerId = toBase58String(i.caller.bytes)
148121 if ((callerId != holdings))
149122 then throw("This can only be triggering internally")
150123 else {
151124 let transactionId = toBase58String(i.transactionId)
152- let $t042654655 = claimSquare(x, y, gen, ownerId, transactionId)
153- let asset = $t042654655._1
154- let assetId = $t042654655._2
155- let assetUrl = $t042654655._3
156- let dataKeyPrefix = $t042654655._4
157- let burnTransactions = {
158- let $l = split(coordsToBurn, "|")
159- let $s = size($l)
160- let $acc0 = nil
161- func $f0_1 ($a,$i) = if (($i >= $s))
162- then $a
163- else burnFold($a, $l[$i])
164-
165- func $f0_2 ($a,$i) = if (($i >= $s))
166- then $a
167- else throw("List size exceeds 110")
168-
169- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100), 101), 102), 103), 104), 105), 106), 107), 108), 109), 110)
170- }
171- ((burnTransactions ++ getTransactionEntries(dataKeyPrefix, toBase58String(assetId), assetUrl, ownerId, gen)) ++ [asset, StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)])
125+ let $t037683863 = claimSquare(x, y, gen, ownerId, transactionId)
126+ let asset = $t037683863._1
127+ let assetId = $t037683863._2
128+ let assetUrl = $t037683863._3
129+ let dataKeyPrefix = $t037683863._4
130+ (getTransactionEntries(dataKeyPrefix, toBase58String(assetId), assetUrl, ownerId, gen) ++ [asset, StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)])
172131 }
173132 }
174133
175134
176135
177136 @Callable(i)
178137 func putForSale (assetId,amount) = {
179138 let callerId = toBase58String(i.caller.bytes)
180139 let assetData = match assetInfo(fromBase58String(assetId)) {
181140 case ass: Asset =>
182141 ass
183142 case _ =>
184143 throw("Asset not found")
185144 }
186145 let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name)
187146 let ownerId = match getString(this, (dataPrefix + "_owner")) {
188147 case s: String =>
189148 s
190149 case _ =>
191150 throw("Owner not found in data")
192151 }
193152 if ((minForSaleWavlets > amount))
194153 then throw("Amount needs to be more than 1 wave")
195154 else if (if ((callerId != ownerId))
196155 then (callerId != holdings)
197156 else false)
198157 then throw("You are not able to put this asset up for sale")
199158 else {
200159 let res = invoke(holdingsAddress, addOwnerAndAmountFunc, [callerId, assetId, amount], [AttachedPayment(unit, 0)])
201160 if ((res == res))
202161 then [ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
203162 else throw("Strict value is not equal to itself.")
204163 }
205164 }
206165
207166
208167
209168 @Callable(i)
210169 func finalizeSale (assetId,ownerId,userText) = {
211170 let callerId = toBase58String(i.caller.bytes)
212171 if ((callerId != holdings))
213172 then throw("This can only be triggering internally")
214173 else {
215174 let prefix = match assetInfo(fromBase58String(assetId)) {
216175 case asset: Asset =>
217176 asset.name
218177 case _ =>
219178 throw("Can't find asset")
220179 }
221180 [StringEntry((prefix + "_owner"), ownerId), StringEntry((ownerId + "_handle"), userText)]
222181 }
223182 }
224183
225184
226185
227186 @Callable(i)
228187 func adminPromotionPurchase (x,y,desinationAddress) = {
229188 let callerId = toBase58String(i.caller.bytes)
230189 if ((callerId != holdings))
231190 then throw("This can only be triggering internally")
232191 else {
233192 let transactionId = toBase58String(i.transactionId)
234- let $t066346739 = claimSquare(x, y, "1", desinationAddress, transactionId)
235- let asset = $t066346739._1
236- let assetId = $t066346739._2
237- let assetUrl = $t066346739._3
238- let dataKeyPrefix = $t066346739._4
193+ let $t057445849 = claimSquare(x, y, "1", desinationAddress, transactionId)
194+ let asset = $t057445849._1
195+ let assetId = $t057445849._2
196+ let assetUrl = $t057445849._3
197+ let dataKeyPrefix = $t057445849._4
239198 let assetIdStr = toBase58String(assetId)
240199 (getTransactionEntries(dataKeyPrefix, assetIdStr, assetUrl, desinationAddress, "1") ++ [asset, StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)])
241200 }
242201 }
243202
244203
245204
246205 @Callable(i)
247206 func adminSetHandle (ownerId,handle) = {
248207 let callerId = toBase58String(i.caller.bytes)
249208 if ((callerId != holdings))
250209 then throw("This can only be triggering internally")
251210 else [StringEntry((ownerId + "_handle"), handle)]
252211 }
253212
254213
255214 @Verifier(tx)
256215 func verify () = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
257216 then true
258217 else (addressFromPublicKey(tx.senderPublicKey) == holdingsAddress))
259218 then true
260219 else (addressFromPublicKey(tx.senderPublicKey) == dappAddress)
261220

github/deemru/w8io/169f3d6 
43.53 ms