2022.05.16 21:09 [3120036] smart account 3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC > SELF 0.00000000 Waves

{ "type": 13, "id": "G1qNnk5WzEGwp73XeiUEsjUUSkG7nMiG4DM7SvvsQ45P", "fee": 1400000, "feeAssetId": null, "timestamp": 1652724607410, "version": 2, "chainId": 87, "sender": "3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC", "senderPublicKey": "AWoQVon5Ld79iWytFLN2MSSJr9ow7XEMVaH8emaRJp3Z", "proofs": [ "4icifBfyTWvLQ72HgBcLNe9GhyaZQAbB2uPR4C4eoSPmf5hGeNagEJEaQeYsG5jKtL6pECae2tCABZkuiVnqAqtq" ], "script": "base64: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", "height": 3120036, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E15mnxXgbDjUnzoFkykRdMZRBJk1gEB2na8mrE4HUeEN Next: 6brm4bdMQDpF8DCPsEbTU9snJpaCmw364Gi5dJT1qBB7 Diff:
OldNewDifferences
1212 else false)
1313 then (asset.quantity == 1)
1414 else false
15+
16+
17+func clearString (str) = makeString(split(str, " – "), " ")
1518
1619
1720 @Callable(i)
3942 then (size(artUrl) > 0)
4043 else false)
4144 then {
42- let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [take(name, 16), take(desc, 1000), imageLink, "signArt"], nil) {
45+ let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [take(clearString(name), 16), take(clearString(desc), 1000), imageLink, "signArt"], nil) {
4346 case x: String =>
4447 x
4548 case _ =>
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let nftCreationAddress = base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By'
55
66 let signArtContractAddress = base58'3PDBLdsUrcsiPxNbt8g2gQVoefKgzt3kJzV'
77
88 func checkNFT (asset,issuerAddress) = if (if (if ((asset.issuer.bytes == issuerAddress))
99 then (asset.decimals == 0)
1010 else false)
1111 then (asset.reissuable == false)
1212 else false)
1313 then (asset.quantity == 1)
1414 else false
15+
16+
17+func clearString (str) = makeString(split(str, " – "), " ")
1518
1619
1720 @Callable(i)
1821 func lock () = {
1922 let addressStr = toString(i.caller)
2023 let assetId = value(value(i.payments[0]).assetId)
2124 let asset = value(assetInfo(assetId))
2225 let assetDesc = asset.description
2326 if (if ((value(i.payments[0]).amount == 1))
2427 then checkNFT(asset, signArtContractAddress)
2528 else false)
2629 then {
2730 let partsOfString = split(assetDesc, ",")
2831 let creatorStr = drop(split(partsOfString[0], ":")[1], 1)
2932 let artIdStr = drop(split(partsOfString[1], ":")[1], 1)
3033 let name = getStringValue(Address(signArtContractAddress), ((("art_name_" + artIdStr) + "_") + creatorStr))
3134 let artDesc = getStringValue(Address(signArtContractAddress), ((("art_desc_" + artIdStr) + "_") + creatorStr))
3235 let artUrl = getStringValue(Address(signArtContractAddress), ((("art_display_cid_" + artIdStr) + "_") + creatorStr))
3336 let descPrefix = (((("Created by " + creatorStr) + ". ") + name) + ". ")
3437 let desc = if ((size(artDesc) > 0))
3538 then (descPrefix + artDesc)
3639 else (descPrefix + "NFT from signArt")
3740 let imageLink = ("https://ipfs.io/ipfs/" + artUrl)
3841 if (if ((size(name) > 0))
3942 then (size(artUrl) > 0)
4043 else false)
4144 then {
42- let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [take(name, 16), take(desc, 1000), imageLink, "signArt"], nil) {
45+ let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [take(clearString(name), 16), take(clearString(desc), 1000), imageLink, "signArt"], nil) {
4346 case x: String =>
4447 x
4548 case _ =>
4649 throw("Something went wrong during creation of NFT")
4750 }
4851 if ((stakedNFTIdStr == stakedNFTIdStr))
4952 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(stakedNFTIdStr)), StringEntry((("signArtNft_" + toBase58String(assetId)) + "_owner"), addressStr), StringEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId"), toBase58String(assetId))], stakedNFTIdStr)
5053 else throw("Strict value is not equal to itself.")
5154 }
5255 else throw("Wrong data for create NFT")
5356 }
5457 else throw("Ivalid NFT attached")
5558 }
5659
5760
5861
5962 @Callable(i)
6063 func unlock () = {
6164 let addressStr = toString(i.caller)
6265 let stakedNFTId = value(value(i.payments[0]).assetId)
6366 let stakedNFTAsset = value(assetInfo(stakedNFTId))
6467 if (if ((value(i.payments[0]).amount == 1))
6568 then checkNFT(stakedNFTAsset, nftCreationAddress)
6669 else false)
6770 then {
6871 let stakedNFTIdStr = toBase58String(stakedNFTAsset.id)
6972 let assetIdStr = getStringValue((("signArtNft_" + stakedNFTIdStr) + "_assetId"))
7073 let ownerStr = getStringValue((("signArtNft_" + assetIdStr) + "_owner"))
7174 let assetId = fromBase58String(assetIdStr)
7275 let inv = invoke(Address(nftCreationAddress), "burnNFT", nil, [AttachedPayment(stakedNFTAsset.id, 1)])
7376 if ((inv == inv))
7477 then if (if ((size(ownerStr) > 0))
7578 then (ownerStr == addressStr)
7679 else false)
7780 then $Tuple2([ScriptTransfer(i.caller, 1, assetId), DeleteEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId")), DeleteEntry((("signArtNft_" + assetIdStr) + "_owner"))], assetIdStr)
7881 else throw("This NFT is not yours")
7982 else throw("Strict value is not equal to itself.")
8083 }
8184 else throw("Ivalid NFT attached")
8285 }
8386
8487
8588 @Verifier(tx)
8689 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8790

github/deemru/w8io/786bc32 
36.19 ms