tx · 79wA1EwicJZemuFbMcSHaz4HAujU8HeRfG2DmXMp3UA9 3N5MerXBH5LejNxKNjAoJm4pS1TMNV3QAcP: -0.01400000 Waves 2019.11.11 08:25 [759952] smart account 3N5MerXBH5LejNxKNjAoJm4pS1TMNV3QAcP > SELF 0.00000000 Waves
{ "type": 13, "id": "79wA1EwicJZemuFbMcSHaz4HAujU8HeRfG2DmXMp3UA9", "fee": 1400000, "feeAssetId": null, "timestamp": 1573449951407, "version": 1, "sender": "3N5MerXBH5LejNxKNjAoJm4pS1TMNV3QAcP", "senderPublicKey": "H1FQXSdk2DP6ZCTNadYpdigGZXT4k5ezfch9ur9JHQPb", "proofs": [ "5yHva63Aapkn8QwcYrUVbi2mbZLJfGYkR3zxfXg78EpgL1ywA4iEbbBEYe3f7yqwTDqkWT12swLUKKqg9GJ1bDRv" ], "script": "base64:AAIDAAAAAAAAABwIARIDCgEIEgMKAQgSAwoBCBIECgIICBIDCgEIAAAACQAAAAANZEFwcFB1YmxpY0tleQEAAAAg7ctHf1T8+ZuRelMjtxnN82PzKimbNwhAqjDdhbonmSoAAAAAEndoaXRlbGlzdGluZ1N1ZmZpeAIAAAAMX3doaXRlbGlzdGVkAAAAABJibGFja2xpc3RpbmdTdWZmaXgCAAAADF9ibGFja2xpc3RlZAAAAAARYmlydGhSZWNvcmRTdWZmaXgCAAAABl9hbGl2ZQAAAAARZGVhdGhSZWNvcmRTdWZmaXgCAAAACV9kZWNlYXNlZAEAAAAPZ2V0TGlzdEZyb21EYXRhAAAAAQAAAANrZXkEAAAADWdldERhdGFTdHJpbmcJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5BAAAAAlwdWJsaWNLZXkEAAAAByRtYXRjaDAFAAAADWdldERhdGFTdHJpbmcDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAJcHVibGljS2V5BQAAAAckbWF0Y2gwBQAAAAlwdWJsaWNLZXkJAAACAAAAAQIAAAASQWNjb3VudCBub3QgZm91bmQhCQAEtQAAAAIFAAAACXB1YmxpY0tleQIAAAABXwEAAAANaXNXaGl0ZWxpc3RlZAAAAAEAAAAJcHVibGljS2V5BAAAAA53aGl0ZWxpc3RlZEtleQkABB0AAAACBQAAAAR0aGlzBQAAAAlwdWJsaWNLZXkDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAOd2hpdGVsaXN0ZWRLZXkEAAAAE3doaXRlbGlzdGVkRGF0YUxpc3QJAQAAAA9nZXRMaXN0RnJvbURhdGEAAAABBQAAAAlwdWJsaWNLZXkDCQAAAAAAAAIJAAGRAAAAAgUAAAATd2hpdGVsaXN0ZWREYXRhTGlzdAAAAAAAAAAAAQIAAAALd2hpdGVsaXN0ZWQGBwcBAAAADWlzQmxhY2tsaXN0ZWQAAAABAAAACXB1YmxpY0tleQQAAAAOYmxhY2tsaXN0ZWRLZXkJAAQdAAAAAgUAAAAEdGhpcwUAAAAJcHVibGljS2V5AwkBAAAACWlzRGVmaW5lZAAAAAEFAAAADmJsYWNrbGlzdGVkS2V5BAAAABNibGFja2xpc3RlZERhdGFMaXN0CQEAAAAPZ2V0TGlzdEZyb21EYXRhAAAAAQUAAAAJcHVibGljS2V5AwkAAAAAAAACCQABkQAAAAIFAAAAE2JsYWNrbGlzdGVkRGF0YUxpc3QAAAAAAAAAAAECAAAAC2JsYWNrbGlzdGVkBgcHAQAAABRnZXRQb3NpdGl2ZVJlY29yZEtleQAAAAEAAAALaW50ZW5kZWRLZXkDCQAAZgAAAAIAAAAAAAAAAAAFAAAAC2ludGVuZGVkS2V5CQEAAAABLQAAAAEFAAAAC2ludGVuZGVkS2V5BQAAAAtpbnRlbmRlZEtleQAAAAUAAAABaQEAAAAJd2hpdGVsaXN0AAAAAQAAAAlwdWJsaWNLZXkDCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAANZEFwcFB1YmxpY0tleQMJAQAAAA1pc1doaXRlbGlzdGVkAAAAAQUAAAAJcHVibGljS2V5CQAAAgAAAAECAAAAKlRoaXMgYWNjb3VudCBoYXMgYWxyZWFkeSBiZWVuIHdoaXRlbGlzdGVkIQQAAAAQd2hpdGVsaXN0ZWRWYWx1ZQkAASwAAAACBQAAAAlwdWJsaWNLZXkFAAAAEndoaXRlbGlzdGluZ1N1ZmZpeAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAJcHVibGljS2V5BQAAABB3aGl0ZWxpc3RlZFZhbHVlBQAAAANuaWwJAAACAAAAAQIAAABBWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byB3aGl0ZWxpc3QgYWNjb3VudHMuIENvbnRhY3QgZEFwcCBPd25lciEAAAABaQEAAAAJYmxhY2tsaXN0AAAAAQAAAAlwdWJsaWNLZXkDCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAANZEFwcFB1YmxpY0tleQMJAQAAAA1pc1doaXRlbGlzdGVkAAAAAQUAAAAJcHVibGljS2V5BAAAABBibGFja2xpc3RlZFZhbHVlCQABLAAAAAIFAAAACXB1YmxpY0tleQUAAAASYmxhY2tsaXN0aW5nU3VmZml4CQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAlwdWJsaWNLZXkFAAAAEGJsYWNrbGlzdGVkVmFsdWUFAAAAA25pbAMJAQAAAA1pc0JsYWNrbGlzdGVkAAAAAQUAAAAJcHVibGljS2V5CQAAAgAAAAECAAAAKlRoaXMgYWNjb3VudCBoYXMgYWxyZWFkeSBiZWVuIGJsYWNrbGlzdGVkIQkAAAIAAAABAgAAAC5UaGlzIGFjY291bnQgd2FzIG5ldmVyIHdoaXRlbGlzdGVkLiBEbyB2ZXJpZnkhCQAAAgAAAAECAAAAQVlvdSBhcmUgbm90IGF1dGhvcml6ZWQgdG8gYmxhY2tsaXN0IGFjY291bnRzLiBDb250YWN0IGRBcHAgT3duZXIhAAAAAWkBAAAADmFkZEJpcnRoUmVjb3JkAAAAAQAAAAZyZWNvcmQEAAAAD2NhbGxlclB1YmxpY0tleQkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkDCQEAAAANaXNXaGl0ZWxpc3RlZAAAAAEFAAAAD2NhbGxlclB1YmxpY0tleQQAAAAOYmlydGhSZWNvcmRLZXkJAAGkAAAAAQkBAAAAFGdldFBvc2l0aXZlUmVjb3JkS2V5AAAAAQkABLEAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAA10cmFuc2FjdGlvbklkCQABLAAAAAICAAAAAV8JAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAQYmlydGhSZWNvcmRWYWx1ZQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZyZWNvcmQCAAAAAV8FAAAAD2NhbGxlclB1YmxpY0tleQUAAAANdHJhbnNhY3Rpb25JZAUAAAARYmlydGhSZWNvcmRTdWZmaXgJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADmJpcnRoUmVjb3JkS2V5BQAAABBiaXJ0aFJlY29yZFZhbHVlBQAAAANuaWwDCQEAAAANaXNCbGFja2xpc3RlZAAAAAEFAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFUaGlzIGFjY291bnQgaGFzIGJlZW4gYmxhY2tsaXN0ZWQJAAACAAAAAQIAAABAT25seSBhdXRob3JpemVkIGFjY291bnRzIGNh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", "chainId": 84, "height": 759952, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 3 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = base58'H1FQXSdk2DP6ZCTNadYpdigGZXT4k5ezfch9ur9JHQPb' | |
5 | + | ||
6 | + | let b = "_whitelisted" | |
7 | + | ||
8 | + | let c = "_blacklisted" | |
9 | + | ||
10 | + | let d = "_alive" | |
11 | + | ||
12 | + | let e = "_deceased" | |
13 | + | ||
14 | + | func f (g) = { | |
15 | + | let h = getString(this, g) | |
16 | + | let i = { | |
17 | + | let j = h | |
18 | + | if ($isInstanceOf(j, "String")) | |
19 | + | then { | |
20 | + | let i = j | |
21 | + | i | |
22 | + | } | |
23 | + | else throw("Account not found!") | |
24 | + | } | |
25 | + | split(i, "_") | |
26 | + | } | |
27 | + | ||
28 | + | ||
29 | + | func k (i) = { | |
30 | + | let l = getString(this, i) | |
31 | + | if (isDefined(l)) | |
32 | + | then { | |
33 | + | let m = f(i) | |
34 | + | if ((m[1] == "whitelisted")) | |
35 | + | then true | |
36 | + | else false | |
37 | + | } | |
38 | + | else false | |
39 | + | } | |
40 | + | ||
41 | + | ||
42 | + | func n (i) = { | |
43 | + | let o = getString(this, i) | |
44 | + | if (isDefined(o)) | |
45 | + | then { | |
46 | + | let p = f(i) | |
47 | + | if ((p[1] == "blacklisted")) | |
48 | + | then true | |
49 | + | else false | |
50 | + | } | |
51 | + | else false | |
52 | + | } | |
53 | + | ||
54 | + | ||
55 | + | func q (r) = if ((0 > r)) | |
56 | + | then -(r) | |
57 | + | else r | |
58 | + | ||
59 | + | ||
60 | + | @Callable(s) | |
61 | + | func whitelist (i) = if ((s.callerPublicKey == a)) | |
62 | + | then if (k(i)) | |
63 | + | then throw("This account has already been whitelisted!") | |
64 | + | else { | |
65 | + | let t = (i + b) | |
66 | + | WriteSet([DataEntry(i, t)]) | |
67 | + | } | |
68 | + | else throw("You are not authorized to whitelist accounts. Contact dApp Owner!") | |
69 | + | ||
70 | + | ||
71 | + | ||
72 | + | @Callable(s) | |
73 | + | func blacklist (i) = if ((s.callerPublicKey == a)) | |
74 | + | then if (k(i)) | |
75 | + | then { | |
76 | + | let u = (i + c) | |
77 | + | WriteSet([DataEntry(i, u)]) | |
78 | + | } | |
79 | + | else if (n(i)) | |
80 | + | then throw("This account has already been blacklisted!") | |
81 | + | else throw("This account was never whitelisted. Do verify!") | |
82 | + | else throw("You are not authorized to blacklist accounts. Contact dApp Owner!") | |
83 | + | ||
84 | + | ||
85 | + | ||
86 | + | @Callable(s) | |
87 | + | func addBirthRecord (v) = { | |
88 | + | let w = toBase58String(s.callerPublicKey) | |
89 | + | if (k(w)) | |
90 | + | then { | |
91 | + | let x = toString(q(toInt(s.transactionId))) | |
92 | + | let y = ("_" + toBase58String(s.transactionId)) | |
93 | + | let z = ((((v + "_") + w) + y) + d) | |
94 | + | WriteSet([DataEntry(x, z)]) | |
95 | + | } | |
96 | + | else if (n(w)) | |
97 | + | then throw("This account has been blacklisted") | |
98 | + | else throw("Only authorized accounts can add birth records to the blockchain") | |
99 | + | } | |
100 | + | ||
101 | + | ||
102 | + | ||
103 | + | @Callable(s) | |
104 | + | func updateRecord (A,B) = { | |
105 | + | let w = toBase58String(s.callerPublicKey) | |
106 | + | if (k(w)) | |
107 | + | then { | |
108 | + | let v = getString(this, A) | |
109 | + | if (!(isDefined(v))) | |
110 | + | then throw("Record not found") | |
111 | + | else { | |
112 | + | let C = { | |
113 | + | let j = getString(this, A) | |
114 | + | if ($isInstanceOf(j, "String")) | |
115 | + | then { | |
116 | + | let D = j | |
117 | + | D | |
118 | + | } | |
119 | + | else throw("Record not found") | |
120 | + | } | |
121 | + | let E = split(C, "_") | |
122 | + | if ((E[1] == w)) | |
123 | + | then { | |
124 | + | let F = ((((B + "_") + w) + "_") + E[2]) | |
125 | + | WriteSet([DataEntry(A, F)]) | |
126 | + | } | |
127 | + | else if (if ((E[1] == w)) | |
128 | + | then n(w) | |
129 | + | else false) | |
130 | + | then throw("This account has been blacklisted. Contact dApp Owner!") | |
131 | + | else throw("Access denied. Only the account that created this record can update it.") | |
132 | + | } | |
133 | + | } | |
134 | + | else throw("You are not authorized for this action!") | |
135 | + | } | |
136 | + | ||
137 | + | ||
138 | + | ||
139 | + | @Callable(s) | |
140 | + | func makeDeceased (A) = { | |
141 | + | let w = toBase58String(s.callerPublicKey) | |
142 | + | if (k(w)) | |
143 | + | then { | |
144 | + | let v = getString(this, A) | |
145 | + | if (!(isDefined(v))) | |
146 | + | then throw("Record not found") | |
147 | + | else { | |
148 | + | let C = { | |
149 | + | let j = getString(this, A) | |
150 | + | if ($isInstanceOf(j, "String")) | |
151 | + | then { | |
152 | + | let D = j | |
153 | + | D | |
154 | + | } | |
155 | + | else throw("Record not found") | |
156 | + | } | |
157 | + | let E = split(C, "_") | |
158 | + | if ((E[1] == w)) | |
159 | + | then { | |
160 | + | let F = (((E[0] + "_") + w) + e) | |
161 | + | WriteSet([DataEntry(A, F)]) | |
162 | + | } | |
163 | + | else if (if ((E[1] == w)) | |
164 | + | then n(w) | |
165 | + | else false) | |
166 | + | then throw("This account has been blacklisted. Contact dApp Owner!") | |
167 | + | else throw("Access denied. Only the account that created this record can make it deceased") | |
168 | + | } | |
169 | + | } | |
170 | + | else throw("You are not authorized for this action!") | |
171 | + | } | |
172 | + | ||
173 | + | ||
174 | + | @Verifier(G) | |
175 | + | func H () = { | |
176 | + | let j = G | |
177 | + | if ($isInstanceOf(j, "SetScriptTransaction")) | |
178 | + | then { | |
179 | + | let I = j | |
180 | + | sigVerify(G.bodyBytes, G.proofs[0], a) | |
181 | + | } | |
182 | + | else if ($isInstanceOf(j, "InvokeScriptTransaction")) | |
183 | + | then { | |
184 | + | let J = j | |
185 | + | if (k(toBase58String(G.senderPublicKey))) | |
186 | + | then true | |
187 | + | else sigVerify(G.bodyBytes, G.proofs[0], a) | |
188 | + | } | |
189 | + | else false | |
190 | + | } | |
191 | + |
github/deemru/w8io/169f3d6 48.77 ms ◑![]()