tx · 4mvWvymTqoHxBdcMM68zHzuvSooTstRy46wThVAxqjWk

3MvUyzQxNGmwExAcKdhojfKem3XwkXdkByH:  -0.04000000 Waves

2022.04.17 04:51 [2011902] smart account 3MvUyzQxNGmwExAcKdhojfKem3XwkXdkByH > SELF 0.00000000 Waves

{ "type": 13, "id": "4mvWvymTqoHxBdcMM68zHzuvSooTstRy46wThVAxqjWk", "fee": 4000000, "feeAssetId": null, "timestamp": 1650160357902, "version": 2, "chainId": 84, "sender": "3MvUyzQxNGmwExAcKdhojfKem3XwkXdkByH", "senderPublicKey": "G2whNsDNG7LDDcHiMuFrtDiNuudzqif5tAopWE1Y7oAQ", "proofs": [ "53eRb17RBwEw8dPSX5sK7kdM6Dvj3BAWUTTqujVwChdjSky8z6fQbWmyGeaiLzuewjp5LmDYXtD2DxihpsrWCTyD" ], "script": "base64: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NQAAAAJfMQQAAAAHYXNzZXRJZAgFAAAACyR0MDU5MzA2MDM1AAAAAl8yBAAAAAhhc3NldFVybAgFAAAACyR0MDU5MzA2MDM1AAAAAl8zBAAAAA1kYXRhS2V5UHJlZml4CAUAAAALJHQwNTkzMDYwMzUAAAACXzQEAAAACmFzc2V0SWRTdHIJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACBQAAAAVhc3NldAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADWRhdGFLZXlQcmVmaXgCAAAACF9hc3NldElkBQAAAAphc3NldElkU3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAANZGF0YUtleVByZWZpeAIAAAAGX2Fzc2V0BQAAAAhhc3NldFVybAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADWRhdGFLZXlQcmVmaXgCAAAABl9vd25lcgUAAAARZGVzaW5hdGlvbkFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANdHJhbnNhY3Rpb25JZAUAAAANZGF0YUtleVByZWZpeAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAARZGVzaW5hdGlvbkFkZHJlc3MAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAA5hZG1pblNldEhhbmRsZQAAAAIAAAAHb3duZXJJZAAAAAZoYW5kbGUEAAAACGNhbGxlcklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAACIT0AAAACBQAAAAhjYWxsZXJJZAUAAAAIaG9sZGluZ3MJAAACAAAAAQIAAAAmVGhpcyBjYW4gb25seSBiZSB0cmlnZ2VyaW5nIGludGVybmFsbHkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAAdvd25lcklkAgAAAAdfaGFuZGxlBQAAAAZoYW5kbGUFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAADAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkGCQAAAAAAAAIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkFAAAAD2hvbGRpbmdzQWRkcmVzcwYJAAAAAAAAAgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQUAAAALZGFwcEFkZHJlc3M43NA+", "height": 2011902, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4Z4tDNz7xqFn6L1C7Vb22gUtsBgAzYJogPQ3FN6ySBuy Next: none Diff:
OldNewDifferences
121121
122122
123123 @Callable(i)
124-func promotionPurchase (x,y,desinationAddress) = {
125- let callerId = toBase58String(i.caller.bytes)
126- if ((callerId != holdings))
127- then throw("This can only be triggering internally")
128- else {
129- let transactionId = toBase58String(i.transactionId)
130- let $t038073912 = claimSquare(x, y, "1", desinationAddress, transactionId)
131- let asset = $t038073912._1
132- let assetId = $t038073912._2
133- let assetUrl = $t038073912._3
134- let dataKeyPrefix = $t038073912._4
135- let assetIdStr = toBase58String(assetId)
136-[asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), desinationAddress), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)]
137- }
138- }
139-
140-
141-
142-@Callable(i)
143124 func evolve (x,y,gen,ownerId) = {
144125 let callerId = toBase58String(i.caller.bytes)
145126 if ((callerId != holdings))
146127 then throw("This can only be triggering internally")
147128 else {
148129 let transactionId = toBase58String(i.transactionId)
149- let $t046384733 = claimSquare(x, y, gen, ownerId, transactionId)
150- let asset = $t046384733._1
151- let assetId = $t046384733._2
152- let assetUrl = $t046384733._3
153- let dataKeyPrefix = $t046384733._4
130+ let $t038623957 = claimSquare(x, y, gen, ownerId, transactionId)
131+ let asset = $t038623957._1
132+ let assetId = $t038623957._2
133+ let assetUrl = $t038623957._3
134+ let dataKeyPrefix = $t038623957._4
154135 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)]
155136 }
156137 }
206187 }
207188
208189
190+
191+@Callable(i)
192+func adminPromotionPurchase (x,y,desinationAddress) = {
193+ let callerId = toBase58String(i.caller.bytes)
194+ if ((callerId != holdings))
195+ then throw("This can only be triggering internally")
196+ else {
197+ let transactionId = toBase58String(i.transactionId)
198+ let $t059306035 = claimSquare(x, y, "1", desinationAddress, transactionId)
199+ let asset = $t059306035._1
200+ let assetId = $t059306035._2
201+ let assetUrl = $t059306035._3
202+ let dataKeyPrefix = $t059306035._4
203+ let assetIdStr = toBase58String(assetId)
204+[asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), desinationAddress), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)]
205+ }
206+ }
207+
208+
209+
210+@Callable(i)
211+func adminSetHandle (ownerId,handle) = {
212+ let callerId = toBase58String(i.caller.bytes)
213+ if ((callerId != holdings))
214+ then throw("This can only be triggering internally")
215+ else [StringEntry((ownerId + "_handle"), handle)]
216+ }
217+
218+
209219 @Verifier(tx)
210220 func verify () = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
211221 then true
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 = "3MvUyzQxNGmwExAcKdhojfKem3XwkXdkByH"
1919
2020 let dappAddress = Address(fromBase58String(dapp))
2121
2222 let holdingsPublicKey = "2eixqLDKJ5kjuY8imH4HG2FBJduT6QsjxLLch1iaAadx"
2323
2424 let holdings = "3MpFtcdhaB66NB38tW2APSiaVqaAoWoPvRJ"
2525
2626 let holdingsAddress = Address(fromBase58String(holdings))
2727
2828 func getAssetName (x,y) = {
2929 let name = ((x + ",") + y)
3030 name
3131 }
3232
3333
3434 func getDataKeyPrefix (x,y,gen) = {
3535 let name = getAssetName(x, y)
3636 let prefix = ((name + ",") + gen)
3737 prefix
3838 }
3939
4040
4141 func getXYGenFromName (name) = {
4242 let parts = split(name, ",")
4343 let tuple = $Tuple3(parts[0], parts[1], parts[2])
4444 tuple
4545 }
4646
4747
4848 func getDataKeyPrefixFromAssetName (name) = {
4949 let $t010011041 = getXYGenFromName(name)
5050 let x = $t010011041._1
5151 let y = $t010011041._2
5252 let gen = $t010011041._3
5353 let prefix = getDataKeyPrefix(x, y, gen)
5454 prefix
5555 }
5656
5757
5858 func claimSquare (x,y,gen,ownerId,transactionId) = {
5959 let resolvedXStr = x
6060 let resolvedYStr = y
6161 let resolvedGenStr = gen
6262 let assetName = getAssetName(resolvedXStr, resolvedYStr)
6363 let assetUrl = ((nftDomain + transactionId) + ".png")
6464 let asset = Issue(((assetName + ",") + resolvedGenStr), assetUrl, 1, 0, false)
6565 let assetId = calculateAssetId(asset)
6666 let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr, gen)
6767 $Tuple4(asset, assetId, assetUrl, dataKeyPrefix)
6868 }
6969
7070
7171 @Callable(i)
7272 func purchase (x,y,userText) = {
7373 let prefix = getDataKeyPrefix(x, y, "1")
7474 let paymentAmount = valueOrElse(i.payments[0].amount, 0)
7575 let existingAssetId = match getString(this, (prefix + "_assetId")) {
7676 case _: Unit =>
7777 "unset"
7878 case err: String =>
7979 throw("This square has already been purchased")
8080 case _ =>
8181 throw("Match error")
8282 }
8383 if ((minPurchasePrice > paymentAmount))
8484 then throw((("You need to send at least " + toString(minPurchasePrice)) + "WAVLETS to purchase a square"))
8585 else {
8686 let ownerId = toBase58String(i.caller.bytes)
8787 let transactionId = toBase58String(i.transactionId)
8888 let $t022332328 = claimSquare(x, y, "1", ownerId, transactionId)
8989 let asset = $t022332328._1
9090 let assetId = $t022332328._2
9191 let assetUrl = $t022332328._3
9292 let dataKeyPrefix = $t022332328._4
9393 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry((ownerId + "_handle"), userText), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
9494 }
9595 }
9696
9797
9898
9999 @Callable(i)
100100 func autoBuy (x,y) = {
101101 let callerId = toBase58String(i.caller.bytes)
102102 if (if ((callerId != holdings))
103103 then (callerId != dapp)
104104 else false)
105105 then throw("This can only be triggering internally")
106106 else {
107107 let transactionId = toBase58String(i.transactionId)
108108 let $t029553051 = claimSquare(x, y, "1", holdings, transactionId)
109109 let asset = $t029553051._1
110110 let assetId = $t029553051._2
111111 let assetUrl = $t029553051._3
112112 let dataKeyPrefix = $t029553051._4
113113 let assetIdStr = toBase58String(assetId)
114114 let res = invoke(holdingsAddress, addOwnerAndAmountFunc, [holdings, assetIdStr, 3], [AttachedPayment(unit, 0)])
115115 if ((res == res))
116116 then [asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), holdings), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(holdingsAddress, 1, assetId)]
117117 else throw("Strict value is not equal to itself.")
118118 }
119119 }
120120
121121
122122
123123 @Callable(i)
124-func promotionPurchase (x,y,desinationAddress) = {
125- let callerId = toBase58String(i.caller.bytes)
126- if ((callerId != holdings))
127- then throw("This can only be triggering internally")
128- else {
129- let transactionId = toBase58String(i.transactionId)
130- let $t038073912 = claimSquare(x, y, "1", desinationAddress, transactionId)
131- let asset = $t038073912._1
132- let assetId = $t038073912._2
133- let assetUrl = $t038073912._3
134- let dataKeyPrefix = $t038073912._4
135- let assetIdStr = toBase58String(assetId)
136-[asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), desinationAddress), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)]
137- }
138- }
139-
140-
141-
142-@Callable(i)
143124 func evolve (x,y,gen,ownerId) = {
144125 let callerId = toBase58String(i.caller.bytes)
145126 if ((callerId != holdings))
146127 then throw("This can only be triggering internally")
147128 else {
148129 let transactionId = toBase58String(i.transactionId)
149- let $t046384733 = claimSquare(x, y, gen, ownerId, transactionId)
150- let asset = $t046384733._1
151- let assetId = $t046384733._2
152- let assetUrl = $t046384733._3
153- let dataKeyPrefix = $t046384733._4
130+ let $t038623957 = claimSquare(x, y, gen, ownerId, transactionId)
131+ let asset = $t038623957._1
132+ let assetId = $t038623957._2
133+ let assetUrl = $t038623957._3
134+ let dataKeyPrefix = $t038623957._4
154135 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)]
155136 }
156137 }
157138
158139
159140
160141 @Callable(i)
161142 func putForSale (assetId,amount) = {
162143 let callerId = toBase58String(i.caller.bytes)
163144 let assetData = match assetInfo(fromBase58String(assetId)) {
164145 case ass: Asset =>
165146 ass
166147 case _ =>
167148 throw("Asset not found")
168149 }
169150 let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name)
170151 let ownerId = match getString(this, (dataPrefix + "_owner")) {
171152 case s: String =>
172153 s
173154 case _ =>
174155 throw("Owner not found in data")
175156 }
176157 if ((minForSaleWavlets > amount))
177158 then throw("Amount needs to be more than 1 wave")
178159 else if (if ((callerId != ownerId))
179160 then (callerId != holdings)
180161 else false)
181162 then throw("You are not able to put this asset up for sale")
182163 else {
183164 let res = invoke(holdingsAddress, addOwnerAndAmountFunc, [callerId, assetId, amount], [AttachedPayment(unit, 0)])
184165 if ((res == res))
185166 then [ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
186167 else throw("Strict value is not equal to itself.")
187168 }
188169 }
189170
190171
191172
192173 @Callable(i)
193174 func finalizeSale (assetId,ownerId,userText) = {
194175 let callerId = toBase58String(i.caller.bytes)
195176 if ((callerId != holdings))
196177 then throw("This can only be triggering internally")
197178 else {
198179 let prefix = match assetInfo(fromBase58String(assetId)) {
199180 case asset: Asset =>
200181 asset.name
201182 case _ =>
202183 throw("Can't find asset")
203184 }
204185 [StringEntry((prefix + "_owner"), ownerId), StringEntry((ownerId + "_handle"), userText)]
205186 }
206187 }
207188
208189
190+
191+@Callable(i)
192+func adminPromotionPurchase (x,y,desinationAddress) = {
193+ let callerId = toBase58String(i.caller.bytes)
194+ if ((callerId != holdings))
195+ then throw("This can only be triggering internally")
196+ else {
197+ let transactionId = toBase58String(i.transactionId)
198+ let $t059306035 = claimSquare(x, y, "1", desinationAddress, transactionId)
199+ let asset = $t059306035._1
200+ let assetId = $t059306035._2
201+ let assetUrl = $t059306035._3
202+ let dataKeyPrefix = $t059306035._4
203+ let assetIdStr = toBase58String(assetId)
204+[asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), desinationAddress), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)]
205+ }
206+ }
207+
208+
209+
210+@Callable(i)
211+func adminSetHandle (ownerId,handle) = {
212+ let callerId = toBase58String(i.caller.bytes)
213+ if ((callerId != holdings))
214+ then throw("This can only be triggering internally")
215+ else [StringEntry((ownerId + "_handle"), handle)]
216+ }
217+
218+
209219 @Verifier(tx)
210220 func verify () = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
211221 then true
212222 else (addressFromPublicKey(tx.senderPublicKey) == holdingsAddress))
213223 then true
214224 else (addressFromPublicKey(tx.senderPublicKey) == dappAddress)
215225

github/deemru/w8io/169f3d6 
41.34 ms