2022.05.19 00:11 [3123111] smart account 3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc > SELF 0.00000000 Waves

{ "type": 13, "id": "9suDQLc17A238cr7G9BPNkHmdFjuqvwZhRMRFGc6d1Ke", "fee": 1400000, "feeAssetId": null, "timestamp": 1652908318987, "version": 2, "chainId": 87, "sender": "3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc", "senderPublicKey": "3pJsmGRpWHpqyaAjeX7BacMEfYx32LMNN4qwxQqASBmi", "proofs": [ "4DZ1GVVgjPgBLwpWj7JGgNYSsjdXVPkimosy7gKB7WM58umqVMXSuyFXFxGFgp6jSYzZQK5zEjw6o4jLLVytpyvZ" ], "script": "base64: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", "height": 3123111, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 31Ln5r46yaPBeiVEuA3bB7B5FMRcVZGDSrB5kQ1SKaQP Next: C2iGD3vGzdiRCMDy9AVUvzmnEK9iZodc1dg1gSdRaWvH Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let createNftDapp = base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By'
55
6-let signArtWrapperStr = "3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC"
6+let marketFeeAddress = Address(base58'3PEa88W5it7LVPVwtpZDfYajQQWkxFNG8qf')
77
8-let marketFeeAddress = Address(base58'3PEa88W5it7LVPVwtpZDfYajQQWkxFNG8qf')
8+let puzzleStateAddress = base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'
9+
10+let nftDuckWrapper = base58'3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo'
11+
12+let nftSignArtWrapper = base58'3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC'
913
1014 let royaltyPercent = 7
1115
8286 case _ =>
8387 toString(i.caller)
8488 }
85- let royaltyReceiver = if ((nftIssuer != signArtWrapperStr))
89+ let royaltyReceiver = if ((nftIssuer != toBase58String(nftSignArtWrapper)))
8690 then nftIssuer
8791 else split(split(value(assetInfo(nftId)).description, " ")[2], ".")[0]
8892 [IntegerEntry((("nft_" + assetNameStr) + "_buyOutPrice"), buyOutPrice), StringEntry((("nft_" + assetNameStr) + "_buyOutAssetId"), getAssetString(buyOutAsset)), StringEntry((("nft_" + assetNameStr) + "_royaltyReceiver"), royaltyReceiver), StringEntry((("nft_" + assetNameStr) + "_seller"), toString(i.originCaller)), StringEntry(((("address_" + toString(i.originCaller)) + "_nft_") + assetNameStr), assetNameStr), IntegerEntry((((("address_" + toString(i.originCaller)) + "_nft_") + assetNameStr) + "_startSaleAt"), height)]
133137 }
134138
135139
140+
141+@Callable(i)
142+func like (nftId) = {
143+ let nftAsset = assetInfo(toBytes(nftId))
144+ let isDuckNft = isDefined(getString(Address(nftDuckWrapper), (("nft_" + nftId) + "_duckId")))
145+ let isSignArtNft = isDefined(getString(Address(nftSignArtWrapper), (("signArtNft_" + nftId) + "_assetId")))
146+ if (if (if (if (isDefined(nftAsset))
147+ then !(isDuckNft)
148+ else false)
149+ then !(isSignArtNft)
150+ else false)
151+ then checkNFT(value(nftAsset))
152+ else false)
153+ then {
154+ let callerAddress = toString(i.caller)
155+ let countStaked = match getInteger(Address(puzzleStateAddress), (callerAddress + "_staked")) {
156+ case c: Int =>
157+ c
158+ case _ =>
159+ 0
160+ }
161+ if ((countStaked >= 100000000))
162+ then {
163+ let nftLikesKey = (("nft_" + nftId) + "_likes")
164+ let nftLikesValue = tryGetString((("nft_" + nftId) + "_likes"))
165+ if (!(isDefined(indexOf(nftLikesValue, callerAddress))))
166+ then {
167+ let newLikesValue = if ((size(nftLikesValue) == 0))
168+ then toString(i.caller)
169+ else ((nftLikesValue + ",") + callerAddress)
170+[StringEntry(nftLikesKey, newLikesValue)]
171+ }
172+ else throw("You have already voted")
173+ }
174+ else throw("You can like if you stake 1 or more Puzzles")
175+ }
176+ else throw("Invalid NFT id")
177+ }
178+
179+
136180 @Verifier(tx)
137181 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
138182
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let createNftDapp = base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By'
55
6-let signArtWrapperStr = "3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC"
6+let marketFeeAddress = Address(base58'3PEa88W5it7LVPVwtpZDfYajQQWkxFNG8qf')
77
8-let marketFeeAddress = Address(base58'3PEa88W5it7LVPVwtpZDfYajQQWkxFNG8qf')
8+let puzzleStateAddress = base58'3PFTbywqxtFfukX3HyT881g4iW5K4QL3FAS'
9+
10+let nftDuckWrapper = base58'3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo'
11+
12+let nftSignArtWrapper = base58'3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC'
913
1014 let royaltyPercent = 7
1115
1216 func checkNFT (asset) = if (if (if ((asset.issuer.bytes == createNftDapp))
1317 then (asset.decimals == 0)
1418 else false)
1519 then (asset.reissuable == false)
1620 else false)
1721 then (asset.quantity == 1)
1822 else false
1923
2024
2125 func tryGetInteger (key) = match getInteger(this, key) {
2226 case b: Int =>
2327 b
2428 case _ =>
2529 0
2630 }
2731
2832
2933 func tryGetString (key) = match getString(this, key) {
3034 case b: String =>
3135 b
3236 case _ =>
3337 ""
3438 }
3539
3640
3741 func tryGetAssetInfo (assetId,errorMsg) = match assetInfo(fromBase58String(assetId)) {
3842 case a: Asset =>
3943 a
4044 case _ =>
4145 throw(errorMsg)
4246 }
4347
4448
4549 func getAssetString (assetId) = match assetId {
4650 case b: ByteVector =>
4751 toBase58String(b)
4852 case _ =>
4953 "WAVES"
5054 }
5155
5256
5357 func getAssetBytes (assetIdStr) = if ((assetIdStr == "WAVES"))
5458 then unit
5559 else fromBase58String(assetIdStr)
5660
5761
5862 @Callable(i)
5963 func sellNFT (buyOutPrice,buyOutAssetId) = {
6064 let pmt = if (if ((size(i.payments) == 1))
6165 then (i.payments[0].amount == 1)
6266 else false)
6367 then i.payments[0]
6468 else throw("NFT not listed as payment")
6569 let buyOutAsset = getAssetBytes(buyOutAssetId)
6670 if (isDefined(pmt.assetId))
6771 then {
6872 let nftId = value(pmt.assetId)
6973 let nft = match assetInfo(nftId) {
7074 case a: Asset =>
7175 a
7276 case _ =>
7377 throw("Can't find NFT")
7478 }
7579 if (checkNFT(nft))
7680 then if ((buyOutPrice > 0))
7781 then {
7882 let assetNameStr = toBase58String(nft.id)
7983 let nftIssuer = match getString(Address(createNftDapp), (("nft_" + assetNameStr) + "_issuer")) {
8084 case a: String =>
8185 a
8286 case _ =>
8387 toString(i.caller)
8488 }
85- let royaltyReceiver = if ((nftIssuer != signArtWrapperStr))
89+ let royaltyReceiver = if ((nftIssuer != toBase58String(nftSignArtWrapper)))
8690 then nftIssuer
8791 else split(split(value(assetInfo(nftId)).description, " ")[2], ".")[0]
8892 [IntegerEntry((("nft_" + assetNameStr) + "_buyOutPrice"), buyOutPrice), StringEntry((("nft_" + assetNameStr) + "_buyOutAssetId"), getAssetString(buyOutAsset)), StringEntry((("nft_" + assetNameStr) + "_royaltyReceiver"), royaltyReceiver), StringEntry((("nft_" + assetNameStr) + "_seller"), toString(i.originCaller)), StringEntry(((("address_" + toString(i.originCaller)) + "_nft_") + assetNameStr), assetNameStr), IntegerEntry((((("address_" + toString(i.originCaller)) + "_nft_") + assetNameStr) + "_startSaleAt"), height)]
8993 }
9094 else throw("Price must be greater than zero")
9195 else throw("NFT issued by another dapp")
9296 }
9397 else throw("NFT is not attached to the transaction")
9498 }
9599
96100
97101
98102 @Callable(i)
99103 func buyNFT (nftId) = {
100104 let pmt = if ((size(i.payments) == 1))
101105 then i.payments[0]
102106 else throw("Attached payment is required")
103107 let buyOutPrice = tryGetInteger((("nft_" + nftId) + "_buyOutPrice"))
104108 let buyOutAssetId = tryGetString((("nft_" + nftId) + "_buyOutAssetId"))
105109 let royaltyReceiver = tryGetString((("nft_" + nftId) + "_royaltyReceiver"))
106110 let sellerStr = tryGetString((("nft_" + nftId) + "_seller"))
107111 let nftAsset = tryGetAssetInfo(nftId, "NFT not found")
108112 let buyOutAsset = tryGetAssetInfo(buyOutAssetId, "Buyout asset not found")
109113 if (if ((buyOutPrice > 0))
110114 then (pmt.amount >= buyOutPrice)
111115 else false)
112116 then {
113117 let royaltyPart = fraction(buyOutPrice, royaltyPercent, 100)
114118 let marketFee = fraction(buyOutPrice, 3, 100)
115119 if ((pmt.assetId == buyOutAsset.id))
116120 then $Tuple2([ScriptTransfer(i.caller, 1, nftAsset.id), ScriptTransfer(Address(fromBase58String(sellerStr)), ((buyOutPrice - royaltyPart) - marketFee), buyOutAsset.id), ScriptTransfer(Address(fromBase58String(royaltyReceiver)), royaltyPart, buyOutAsset.id), ScriptTransfer(marketFeeAddress, marketFee, buyOutAsset.id), DeleteEntry((("nft_" + nftId) + "_buyOutPrice")), DeleteEntry((("nft_" + nftId) + "_buyOutAssetId")), DeleteEntry((("nft_" + nftId) + "_royaltyReceiver")), DeleteEntry((("nft_" + nftId) + "_seller")), DeleteEntry(((("address_" + sellerStr) + "_nft_") + nftId)), DeleteEntry((((("address_" + sellerStr) + "_nft_") + nftId) + "_startSaleAt"))], toBase58String(nftAsset.id))
117121 else throw("The buyout asset does not match the purchase asset")
118122 }
119123 else throw("Payment amount must be greater than zero")
120124 }
121125
122126
123127
124128 @Callable(i)
125129 func cancelSell (nftId) = {
126130 let sellerStr = tryGetString((("nft_" + nftId) + "_seller"))
127131 let nftAsset = tryGetAssetInfo(nftId, "NFT not found")
128132 if (if ((size(sellerStr) > 0))
129133 then (sellerStr == toString(i.originCaller))
130134 else false)
131135 then $Tuple2([ScriptTransfer(i.caller, 1, nftAsset.id), DeleteEntry((("nft_" + nftId) + "_buyOutPrice")), DeleteEntry((("nft_" + nftId) + "_buyOutAssetId")), DeleteEntry((("nft_" + nftId) + "_royaltyReceiver")), DeleteEntry((("nft_" + nftId) + "_seller")), DeleteEntry(((("address_" + sellerStr) + "_nft_") + nftId)), DeleteEntry((((("address_" + sellerStr) + "_nft_") + nftId) + "_startSaleAt"))], nftId)
132136 else throw("You are not a seller")
133137 }
134138
135139
140+
141+@Callable(i)
142+func like (nftId) = {
143+ let nftAsset = assetInfo(toBytes(nftId))
144+ let isDuckNft = isDefined(getString(Address(nftDuckWrapper), (("nft_" + nftId) + "_duckId")))
145+ let isSignArtNft = isDefined(getString(Address(nftSignArtWrapper), (("signArtNft_" + nftId) + "_assetId")))
146+ if (if (if (if (isDefined(nftAsset))
147+ then !(isDuckNft)
148+ else false)
149+ then !(isSignArtNft)
150+ else false)
151+ then checkNFT(value(nftAsset))
152+ else false)
153+ then {
154+ let callerAddress = toString(i.caller)
155+ let countStaked = match getInteger(Address(puzzleStateAddress), (callerAddress + "_staked")) {
156+ case c: Int =>
157+ c
158+ case _ =>
159+ 0
160+ }
161+ if ((countStaked >= 100000000))
162+ then {
163+ let nftLikesKey = (("nft_" + nftId) + "_likes")
164+ let nftLikesValue = tryGetString((("nft_" + nftId) + "_likes"))
165+ if (!(isDefined(indexOf(nftLikesValue, callerAddress))))
166+ then {
167+ let newLikesValue = if ((size(nftLikesValue) == 0))
168+ then toString(i.caller)
169+ else ((nftLikesValue + ",") + callerAddress)
170+[StringEntry(nftLikesKey, newLikesValue)]
171+ }
172+ else throw("You have already voted")
173+ }
174+ else throw("You can like if you stake 1 or more Puzzles")
175+ }
176+ else throw("Invalid NFT id")
177+ }
178+
179+
136180 @Verifier(tx)
137181 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
138182

github/deemru/w8io/786bc32 
63.43 ms