tx · Cag9tKgfLoyRWkHvYF8eFaaP2gUYebgUhXBL9xqAy8Vh

3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC:  -0.01000000 Waves

2022.11.14 13:12 [3382049] smart account 3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC > SELF 0.00000000 Waves

{ "type": 13, "id": "Cag9tKgfLoyRWkHvYF8eFaaP2gUYebgUhXBL9xqAy8Vh", "fee": 1000000, "feeAssetId": null, "timestamp": 1668420776727, "version": 2, "chainId": 87, "sender": "3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC", "senderPublicKey": "AWoQVon5Ld79iWytFLN2MSSJr9ow7XEMVaH8emaRJp3Z", "proofs": [ "1BKuwLdEmxYGiNGha4XEasvhwgXh1henCpC1HNShEE4eSWFQ76PqLQFZDhYg7KpKPJHKYLBnqPu2GnZ88fqmmsh" ], "script": "base64:BgIGCAISABIABAASbmZ0Q3JlYXRpb25BZGRyZXNzARoBV5PdxNIX5yAK/fchEk7w8HZnJoMDeNRcTAAWc2lnbkFydENvbnRyYWN0QWRkcmVzcwEaAVd7ZNVb1p4XuarT5o/8A1zIxBb4m7qGKeIBCGNoZWNrTkZUAgVhc3NldA1pc3N1ZXJBZGRyZXNzAwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFDWlzc3VlckFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHAQtjbGVhclN0cmluZwEDc3RyCQC6CQIJALwJAgkAugkCCQC8CQIJALoJAgkAvAkCBQNzdHICBSDigJMgAgEgAgPigJwCASACA+KAnQIBIAIBaQEEbG9jawAECmFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBAdhc3NldElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQECWFzc2V0RGVzYwgFBWFzc2V0C2Rlc2NyaXB0aW9uAwMJAAACCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABCQEIY2hlY2tORlQCBQVhc3NldAUWc2lnbkFydENvbnRyYWN0QWRkcmVzcwcEDXBhcnRzT2ZTdHJpbmcJALUJAgUJYXNzZXREZXNjAgEsBApjcmVhdG9yU3RyCQCwAgIJAJEDAgkAtQkCCQCRAwIFDXBhcnRzT2ZTdHJpbmcAAAIBOgABAAEECGFydElkU3RyCQCwAgIJAJEDAgkAtQkCCQCRAwIFDXBhcnRzT2ZTdHJpbmcAAQIBOgABAAEEBG5hbWUJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQdBZGRyZXNzAQUWc2lnbkFydENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgIJAKwCAgIJYXJ0X25hbWVfBQhhcnRJZFN0cgIBXwUKY3JlYXRvclN0cgQHYXJ0RGVzYwkBEUBleHRyTmF0aXZlKDEwNTMpAgkBB0FkZHJlc3MBBRZzaWduQXJ0Q29udHJhY3RBZGRyZXNzCQCsAgIJAKwCAgkArAICAglhcnRfZGVzY18FCGFydElkU3RyAgFfBQpjcmVhdG9yU3RyBAZhcnRVcmwJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQdBZGRyZXNzAQUWc2lnbkFydENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgIJAKwCAgIQYXJ0X2Rpc3BsYXlfY2lkXwUIYXJ0SWRTdHICAV8FCmNyZWF0b3JTdHIECmRlc2NQcmVmaXgJAKwCAgkArAICCQCsAgIJAKwCAgILQ3JlYXRlZCBieSAFCmNyZWF0b3JTdHICAi4gBQRuYW1lAgIuIAQEZGVzYwMJAGYCCQCxAgEFB2FydERlc2MAAAkArAICBQpkZXNjUHJlZml4BQdhcnREZXNjCQCsAgIFCmRlc2NQcmVmaXgCEE5GVCBmcm9tIHNpZ25BcnQECWltYWdlTGluawkArAICAhVodHRwczovL2lwZnMuaW8vaXBmcy8FBmFydFVybAMDCQBmAgkAsQIBBQRuYW1lAAAJAGYCCQCxAgEFBmFydFVybAAABwQOc3Rha2VkTkZUSWRTdHIEByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBBRJuZnRDcmVhdGlvbkFkZHJlc3MCCWNyZWF0ZU5GVAkAzAgCCQCvAgIJAQtjbGVhclN0cmluZwEFBG5hbWUAEAkAzAgCCQCvAgIJAQtjbGVhclN0cmluZwEFBGRlc2MA6AcJAMwIAgUJaW1hZ2VMaW5rCQDMCAICB3NpZ25BcnQFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBeAUHJG1hdGNoMAUBeAkAAgECK1NvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBjcmVhdGlvbiBvZiBORlQDCQAAAgUOc3Rha2VkTkZUSWRTdHIFDnN0YWtlZE5GVElkU3RyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOc3Rha2VkTkZUSWRTdHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICC3NpZ25BcnROZnRfCQDYBAEFB2Fzc2V0SWQCBl9vd25lcgUKYWRkcmVzc1N0cgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgILc2lnbkFydE5mdF8FDnN0YWtlZE5GVElkU3RyAghfYXNzZXRJZAkA2AQBBQdhc3NldElkBQNuaWwFDnN0YWtlZE5GVElkU3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIZV3JvbmcgZGF0YSBmb3IgY3JlYXRlIE5GVAkAAgECE0l2YWxpZCBORlQgYXR0YWNoZWQBaQEGdW5sb2NrAAQKYWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEC3N0YWtlZE5GVElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEDnN0YWtlZE5GVEFzc2V0CQEFdmFsdWUBCQDsBwEFC3N0YWtlZE5GVElkAwMJAAACCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABCQEIY2hlY2tORlQCBQ5zdGFrZWRORlRBc3NldAUSbmZ0Q3JlYXRpb25BZGRyZXNzBwQOc3Rha2VkTkZUSWRTdHIJANgEAQgFDnN0YWtlZE5GVEFzc2V0AmlkBAphc3NldElkU3RyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIJAKwCAgILc2lnbkFydE5mdF8FDnN0YWtlZE5GVElkU3RyAghfYXNzZXRJZAQIb3duZXJTdHIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICAgtzaWduQXJ0TmZ0XwUKYXNzZXRJZFN0cgIGX293bmVyBAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEA2ludgkA/AcECQEHQWRkcmVzcwEFEm5mdENyZWF0aW9uQWRkcmVzcwIHYnVybk5GVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUOc3Rha2VkTkZUQXNzZXQCaWQAAQUDbmlsAwkAAAIFA2ludgUDaW52AwMJAGYCCQCxAgEFCG93bmVyU3RyAAAJAAACBQhvd25lclN0cgUKYWRkcmVzc1N0cgcJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgILc2lnbkFydE5mdF8FDnN0YWtlZE5GVElkU3RyAghfYXNzZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgILc2lnbkFydE5mdF8FCmFzc2V0SWRTdHICBl9vd25lcgUDbmlsBQphc3NldElkU3RyCQACAQIVVGhpcyBORlQgaXMgbm90IHlvdXJzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkLut1J", "height": 3382049, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6jcGaCDo4SHTKswxuPuRtnXwTaYbxa9dXFQ7hZfFh4wV Next: none Diff:
OldNewDifferences
1414 else false
1515
1616
17-func clearString (str) = makeString(split_4C(makeString(split_4C(makeString(split_4C(str, " – "), " "), "“"), " "), "”"), " ")
17+func clearString (str) = makeString_2C(split_4C(makeString_2C(split_4C(makeString_2C(split_4C(str, " – "), " "), "“"), " "), "”"), " ")
1818
1919
2020 @Callable(i)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
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
1515
1616
17-func clearString (str) = makeString(split_4C(makeString(split_4C(makeString(split_4C(str, " – "), " "), "“"), " "), "”"), " ")
17+func clearString (str) = makeString_2C(split_4C(makeString_2C(split_4C(makeString_2C(split_4C(str, " – "), " "), "“"), " "), "”"), " ")
1818
1919
2020 @Callable(i)
2121 func lock () = {
2222 let addressStr = toString(i.caller)
2323 let assetId = value(value(i.payments[0]).assetId)
2424 let asset = value(assetInfo(assetId))
2525 let assetDesc = asset.description
2626 if (if ((value(i.payments[0]).amount == 1))
2727 then checkNFT(asset, signArtContractAddress)
2828 else false)
2929 then {
3030 let partsOfString = split(assetDesc, ",")
3131 let creatorStr = drop(split(partsOfString[0], ":")[1], 1)
3232 let artIdStr = drop(split(partsOfString[1], ":")[1], 1)
3333 let name = getStringValue(Address(signArtContractAddress), ((("art_name_" + artIdStr) + "_") + creatorStr))
3434 let artDesc = getStringValue(Address(signArtContractAddress), ((("art_desc_" + artIdStr) + "_") + creatorStr))
3535 let artUrl = getStringValue(Address(signArtContractAddress), ((("art_display_cid_" + artIdStr) + "_") + creatorStr))
3636 let descPrefix = (((("Created by " + creatorStr) + ". ") + name) + ". ")
3737 let desc = if ((size(artDesc) > 0))
3838 then (descPrefix + artDesc)
3939 else (descPrefix + "NFT from signArt")
4040 let imageLink = ("https://ipfs.io/ipfs/" + artUrl)
4141 if (if ((size(name) > 0))
4242 then (size(artUrl) > 0)
4343 else false)
4444 then {
4545 let stakedNFTIdStr = match invoke(Address(nftCreationAddress), "createNFT", [take(clearString(name), 16), take(clearString(desc), 1000), imageLink, "signArt"], nil) {
4646 case x: String =>
4747 x
4848 case _ =>
4949 throw("Something went wrong during creation of NFT")
5050 }
5151 if ((stakedNFTIdStr == stakedNFTIdStr))
5252 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(stakedNFTIdStr)), StringEntry((("signArtNft_" + toBase58String(assetId)) + "_owner"), addressStr), StringEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId"), toBase58String(assetId))], stakedNFTIdStr)
5353 else throw("Strict value is not equal to itself.")
5454 }
5555 else throw("Wrong data for create NFT")
5656 }
5757 else throw("Ivalid NFT attached")
5858 }
5959
6060
6161
6262 @Callable(i)
6363 func unlock () = {
6464 let addressStr = toString(i.caller)
6565 let stakedNFTId = value(value(i.payments[0]).assetId)
6666 let stakedNFTAsset = value(assetInfo(stakedNFTId))
6767 if (if ((value(i.payments[0]).amount == 1))
6868 then checkNFT(stakedNFTAsset, nftCreationAddress)
6969 else false)
7070 then {
7171 let stakedNFTIdStr = toBase58String(stakedNFTAsset.id)
7272 let assetIdStr = getStringValue((("signArtNft_" + stakedNFTIdStr) + "_assetId"))
7373 let ownerStr = getStringValue((("signArtNft_" + assetIdStr) + "_owner"))
7474 let assetId = fromBase58String(assetIdStr)
7575 let inv = invoke(Address(nftCreationAddress), "burnNFT", nil, [AttachedPayment(stakedNFTAsset.id, 1)])
7676 if ((inv == inv))
7777 then if (if ((size(ownerStr) > 0))
7878 then (ownerStr == addressStr)
7979 else false)
8080 then $Tuple2([ScriptTransfer(i.caller, 1, assetId), DeleteEntry((("signArtNft_" + stakedNFTIdStr) + "_assetId")), DeleteEntry((("signArtNft_" + assetIdStr) + "_owner"))], assetIdStr)
8181 else throw("This NFT is not yours")
8282 else throw("Strict value is not equal to itself.")
8383 }
8484 else throw("Ivalid NFT attached")
8585 }
8686
8787
8888 @Verifier(tx)
8989 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
9090

github/deemru/w8io/3ef1775 
40.26 ms