tx · UgDYv1qGa33swxK71FZzA6RAQkk9uhKxBgtXJ9spew4 3N9cKCHp6ZLMgz7rRgF8Q8DEt8zbtd1Ht7F: -0.01000000 Waves 2023.01.25 13:05 [2420371] smart account 3N9cKCHp6ZLMgz7rRgF8Q8DEt8zbtd1Ht7F > SELF 0.00000000 Waves
{ "type": 13, "id": "UgDYv1qGa33swxK71FZzA6RAQkk9uhKxBgtXJ9spew4", "fee": 1000000, "feeAssetId": null, "timestamp": 1674641247885, "version": 2, "chainId": 84, "sender": "3N9cKCHp6ZLMgz7rRgF8Q8DEt8zbtd1Ht7F", "senderPublicKey": "3V22YUj3GF4AeBxdWx8rgGdG4groE4W6P2s4sAkshe7R", "proofs": [ "5ZDSRhKokD7msZgbKDGxKVwUZe6rXdFsZwEvJ3Rb9hRQq21JX6tTFqQbu7XZfUYQKcAD5wLQiXnH6Gumu4cggyzV" ], "script": "base64:BgIhCAISCwoJCAgICAgBCAgIEgMKAQgSBAoCCAgSBQoDCAgICwAJc2VwYXJhdG9yAgFfAARrQnV5AgNidXkABmtQcmljZQIFcHJpY2UABWtTZWxsAgRzZWxsAAV0ZWFtcwEghWOVo/OIjrDeDBeOCE6/mj+SuybbOuh2jhbcFCIqSH4ABVdBVkVTAQAAEm1heEF1Y3Rpb25EdXJhdGlvbgAHAARrQmlkAgNiaWQADHN0YXR1c0Zvck5GVAkAlgoEAgRPUEVOAgZDTE9TRUQCCFJFV0FSREVEAghDQU5DRUxFRAALZEFwcEFkZHJlc3MBGgFUSrhPbN7C2pPt9I7pSjb41U9/ldVVW12gAQVpc05mdAEHYXNzZXRJZAQHJG1hdGNoMAkA7AcBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAV0b2tlbgUHJG1hdGNoMAMDCQAAAggFBXRva2VuCGRlY2ltYWxzAAAJAAACCAUFdG9rZW4IcXVhbnRpdHkAAQcJAAACCAUFdG9rZW4KcmVpc3N1YWJsZQcHBwQBaQEJY3JlYXRlTmZ0CQhuZnRfbmFtZQluZnRfb3duZXIPbmZ0X2RBcHBBZGRyZXNzCG5mdF90eXBlCG5mdF90YWdzEW5mdF9zZWxsaW5nX3ByaWNlD25mdF9kZXNjcmlwdGlvbgpuZnRfb25TZWxsCG5mdF9kYXRhBAhuZXdUb2tlbgkAwggFBQhuZnRfbmFtZQUPbmZ0X2Rlc2NyaXB0aW9uAAEAAAcEB2lzc3VlSWQJALgIAQUIbmV3VG9rZW4EBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgUIbmV3VG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2lzc3VlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgVPd25lcgkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdHlwZQUIbmZ0X3R5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdGFncwUIbmZ0X3RhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAg9uZnRfZEFwcEFkZHJlc3MFD25mdF9kQXBwQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAhFuZnRfc2VsbGluZ19wcmljZQURbmZ0X3NlbGxpbmdfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgpuZnRfb25TZWxsBQpuZnRfb25TZWxsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X2RhdGEFCG5mdF9kYXRhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFBHR4SWQFCXNlcGFyYXRvcgIJaXNzdWVfbmZ0CQDYBAEFB2lzc3VlSWQFA25pbAFpAQdzZWxsTkZUAQVwcmljZQQEdHhJZAgFAWkNdHJhbnNhY3Rpb25JZAQGc2VsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAskdDAxODc5MTk2NAkAlAoCCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAZ0b2tlbjAIBQskdDAxODc5MTk2NAJfMQQHYW1vdW50MAgFCyR0MDE4NzkxOTY0Al8yAwkBASEBCQEFaXNOZnQBBQZ0b2tlbjAJAAIBAhBUb2tlbiBpcyBub3QgTkZUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgkA2AQBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBXByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQVrU2VsbAkArAICCQCsAgIJANgEAQUGdG9rZW4wBQlzZXBhcmF0b3IJAKQDAQUHYW1vdW50MAUDbmlsAWkBBmJ1eU5GVAIFbmZ0SUQRY3VycmVudF9uZnRfb3duZXIEB2Fzc2V0SWQJANkEAQUFbmZ0SUQEBmFtb3VudAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEEGNoZWNrT3duZXJJc1NhbWUEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhBwQFcHJpY2UJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICCQCsAgIJAKwCAgUGa1ByaWNlBQlzZXBhcmF0b3IFBW5mdElEAgFfBRFjdXJyZW50X25mdF9vd25lcgMJAAACBRFjdXJyZW50X25mdF9vd25lcgkApQgBCAUBaQZjYWxsZXIJAAIBAiljdXJyZW50IE93bmVyIG9mIE5GVCBub3QgYWJsZSB0byBwdXJjaGFzZQMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBXRlYW1zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRFjdXJyZW50X25mdF9vd25lcgUGYW1vdW50BQV0ZWFtcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUEa0J1eQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAKQDAQUGYW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRFjdXJyZW50X25mdF9vd25lcgUGYW1vdW50BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQRrQnV5CQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgkApAMBBQZhbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQVuZnRJRAUJc2VwYXJhdG9yAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyBQNuaWwBaQESbWFudWFsRnVuZFRyYW5zZmVyAw1yZWNlcGllbnRBZGRyB21lc3NhZ2UEdG9rbgQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAdyZWNpdmVyCQDZBAEFDXJlY2VwaWVudEFkZHIEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0ZWFtcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIJX3RyYW5zZmVyBQZhbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIMX3RyYW5zZmVyX3RvBQ1yZWNlcGllbnRBZGRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUHcmVjaXZlcgUGYW1vdW50BQV0ZWFtcwUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJANgEAQUGY2FsbGVyAglfdHJhbnNmZXIFBmFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJANgEAQUGY2FsbGVyAgxfdHJhbnNmZXJfdG8FDXJlY2VwaWVudEFkZHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQdyZWNpdmVyBQZhbW91bnQFBVdBVkVTBQNuaWwAO1TluQ==", "height": 2420371, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GYrvjGQfZqpixX2JCmDbaVp9UhGo95otsZsbbvgLHLTS Next: 5rzBxAji7HwbgNEgDA1ZPeXdzB2M9JFXNNP3oncLTpLH Diff:
Old | New | Differences | |
---|---|---|---|
37 | 37 | ||
38 | 38 | ||
39 | 39 | @Callable(o) | |
40 | - | func manualFundTransfer (p,q) = { | |
41 | - | let r = o.caller.bytes | |
42 | - | let s = fromBase58String(p) | |
43 | - | let t = o.payments[0].amount | |
44 | - | if ((toString(t) == "teams")) | |
45 | - | then [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, e)] | |
46 | - | else [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, unit)] | |
40 | + | func createNft (p,q,r,s,t,u,v,w,x) = { | |
41 | + | let y = Issue(p, v, 1, 0, false) | |
42 | + | let z = calculateAssetId(y) | |
43 | + | let A = o.transactionId | |
44 | + | [y, ScriptTransfer(o.caller, 1, z), StringEntry(((toBase58String(z) + a) + "Owner"), toString(o.caller)), StringEntry(((toBase58String(z) + a) + "nft_type"), s), StringEntry(((toBase58String(z) + a) + "nft_tags"), t), StringEntry(((toBase58String(z) + a) + "nft_dAppAddress"), r), IntegerEntry(((toBase58String(z) + a) + "nft_selling_price"), u), StringEntry(((toBase58String(z) + a) + "nft_onSell"), w), StringEntry(((toBase58String(z) + a) + "nft_data"), x), StringEntry(((toBase58String(A) + a) + "issue_nft"), toBase58String(z))] | |
45 | + | } | |
46 | + | ||
47 | + | ||
48 | + | ||
49 | + | @Callable(o) | |
50 | + | func sellNFT (B) = { | |
51 | + | let A = o.transactionId | |
52 | + | let C = o.caller.bytes | |
53 | + | let D = $Tuple2(value(o.payments[0].assetId), value(o.payments[0].amount)) | |
54 | + | let E = D._1 | |
55 | + | let F = D._2 | |
56 | + | if (!(k(E))) | |
57 | + | then throw("Token is not NFT") | |
58 | + | else [StringEntry(((c + a) + toBase58String(value(o.payments[0].assetId))), B), StringEntry(((toString(o.caller) + a) + d), ((toBase58String(E) + a) + toString(F)))] | |
59 | + | } | |
60 | + | ||
61 | + | ||
62 | + | ||
63 | + | @Callable(o) | |
64 | + | func buyNFT (G,H) = { | |
65 | + | let l = fromBase58String(G) | |
66 | + | let I = value(o.payments[0].amount) | |
67 | + | let J = { | |
68 | + | let m = getString(this, (("nft_" + H) + "_owner")) | |
69 | + | if ($isInstanceOf(m, "String")) | |
70 | + | then { | |
71 | + | let K = m | |
72 | + | K | |
73 | + | } | |
74 | + | else false | |
75 | + | } | |
76 | + | let B = getStringValue(((((c + a) + G) + "_") + H)) | |
77 | + | if ((H == toString(o.caller))) | |
78 | + | then throw("current Owner of NFT not able to purchase") | |
79 | + | else if ((o.payments[0].assetId == e)) | |
80 | + | then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, e), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
81 | + | else [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, unit), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
82 | + | } | |
83 | + | ||
84 | + | ||
85 | + | ||
86 | + | @Callable(o) | |
87 | + | func manualFundTransfer (L,M,N) = { | |
88 | + | let O = o.caller.bytes | |
89 | + | let P = fromBase58String(L) | |
90 | + | let I = o.payments[0].amount | |
91 | + | if ((o.payments[0].assetId == e)) | |
92 | + | then [IntegerEntry((toBase58String(O) + "_transfer"), I), StringEntry((toBase58String(O) + "_transfer_to"), L), ScriptTransfer(Address(P), I, e)] | |
93 | + | else [IntegerEntry((toBase58String(O) + "_transfer"), I), StringEntry((toBase58String(O) + "_transfer_to"), L), ScriptTransfer(Address(P), I, f)] | |
47 | 94 | } | |
48 | 95 | ||
49 | 96 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = "_" | |
5 | 5 | ||
6 | 6 | let b = "buy" | |
7 | 7 | ||
8 | 8 | let c = "price" | |
9 | 9 | ||
10 | 10 | let d = "sell" | |
11 | 11 | ||
12 | 12 | let e = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq' | |
13 | 13 | ||
14 | 14 | let f = base58'' | |
15 | 15 | ||
16 | 16 | let g = 7 | |
17 | 17 | ||
18 | 18 | let h = "bid" | |
19 | 19 | ||
20 | 20 | let i = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED") | |
21 | 21 | ||
22 | 22 | let j = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq' | |
23 | 23 | ||
24 | 24 | func k (l) = { | |
25 | 25 | let m = assetInfo(l) | |
26 | 26 | if ($isInstanceOf(m, "Asset")) | |
27 | 27 | then { | |
28 | 28 | let n = m | |
29 | 29 | if (if ((n.decimals == 0)) | |
30 | 30 | then (n.quantity == 1) | |
31 | 31 | else false) | |
32 | 32 | then (n.reissuable == false) | |
33 | 33 | else false | |
34 | 34 | } | |
35 | 35 | else false | |
36 | 36 | } | |
37 | 37 | ||
38 | 38 | ||
39 | 39 | @Callable(o) | |
40 | - | func manualFundTransfer (p,q) = { | |
41 | - | let r = o.caller.bytes | |
42 | - | let s = fromBase58String(p) | |
43 | - | let t = o.payments[0].amount | |
44 | - | if ((toString(t) == "teams")) | |
45 | - | then [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, e)] | |
46 | - | else [IntegerEntry((toBase58String(r) + "_transfer"), t), StringEntry((toBase58String(r) + "_transfer_to"), p), ScriptTransfer(Address(s), t, unit)] | |
40 | + | func createNft (p,q,r,s,t,u,v,w,x) = { | |
41 | + | let y = Issue(p, v, 1, 0, false) | |
42 | + | let z = calculateAssetId(y) | |
43 | + | let A = o.transactionId | |
44 | + | [y, ScriptTransfer(o.caller, 1, z), StringEntry(((toBase58String(z) + a) + "Owner"), toString(o.caller)), StringEntry(((toBase58String(z) + a) + "nft_type"), s), StringEntry(((toBase58String(z) + a) + "nft_tags"), t), StringEntry(((toBase58String(z) + a) + "nft_dAppAddress"), r), IntegerEntry(((toBase58String(z) + a) + "nft_selling_price"), u), StringEntry(((toBase58String(z) + a) + "nft_onSell"), w), StringEntry(((toBase58String(z) + a) + "nft_data"), x), StringEntry(((toBase58String(A) + a) + "issue_nft"), toBase58String(z))] | |
45 | + | } | |
46 | + | ||
47 | + | ||
48 | + | ||
49 | + | @Callable(o) | |
50 | + | func sellNFT (B) = { | |
51 | + | let A = o.transactionId | |
52 | + | let C = o.caller.bytes | |
53 | + | let D = $Tuple2(value(o.payments[0].assetId), value(o.payments[0].amount)) | |
54 | + | let E = D._1 | |
55 | + | let F = D._2 | |
56 | + | if (!(k(E))) | |
57 | + | then throw("Token is not NFT") | |
58 | + | else [StringEntry(((c + a) + toBase58String(value(o.payments[0].assetId))), B), StringEntry(((toString(o.caller) + a) + d), ((toBase58String(E) + a) + toString(F)))] | |
59 | + | } | |
60 | + | ||
61 | + | ||
62 | + | ||
63 | + | @Callable(o) | |
64 | + | func buyNFT (G,H) = { | |
65 | + | let l = fromBase58String(G) | |
66 | + | let I = value(o.payments[0].amount) | |
67 | + | let J = { | |
68 | + | let m = getString(this, (("nft_" + H) + "_owner")) | |
69 | + | if ($isInstanceOf(m, "String")) | |
70 | + | then { | |
71 | + | let K = m | |
72 | + | K | |
73 | + | } | |
74 | + | else false | |
75 | + | } | |
76 | + | let B = getStringValue(((((c + a) + G) + "_") + H)) | |
77 | + | if ((H == toString(o.caller))) | |
78 | + | then throw("current Owner of NFT not able to purchase") | |
79 | + | else if ((o.payments[0].assetId == e)) | |
80 | + | then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, e), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
81 | + | else [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, unit), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))] | |
82 | + | } | |
83 | + | ||
84 | + | ||
85 | + | ||
86 | + | @Callable(o) | |
87 | + | func manualFundTransfer (L,M,N) = { | |
88 | + | let O = o.caller.bytes | |
89 | + | let P = fromBase58String(L) | |
90 | + | let I = o.payments[0].amount | |
91 | + | if ((o.payments[0].assetId == e)) | |
92 | + | then [IntegerEntry((toBase58String(O) + "_transfer"), I), StringEntry((toBase58String(O) + "_transfer_to"), L), ScriptTransfer(Address(P), I, e)] | |
93 | + | else [IntegerEntry((toBase58String(O) + "_transfer"), I), StringEntry((toBase58String(O) + "_transfer_to"), L), ScriptTransfer(Address(P), I, f)] | |
47 | 94 | } | |
48 | 95 | ||
49 | 96 |
github/deemru/w8io/169f3d6 36.02 ms ◑![]()