tx · Dq3yM1iJ9TYCWftAZCCw7yhh38B1iNB6DBK5smJiTXWs

3Mr6LNXTo2cMvNMrka9pV1pwHZFXVHULoue:  -0.01400000 Waves

2021.11.30 10:04 [1813456] smart account 3Mr6LNXTo2cMvNMrka9pV1pwHZFXVHULoue > SELF 0.00000000 Waves

{ "type": 13, "id": "Dq3yM1iJ9TYCWftAZCCw7yhh38B1iNB6DBK5smJiTXWs", "fee": 1400000, "feeAssetId": null, "timestamp": 1638255959776, "version": 2, "chainId": 84, "sender": "3Mr6LNXTo2cMvNMrka9pV1pwHZFXVHULoue", "senderPublicKey": "9tHFZ3PMkyXBYPkjU77RdMPEGBzfm7BWxfuHvGjgdrv5", "proofs": [ "4ejaf5YHntCc2M5qadFVhMtStJKLLrcDuTf82LMA542Nt4qEYDT9koZ3dCNWLgfR53WhT6dauxrspPAcVRD9CTzx" ], "script": "base64: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", "height": 1813456, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 41NK9egTzof6m5BsFvEVECqs9KRbPtrxZ4dziR3G18uA Next: 7yTcDBLfPYvyzFuLGZbQMRNTwKcFvbNTrBUvQvxhEVAY Diff:
OldNewDifferences
8989
9090
9191 @Callable(i)
92-func nftNoLongerForSale (assetStr) = {
92+func cancelSelling (assetStr) = {
9393 let ownerStr = tryGetString(ownerKey(assetStr))
9494 let owner = match addressFromString(ownerStr) {
9595 case a: Address =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func priceKey (asset) = (asset + "_price")
55
66
77 func ownerKey (asset) = (asset + "_owner")
88
99
1010 func tryGetInteger (key) = {
1111 let val = match getInteger(this, key) {
1212 case b: Int =>
1313 b
1414 case _ =>
1515 0
1616 }
1717 val
1818 }
1919
2020
2121 func tryGetString (key) = {
2222 let val = match getString(this, key) {
2323 case b: String =>
2424 b
2525 case _ =>
2626 ""
2727 }
2828 val
2929 }
3030
3131
3232 @Callable(i)
3333 func offerForSale (price) = {
3434 let firstPayment = value(i.payments[0])
3535 let assetId = match firstPayment.assetId {
3636 case id: ByteVector =>
3737 id
3838 case w: Unit =>
3939 throw("Asset is not NFT")
4040 case _ =>
4141 throw("Match error")
4242 }
4343 let assetIdStr = toBase58String(assetId)
4444 let asset = match assetInfo(assetId) {
4545 case a: Asset =>
4646 a
4747 case _ =>
4848 throw("Error getting information about asset")
4949 }
5050 if (if (if ((asset.quantity != 1))
5151 then (asset.decimals != 0)
5252 else false)
5353 then asset.reissuable
5454 else false)
5555 then throw("Asset is not NFT")
5656 else [IntegerEntry(priceKey(assetIdStr), price), StringEntry(ownerKey(assetIdStr), toBase58String(i.caller.bytes))]
5757 }
5858
5959
6060
6161 @Callable(i)
6262 func buy (assetStr) = {
6363 let price = tryGetInteger(priceKey(assetStr))
6464 let ownerStr = tryGetString(ownerKey(assetStr))
6565 let owner = match addressFromString(ownerStr) {
6666 case a: Address =>
6767 a
6868 case _ =>
6969 throw("Address parsing error")
7070 }
7171 let firstPayment = value(i.payments[0])
7272 let firstPaymentBool = match firstPayment.assetId {
7373 case t: ByteVector =>
7474 true
7575 case w: Unit =>
7676 false
7777 case _ =>
7878 throw("Match error")
7979 }
8080 if ((price == 0))
8181 then throw("This NFT is not for sale")
8282 else if (firstPaymentBool)
8383 then throw("Payment must be in Waves tokens only")
8484 else if ((price > firstPayment.amount))
8585 then throw("Insufficient funds")
8686 else [ScriptTransfer(i.caller, 1, fromBase58String(assetStr)), ScriptTransfer(owner, price, unit), DeleteEntry(priceKey(assetStr)), DeleteEntry(ownerKey(assetStr))]
8787 }
8888
8989
9090
9191 @Callable(i)
92-func nftNoLongerForSale (assetStr) = {
92+func cancelSelling (assetStr) = {
9393 let ownerStr = tryGetString(ownerKey(assetStr))
9494 let owner = match addressFromString(ownerStr) {
9595 case a: Address =>
9696 a
9797 case _ =>
9898 throw("Address parsing error")
9999 }
100100 if ((ownerStr != toBase58String(i.caller.bytes)))
101101 then throw("The calling address is not the owner of the NFT token")
102102 else [ScriptTransfer(i.caller, 1, fromBase58String(assetStr)), DeleteEntry(priceKey(assetStr)), DeleteEntry(ownerKey(assetStr))]
103103 }
104104
105105
106106 @Verifier(tx)
107107 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
108108

github/deemru/w8io/873ac7e 
27.51 ms