tx · PgcinEBAHcPfQaLyMwkKqWAHXJjeVt66tZJ1EwuqKZQ

3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu:  -0.04000000 Waves

2022.02.09 18:23 [1916269] smart account 3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu > SELF 0.00000000 Waves

{ "type": 13, "id": "PgcinEBAHcPfQaLyMwkKqWAHXJjeVt66tZJ1EwuqKZQ", "fee": 4000000, "feeAssetId": null, "timestamp": 1644420224688, "version": 2, "chainId": 84, "sender": "3N4vqUXWw8tf23LDWDbSEpJZH6dent3ETFu", "senderPublicKey": "D4v2S9mjah7eEEmuQVBNd4WipC3scs8V4PjuDBweWatE", "proofs": [ "3p4us94Ag3tbnnXQEcfZWXyPosi2uQ2Jiw9sxgQ2Vfq4WQpTuY3sGqsxKLmgituxSDEB3sR6zZ3FbVdNGMwgfWkR" ], "script": "base64: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", "height": 1916269, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HKxVZe2Lya1SsV3tyK97is6xoTXwZHj81BVf7JdJ1yKK Next: FigRWRStUtTT4LbXNaRARFTA773XY1bvit8Zu93YyBmK Diff:
OldNewDifferences
119119 then (callerId != holdings)
120120 else false)
121121 then throw("You are not able to put this asset up for sale")
122- else [StringEntry((("sale_" + assetId) + "_originalOwner"), callerId), StringEntry((("sale_" + assetId) + "_amount"), toString(amount)), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
122+ else {
123+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [callerId, assetId, toString(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+ }
123128 }
124129
125130
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 DEBUG = true
1111
1212 let holdings = "3N9R7u449Z1b76QpJp9u3gzPjMYQYnp3V7r"
1313
1414 let holdingsAddress = Address(fromBase58String(holdings))
1515
1616 func getAssetName (x,y) = {
1717 let name = ((x + ",") + y)
1818 name
1919 }
2020
2121
2222 func getDataKeyPrefix (x,y,gen) = {
2323 let name = getAssetName(x, y)
2424 let prefix = ((name + ",") + gen)
2525 prefix
2626 }
2727
2828
2929 func getXYGenFromName (name) = {
3030 let parts = split(name, ",")
3131 let tuple = $Tuple3(parts[0], parts[1], parts[2])
3232 tuple
3333 }
3434
3535
3636 func getDataKeyPrefixFromAssetName (name) = {
3737 let $t0683723 = getXYGenFromName(name)
3838 let x = $t0683723._1
3939 let y = $t0683723._2
4040 let gen = $t0683723._3
4141 let prefix = getDataKeyPrefix(x, y, gen)
4242 prefix
4343 }
4444
4545
4646 func claimSquare (x,y,gen,ownerId,transactionId) = {
4747 let resolvedXStr = x
4848 let resolvedYStr = y
4949 let resolvedGenStr = gen
5050 let assetName = getAssetName(resolvedXStr, resolvedYStr)
5151 let assetUrl = ((nftDomain + transactionId) + ".png")
5252 let asset = Issue(((assetName + ",") + resolvedGenStr), assetUrl, 1, 0, false)
5353 let assetId = calculateAssetId(asset)
5454 let dataKeyPrefix = getDataKeyPrefix(resolvedXStr, resolvedYStr, gen)
5555 $Tuple4(asset, assetId, assetUrl, dataKeyPrefix)
5656 }
5757
5858
5959 @Callable(i)
6060 func purchase (x,y) = {
6161 let ownerId = toBase58String(i.caller.bytes)
6262 let transactionId = toBase58String(i.transactionId)
6363 let $t015101605 = claimSquare(x, y, "1", ownerId, transactionId)
6464 let asset = $t015101605._1
6565 let assetId = $t015101605._2
6666 let assetUrl = $t015101605._3
6767 let dataKeyPrefix = $t015101605._4
6868 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(i.caller, 1, assetId)]
6969 }
7070
7171
7272
7373 @Callable(i)
7474 func autoBuy (x,y) = {
7575 let transactionId = toBase58String(i.transactionId)
7676 let $t020472143 = claimSquare(x, y, "1", holdings, transactionId)
7777 let asset = $t020472143._1
7878 let assetId = $t020472143._2
7979 let assetUrl = $t020472143._3
8080 let dataKeyPrefix = $t020472143._4
8181 let assetIdStr = toBase58String(assetId)
8282 [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)]
8383 }
8484
8585
8686
8787 @Callable(i)
8888 func evolve (x,y,gen,ownerId) = {
8989 let transactionId = toBase58String(i.transactionId)
9090 let $t028732968 = claimSquare(x, y, gen, ownerId, transactionId)
9191 let asset = $t028732968._1
9292 let assetId = $t028732968._2
9393 let assetUrl = $t028732968._3
9494 let dataKeyPrefix = $t028732968._4
9595 [asset, StringEntry((dataKeyPrefix + "_assetId"), toBase58String(assetId)), StringEntry((dataKeyPrefix + "_asset"), assetUrl), StringEntry((dataKeyPrefix + "_owner"), ownerId), StringEntry(transactionId, dataKeyPrefix), ScriptTransfer(Address(fromBase58String(ownerId)), 1, assetId)]
9696 }
9797
9898
9999
100100 @Callable(i)
101101 func putForSale (assetId,amount) = {
102102 let callerId = toBase58String(i.caller.bytes)
103103 let assetData = match assetInfo(fromBase58String(assetId)) {
104104 case ass: Asset =>
105105 ass
106106 case _ =>
107107 throw("Asset not found")
108108 }
109109 let dataPrefix = getDataKeyPrefixFromAssetName(assetData.name)
110110 let ownerId = match getString(this, (dataPrefix + "_owner")) {
111111 case s: String =>
112112 s
113113 case _ =>
114114 throw("Owner not found in data")
115115 }
116116 if ((1 > amount))
117117 then throw("Original owner not found ")
118118 else if (if ((callerId != ownerId))
119119 then (callerId != holdings)
120120 else false)
121121 then throw("You are not able to put this asset up for sale")
122- else [StringEntry((("sale_" + assetId) + "_originalOwner"), callerId), StringEntry((("sale_" + assetId) + "_amount"), toString(amount)), ScriptTransfer(holdingsAddress, 1, fromBase58String(assetId))]
122+ else {
123+ let res = invoke(holdingsAddress, "addOwnerAndAmount", [callerId, assetId, toString(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+ }
123128 }
124129
125130
126131 @Verifier(tx)
127132 func verify () = true
128133

github/deemru/w8io/873ac7e 
103.14 ms