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:
Old | New | Differences | |
---|---|---|---|
14 | 14 | else false | |
15 | 15 | ||
16 | 16 | ||
17 | - | func f (g) = makeString(split_4C(makeString(split_4C(makeString(split_4C(g, " – "), " "), "“"), " "), "”"), " ") | |
17 | + | func f (g) = makeString_2C(split_4C(makeString_2C(split_4C(makeString_2C(split_4C(g, " – "), " "), "“"), " "), "”"), " ") | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | @Callable(h) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By' | |
5 | 5 | ||
6 | 6 | let b = base58'3PDBLdsUrcsiPxNbt8g2gQVoefKgzt3kJzV' | |
7 | 7 | ||
8 | 8 | func c (d,e) = if (if (if ((d.issuer.bytes == e)) | |
9 | 9 | then (d.decimals == 0) | |
10 | 10 | else false) | |
11 | 11 | then (d.reissuable == false) | |
12 | 12 | else false) | |
13 | 13 | then (d.quantity == 1) | |
14 | 14 | else false | |
15 | 15 | ||
16 | 16 | ||
17 | - | func f (g) = makeString(split_4C(makeString(split_4C(makeString(split_4C(g, " – "), " "), "“"), " "), "”"), " ") | |
17 | + | func f (g) = makeString_2C(split_4C(makeString_2C(split_4C(makeString_2C(split_4C(g, " – "), " "), "“"), " "), "”"), " ") | |
18 | 18 | ||
19 | 19 | ||
20 | 20 | @Callable(h) | |
21 | 21 | func lock () = { | |
22 | 22 | let i = toString(h.caller) | |
23 | 23 | let j = value(value(h.payments[0]).assetId) | |
24 | 24 | let d = value(assetInfo(j)) | |
25 | 25 | let k = d.description | |
26 | 26 | if (if ((value(h.payments[0]).amount == 1)) | |
27 | 27 | then c(d, b) | |
28 | 28 | else false) | |
29 | 29 | then { | |
30 | 30 | let l = split(k, ",") | |
31 | 31 | let m = drop(split(l[0], ":")[1], 1) | |
32 | 32 | let n = drop(split(l[1], ":")[1], 1) | |
33 | 33 | let o = getStringValue(Address(b), ((("art_name_" + n) + "_") + m)) | |
34 | 34 | let p = getStringValue(Address(b), ((("art_desc_" + n) + "_") + m)) | |
35 | 35 | let q = getStringValue(Address(b), ((("art_display_cid_" + n) + "_") + m)) | |
36 | 36 | let r = (((("Created by " + m) + ". ") + o) + ". ") | |
37 | 37 | let s = if ((size(p) > 0)) | |
38 | 38 | then (r + p) | |
39 | 39 | else (r + "NFT from signArt") | |
40 | 40 | let t = ("https://ipfs.io/ipfs/" + q) | |
41 | 41 | if (if ((size(o) > 0)) | |
42 | 42 | then (size(q) > 0) | |
43 | 43 | else false) | |
44 | 44 | then { | |
45 | 45 | let u = { | |
46 | 46 | let v = invoke(Address(a), "createNFT", [take(f(o), 16), take(f(s), 1000), t, "signArt"], nil) | |
47 | 47 | if ($isInstanceOf(v, "String")) | |
48 | 48 | then { | |
49 | 49 | let w = v | |
50 | 50 | w | |
51 | 51 | } | |
52 | 52 | else throw("Something went wrong during creation of NFT") | |
53 | 53 | } | |
54 | 54 | if ((u == u)) | |
55 | 55 | then $Tuple2([ScriptTransfer(h.caller, 1, fromBase58String(u)), StringEntry((("signArtNft_" + toBase58String(j)) + "_owner"), i), StringEntry((("signArtNft_" + u) + "_assetId"), toBase58String(j))], u) | |
56 | 56 | else throw("Strict value is not equal to itself.") | |
57 | 57 | } | |
58 | 58 | else throw("Wrong data for create NFT") | |
59 | 59 | } | |
60 | 60 | else throw("Ivalid NFT attached") | |
61 | 61 | } | |
62 | 62 | ||
63 | 63 | ||
64 | 64 | ||
65 | 65 | @Callable(h) | |
66 | 66 | func unlock () = { | |
67 | 67 | let i = toString(h.caller) | |
68 | 68 | let x = value(value(h.payments[0]).assetId) | |
69 | 69 | let y = value(assetInfo(x)) | |
70 | 70 | if (if ((value(h.payments[0]).amount == 1)) | |
71 | 71 | then c(y, a) | |
72 | 72 | else false) | |
73 | 73 | then { | |
74 | 74 | let u = toBase58String(y.id) | |
75 | 75 | let z = getStringValue((("signArtNft_" + u) + "_assetId")) | |
76 | 76 | let A = getStringValue((("signArtNft_" + z) + "_owner")) | |
77 | 77 | let j = fromBase58String(z) | |
78 | 78 | let B = invoke(Address(a), "burnNFT", nil, [AttachedPayment(y.id, 1)]) | |
79 | 79 | if ((B == B)) | |
80 | 80 | then if (if ((size(A) > 0)) | |
81 | 81 | then (A == i) | |
82 | 82 | else false) | |
83 | 83 | then $Tuple2([ScriptTransfer(h.caller, 1, j), DeleteEntry((("signArtNft_" + u) + "_assetId")), DeleteEntry((("signArtNft_" + z) + "_owner"))], z) | |
84 | 84 | else throw("This NFT is not yours") | |
85 | 85 | else throw("Strict value is not equal to itself.") | |
86 | 86 | } | |
87 | 87 | else throw("Ivalid NFT attached") | |
88 | 88 | } | |
89 | 89 | ||
90 | 90 | ||
91 | 91 | @Verifier(C) | |
92 | 92 | func D () = sigVerify(C.bodyBytes, C.proofs[0], C.senderPublicKey) | |
93 | 93 |
github/deemru/w8io/0e76f2f 81.61 ms ◑![]()