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:AAIFAAAAAAAAABwIAhIECgIICBIECgIICBIGCgQICAgIEgQKAggBAAAACwAAAAAEQ09MUwAAAAAAAAAEAAAAAAAEUk9XUwAAAAAAAAAEAAAAAAAJbmZ0RG9tYWluAgAAABhodHRwczovL25mdC5ncmlkZ2FuZy5pby8AAAAABURFQlVHBgAAAAAIaG9sZGluZ3MCAAAAIzNOOVI3dTQ0OVoxYjc2UXBKcDl1M2d6UGpNWVFZbnAzVjdyAAAAAA9ob2xkaW5nc0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAhob2xkaW5ncwEAAAAMZ2V0QXNzZXROYW1lAAAAAgAAAAF4AAAAAXkEAAAABG5hbWUJAAEsAAAAAgkAASwAAAACBQAAAAF4AgAAAAEsBQAAAAF5BQAAAARuYW1lAQAAABBnZXREYXRhS2V5UHJlZml4AAAAAwAAAAF4AAAAAXkAAAADZ2VuBAAAAARuYW1lCQEAAAAMZ2V0QXNzZXROYW1lAAAAAgUAAAABeAUAAAABeQQAAAAGcHJlZml4CQABLAAAAAIJAAEsAAAAAgUAAAAEbmFtZQIAAAABLAUAAAADZ2VuBQAAAAZwcmVmaXgBAAAAEGdldFhZR2VuRnJvbU5hbWUAAAABAAAABG5hbWUEAAAABXBhcnRzCQAEtQAAAAIFAAAABG5hbWUCAAAAASwEAAAABXR1cGxlCQAFFQAAAAMJAAGRAAAAAgUAAAAFcGFydHMAAAAAAAAAAAAJAAGRAAAAAgUAAAAFcGFydHMAAAAAAAAAAAEJAAGRAAAAAgUAAAAFcGFydHMAAAAAAAAAAAIFAAAABXR1cGxlAQAAAB1nZXREYXRhS2V5UHJlZml4RnJvbUFzc2V0TmFtZQAAAAEAAAAEbmFtZQQAAAAJJHQwNjgzNzIzCQEAAAAQZ2V0WFlHZW5Gcm9tTmFtZQAAAAEFAAAABG5hbWUEAAAAAXgIBQAAAAkkdDA2ODM3MjMAAAACXzEEAAAAAXkIBQAAAAkkdDA2ODM3MjMAAAACXzIEAAAAA2dlbggFAAAACSR0MDY4MzcyMwAAAAJfMwQAAAAGcHJlZml4CQEAAAAQZ2V0RGF0YUtleVByZWZpeAAAAAMFAAAAAXgFAAAAAXkFAAAAA2dlbgUAAAAGcHJlZml4AQAAAAtjbGFpbVNxdWFyZQAAAAUAAAABeAAAAAF5AAAAA2dlbgAAAAdvd25lcklkAAAADXRyYW5zYWN0aW9uSWQEAAAADHJlc29sdmVkWFN0cgUAAAABeAQAAAAMcmVzb2x2ZWRZU3RyBQAAAAF5BAAAAA5yZXNvbHZlZEdlblN0cgUAAAADZ2VuBAAAAAlhc3NldE5hbWUJAQAAAAxnZXRBc3NldE5hbWUAAAACBQAAAAxyZXNvbHZlZFhTdHIFAAAADHJlc29sdmVkWVN0cgQAAAAIYXNzZXRVcmwJAAEsAAAAAgkAASwAAAACBQAAAAluZnREb21haW4FAAAADXRyYW5zYWN0aW9uSWQCAAAABC5wbmcEAAAABWFzc2V0CQAEQgAAAAUJAAEsAAAAAgkAASwAAAACBQAAAAlhc3NldE5hbWUCAAAAASwFAAAADnJlc29sdmVkR2VuU3RyBQAAAAhhc3NldFVybAAAAAAAAAAAAQAAAAAAAAAAAAcEAAAAB2Fzc2V0SWQJAAQ4AAAAAQUAAAAFYXNzZXQEAAAADWRhdGFLZXlQcmVmaXgJAQAAABBnZXREYXRhS2V5UHJlZml4AAAAAwUAAAAMcmVzb2x2ZWRYU3RyBQAAAAxyZXNvbHZlZFlTdHIFAAAAA2dlbgkABRYAAAAEBQAAAAVhc3NldAUAAAAHYXNzZXRJZAUAAAAIYXNzZXRVcmwFAAAADWRhdGFLZXlQcmVmaXgAAAAEAAAAAWkBAAAACHB1cmNoYXNlAAAAAgAAAAF4AAAAAXkEAAAAB293bmVySWQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAskdDAxNTEwMTYwNQkBAAAAC2NsYWltU3F1YXJlAAAABQUAAAABeAUAAAABeQIAAAABMQUAAAAHb3duZXJJZAUAAAANdHJhbnNhY3Rpb25JZAQAAAAFYXNzZXQIBQAAAAskdDAxNTEwMTYwNQAAAAJfMQQAAAAHYXNzZXRJZAgFAAAACyR0MDE1MTAxNjA1AAAAAl8yBAAAAAhhc3NldFVybAgFAAAACyR0MDE1MTAxNjA1AAAAAl8zBAAAAA1kYXRhS2V5UHJlZml4CAUAAAALJHQwMTUxMDE2MDUAAAACXzQJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAA1kYXRhS2V5UHJlZml4AgAAAAhfYXNzZXRJZAkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAANZGF0YUtleVByZWZpeAIAAAAGX2Fzc2V0BQAAAAhhc3NldFVybAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADWRhdGFLZXlQcmVmaXgCAAAABl9vd25lcgUAAAAHb3duZXJJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA10cmFuc2FjdGlvbklkBQAAAA1kYXRhS2V5UHJlZml4CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsAAAAAWkBAAAAB2F1dG9CdXkAAAACAAAAAXgAAAABeQQAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAskdDAyMDQ3MjE0MwkBAAAAC2NsYWltU3F1YXJlAAAABQUAAAABeAUAAAABeQIAAAABMQUAAAAIaG9sZGluZ3MFAAAADXRyYW5zYWN0aW9uSWQEAAAABWFzc2V0CAUAAAALJHQwMjA0NzIxNDMAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAAskdDAyMDQ3MjE0MwAAAAJfMgQAAAAIYXNzZXRVcmwIBQAAAAskdDAyMDQ3MjE0MwAAAAJfMwQAAAANZGF0YUtleVByZWZpeAgFAAAACyR0MDIwNDcyMTQzAAAAAl80BAAAAAphc3NldElkU3RyCQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgUAAAAFYXNzZXQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAA1kYXRhS2V5UHJlZml4AgAAAAhfYXNzZXRJZAUAAAAKYXNzZXRJZFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADWRhdGFLZXlQcmVmaXgCAAAABl9hc3NldAUAAAAIYXNzZXRVcmwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAA1kYXRhS2V5UHJlZml4AgAAAAZfb3duZXIFAAAACGhvbGRpbmdzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAVzYWxlXwUAAAAKYXNzZXRJZFN0cgIAAAAOX29yaWdpbmFsT3duZXIFAAAACGhvbGRpbmdzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFc2FsZV8FAAAACmFzc2V0SWRTdHICAAAAB19hbW91bnQAAAAAAAAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAANdHJhbnNhY3Rpb25JZAUAAAANZGF0YUtleVByZWZpeAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA9ob2xkaW5nc0FkZHJlc3MAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAAZldm9sdmUAAAAEAAAAAXgAAAABeQAAAANnZW4AAAAHb3duZXJJZAQAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAskdDAyODczMjk2OAkBAAAAC2NsYWltU3F1YXJlAAAABQUAAAABeAUAAAABeQUAAAADZ2VuBQAAAAdvd25lcklkBQAAAA10cmFuc2FjdGlvbklkBAAAAAVhc3NldAgFAAAACyR0MDI4NzMyOTY4AAAAAl8xBAAAAAdhc3NldElkCAUAAAALJHQwMjg3MzI5NjgAAAACXzIEAAAACGFzc2V0VXJsCAUAAAALJHQwMjg3MzI5NjgAAAACXzMEAAAADWRhdGFLZXlQcmVmaXgIBQAAAAskdDAyODczMjk2OAAAAAJfNAkABEwAAAACBQAAAAVhc3NldAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAIFAAAADWRhdGFLZXlQcmVmaXgCAAAACF9hc3NldElkCQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACBQAAAA1kYXRhS2V5UHJlZml4AgAAAAZfYXNzZXQFAAAACGFzc2V0VXJsCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgUAAAANZGF0YUtleVByZWZpeAIAAAAGX293bmVyBQAAAAdvd25lcklkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADXRyYW5zYWN0aW9uSWQFAAAADWRhdGFLZXlQcmVmaXgJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAB293bmVySWQAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAFpAQAAAApwdXRGb3JTYWxlAAAAAgAAAAdhc3NldElkAAAABmFtb3VudAMJAABmAAAAAgAAAAAAAAAAAQUAAAAGYW1vdW50CQAAAgAAAAECAAAAGU9yaWdpbmFsIG93bmVyIG5vdCBmb3VuZCAEAAAACGNhbGxlcklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAACWFzc2V0RGF0YQQAAAAHJG1hdGNoMAkAA+wAAAABCQACWQAAAAEFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABUFzc2V0BAAAAANhc3MFAAAAByRtYXRjaDAFAAAAA2FzcwkAAAIAAAABAgAAAA9Bc3NldCBub3QgZm91bmQEAAAACmRhdGFQcmVmaXgJAQAAAB1nZXREYXRhS2V5UHJlZml4RnJvbUFzc2V0TmFtZQAAAAEIBQAAAAlhc3NldERhdGEAAAAEbmFtZQQAAAAHb3duZXJJZAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAIFAAAACmRhdGFQcmVmaXgCAAAABl9vd25lcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAF093bmVyIG5vdCBmb3VuZCBpbiBkYXRhAwMJAQAAAAIhPQAAAAIFAAAACGNhbGxlcklkBQAAAAdvd25lcklkCQEAAAACIT0AAAACBQAAAAhjYWxsZXJJZAUAAAAIaG9sZGluZ3MHCQAAAgAAAAECAAAALllvdSBhcmUgbm90IGFibGUgdG8gcHV0IHRoaXMgYXNzZXQgdXAgZm9yIHNhbGUEAAAAA3JlcwkAA/wAAAAEBQAAAA9ob2xkaW5nc0FkZHJlc3MCAAAAEWFkZE93bmVyQW5kQW1vdW50CQAETAAAAAIFAAAACGNhbGxlcklkCQAETAAAAAIFAAAAB2Fzc2V0SWQJAARMAAAAAgUAAAAGYW1vdW50BQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAABHVuaXQAAAAAAAAAAAAFAAAAA25pbAMJAAAAAAAAAgUAAAADcmVzBQAAAANyZXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABXNhbGVfBQAAAAdhc3NldElkAgAAAA5fb3JpZ2luYWxPd25lcgUAAAAIY2FsbGVySWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAABXNhbGVfBQAAAAdhc3NldElkAgAAAAdfYW1vdW50CQABpAAAAAEFAAAABmFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA9ob2xkaW5nc0FkZHJlc3MAAAAAAAAAAAEJAAJZAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAGWhRGWA==", "height": 1916242, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3fzMGkTAHqg6M82m3hvUxZtr6YXdgBfr5c3a7zmerSjS Next: 7gdnjPCsQrKLF4xCH1Asw3sjN29Qn1qGVw3mRC79UPT3 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let COLS = 1024 | |
5 | + | ||
6 | + | let ROWS = 1024 | |
7 | + | ||
4 | 8 | let nftDomain = "https://nft.gridgang.io/" | |
9 | + | ||
10 | + | let DEBUG = true | |
5 | 11 | ||
6 | 12 | let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r" | |
7 | 13 | ||
8 | 14 | let holdingsAddress = Address(fromBase58String(holdings)) | |
9 | 15 | ||
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 | + | ||
10 | 46 | func claimSquare (x,y,gen,ownerId,transactionId) = { | |
11 | 47 | let resolvedXStr = x | |
12 | 48 | let resolvedYStr = y | |
13 | 49 | let resolvedGenStr = gen | |
14 | - | let assetName = | |
50 | + | let assetName = getAssetName(resolvedXStr, resolvedYStr) | |
15 | 51 | let assetUrl = ((nftDomain + transactionId) + ".png") | |
16 | - | let asset = Issue(((assetName + " | |
52 | + | let asset = Issue(((assetName + ",") + resolvedGenStr), assetUrl, 1, 0, false) | |
17 | 53 | let assetId = calculateAssetId(asset) | |
18 | - | let dataKeyPrefix = ( | |
54 | + | let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr, gen) | |
19 | 55 | $Tuple4(asset, assetId, assetUrl, dataKeyPrefix) | |
20 | 56 | } | |
21 | 57 | ||
24 | 60 | func purchase (x,y) = { | |
25 | 61 | let ownerId = toBase58String(i.caller.bytes) | |
26 | 62 | let transactionId = toBase58String(i.transactionId) | |
27 | - | let $ | |
28 | - | let asset = $ | |
29 | - | let assetId = $ | |
30 | - | let assetUrl = $ | |
31 | - | let dataKeyPrefix = $ | |
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 | |
32 | 68 | [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)] | |
33 | 69 | } | |
34 | 70 | ||
37 | 73 | @Callable(i) | |
38 | 74 | func autoBuy (x,y) = { | |
39 | 75 | let transactionId = toBase58String(i.transactionId) | |
40 | - | let $ | |
41 | - | let asset = $ | |
42 | - | let assetId = $ | |
43 | - | let assetUrl = $ | |
44 | - | let dataKeyPrefix = $ | |
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 | |
45 | 81 | let assetIdStr = toBase58String(assetId) | |
46 | 82 | [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)] | |
47 | 83 | } | |
51 | 87 | @Callable(i) | |
52 | 88 | func evolve (x,y,gen,ownerId) = { | |
53 | 89 | let transactionId = toBase58String(i.transactionId) | |
54 | - | let $ | |
55 | - | let asset = $ | |
56 | - | let assetId = $ | |
57 | - | let assetUrl = $ | |
58 | - | let dataKeyPrefix = $ | |
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 | |
59 | 95 | [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)] | |
60 | 96 | } | |
61 | 97 | ||
62 | 98 | ||
63 | 99 | ||
64 | 100 | @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 | + | } | |
128 | 129 | ||
129 | 130 | ||
130 | 131 | @Verifier(tx) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let COLS = 1024 | |
5 | + | ||
6 | + | let ROWS = 1024 | |
7 | + | ||
4 | 8 | let nftDomain = "https://nft.gridgang.io/" | |
9 | + | ||
10 | + | let DEBUG = true | |
5 | 11 | ||
6 | 12 | let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r" | |
7 | 13 | ||
8 | 14 | let holdingsAddress = Address(fromBase58String(holdings)) | |
9 | 15 | ||
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 | + | ||
10 | 46 | func claimSquare (x,y,gen,ownerId,transactionId) = { | |
11 | 47 | let resolvedXStr = x | |
12 | 48 | let resolvedYStr = y | |
13 | 49 | let resolvedGenStr = gen | |
14 | - | let assetName = | |
50 | + | let assetName = getAssetName(resolvedXStr, resolvedYStr) | |
15 | 51 | let assetUrl = ((nftDomain + transactionId) + ".png") | |
16 | - | let asset = Issue(((assetName + " | |
52 | + | let asset = Issue(((assetName + ",") + resolvedGenStr), assetUrl, 1, 0, false) | |
17 | 53 | let assetId = calculateAssetId(asset) | |
18 | - | let dataKeyPrefix = ( | |
54 | + | let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr, gen) | |
19 | 55 | $Tuple4(asset, assetId, assetUrl, dataKeyPrefix) | |
20 | 56 | } | |
21 | 57 | ||
22 | 58 | ||
23 | 59 | @Callable(i) | |
24 | 60 | func purchase (x,y) = { | |
25 | 61 | let ownerId = toBase58String(i.caller.bytes) | |
26 | 62 | let transactionId = toBase58String(i.transactionId) | |
27 | - | let $ | |
28 | - | let asset = $ | |
29 | - | let assetId = $ | |
30 | - | let assetUrl = $ | |
31 | - | let dataKeyPrefix = $ | |
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 | |
32 | 68 | [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)] | |
33 | 69 | } | |
34 | 70 | ||
35 | 71 | ||
36 | 72 | ||
37 | 73 | @Callable(i) | |
38 | 74 | func autoBuy (x,y) = { | |
39 | 75 | let transactionId = toBase58String(i.transactionId) | |
40 | - | let $ | |
41 | - | let asset = $ | |
42 | - | let assetId = $ | |
43 | - | let assetUrl = $ | |
44 | - | let dataKeyPrefix = $ | |
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 | |
45 | 81 | let assetIdStr = toBase58String(assetId) | |
46 | 82 | [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)] | |
47 | 83 | } | |
48 | 84 | ||
49 | 85 | ||
50 | 86 | ||
51 | 87 | @Callable(i) | |
52 | 88 | func evolve (x,y,gen,ownerId) = { | |
53 | 89 | let transactionId = toBase58String(i.transactionId) | |
54 | - | let $ | |
55 | - | let asset = $ | |
56 | - | let assetId = $ | |
57 | - | let assetUrl = $ | |
58 | - | let dataKeyPrefix = $ | |
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 | |
59 | 95 | [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)] | |
60 | 96 | } | |
61 | 97 | ||
62 | 98 | ||
63 | 99 | ||
64 | 100 | @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 | + | } | |
128 | 129 | ||
129 | 130 | ||
130 | 131 | @Verifier(tx) | |
131 | 132 | func verify () = true | |
132 | 133 |
github/deemru/w8io/169f3d6 46.12 ms ◑![]()