tx · 61zba1DFGcCSqhAZPKUUZRjm8wwBogJmdm1Txj9svZL2

3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r:  -0.04000000 Waves

2022.01.15 21:51 [1880451] smart account 3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r > SELF 0.00000000 Waves

{ "type": 13, "id": "61zba1DFGcCSqhAZPKUUZRjm8wwBogJmdm1Txj9svZL2", "fee": 4000000, "feeAssetId": null, "timestamp": 1642272677349, "version": 2, "chainId": 84, "sender": "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r", "senderPublicKey": "GUHw1jkstNWTs9SX1KM3pMtq9HXjupvxiTd1urNhNoyY", "proofs": [ "oHh3dhzoUnqwXCQctyRm9N9UyWC1vxHhzuqQ2GC9dXzbJWr6CW5Hwypgt5T857UzfvAGGtU4ktktdy9P1BRz8Ni" ], "script": "base64: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", "height": 1880451, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: J4Jf4gZR4uP67JtLGLaEAEAsskbowD5dR5FdhPdEGfXm Next: 4ivE1AGr4tkLf6aj5KdeM1VuUEnLG1yqANHszFQP6thM Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let dappAddress = "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu"
4+let COLS = 1024
55
6-let holdingsAddressStr = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
6+let ROWS = 1024
77
8-let holdingsPublicKey = base58'GUHw1jkstNWTs9SX1KM3pMtq9HXjupvxiTd1urNhNoyY'
8+let nftDomain = "https://nft.gridgang.io/"
99
10-let holdingsAddress = Address(fromBase58String(holdingsAddressStr))
10+let DEBUG = true
1111
12-let transferCostPct = 25
12+let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
1313
14-@Callable(i)
15-func addOwnerAndAmount (ownerId,assetId,amount) = [StringEntry((("sale_" + assetId) + "_originalOwner"), ownerId), StringEntry((("sale_" + assetId) + "_amount"), amount)]
14+let holdingsAddress = Address(fromBase58String(holdings))
15+
16+func getBoundCoords (data) = {
17+ let $t0333355 = data
18+ let x = $t0333355._1
19+ let y = $t0333355._2
20+ let gen = $t0333355._3
21+ let d = pow(2, 0, (gen - 1), 0, 0, HALFUP)
22+ let tl = $Tuple2((x - d), (y - d))
23+ let tc = $Tuple2(x, (y - d))
24+ let tr = $Tuple2((x + d), (y + d))
25+ let l = $Tuple2((x - d), y)
26+ let r = $Tuple2((x + d), y)
27+ let bl = $Tuple2((x - d), (y + d))
28+ let bc = $Tuple2(x, (y + d))
29+ let br = $Tuple2((x + d), (y + d))
30+[$Tuple3(tl, tc, l), $Tuple3(tc, tr, r), $Tuple3(l, bl, bc), $Tuple3(r, bc, br)]
31+ }
1632
1733
18-
19-@Callable(i)
20-func buyFromHoldings (assetId) = {
21- let ownerId = match getString(this, (("sale_" + assetId) + "_originalOwner")) {
34+func checkSquareForEvolve (coords,gen,ownerId) = {
35+ let $t0788816 = coords
36+ let xy1 = $t0788816._1
37+ let xy2 = $t0788816._2
38+ let xy3 = $t0788816._3
39+ let xy1Key = (((((toString(xy1._1) + ",") + toString(xy1._2)) + ",") + gen) + "_owner")
40+ let xy2Key = (((((toString(xy2._1) + ",") + toString(xy2._2)) + ",") + gen) + "_owner")
41+ let xy3Key = (((((toString(xy3._1) + ",") + toString(xy3._2)) + ",") + gen) + "_owner")
42+ let xyVal1 = match getString(this, xy1Key) {
2243 case _: Unit =>
2344 "unset"
2445 case x: String =>
2647 case _ =>
2748 throw("Match error")
2849 }
29- let paymentAmount = valueOrElse(i.payments[0].amount, 0)
30- let amount = match getString(this, (("sale_" + assetId) + "_amount")) {
50+ let xyVal2 = match getString(this, xy2Key) {
3151 case _: Unit =>
32- 0
52+ "unset"
3353 case x: String =>
34- (valueOrElse(parseInt(x), 0) * 100000000)
54+ x
3555 case _ =>
3656 throw("Match error")
3757 }
38- if ((ownerId == "unset"))
39- then throw("Original owner not found ")
40- else if (if ((amount == 0))
41- then true
42- else (amount > paymentAmount))
43- then throw(((("Payment and amount do not match. This assets costs " + toString(amount)) + "but you sent ") + toString(paymentAmount)))
44- else {
45- let dAppUpdate = invoke(Address(fromBase58String(dappAddress)), "finalizeSale", [assetId, ownerId], [AttachedPayment(unit, 0)])
46- if ((dAppUpdate == dAppUpdate))
47- then {
48- let dataKey = match dAppUpdate {
49- case a: String =>
50- a
51- case _ =>
52- throw("Unexpected result from finalizing purcahse")
53- }
54- let transfer = [ScriptTransfer(i.caller, 1, fromBase58String(assetId))]
55- if ((ownerId != holdingsAddressStr))
56- then {
57- let amountToRemainInHoldings = (paymentAmount * (transferCostPct / 1000))
58- let amountToTransferToOwner = (paymentAmount - amountToRemainInHoldings)
59- let ownerAddress = Address(fromBase58String(ownerId))
60- (transfer ++ [ScriptTransfer(ownerAddress, amountToTransferToOwner, unit)])
61- }
62- else transfer
63- }
64- else throw("Strict value is not equal to itself.")
65- }
58+ let xyVal3 = match getString(this, xy3Key) {
59+ case _: Unit =>
60+ "unset"
61+ case x: String =>
62+ x
63+ case _ =>
64+ throw("Match error")
65+ }
66+ if (if ((xyVal1 == ownerId))
67+ then (xyVal2 == ownerId)
68+ else false)
69+ then (xyVal3 == ownerId)
70+ else false
71+ }
72+
73+
74+func getXyReturn (xy,gen) = {
75+ let $t014921507 = xy
76+ let x = $t014921507._1
77+ let y = $t014921507._2
78+ $Tuple3(x, y, (gen + 1))
79+ }
80+
81+
82+func getXy (xyg,ownerId) = {
83+ let checkList = getBoundCoords(xyg)
84+ let $t016231644 = xyg
85+ let x = $t016231644._1
86+ let y = $t016231644._2
87+ let gen = $t016231644._3
88+ let genStr = toString(gen)
89+ if (checkSquareForEvolve(checkList[0], genStr, ownerId))
90+ then getXyReturn(checkList[0]._1, gen)
91+ else if (checkSquareForEvolve(checkList[1], genStr, ownerId))
92+ then getXyReturn(checkList[1]._1, gen)
93+ else if (checkSquareForEvolve(checkList[2], genStr, ownerId))
94+ then getXyReturn(checkList[2]._1, gen)
95+ else if (checkSquareForEvolve(checkList[3], genStr, ownerId))
96+ then getXyReturn(checkList[3]._1, gen)
97+ else xyg
98+ }
99+
100+
101+func checkForEvolve (xyg,ownerId) = {
102+ let $t022912312 = xyg
103+ let x = $t022912312._1
104+ let y = $t022912312._2
105+ let gen = $t022912312._3
106+ let p1 = getXy(xyg, ownerId)
107+ if ((p1._3 == gen))
108+ then p1
109+ else {
110+ let p2 = getXy(p1, ownerId)
111+ if ((p2._3 == p1._3))
112+ then p2
113+ else {
114+ let p3 = getXy(p2, ownerId)
115+ if ((p3._3 == p2._3))
116+ then p3
117+ else {
118+ let p4 = getXy(p3, ownerId)
119+ if ((p4._3 == p3._3))
120+ then p4
121+ else {
122+ let p5 = getXy(p4, ownerId)
123+ if ((p5._3 == p4._3))
124+ then p5
125+ else {
126+ let p6 = getXy(p5, ownerId)
127+ if ((p6._3 == p5._3))
128+ then p6
129+ else {
130+ let p7 = getXy(p6, ownerId)
131+ if ((p7._3 == p6._3))
132+ then p7
133+ else {
134+ let p8 = getXy(p7, ownerId)
135+ if ((p8._3 == p7._3))
136+ then p8
137+ else {
138+ let p9 = getXy(p8, ownerId)
139+ if ((p9._3 == p8._3))
140+ then p9
141+ else getXy(getXy(p9, ownerId), ownerId)
142+ }
143+ }
144+ }
145+ }
146+ }
147+ }
148+ }
149+ }
150+ }
151+
152+
153+func claimSquare (x,y,ownerId,transactionId) = {
154+ let $t033653462 = getXy($Tuple3(parseIntValue(x), parseIntValue(y), 1), ownerId)
155+ let resolvedX = $t033653462._1
156+ let resolvedY = $t033653462._2
157+ let resolvedGen = $t033653462._3
158+ let resolvedXStr = toString(resolvedX)
159+ let resolvedYStr = toString(resolvedY)
160+ let resolvedGenStr = toString(resolvedGen)
161+ let assetName = ((resolvedXStr + ",") + resolvedYStr)
162+ let assetUrl = ((nftDomain + transactionId) + ".png")
163+ let asset = Issue(((assetName + " Gen ") + resolvedGenStr), assetUrl, 1, 0, false)
164+ let assetId = calculateAssetId(asset)
165+ let gen = resolvedGenStr
166+ let dataKeyPrefix = ((assetName + ",") + gen)
167+ $Tuple4(asset, assetId, assetUrl, dataKeyPrefix)
168+ }
169+
170+
171+@Callable(i)
172+func purchase (x,y) = {
173+ let ownerId = toBase58String(i.caller.bytes)
174+ let transactionId = toBase58String(i.transactionId)
175+ let $t040944184 = claimSquare(x, y, ownerId, transactionId)
176+ let asset = $t040944184._1
177+ let assetId = $t040944184._2
178+ let assetUrl = $t040944184._3
179+ let dataKeyPrefix = $t040944184._4
180+[asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
181+ }
182+
183+
184+
185+@Callable(i)
186+func autoBuy (x,y) = {
187+ let ownerId = toBase58String(holdingsAddress.bytes)
188+ let transactionId = toBase58String(i.transactionId)
189+ let $t046334723 = claimSquare(x, y, ownerId, transactionId)
190+ let asset = $t046334723._1
191+ let assetId = $t046334723._2
192+ let assetUrl = $t046334723._3
193+ let dataKeyPrefix = $t046334723._4
194+ let assetIdStr = toBase58String(assetId)
195+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [ownerId, assetIdStr, "2"], [AttachedPayment(unit, 0)])
196+ if ((res == res))
197+ then [asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry((("sale_" + assetIdStr) + "_originalOwner"), ownerId), IntegerEntry((("sale_" + assetIdStr) + "_amount"), 2), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(holdingsAddress, 1, assetId)]
198+ else throw("Strict value is not equal to itself.")
199+ }
200+
201+
202+
203+@Callable(i)
204+func putForSale (assetId,amount) = {
205+ let ownerId = toBase58String(i.caller.bytes)
206+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [ownerId, assetId, amount], [AttachedPayment(unit, 0)])
207+ if ((res == res))
208+ then [StringEntry((("sale_" + assetId) + "_originalOwner"), ownerId), StringEntry((("sale_" + assetId) + "_amount"), amount), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
209+ else throw("Strict value is not equal to itself.")
210+ }
211+
212+
213+
214+@Callable(i)
215+func finalizeSale (assetId,ownerId) = {
216+ let assetData = match assetInfo(fromBase58String(assetId)) {
217+ case ass: Asset =>
218+ ass
219+ case _ =>
220+ throw("Asset not found")
221+ }
222+ let assetName = assetData.name
223+ let xPart = split(assetName, ",")
224+ let restPart = split(xPart[1], " ")
225+ let x = match xPart[0] {
226+ case s: String =>
227+ valueOrErrorMessage(parseInt(s), "Could not parse 'x'")
228+ case _ =>
229+ throw("'x' not found")
230+ }
231+ let y = match restPart[0] {
232+ case s: String =>
233+ valueOrErrorMessage(parseInt(s), "Could not parse 'y'")
234+ case _ =>
235+ throw("'y' not found")
236+ }
237+ let gen = match restPart[2] {
238+ case s: String =>
239+ valueOrErrorMessage(parseInt(s), "Could not parse 'gen'")
240+ case _ =>
241+ throw("'gen' not found")
242+ }
243+ let xStr = toString(x)
244+ let yStr = toString(y)
245+ let genStr = toString(gen)
246+ let $t065516614 = getXy($Tuple3(x, y, gen), ownerId)
247+ let parsedX = $t065516614._1
248+ let parsedY = $t065516614._2
249+ let parsedGen = $t065516614._3
250+ let returnList = nil
251+ if ((parsedGen == gen))
252+ then {
253+ let dataKey = ((((xStr + ",") + yStr) + ",") + genStr)
254+ $Tuple2([StringEntry((dataKey + "_owner"), ownerId), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)], dataKey)
255+ }
256+ else {
257+ let transactionId = toBase58String(i.transactionId)
258+ let $t069977100 = claimSquare(xStr, yStr, ownerId, transactionId)
259+ let asset = $t069977100._1
260+ let evolvedAssetId = $t069977100._2
261+ let assetUrl = $t069977100._3
262+ let dataKeyPrefix = $t069977100._4
263+ let dataKey = dataKeyPrefix
264+ $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)
265+ }
66266 }
67267
68268
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let dappAddress = "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu"
4+let COLS = 1024
55
6-let holdingsAddressStr = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
6+let ROWS = 1024
77
8-let holdingsPublicKey = base58'GUHw1jkstNWTs9SX1KM3pMtq9HXjupvxiTd1urNhNoyY'
8+let nftDomain = "https://nft.gridgang.io/"
99
10-let holdingsAddress = Address(fromBase58String(holdingsAddressStr))
10+let DEBUG = true
1111
12-let transferCostPct = 25
12+let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
1313
14-@Callable(i)
15-func addOwnerAndAmount (ownerId,assetId,amount) = [StringEntry((("sale_" + assetId) + "_originalOwner"), ownerId), StringEntry((("sale_" + assetId) + "_amount"), amount)]
14+let holdingsAddress = Address(fromBase58String(holdings))
15+
16+func getBoundCoords (data) = {
17+ let $t0333355 = data
18+ let x = $t0333355._1
19+ let y = $t0333355._2
20+ let gen = $t0333355._3
21+ let d = pow(2, 0, (gen - 1), 0, 0, HALFUP)
22+ let tl = $Tuple2((x - d), (y - d))
23+ let tc = $Tuple2(x, (y - d))
24+ let tr = $Tuple2((x + d), (y + d))
25+ let l = $Tuple2((x - d), y)
26+ let r = $Tuple2((x + d), y)
27+ let bl = $Tuple2((x - d), (y + d))
28+ let bc = $Tuple2(x, (y + d))
29+ let br = $Tuple2((x + d), (y + d))
30+[$Tuple3(tl, tc, l), $Tuple3(tc, tr, r), $Tuple3(l, bl, bc), $Tuple3(r, bc, br)]
31+ }
1632
1733
18-
19-@Callable(i)
20-func buyFromHoldings (assetId) = {
21- let ownerId = match getString(this, (("sale_" + assetId) + "_originalOwner")) {
34+func checkSquareForEvolve (coords,gen,ownerId) = {
35+ let $t0788816 = coords
36+ let xy1 = $t0788816._1
37+ let xy2 = $t0788816._2
38+ let xy3 = $t0788816._3
39+ let xy1Key = (((((toString(xy1._1) + ",") + toString(xy1._2)) + ",") + gen) + "_owner")
40+ let xy2Key = (((((toString(xy2._1) + ",") + toString(xy2._2)) + ",") + gen) + "_owner")
41+ let xy3Key = (((((toString(xy3._1) + ",") + toString(xy3._2)) + ",") + gen) + "_owner")
42+ let xyVal1 = match getString(this, xy1Key) {
2243 case _: Unit =>
2344 "unset"
2445 case x: String =>
2546 x
2647 case _ =>
2748 throw("Match error")
2849 }
29- let paymentAmount = valueOrElse(i.payments[0].amount, 0)
30- let amount = match getString(this, (("sale_" + assetId) + "_amount")) {
50+ let xyVal2 = match getString(this, xy2Key) {
3151 case _: Unit =>
32- 0
52+ "unset"
3353 case x: String =>
34- (valueOrElse(parseInt(x), 0) * 100000000)
54+ x
3555 case _ =>
3656 throw("Match error")
3757 }
38- if ((ownerId == "unset"))
39- then throw("Original owner not found ")
40- else if (if ((amount == 0))
41- then true
42- else (amount > paymentAmount))
43- then throw(((("Payment and amount do not match. This assets costs " + toString(amount)) + "but you sent ") + toString(paymentAmount)))
44- else {
45- let dAppUpdate = invoke(Address(fromBase58String(dappAddress)), "finalizeSale", [assetId, ownerId], [AttachedPayment(unit, 0)])
46- if ((dAppUpdate == dAppUpdate))
47- then {
48- let dataKey = match dAppUpdate {
49- case a: String =>
50- a
51- case _ =>
52- throw("Unexpected result from finalizing purcahse")
53- }
54- let transfer = [ScriptTransfer(i.caller, 1, fromBase58String(assetId))]
55- if ((ownerId != holdingsAddressStr))
56- then {
57- let amountToRemainInHoldings = (paymentAmount * (transferCostPct / 1000))
58- let amountToTransferToOwner = (paymentAmount - amountToRemainInHoldings)
59- let ownerAddress = Address(fromBase58String(ownerId))
60- (transfer ++ [ScriptTransfer(ownerAddress, amountToTransferToOwner, unit)])
61- }
62- else transfer
63- }
64- else throw("Strict value is not equal to itself.")
65- }
58+ let xyVal3 = match getString(this, xy3Key) {
59+ case _: Unit =>
60+ "unset"
61+ case x: String =>
62+ x
63+ case _ =>
64+ throw("Match error")
65+ }
66+ if (if ((xyVal1 == ownerId))
67+ then (xyVal2 == ownerId)
68+ else false)
69+ then (xyVal3 == ownerId)
70+ else false
71+ }
72+
73+
74+func getXyReturn (xy,gen) = {
75+ let $t014921507 = xy
76+ let x = $t014921507._1
77+ let y = $t014921507._2
78+ $Tuple3(x, y, (gen + 1))
79+ }
80+
81+
82+func getXy (xyg,ownerId) = {
83+ let checkList = getBoundCoords(xyg)
84+ let $t016231644 = xyg
85+ let x = $t016231644._1
86+ let y = $t016231644._2
87+ let gen = $t016231644._3
88+ let genStr = toString(gen)
89+ if (checkSquareForEvolve(checkList[0], genStr, ownerId))
90+ then getXyReturn(checkList[0]._1, gen)
91+ else if (checkSquareForEvolve(checkList[1], genStr, ownerId))
92+ then getXyReturn(checkList[1]._1, gen)
93+ else if (checkSquareForEvolve(checkList[2], genStr, ownerId))
94+ then getXyReturn(checkList[2]._1, gen)
95+ else if (checkSquareForEvolve(checkList[3], genStr, ownerId))
96+ then getXyReturn(checkList[3]._1, gen)
97+ else xyg
98+ }
99+
100+
101+func checkForEvolve (xyg,ownerId) = {
102+ let $t022912312 = xyg
103+ let x = $t022912312._1
104+ let y = $t022912312._2
105+ let gen = $t022912312._3
106+ let p1 = getXy(xyg, ownerId)
107+ if ((p1._3 == gen))
108+ then p1
109+ else {
110+ let p2 = getXy(p1, ownerId)
111+ if ((p2._3 == p1._3))
112+ then p2
113+ else {
114+ let p3 = getXy(p2, ownerId)
115+ if ((p3._3 == p2._3))
116+ then p3
117+ else {
118+ let p4 = getXy(p3, ownerId)
119+ if ((p4._3 == p3._3))
120+ then p4
121+ else {
122+ let p5 = getXy(p4, ownerId)
123+ if ((p5._3 == p4._3))
124+ then p5
125+ else {
126+ let p6 = getXy(p5, ownerId)
127+ if ((p6._3 == p5._3))
128+ then p6
129+ else {
130+ let p7 = getXy(p6, ownerId)
131+ if ((p7._3 == p6._3))
132+ then p7
133+ else {
134+ let p8 = getXy(p7, ownerId)
135+ if ((p8._3 == p7._3))
136+ then p8
137+ else {
138+ let p9 = getXy(p8, ownerId)
139+ if ((p9._3 == p8._3))
140+ then p9
141+ else getXy(getXy(p9, ownerId), ownerId)
142+ }
143+ }
144+ }
145+ }
146+ }
147+ }
148+ }
149+ }
150+ }
151+
152+
153+func claimSquare (x,y,ownerId,transactionId) = {
154+ let $t033653462 = getXy($Tuple3(parseIntValue(x), parseIntValue(y), 1), ownerId)
155+ let resolvedX = $t033653462._1
156+ let resolvedY = $t033653462._2
157+ let resolvedGen = $t033653462._3
158+ let resolvedXStr = toString(resolvedX)
159+ let resolvedYStr = toString(resolvedY)
160+ let resolvedGenStr = toString(resolvedGen)
161+ let assetName = ((resolvedXStr + ",") + resolvedYStr)
162+ let assetUrl = ((nftDomain + transactionId) + ".png")
163+ let asset = Issue(((assetName + " Gen ") + resolvedGenStr), assetUrl, 1, 0, false)
164+ let assetId = calculateAssetId(asset)
165+ let gen = resolvedGenStr
166+ let dataKeyPrefix = ((assetName + ",") + gen)
167+ $Tuple4(asset, assetId, assetUrl, dataKeyPrefix)
168+ }
169+
170+
171+@Callable(i)
172+func purchase (x,y) = {
173+ let ownerId = toBase58String(i.caller.bytes)
174+ let transactionId = toBase58String(i.transactionId)
175+ let $t040944184 = claimSquare(x, y, ownerId, transactionId)
176+ let asset = $t040944184._1
177+ let assetId = $t040944184._2
178+ let assetUrl = $t040944184._3
179+ let dataKeyPrefix = $t040944184._4
180+[asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
181+ }
182+
183+
184+
185+@Callable(i)
186+func autoBuy (x,y) = {
187+ let ownerId = toBase58String(holdingsAddress.bytes)
188+ let transactionId = toBase58String(i.transactionId)
189+ let $t046334723 = claimSquare(x, y, ownerId, transactionId)
190+ let asset = $t046334723._1
191+ let assetId = $t046334723._2
192+ let assetUrl = $t046334723._3
193+ let dataKeyPrefix = $t046334723._4
194+ let assetIdStr = toBase58String(assetId)
195+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [ownerId, assetIdStr, "2"], [AttachedPayment(unit, 0)])
196+ if ((res == res))
197+ then [asset, StringEntry((dataKeyPrefix + "_assetId"), assetIdStr), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry((("sale_" + assetIdStr) + "_originalOwner"), ownerId), IntegerEntry((("sale_" + assetIdStr) + "_amount"), 2), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(holdingsAddress, 1, assetId)]
198+ else throw("Strict value is not equal to itself.")
199+ }
200+
201+
202+
203+@Callable(i)
204+func putForSale (assetId,amount) = {
205+ let ownerId = toBase58String(i.caller.bytes)
206+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [ownerId, assetId, amount], [AttachedPayment(unit, 0)])
207+ if ((res == res))
208+ then [StringEntry((("sale_" + assetId) + "_originalOwner"), ownerId), StringEntry((("sale_" + assetId) + "_amount"), amount), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
209+ else throw("Strict value is not equal to itself.")
210+ }
211+
212+
213+
214+@Callable(i)
215+func finalizeSale (assetId,ownerId) = {
216+ let assetData = match assetInfo(fromBase58String(assetId)) {
217+ case ass: Asset =>
218+ ass
219+ case _ =>
220+ throw("Asset not found")
221+ }
222+ let assetName = assetData.name
223+ let xPart = split(assetName, ",")
224+ let restPart = split(xPart[1], " ")
225+ let x = match xPart[0] {
226+ case s: String =>
227+ valueOrErrorMessage(parseInt(s), "Could not parse 'x'")
228+ case _ =>
229+ throw("'x' not found")
230+ }
231+ let y = match restPart[0] {
232+ case s: String =>
233+ valueOrErrorMessage(parseInt(s), "Could not parse 'y'")
234+ case _ =>
235+ throw("'y' not found")
236+ }
237+ let gen = match restPart[2] {
238+ case s: String =>
239+ valueOrErrorMessage(parseInt(s), "Could not parse 'gen'")
240+ case _ =>
241+ throw("'gen' not found")
242+ }
243+ let xStr = toString(x)
244+ let yStr = toString(y)
245+ let genStr = toString(gen)
246+ let $t065516614 = getXy($Tuple3(x, y, gen), ownerId)
247+ let parsedX = $t065516614._1
248+ let parsedY = $t065516614._2
249+ let parsedGen = $t065516614._3
250+ let returnList = nil
251+ if ((parsedGen == gen))
252+ then {
253+ let dataKey = ((((xStr + ",") + yStr) + ",") + genStr)
254+ $Tuple2([StringEntry((dataKey + "_owner"), ownerId), StringEntry((("sale_" + assetId) + "_originalOwner"), ""), IntegerEntry((("sale_" + assetId) + "_amount"), 0)], dataKey)
255+ }
256+ else {
257+ let transactionId = toBase58String(i.transactionId)
258+ let $t069977100 = claimSquare(xStr, yStr, ownerId, transactionId)
259+ let asset = $t069977100._1
260+ let evolvedAssetId = $t069977100._2
261+ let assetUrl = $t069977100._3
262+ let dataKeyPrefix = $t069977100._4
263+ let dataKey = dataKeyPrefix
264+ $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)
265+ }
66266 }
67267
68268

github/deemru/w8io/169f3d6 
69.59 ms