tx · 9agU7nU7xzMXSpqvaVBejWzBLj4J6nZ8W9YFLevYJwz3

3Mtce1SEyJ7zoXnotc93vB8umXWyh93rGk2:  -0.01000000 Waves

2022.11.04 09:55 [2302032] smart account 3Mtce1SEyJ7zoXnotc93vB8umXWyh93rGk2 > SELF 0.00000000 Waves

{ "type": 13, "id": "9agU7nU7xzMXSpqvaVBejWzBLj4J6nZ8W9YFLevYJwz3", "fee": 1000000, "feeAssetId": null, "timestamp": 1667544905356, "version": 2, "chainId": 84, "sender": "3Mtce1SEyJ7zoXnotc93vB8umXWyh93rGk2", "senderPublicKey": "8GSjmFKc62zwvadNLp1t2Bbir7zA9dniu4eYeyMZvowX", "proofs": [ "4r8qUjgitwPsTDWsBFrRNvLE8iw7PNTdp7PVDNDfVbiSkZwxHAnnigMT5R6g9PLvS58nSvJK8AjgmV37zv7SF9UJ" ], "script": "base64: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", "height": 2302032, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: YPyv1ZccDCdd4TJaVatJWWu6iRrBp2aZMDCFF58YNSP Next: GGnxZBxBCwf72fLBGvLrr8LygBrXFqqvLCkz7JAaZNWs Full:
OldNewDifferences
1-{-# STDLIB_VERSION 3 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let maxAuctionDuration = (1440 * 30)
4+func tryGetInteger (key) = match getInteger(this, key) {
5+ case b: Int =>
6+ b
7+ case _ =>
8+ 0
9+}
10+
11+
12+func tryGetString (key) = match getString(this, key) {
13+ case b: String =>
14+ b
15+ case _ =>
16+ ""
17+}
18+
19+
20+func checkNFT (asset) = if (if (if ((asset.issuer.bytes == this.bytes))
21+ then (asset.decimals == 0)
22+ else false)
23+ then (asset.reissuable == false)
24+ else false)
25+ then (asset.quantity == 1)
26+ else false
27+
528
629 @Callable(i)
7-func auction (duration,startprice,priceAssetId) = {
8- let auction = toBase58String(i.transactionId)
9- WriteSet([DataEntry((auction + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auction + "_duration"), duration), DataEntry((auction + "_startprice"), startprice), DataEntry((auction + "_priceAssetId"), priceAssetId)])
10- }
30+func createNFT (nftName,nftDesc,image,collectionName) = if (if ((toString(i.caller) != ""))
31+ then (toString(i.caller) != "")
32+ else false)
33+ then throw("issuance of new NFTs is limited")
34+ else if ((indexOf(image, "https://") != 0))
35+ then throw("https link to image required")
36+ else {
37+ let asset = Issue(nftName, nftDesc, 1, 0, false, unit, 0)
38+ let assetId = calculateAssetId(asset)
39+ let assetIdStr = toBase58String(assetId)
40+ let collectionDomain = ((toString(i.caller) + "_") + (if ((size(collectionName) > 0))
41+ then collectionName
42+ else "basic"))
43+ let nftNum = (tryGetInteger((("collection_" + collectionDomain) + "_size")) + 1)
44+ $Tuple2([StringEntry((("nft_" + assetIdStr) + "_data"), (((("{'collection': '" + collectionDomain) + "', 'num': ") + toString(nftNum)) + "}")), StringEntry((("nft_" + assetIdStr) + "_image"), image), StringEntry((("nft_" + assetIdStr) + "_issuer"), toString(i.caller)), IntegerEntry((("collection_" + collectionDomain) + "_size"), nftNum), StringEntry(((("collection_" + collectionDomain) + "_assetId_") + assetIdStr), assetIdStr), asset, ScriptTransfer(i.caller, 1, assetId)], assetIdStr)
45+ }
1146
1247
1348
1449 @Callable(i)
15-func bid (auctionId) = {
16- let auction = toBase58String(i.transactionId)
17- WriteSet([DataEntry((auction + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auction + "_auctionId"), auctionId)])
50+func burnNFT () = {
51+ let assetId = value(value(i.payments[0]).assetId)
52+ let asset = value(assetInfo(assetId))
53+ if (if ((value(i.payments[0]).amount == 1))
54+ then checkNFT(asset)
55+ else false)
56+ then {
57+ let assetIdStr = toBase58String(assetId)
58+ let issuer = tryGetString((("nft_" + assetIdStr) + "_issuer"))
59+ let data = tryGetString((("nft_" + assetIdStr) + "_data"))
60+ let partsData = split(data, ", ")
61+ let partsCollection = split(partsData[0], ": ")
62+ let collectionDomain = dropRight(drop(partsCollection[1], 1), 1)
63+ let nftNum = tryGetInteger((("collection_" + collectionDomain) + "_size"))
64+ if ((nftNum > 0))
65+ then {
66+ let updateCollection = if ((nftNum == 1))
67+ then DeleteEntry((("collection_" + collectionDomain) + "_size"))
68+ else IntegerEntry((("collection_" + collectionDomain) + "_size"), (nftNum - 1))
69+[updateCollection, Burn(assetId, 1), DeleteEntry((("nft_" + assetIdStr) + "_data")), DeleteEntry((("nft_" + assetIdStr) + "_image")), DeleteEntry((("nft_" + assetIdStr) + "_issuer")), DeleteEntry(((("collection_" + collectionDomain) + "_assetId_") + assetIdStr))]
70+ }
71+ else throw("Ivalid collection name")
72+ }
73+ else throw("Ivalid NFT attached")
1874 }
1975
2076
21-
22-@Callable(i)
23-func withdraw (auctionId) = {
24- let auction = toBase58String(i.transactionId)
25- WriteSet([DataEntry((auction + "_organizer"), toBase58String(i.caller.bytes)), DataEntry((auction + "_auctionId"), auctionId)])
26- }
27-
77+@Verifier(tx)
78+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
2879

github/deemru/w8io/169f3d6 
27.79 ms