tx · 5cakqHAqShjpUpBsUhQULjV9fbbfeXapvRiSNKiDgeab 3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC: -0.01400000 Waves 2022.02.20 14:46 [2997022] smart account 3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC > SELF 0.00000000 Waves
{ "type": 13, "id": "5cakqHAqShjpUpBsUhQULjV9fbbfeXapvRiSNKiDgeab", "fee": 1400000, "feeAssetId": null, "timestamp": 1645357593744, "version": 2, "chainId": 87, "sender": "3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC", "senderPublicKey": "AWoQVon5Ld79iWytFLN2MSSJr9ow7XEMVaH8emaRJp3Z", "proofs": [ "2yHLoPCzz9aEqR2E1y35xxgPLd7N425FnzdYJWDAh8PVsrNcEA2ahiGaX8gaKEvQ34mrZKdccFEmLxpyqvT468vD" ], "script": "base64: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", "height": 2997022, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BkyB6mPHLgzNC49UqD88E9pcA8ZyizoSXjEtebQC7Vm7 Next: FP4VaqVD8u1zKawTuXvCFN194CogX8gwq7GsMrSAEWuZ Diff:
Old | New | Differences | |
---|---|---|---|
34 | 34 | then artDesc | |
35 | 35 | else "NFT from signArt" | |
36 | 36 | let imageLink = ("https://ipfs.io/ipfs/" + artUrl) | |
37 | - | let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [name, desc, imageLink, "signArt"], nil) { | |
38 | - | case x: String => | |
39 | - | x | |
40 | - | case _ => | |
41 | - | throw("something went wrong during creation of NFT") | |
42 | - | } | |
43 | - | if ((stakedNFTIdStr == stakedNFTIdStr)) | |
44 | - | then [ScriptTransfer(i.caller, 1, fromBase58String(stakedNFTIdStr)), StringEntry((("signArtNft_" + toBase58String(assetId)) + "_owner"), addressStr), StringEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId"), toBase58String(assetId))] | |
45 | - | else throw("Strict value is not equal to itself.") | |
37 | + | if (if ((size(name) > 0)) | |
38 | + | then (size(artUrl) > 0) | |
39 | + | else false) | |
40 | + | then { | |
41 | + | let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [take(name, 16), desc, imageLink, "signArt"], nil) { | |
42 | + | case x: String => | |
43 | + | x | |
44 | + | case _ => | |
45 | + | throw("something went wrong during creation of NFT") | |
46 | + | } | |
47 | + | if ((stakedNFTIdStr == stakedNFTIdStr)) | |
48 | + | then [ScriptTransfer(i.caller, 1, fromBase58String(stakedNFTIdStr)), StringEntry((("signArtNft_" + toBase58String(assetId)) + "_owner"), addressStr), StringEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId"), toBase58String(assetId))] | |
49 | + | else throw("Strict value is not equal to itself.") | |
50 | + | } | |
51 | + | else throw("Wrong data for create NFT") | |
46 | 52 | } | |
47 | 53 | else throw("Ivalid NFT attached") | |
48 | 54 | } |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let nftCreationAddress = base58'3P8LVqVKhTViMJau96KNir6FhHr4WnfoW57' | |
5 | 5 | ||
6 | 6 | let signArtContractAddress = base58'3PDBLdsUrcsiPxNbt8g2gQVoefKgzt3kJzV' | |
7 | 7 | ||
8 | 8 | func checkNFT (asset,issuerAddress) = if (if (if ((asset.issuer.bytes == issuerAddress)) | |
9 | 9 | then (asset.decimals == 0) | |
10 | 10 | else false) | |
11 | 11 | then (asset.reissuable == false) | |
12 | 12 | else false) | |
13 | 13 | then (asset.quantity == 1) | |
14 | 14 | else false | |
15 | 15 | ||
16 | 16 | ||
17 | 17 | @Callable(i) | |
18 | 18 | func lockSignArt () = { | |
19 | 19 | let addressStr = toString(i.caller) | |
20 | 20 | let assetId = value(value(i.payments[0]).assetId) | |
21 | 21 | let asset = value(assetInfo(assetId)) | |
22 | 22 | let assetDesc = asset.description | |
23 | 23 | if (if ((value(i.payments[0]).amount == 1)) | |
24 | 24 | then checkNFT(asset, signArtContractAddress) | |
25 | 25 | else false) | |
26 | 26 | then { | |
27 | 27 | let partsOfString = split(assetDesc, ",") | |
28 | 28 | let creatorStr = drop(split(partsOfString[0], ":")[1], 1) | |
29 | 29 | let artIdStr = drop(split(partsOfString[1], ":")[1], 1) | |
30 | 30 | let name = getStringValue(Address(signArtContractAddress), ((("art_name_" + artIdStr) + "_") + creatorStr)) | |
31 | 31 | let artDesc = getStringValue(Address(signArtContractAddress), ((("art_desc_" + artIdStr) + "_") + creatorStr)) | |
32 | 32 | let artUrl = getStringValue(Address(signArtContractAddress), ((("art_display_cid_" + artIdStr) + "_") + creatorStr)) | |
33 | 33 | let desc = if ((size(artDesc) > 0)) | |
34 | 34 | then artDesc | |
35 | 35 | else "NFT from signArt" | |
36 | 36 | let imageLink = ("https://ipfs.io/ipfs/" + artUrl) | |
37 | - | let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [name, desc, imageLink, "signArt"], nil) { | |
38 | - | case x: String => | |
39 | - | x | |
40 | - | case _ => | |
41 | - | throw("something went wrong during creation of NFT") | |
42 | - | } | |
43 | - | if ((stakedNFTIdStr == stakedNFTIdStr)) | |
44 | - | then [ScriptTransfer(i.caller, 1, fromBase58String(stakedNFTIdStr)), StringEntry((("signArtNft_" + toBase58String(assetId)) + "_owner"), addressStr), StringEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId"), toBase58String(assetId))] | |
45 | - | else throw("Strict value is not equal to itself.") | |
37 | + | if (if ((size(name) > 0)) | |
38 | + | then (size(artUrl) > 0) | |
39 | + | else false) | |
40 | + | then { | |
41 | + | let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [take(name, 16), desc, imageLink, "signArt"], nil) { | |
42 | + | case x: String => | |
43 | + | x | |
44 | + | case _ => | |
45 | + | throw("something went wrong during creation of NFT") | |
46 | + | } | |
47 | + | if ((stakedNFTIdStr == stakedNFTIdStr)) | |
48 | + | then [ScriptTransfer(i.caller, 1, fromBase58String(stakedNFTIdStr)), StringEntry((("signArtNft_" + toBase58String(assetId)) + "_owner"), addressStr), StringEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId"), toBase58String(assetId))] | |
49 | + | else throw("Strict value is not equal to itself.") | |
50 | + | } | |
51 | + | else throw("Wrong data for create NFT") | |
46 | 52 | } | |
47 | 53 | else throw("Ivalid NFT attached") | |
48 | 54 | } | |
49 | 55 | ||
50 | 56 | ||
51 | 57 | ||
52 | 58 | @Callable(i) | |
53 | 59 | func unlockSignArt () = { | |
54 | 60 | let addressStr = toString(i.caller) | |
55 | 61 | let stakedNFTId = value(value(i.payments[0]).assetId) | |
56 | 62 | let stakedNFTAsset = value(assetInfo(stakedNFTId)) | |
57 | 63 | if (if ((value(i.payments[0]).amount == 1)) | |
58 | 64 | then true | |
59 | 65 | else checkNFT(stakedNFTAsset, nftCreationAddress)) | |
60 | 66 | then { | |
61 | 67 | let stakedNFTIdStr = toBase58String(stakedNFTAsset.id) | |
62 | 68 | let assetIdStr = getStringValue((("signArtNft_" + stakedNFTIdStr) + "_assetId")) | |
63 | 69 | let ownerStr = getStringValue((("signArtNft_" + assetIdStr) + "_owner")) | |
64 | 70 | let assetId = fromBase58String(assetIdStr) | |
65 | 71 | if (if ((size(ownerStr) > 0)) | |
66 | 72 | then (ownerStr == addressStr) | |
67 | 73 | else false) | |
68 | 74 | then [ScriptTransfer(i.caller, 1, assetId), Burn(stakedNFTId, 1), DeleteEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId")), DeleteEntry((("signArtNft_" + assetIdStr) + "_owner"))] | |
69 | 75 | else throw("This NFT is not yours") | |
70 | 76 | } | |
71 | 77 | else throw("Ivalid NFT attached") | |
72 | 78 | } | |
73 | 79 | ||
74 | 80 | ||
75 | 81 | @Verifier(tx) | |
76 | 82 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
77 | 83 |
github/deemru/w8io/873ac7e 44.63 ms ◑![]()