tx · 3TpcSunPqyBTKmsdcGj4XJF752nm1W1jq8hYk5Gfp3vr

3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu:  -0.04000000 Waves

2022.02.09 17:50 [1916242] smart account 3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu > SELF 0.00000000 Waves

{ "type": 13, "id": "3TpcSunPqyBTKmsdcGj4XJF752nm1W1jq8hYk5Gfp3vr", "fee": 4000000, "feeAssetId": null, "timestamp": 1644418308711, "version": 2, "chainId": 84, "sender": "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu", "senderPublicKey": "D4v2S9mjah7eEEmuQVBNd4WipC3scs8V4PjuDBweWatE", "proofs": [ "2GUDBCN36iUd8ttTZRutrtiGwpHpEnyDciqRw3AWuV5PoGxgJywy4jnfdhKGcpoPVgRxwK4wfJ9bpqiTCh7t33sr" ], "script": "base64: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", "height": 1916242, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3fzMGkTAHqg6M82m3hvUxZtr6YXdgBfr5c3a7zmerSjS Next: 7gdnjPCsQrKLF4xCH1Asw3sjN29Qn1qGVw3mRC79UPT3 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let COLS = 1024
5+
6+let ROWS = 1024
7+
48 let nftDomain = "https://nft.gridgang.io/"
9+
10+let DEBUG = true
511
612 let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
713
814 let holdingsAddress = Address(fromBase58String(holdings))
915
16+func getAssetName (x,y) = {
17+ let name = ((x + ",") + y)
18+ name
19+ }
20+
21+
22+func getDataKeyPrefix (x,y,gen) = {
23+ let name = getAssetName(x, y)
24+ let prefix = ((name + ",") + gen)
25+ prefix
26+ }
27+
28+
29+func getXYGenFromName (name) = {
30+ let parts = split(name, ",")
31+ let tuple = $Tuple3(parts[0], parts[1], parts[2])
32+ tuple
33+ }
34+
35+
36+func getDataKeyPrefixFromAssetName (name) = {
37+ let $t0683723 = getXYGenFromName(name)
38+ let x = $t0683723._1
39+ let y = $t0683723._2
40+ let gen = $t0683723._3
41+ let prefix = getDataKeyPrefix(x, y, gen)
42+ prefix
43+ }
44+
45+
1046 func claimSquare (x,y,gen,ownerId,transactionId) = {
1147 let resolvedXStr = x
1248 let resolvedYStr = y
1349 let resolvedGenStr = gen
14- let assetName = ((resolvedXStr + ",") + resolvedYStr)
50+ let assetName = getAssetName(resolvedXStr, resolvedYStr)
1551 let assetUrl = ((nftDomain + transactionId) + ".png")
16- let asset = Issue(((assetName + " Gen ") + resolvedGenStr), assetUrl, 1, 0, false)
52+ let asset = Issue(((assetName + ",") + resolvedGenStr), assetUrl, 1, 0, false)
1753 let assetId = calculateAssetId(asset)
18- let dataKeyPrefix = ((assetName + ",") + gen)
54+ let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr, gen)
1955 $Tuple4(asset, assetId, assetUrl, dataKeyPrefix)
2056 }
2157
2460 func purchase (x,y) = {
2561 let ownerId = toBase58String(i.caller.bytes)
2662 let transactionId = toBase58String(i.transactionId)
27- let $t09311026 = claimSquare(x, y, "1", ownerId, transactionId)
28- let asset = $t09311026._1
29- let assetId = $t09311026._2
30- let assetUrl = $t09311026._3
31- let dataKeyPrefix = $t09311026._4
63+ let $t015101605 = claimSquare(x, y, "1", ownerId, transactionId)
64+ let asset = $t015101605._1
65+ let assetId = $t015101605._2
66+ let assetUrl = $t015101605._3
67+ let dataKeyPrefix = $t015101605._4
3268 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
3369 }
3470
3773 @Callable(i)
3874 func autoBuy (x,y) = {
3975 let transactionId = toBase58String(i.transactionId)
40- let $t014771573 = claimSquare(x, y, "1", holdings, transactionId)
41- let asset = $t014771573._1
42- let assetId = $t014771573._2
43- let assetUrl = $t014771573._3
44- let dataKeyPrefix = $t014771573._4
76+ let $t020472143 = claimSquare(x, y, "1", holdings, transactionId)
77+ let asset = $t020472143._1
78+ let assetId = $t020472143._2
79+ let assetUrl = $t020472143._3
80+ let dataKeyPrefix = $t020472143._4
4581 let assetIdStr = toBase58String(assetId)
4682 [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)]
4783 }
5187 @Callable(i)
5288 func evolve (x,y,gen,ownerId) = {
5389 let transactionId = toBase58String(i.transactionId)
54- let $t023012396 = claimSquare(x, y, gen, ownerId, transactionId)
55- let asset = $t023012396._1
56- let assetId = $t023012396._2
57- let assetUrl = $t023012396._3
58- let dataKeyPrefix = $t023012396._4
90+ let $t028732968 = claimSquare(x, y, gen, ownerId, transactionId)
91+ let asset = $t028732968._1
92+ let assetId = $t028732968._2
93+ let assetUrl = $t028732968._3
94+ let dataKeyPrefix = $t028732968._4
5995 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)]
6096 }
6197
6298
6399
64100 @Callable(i)
65-func putForSale (assetId,amount) = {
66- let ownerId = toBase58String(i.caller.bytes)
67- let res = invoke(holdingsAddress, "addOwnerAndAmount", [ownerId, assetId, amount], [AttachedPayment(unit, 0)])
68- if ((res == res))
69- then [StringEntry((("sale_" + assetId) + "_originalOwner"), ownerId), StringEntry((("sale_" + assetId) + "_amount"), amount), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
70- else throw("Strict value is not equal to itself.")
71- }
72-
73-
74-
75-@Callable(i)
76-func finalizeSale (assetId,ownerId) = {
77- let assetData = match assetInfo(fromBase58String(assetId)) {
78- case ass: Asset =>
79- ass
80- case _ =>
81- throw("Asset not found")
82- }
83- let assetName = assetData.name
84- let xPart = split(assetName, ",")
85- let restPart = split(xPart[1], " ")
86- let x = match xPart[0] {
87- case s: String =>
88- valueOrErrorMessage(parseInt(s), "Could not parse 'x'")
89- case _ =>
90- throw("'x' not found")
91- }
92- let y = match restPart[0] {
93- case s: String =>
94- valueOrErrorMessage(parseInt(s), "Could not parse 'y'")
95- case _ =>
96- throw("'y' not found")
97- }
98- let gen = match restPart[2] {
99- case s: String =>
100- valueOrErrorMessage(parseInt(s), "Could not parse 'gen'")
101- case _ =>
102- throw("'gen' not found")
103- }
104- let xStr = toString(x)
105- let yStr = toString(y)
106- let genStr = toString(gen)
107- let $t039754022 = $Tuple3(x, y, gen)
108- let parsedX = $t039754022._1
109- let parsedY = $t039754022._2
110- let parsedGen = $t039754022._3
111- let returnList = nil
112- if ((parsedGen == gen))
113- then {
114- let dataKey = ((((xStr + ",") + yStr) + ",") + genStr)
115- $Tuple2([StringEntry((dataKey + "_owner"), ownerId), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)], dataKey)
116- }
117- else {
118- let transactionId = toBase58String(i.transactionId)
119- let $t044054516 = claimSquare(xStr, yStr, genStr, ownerId, transactionId)
120- let asset = $t044054516._1
121- let evolvedAssetId = $t044054516._2
122- let assetUrl = $t044054516._3
123- let dataKeyPrefix = $t044054516._4
124- let dataKey = dataKeyPrefix
125- $Tuple2([asset, StringEntry((dataKey + "_assetId"), toBase58String(evolvedAssetId)), StringEntry((dataKey + "_asset"), assetUrl), StringEntry((dataKey + "_owner"), ownerId), StringEntry(transactionId, dataKey), ScriptTransfer(Address(fromBase58String(ownerId)), 1, fromBase58String(assetId))], dataKey)
126- }
127- }
101+func putForSale (assetId,amount) = if ((1 > amount))
102+ then throw("Original owner not found ")
103+ else {
104+ let callerId = toBase58String(i.caller.bytes)
105+ let assetData = match assetInfo(fromBase58String(assetId)) {
106+ case ass: Asset =>
107+ ass
108+ case _ =>
109+ throw("Asset not found")
110+ }
111+ let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name)
112+ let ownerId = match getString(this, (dataPrefix + "_owner")) {
113+ case s: String =>
114+ s
115+ case _ =>
116+ throw("Owner not found in data")
117+ }
118+ if (if ((callerId != ownerId))
119+ then (callerId != holdings)
120+ else false)
121+ then throw("You are not able to put this asset up for sale")
122+ else {
123+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [callerId, assetId, amount], [AttachedPayment(unit, 0)])
124+ if ((res == res))
125+ then [StringEntry((("sale_" + assetId) + "_originalOwner"), callerId), StringEntry((("sale_" + assetId) + "_amount"), toString(amount)), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
126+ else throw("Strict value is not equal to itself.")
127+ }
128+ }
128129
129130
130131 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let COLS = 1024
5+
6+let ROWS = 1024
7+
48 let nftDomain = "https://nft.gridgang.io/"
9+
10+let DEBUG = true
511
612 let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
713
814 let holdingsAddress = Address(fromBase58String(holdings))
915
16+func getAssetName (x,y) = {
17+ let name = ((x + ",") + y)
18+ name
19+ }
20+
21+
22+func getDataKeyPrefix (x,y,gen) = {
23+ let name = getAssetName(x, y)
24+ let prefix = ((name + ",") + gen)
25+ prefix
26+ }
27+
28+
29+func getXYGenFromName (name) = {
30+ let parts = split(name, ",")
31+ let tuple = $Tuple3(parts[0], parts[1], parts[2])
32+ tuple
33+ }
34+
35+
36+func getDataKeyPrefixFromAssetName (name) = {
37+ let $t0683723 = getXYGenFromName(name)
38+ let x = $t0683723._1
39+ let y = $t0683723._2
40+ let gen = $t0683723._3
41+ let prefix = getDataKeyPrefix(x, y, gen)
42+ prefix
43+ }
44+
45+
1046 func claimSquare (x,y,gen,ownerId,transactionId) = {
1147 let resolvedXStr = x
1248 let resolvedYStr = y
1349 let resolvedGenStr = gen
14- let assetName = ((resolvedXStr + ",") + resolvedYStr)
50+ let assetName = getAssetName(resolvedXStr, resolvedYStr)
1551 let assetUrl = ((nftDomain + transactionId) + ".png")
16- let asset = Issue(((assetName + " Gen ") + resolvedGenStr), assetUrl, 1, 0, false)
52+ let asset = Issue(((assetName + ",") + resolvedGenStr), assetUrl, 1, 0, false)
1753 let assetId = calculateAssetId(asset)
18- let dataKeyPrefix = ((assetName + ",") + gen)
54+ let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr, gen)
1955 $Tuple4(asset, assetId, assetUrl, dataKeyPrefix)
2056 }
2157
2258
2359 @Callable(i)
2460 func purchase (x,y) = {
2561 let ownerId = toBase58String(i.caller.bytes)
2662 let transactionId = toBase58String(i.transactionId)
27- let $t09311026 = claimSquare(x, y, "1", ownerId, transactionId)
28- let asset = $t09311026._1
29- let assetId = $t09311026._2
30- let assetUrl = $t09311026._3
31- let dataKeyPrefix = $t09311026._4
63+ let $t015101605 = claimSquare(x, y, "1", ownerId, transactionId)
64+ let asset = $t015101605._1
65+ let assetId = $t015101605._2
66+ let assetUrl = $t015101605._3
67+ let dataKeyPrefix = $t015101605._4
3268 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
3369 }
3470
3571
3672
3773 @Callable(i)
3874 func autoBuy (x,y) = {
3975 let transactionId = toBase58String(i.transactionId)
40- let $t014771573 = claimSquare(x, y, "1", holdings, transactionId)
41- let asset = $t014771573._1
42- let assetId = $t014771573._2
43- let assetUrl = $t014771573._3
44- let dataKeyPrefix = $t014771573._4
76+ let $t020472143 = claimSquare(x, y, "1", holdings, transactionId)
77+ let asset = $t020472143._1
78+ let assetId = $t020472143._2
79+ let assetUrl = $t020472143._3
80+ let dataKeyPrefix = $t020472143._4
4581 let assetIdStr = toBase58String(assetId)
4682 [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)]
4783 }
4884
4985
5086
5187 @Callable(i)
5288 func evolve (x,y,gen,ownerId) = {
5389 let transactionId = toBase58String(i.transactionId)
54- let $t023012396 = claimSquare(x, y, gen, ownerId, transactionId)
55- let asset = $t023012396._1
56- let assetId = $t023012396._2
57- let assetUrl = $t023012396._3
58- let dataKeyPrefix = $t023012396._4
90+ let $t028732968 = claimSquare(x, y, gen, ownerId, transactionId)
91+ let asset = $t028732968._1
92+ let assetId = $t028732968._2
93+ let assetUrl = $t028732968._3
94+ let dataKeyPrefix = $t028732968._4
5995 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)]
6096 }
6197
6298
6399
64100 @Callable(i)
65-func putForSale (assetId,amount) = {
66- let ownerId = toBase58String(i.caller.bytes)
67- let res = invoke(holdingsAddress, "addOwnerAndAmount", [ownerId, assetId, amount], [AttachedPayment(unit, 0)])
68- if ((res == res))
69- then [StringEntry((("sale_" + assetId) + "_originalOwner"), ownerId), StringEntry((("sale_" + assetId) + "_amount"), amount), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
70- else throw("Strict value is not equal to itself.")
71- }
72-
73-
74-
75-@Callable(i)
76-func finalizeSale (assetId,ownerId) = {
77- let assetData = match assetInfo(fromBase58String(assetId)) {
78- case ass: Asset =>
79- ass
80- case _ =>
81- throw("Asset not found")
82- }
83- let assetName = assetData.name
84- let xPart = split(assetName, ",")
85- let restPart = split(xPart[1], " ")
86- let x = match xPart[0] {
87- case s: String =>
88- valueOrErrorMessage(parseInt(s), "Could not parse 'x'")
89- case _ =>
90- throw("'x' not found")
91- }
92- let y = match restPart[0] {
93- case s: String =>
94- valueOrErrorMessage(parseInt(s), "Could not parse 'y'")
95- case _ =>
96- throw("'y' not found")
97- }
98- let gen = match restPart[2] {
99- case s: String =>
100- valueOrErrorMessage(parseInt(s), "Could not parse 'gen'")
101- case _ =>
102- throw("'gen' not found")
103- }
104- let xStr = toString(x)
105- let yStr = toString(y)
106- let genStr = toString(gen)
107- let $t039754022 = $Tuple3(x, y, gen)
108- let parsedX = $t039754022._1
109- let parsedY = $t039754022._2
110- let parsedGen = $t039754022._3
111- let returnList = nil
112- if ((parsedGen == gen))
113- then {
114- let dataKey = ((((xStr + ",") + yStr) + ",") + genStr)
115- $Tuple2([StringEntry((dataKey + "_owner"), ownerId), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)], dataKey)
116- }
117- else {
118- let transactionId = toBase58String(i.transactionId)
119- let $t044054516 = claimSquare(xStr, yStr, genStr, ownerId, transactionId)
120- let asset = $t044054516._1
121- let evolvedAssetId = $t044054516._2
122- let assetUrl = $t044054516._3
123- let dataKeyPrefix = $t044054516._4
124- let dataKey = dataKeyPrefix
125- $Tuple2([asset, StringEntry((dataKey + "_assetId"), toBase58String(evolvedAssetId)), StringEntry((dataKey + "_asset"), assetUrl), StringEntry((dataKey + "_owner"), ownerId), StringEntry(transactionId, dataKey), ScriptTransfer(Address(fromBase58String(ownerId)), 1, fromBase58String(assetId))], dataKey)
126- }
127- }
101+func putForSale (assetId,amount) = if ((1 > amount))
102+ then throw("Original owner not found ")
103+ else {
104+ let callerId = toBase58String(i.caller.bytes)
105+ let assetData = match assetInfo(fromBase58String(assetId)) {
106+ case ass: Asset =>
107+ ass
108+ case _ =>
109+ throw("Asset not found")
110+ }
111+ let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name)
112+ let ownerId = match getString(this, (dataPrefix + "_owner")) {
113+ case s: String =>
114+ s
115+ case _ =>
116+ throw("Owner not found in data")
117+ }
118+ if (if ((callerId != ownerId))
119+ then (callerId != holdings)
120+ else false)
121+ then throw("You are not able to put this asset up for sale")
122+ else {
123+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [callerId, assetId, amount], [AttachedPayment(unit, 0)])
124+ if ((res == res))
125+ then [StringEntry((("sale_" + assetId) + "_originalOwner"), callerId), StringEntry((("sale_" + assetId) + "_amount"), toString(amount)), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
126+ else throw("Strict value is not equal to itself.")
127+ }
128+ }
128129
129130
130131 @Verifier(tx)
131132 func verify () = true
132133

github/deemru/w8io/169f3d6 
46.12 ms