tx · DSfKH1do9BwzncYAhLvsVzayW1XWiXcL69PvRDss2T6G

3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu:  -0.04000000 Waves

2022.04.16 18:52 [2011315] smart account 3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu > SELF 0.00000000 Waves

{ "type": 13, "id": "DSfKH1do9BwzncYAhLvsVzayW1XWiXcL69PvRDss2T6G", "fee": 4000000, "feeAssetId": null, "timestamp": 1650124329715, "version": 2, "chainId": 84, "sender": "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu", "senderPublicKey": "D4v2S9mjah7eEEmuQVBNd4WipC3scs8V4PjuDBweWatE", "proofs": [ "3cHACZW8osZMzk1xJsqt5MGQRokHJZPfLiQRjsqyt357kPqbWDxfBg6tTdCqzhiLtcAs7QjsUrVdBpUzyCAXeSA" ], "script": "base64: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", "height": 2011315, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9usH3PwWz2L24HfqnU77kom8LCik438hckcpW4286acA Next: none Diff:
OldNewDifferences
1515
1616 let minPurchasePrice = 1000000
1717
18-let dapp = "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu"
18+let dapp = "3MvUyzQxNGmwExAcKdhojfKem3XwkXdkByH"
1919
2020 let dappAddress = Address(fromBase58String(dapp))
2121
22-let holdingsPublicKey = "GUHw1jkstNWTs9SX1KM3pMtq9HXjupvxiTd1urNhNoyY"
22+let holdingsPublicKey = "2eixqLDKJ5kjuY8imH4HG2FBJduT6QsjxLLch1iaAadx"
2323
24-let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
24+let holdings = "3MpFtcdhaB66NB38tW2APSiaVqaAoWoPvRJ"
2525
2626 let holdingsAddress = Address(fromBase58String(holdings))
2727
6969
7070
7171 @Callable(i)
72-func purchase (x,y) = {
72+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")) {
8585 else {
8686 let ownerId = toBase58String(i.caller.bytes)
8787 let transactionId = toBase58String(i.transactionId)
88- let $t022152310 = claimSquare(x, y, "1", ownerId, transactionId)
89- let asset = $t022152310._1
90- let assetId = $t022152310._2
91- let assetUrl = $t022152310._3
92- let dataKeyPrefix = $t022152310._4
93-[asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
88+ let $t022332328 = claimSquare(x, y, "1", ownerId, transactionId)
89+ let asset = $t022332328._1
90+ let assetId = $t022332328._2
91+ let assetUrl = $t022332328._3
92+ let dataKeyPrefix = $t022332328._4
93+[asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), StringEntry(ownerId, userText), ScriptTransfer(i.caller, 1, assetId)]
9494 }
9595 }
9696
105105 then throw("This can only be triggering internally")
106106 else {
107107 let transactionId = toBase58String(i.transactionId)
108- let $t028872983 = claimSquare(x, y, "1", holdings, transactionId)
109- let asset = $t028872983._1
110- let assetId = $t028872983._2
111- let assetUrl = $t028872983._3
112- let dataKeyPrefix = $t028872983._4
108+ let $t029433039 = claimSquare(x, y, "1", holdings, transactionId)
109+ let asset = $t029433039._1
110+ let assetId = $t029433039._2
111+ let assetUrl = $t029433039._3
112+ let dataKeyPrefix = $t029433039._4
113113 let assetIdStr = toBase58String(assetId)
114114 let res = invoke(holdingsAddress, addOwnerAndAmountFunc, [holdings, assetIdStr, 3], [AttachedPayment(unit, 0)])
115115 if ((res == res))
127127 then throw("This can only be triggering internally")
128128 else {
129129 let transactionId = toBase58String(i.transactionId)
130- let $t037393844 = claimSquare(x, y, "1", desinationAddress, transactionId)
131- let asset = $t037393844._1
132- let assetId = $t037393844._2
133- let assetUrl = $t037393844._3
134- let dataKeyPrefix = $t037393844._4
130+ let $t037953900 = claimSquare(x, y, "1", desinationAddress, transactionId)
131+ let asset = $t037953900._1
132+ let assetId = $t037953900._2
133+ let assetUrl = $t037953900._3
134+ let dataKeyPrefix = $t037953900._4
135135 let assetIdStr = toBase58String(assetId)
136136 [asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), desinationAddress), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)]
137137 }
146146 then throw("This can only be triggering internally")
147147 else {
148148 let transactionId = toBase58String(i.transactionId)
149- let $t045074602 = claimSquare(x, y, gen, ownerId, transactionId)
150- let asset = $t045074602._1
151- let assetId = $t045074602._2
152- let assetUrl = $t045074602._3
153- let dataKeyPrefix = $t045074602._4
149+ let $t046264721 = claimSquare(x, y, gen, ownerId, transactionId)
150+ let asset = $t046264721._1
151+ let assetId = $t046264721._2
152+ let assetUrl = $t046264721._3
153+ let dataKeyPrefix = $t046264721._4
154154 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)]
155155 }
156156 }
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
18-let dapp = "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu"
18+let dapp = "3MvUyzQxNGmwExAcKdhojfKem3XwkXdkByH"
1919
2020 let dappAddress = Address(fromBase58String(dapp))
2121
22-let holdingsPublicKey = "GUHw1jkstNWTs9SX1KM3pMtq9HXjupvxiTd1urNhNoyY"
22+let holdingsPublicKey = "2eixqLDKJ5kjuY8imH4HG2FBJduT6QsjxLLch1iaAadx"
2323
24-let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
24+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)
72-func purchase (x,y) = {
72+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)
88- let $t022152310 = claimSquare(x, y, "1", ownerId, transactionId)
89- let asset = $t022152310._1
90- let assetId = $t022152310._2
91- let assetUrl = $t022152310._3
92- let dataKeyPrefix = $t022152310._4
93-[asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
88+ let $t022332328 = claimSquare(x, y, "1", ownerId, transactionId)
89+ let asset = $t022332328._1
90+ let assetId = $t022332328._2
91+ let assetUrl = $t022332328._3
92+ let dataKeyPrefix = $t022332328._4
93+[asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), StringEntry(ownerId, userText), 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)
108- let $t028872983 = claimSquare(x, y, "1", holdings, transactionId)
109- let asset = $t028872983._1
110- let assetId = $t028872983._2
111- let assetUrl = $t028872983._3
112- let dataKeyPrefix = $t028872983._4
108+ let $t029433039 = claimSquare(x, y, "1", holdings, transactionId)
109+ let asset = $t029433039._1
110+ let assetId = $t029433039._2
111+ let assetUrl = $t029433039._3
112+ let dataKeyPrefix = $t029433039._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)
124124 func promotionPurchase (x,y,desinationAddress) = {
125125 let callerId = toBase58String(i.caller.bytes)
126126 if ((callerId != holdings))
127127 then throw("This can only be triggering internally")
128128 else {
129129 let transactionId = toBase58String(i.transactionId)
130- let $t037393844 = claimSquare(x, y, "1", desinationAddress, transactionId)
131- let asset = $t037393844._1
132- let assetId = $t037393844._2
133- let assetUrl = $t037393844._3
134- let dataKeyPrefix = $t037393844._4
130+ let $t037953900 = claimSquare(x, y, "1", desinationAddress, transactionId)
131+ let asset = $t037953900._1
132+ let assetId = $t037953900._2
133+ let assetUrl = $t037953900._3
134+ let dataKeyPrefix = $t037953900._4
135135 let assetIdStr = toBase58String(assetId)
136136 [asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), desinationAddress), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(desinationAddress)), 1, assetId)]
137137 }
138138 }
139139
140140
141141
142142 @Callable(i)
143143 func evolve (x,y,gen,ownerId) = {
144144 let callerId = toBase58String(i.caller.bytes)
145145 if ((callerId != holdings))
146146 then throw("This can only be triggering internally")
147147 else {
148148 let transactionId = toBase58String(i.transactionId)
149- let $t045074602 = claimSquare(x, y, gen, ownerId, transactionId)
150- let asset = $t045074602._1
151- let assetId = $t045074602._2
152- let assetUrl = $t045074602._3
153- let dataKeyPrefix = $t045074602._4
149+ let $t046264721 = claimSquare(x, y, gen, ownerId, transactionId)
150+ let asset = $t046264721._1
151+ let assetId = $t046264721._2
152+ let assetUrl = $t046264721._3
153+ let dataKeyPrefix = $t046264721._4
154154 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)]
155155 }
156156 }
157157
158158
159159
160160 @Callable(i)
161161 func putForSale (assetId,amount) = {
162162 let callerId = toBase58String(i.caller.bytes)
163163 let assetData = match assetInfo(fromBase58String(assetId)) {
164164 case ass: Asset =>
165165 ass
166166 case _ =>
167167 throw("Asset not found")
168168 }
169169 let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name)
170170 let ownerId = match getString(this, (dataPrefix + "_owner")) {
171171 case s: String =>
172172 s
173173 case _ =>
174174 throw("Owner not found in data")
175175 }
176176 if ((minForSaleWavlets > amount))
177177 then throw("Amount needs to be more than 1 wave")
178178 else if (if ((callerId != ownerId))
179179 then (callerId != holdings)
180180 else false)
181181 then throw("You are not able to put this asset up for sale")
182182 else {
183183 let res = invoke(holdingsAddress, addOwnerAndAmountFunc, [callerId, assetId, amount], [AttachedPayment(unit, 0)])
184184 if ((res == res))
185185 then [ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
186186 else throw("Strict value is not equal to itself.")
187187 }
188188 }
189189
190190
191191
192192 @Callable(i)
193193 func finalizeSale (assetId,ownerId) = {
194194 let callerId = toBase58String(i.caller.bytes)
195195 if ((callerId != holdings))
196196 then throw("This can only be triggering internally")
197197 else {
198198 let prefix = match assetInfo(fromBase58String(assetId)) {
199199 case asset: Asset =>
200200 asset.name
201201 case _ =>
202202 throw("Can't find asset")
203203 }
204204 [StringEntry((prefix + "_owner"), ownerId)]
205205 }
206206 }
207207
208208
209209 @Verifier(tx)
210210 func verify () = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey))
211211 then true
212212 else (addressFromPublicKey(tx.senderPublicKey) == holdingsAddress))
213213 then true
214214 else (addressFromPublicKey(tx.senderPublicKey) == dappAddress)
215215

github/deemru/w8io/873ac7e 
47.25 ms