tx · 2fJifczpEwhKC8xoHRFLcuqgqGwNFNovRiXGAgLzAQUb 3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj: -0.01400000 Waves 2020.12.09 07:08 [1300622] smart account 3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj > SELF 0.00000000 Waves
{ "type": 13, "id": "2fJifczpEwhKC8xoHRFLcuqgqGwNFNovRiXGAgLzAQUb", "fee": 1400000, "feeAssetId": null, "timestamp": 1607486908714, "version": 2, "chainId": 84, "sender": "3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj", "senderPublicKey": "A2m227AHcq7gWfSU59Q3UJaqkEa7SccFYmJuWHbFrrKE", "proofs": [ "2ZrdneqHXbSE8uc8wDVkBeqgeXbnHwzpKNQ5MHf3JrbwCNxb3o5Fg2qXSToD9zwUTs64Mg8PF8iBWeMhsCYX1KRQ" ], "script": "base64:AAIEAAAAAAAAADIIAhIECgIECBIDCgEEEgYKBAgICAgSBgoECAgICBIECgIICBIDCgEIEgMKAQgSAwoBCAAAABwBAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBwEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWkFAAAAByRtYXRjaDAFAAAAAWkAAAAAAAAAAAABAAAAC3ZhbGlkYXRlQ0lEAAAAAQAAAANjaWQDAwkAAGYAAAACAAAAAAAAAABLCQABMQAAAAEFAAAAA2NpZAkAAGYAAAACAAAAAAAAAAA8CQABMQAAAAEJAAGRAAAAAgkABLUAAAACBQAAAANjaWQCAAAAAS8AAAAAAAAAAAAHCQAAZgAAAAIAAAAAAAAAABAJAAExAAAAAQkAAZEAAAACCQAEtQAAAAIFAAAAA2NpZAIAAAABLwAAAAAAAAAAAQcAAAAADmRhcHBSdW5uaW5nS2V5AgAAABRjb25mX2RhcHBfaXNfcnVubmluZwAAAAARbWFpbnRlbmFuY2VNU0dLZXkCAAAAFGNvbmZfbWFpbnRlbmFuY2VfbXNnAAAAABJ3aGl0ZWxpc3RlZG9ubHlLZXkCAAAAFWNvbmZfd2hpdGVsaXN0ZWRfb25seQAAAAALZGFwcFJ1bm5pbmcJAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABBQAAAA5kYXBwUnVubmluZ0tleQAAAAAObWFpbnRlbmFuY2VNU0cJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEFAAAAEW1haW50ZW5hbmNlTVNHS2V5AAAAAA93aGl0ZWxpc3RlZG9ubHkJAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABBQAAABJ3aGl0ZWxpc3RlZG9ubHlLZXkAAAAAC3NpZ25Bc3NldElkAQAAACDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAAAAAFY2hyaXMCAAAAIzNNc0c2alBOQ3JWSlV0WUI3WEpCeFM3dXRXc1hBZjRuOVZwAAAAAARqb2VwAgAAACMzTXptNFZMd3NOOXVad2JUTXpQajNYdXhWNmtFZkFSOFVETgAAAAALdXNlckFsbG93ZWQCAAAAB0FMTE9XRUQAAAAADnVzZXJSZWdpc3RlcmVkAgAAAApSRUdJU1RFUkVEAAAAAAx1c2VyVmVyaWZpZWQCAAAACFZFUklGSUVEAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABJ1c2VyQ2hhbmdlUmVxdWlyZWQCAAAAD0NIQU5HRV9SRVFVSVJFRAAAAAAQdXNlclVucmVnaXN0ZXJlZAIAAAAMVU5SRUdJU1RFUkVEAAAAAAl1c2VyUmVzZXQCAAAABVJFU0VUAQAAAAtrZXlVc2VyQWRkcgAAAAEAAAAGY2FsbGVyCQABLAAAAAICAAAABXVzZXJfBQAAAAZjYWxsZXIBAAAAC2tleVVzZXJOYW1lAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAKdXNlcl9uYW1lXwUAAAAGY2FsbGVyAQAAAAtrZXlVc2VyRGVzYwAAAAEAAAAGY2FsbGVyCQABLAAAAAICAAAACnVzZXJfZGVzY18FAAAABmNhbGxlcgEAAAANa2V5VXNlclNvY2lhbAAAAAEAAAAGY2FsbGVyCQABLAAAAAICAAAADHVzZXJfc29jaWFsXwUAAAAGY2FsbGVyAQAAAAxrZXlVc2VyVGh1bWIAAAABAAAABmNhbGxlcgkAASwAAAACAgAAAAt1c2VyX3RodW1iXwUAAAAGY2FsbGVyAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAMdXNlcl9zdGF0dXNfBQAAAAZjYWxsZXIBAAAAC2tleVVzZXJEYXRlAAAAAQAAAAZjYWxs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clB1YmxpY0tleQQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAANY3VycmVudFN0YXR1cwkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAdhZGRyZXNzBAAAAAtzdGF0dXNUb1NldAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAx1c2VyVmVyaWZpZWQFAAAADHVzZXJWZXJpZmllZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAA51c2VyUmVnaXN0ZXJlZAUAAAAOdXNlclJlZ2lzdGVyZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAUAAAANdXNlclN1c3BlbmRlZAMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyUmVtb3ZlZAUAAAALdXNlclJlbW92ZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAALdXNlckFsbG93ZWQFAAAAC3VzZXJBbGxvd2VkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAAEnVzZXJDaGFuZ2VSZXF1aXJlZAUAAAASdXNlckNoYW5nZVJlcXVpcmVkAwMJAAAAAAAAAgUAAAAGc3RhdHVzBQAAAAl1c2VyUmVzZXQJAAAAAAAAAgUAAAANY3VycmVudFN0YXR1cwUAAAALdXNlckFsbG93ZWQHAgAAAAAJAAACAAAAAQIAAAAOVW5rbm93biBzdGF0dXMEAAAAEHVzZXJJc1JlZ2lzdGVyZWQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAALa2V5VXNlckRhdGUAAAABBQAAAAdhZGRyZXNzAwMJAAAAAAAAAgUAAAAQdXNlcklzUmVnaXN0ZXJlZAAAAAAAAAAAAAkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAt1c2VyQWxsb3dlZAcJAAACAAAAAQIAAAAxWW91IGNhbnQgc2V0IHRoaXMgc3RhdHVzLCB1c2VyIGlzIG5vdCByZWdpc3RlcmVkLgMDCQAAAAAAAAIFAAAADWN1cnJlbnRTdGF0dXMFAAAAC3VzZXJBbGxvd2VkCQAAAAAAAAIFAAAABnN0YXR1cwUAAAALdXNlckFsbG93ZWQHCQAAAgAAAAEC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", "height": 1300622, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B72PPuUBuHQFvxsfyi61v3jTLEMN8HpXoH192CZKiVHr Next: 4eSPSjkGxbdm2SqLqX5w8itinbFSmaLHG3tK4CFSz9rt Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a' | |
5 | - | ||
6 | - | let b = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp" | |
7 | - | ||
8 | - | let c = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN" | |
9 | - | ||
10 | - | let d = true | |
11 | - | ||
12 | - | let e = true | |
13 | - | ||
14 | - | let f = "SIGN Art is under maintenance" | |
15 | - | ||
16 | - | let g = "ALLOWED" | |
17 | - | ||
18 | - | let h = "REGISTERED" | |
19 | - | ||
20 | - | let i = "VERIFIED" | |
21 | - | ||
22 | - | let j = "SUSPENDED" | |
23 | - | ||
24 | - | let k = "REMOVED" | |
25 | - | ||
26 | - | let l = "CHANGE_REQUIRED" | |
27 | - | ||
28 | - | let m = "UNREGISTERED" | |
29 | - | ||
30 | - | let n = "RESET" | |
31 | - | ||
32 | - | func o (p) = { | |
33 | - | let q = getString(this, p) | |
34 | - | if ($isInstanceOf(q, "String")) | |
4 | + | func a (b) = { | |
5 | + | let c = getString(this, b) | |
6 | + | if ($isInstanceOf(c, "String")) | |
35 | 7 | then { | |
36 | - | let | |
37 | - | | |
8 | + | let d = c | |
9 | + | d | |
38 | 10 | } | |
39 | 11 | else "" | |
40 | 12 | } | |
41 | 13 | ||
42 | 14 | ||
43 | - | func | |
44 | - | let | |
45 | - | if ($isInstanceOf( | |
15 | + | func e (b) = { | |
16 | + | let c = getBoolean(this, b) | |
17 | + | if ($isInstanceOf(c, "Boolean")) | |
46 | 18 | then { | |
47 | - | let t = q | |
48 | - | t | |
19 | + | let d = c | |
20 | + | d | |
21 | + | } | |
22 | + | else false | |
23 | + | } | |
24 | + | ||
25 | + | ||
26 | + | func f (b) = { | |
27 | + | let c = getInteger(this, b) | |
28 | + | if ($isInstanceOf(c, "Int")) | |
29 | + | then { | |
30 | + | let g = c | |
31 | + | g | |
49 | 32 | } | |
50 | 33 | else 0 | |
51 | 34 | } | |
52 | 35 | ||
53 | 36 | ||
54 | - | func | |
55 | - | then (60 > size(split( | |
37 | + | func h (i) = if (if ((75 > size(i))) | |
38 | + | then (60 > size(split(i, "/")[0])) | |
56 | 39 | else false) | |
57 | - | then (16 > size(split( | |
40 | + | then (16 > size(split(i, "/")[1])) | |
58 | 41 | else false | |
59 | 42 | ||
60 | 43 | ||
61 | - | func w (x) = ("user_" + x) | |
44 | + | let j = "conf_dapp_is_running" | |
45 | + | ||
46 | + | let k = "conf_maintenance_msg" | |
47 | + | ||
48 | + | let l = "conf_whitelisted_only" | |
49 | + | ||
50 | + | let m = e(j) | |
51 | + | ||
52 | + | let n = a(k) | |
53 | + | ||
54 | + | let o = e(l) | |
55 | + | ||
56 | + | let p = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a' | |
57 | + | ||
58 | + | let q = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp" | |
59 | + | ||
60 | + | let r = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN" | |
61 | + | ||
62 | + | let s = "ALLOWED" | |
63 | + | ||
64 | + | let t = "REGISTERED" | |
65 | + | ||
66 | + | let u = "VERIFIED" | |
67 | + | ||
68 | + | let v = "SUSPENDED" | |
69 | + | ||
70 | + | let w = "REMOVED" | |
71 | + | ||
72 | + | let x = "CHANGE_REQUIRED" | |
73 | + | ||
74 | + | let y = "UNREGISTERED" | |
75 | + | ||
76 | + | let z = "RESET" | |
77 | + | ||
78 | + | func A (B) = ("user_" + B) | |
62 | 79 | ||
63 | 80 | ||
64 | - | func | |
81 | + | func C (B) = ("user_name_" + B) | |
65 | 82 | ||
66 | 83 | ||
67 | - | func | |
84 | + | func D (B) = ("user_desc_" + B) | |
68 | 85 | ||
69 | 86 | ||
70 | - | func | |
87 | + | func E (B) = ("user_social_" + B) | |
71 | 88 | ||
72 | 89 | ||
73 | - | func | |
90 | + | func F (B) = ("user_thumb_" + B) | |
74 | 91 | ||
75 | 92 | ||
76 | - | func | |
93 | + | func G (B) = ("user_status_" + B) | |
77 | 94 | ||
78 | 95 | ||
79 | - | func | |
96 | + | func H (B) = ("user_date_" + B) | |
80 | 97 | ||
81 | 98 | ||
82 | - | @Callable(t) | |
83 | - | func registerUser (E,F,G,H) = if (!(e)) | |
84 | - | then throw(f) | |
99 | + | @Callable(g) | |
100 | + | func maintenance (I,J) = { | |
101 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
102 | + | let K = toBase58String(g.transactionId) | |
103 | + | if (containsElement([q, r, toString(this)], B)) | |
104 | + | then [BooleanEntry("conf_dapp_is_running", I), StringEntry("conf_maintenance_msg", J)] | |
105 | + | else throw("You are not allowed to change this") | |
106 | + | } | |
107 | + | ||
108 | + | ||
109 | + | ||
110 | + | @Callable(g) | |
111 | + | func registrationMode (o) = { | |
112 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
113 | + | let K = toBase58String(g.transactionId) | |
114 | + | if (containsElement([q, r, toString(this)], B)) | |
115 | + | then [BooleanEntry("conf_whitelisted_only", o)] | |
116 | + | else throw("You are not allowed to change this") | |
117 | + | } | |
118 | + | ||
119 | + | ||
120 | + | ||
121 | + | @Callable(g) | |
122 | + | func registerUser (L,M,N,O) = if (!(m)) | |
123 | + | then throw(n) | |
85 | 124 | else { | |
86 | - | let | |
87 | - | let | |
88 | - | let | |
89 | - | let | |
90 | - | if (if (( | |
125 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
126 | + | let P = a(G(B)) | |
127 | + | let K = toBase58String(g.transactionId) | |
128 | + | let Q = lastBlock.timestamp | |
129 | + | if (if ((P == v)) | |
91 | 130 | then true | |
92 | - | else ( | |
131 | + | else (P == w)) | |
93 | 132 | then throw("Account suspended/ removed.") | |
94 | - | else if (( | |
133 | + | else if ((P == t)) | |
95 | 134 | then throw("Already registered") | |
96 | - | else if (if (( | |
97 | - | then | |
135 | + | else if (if ((P == "")) | |
136 | + | then o | |
98 | 137 | else false) | |
99 | 138 | then throw("Can't register, get approved first.") | |
100 | - | else if (if (( | |
139 | + | else if (if ((L == "")) | |
101 | 140 | then true | |
102 | - | else ( | |
141 | + | else (M == "")) | |
103 | 142 | then throw("Name and description cannot be empty") | |
104 | - | else if ((size( | |
143 | + | else if ((size(M) > 600)) | |
105 | 144 | then throw("600 Char. max description") | |
106 | - | else if ((size( | |
145 | + | else if ((size(L) > 45)) | |
107 | 146 | then throw("45 Char. max name") | |
108 | - | else [IntegerEntry( | |
147 | + | else [IntegerEntry(H(B), Q), StringEntry(A(B), ((K + "_") + toString(Q))), StringEntry(C(B), L), StringEntry(D(B), M), StringEntry(E(B), O), StringEntry(F(B), N), StringEntry(G(B), t)] | |
109 | 148 | } | |
110 | 149 | ||
111 | 150 | ||
112 | 151 | ||
113 | - | @Callable( | |
114 | - | func updateUser ( | |
115 | - | then throw( | |
152 | + | @Callable(g) | |
153 | + | func updateUser (L,M,N,O) = if (!(m)) | |
154 | + | then throw(n) | |
116 | 155 | else { | |
117 | - | let | |
118 | - | let | |
119 | - | let | |
120 | - | if (if (( | |
156 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
157 | + | let K = toBase58String(g.transactionId) | |
158 | + | let R = a(G(B)) | |
159 | + | if (if ((R == v)) | |
121 | 160 | then true | |
122 | - | else ( | |
161 | + | else (R == w)) | |
123 | 162 | then throw("Account suspended/ removed.") | |
124 | - | else if (if (( | |
163 | + | else if (if ((R == "")) | |
125 | 164 | then true | |
126 | - | else ( | |
165 | + | else (R == s)) | |
127 | 166 | then throw("Register first") | |
128 | - | else if (if (( | |
167 | + | else if (if ((L == "")) | |
129 | 168 | then true | |
130 | - | else ( | |
169 | + | else (M == "")) | |
131 | 170 | then throw("Name & description cannot be empty") | |
132 | - | else if ((size( | |
171 | + | else if ((size(M) > 600)) | |
133 | 172 | then throw("600 Char. max for description") | |
134 | - | else if ((size( | |
173 | + | else if ((size(L) > 45)) | |
135 | 174 | then throw("45 Char. max name") | |
136 | - | else [StringEntry( | |
175 | + | else [StringEntry(C(B), L), StringEntry(D(B), M), StringEntry(E(B), O), StringEntry(F(B), N)] | |
137 | 176 | } | |
138 | 177 | ||
139 | 178 | ||
140 | 179 | ||
141 | - | @Callable( | |
142 | - | func changeUserStatus ( | |
143 | - | then throw( | |
180 | + | @Callable(g) | |
181 | + | func changeUserStatus (S,I) = if (!(m)) | |
182 | + | then throw(n) | |
144 | 183 | else { | |
145 | - | let | |
146 | - | let | |
147 | - | let | |
148 | - | let | |
149 | - | then | |
150 | - | else if (( | |
151 | - | then | |
152 | - | else if (( | |
153 | - | then | |
154 | - | else if (( | |
155 | - | then | |
156 | - | else if (( | |
157 | - | then | |
158 | - | else if (( | |
159 | - | then | |
160 | - | else if (if (( | |
161 | - | then ( | |
184 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
185 | + | let K = toBase58String(g.transactionId) | |
186 | + | let T = a(G(S)) | |
187 | + | let U = if ((I == u)) | |
188 | + | then u | |
189 | + | else if ((I == t)) | |
190 | + | then t | |
191 | + | else if ((I == v)) | |
192 | + | then v | |
193 | + | else if ((I == w)) | |
194 | + | then w | |
195 | + | else if ((I == s)) | |
196 | + | then s | |
197 | + | else if ((I == x)) | |
198 | + | then x | |
199 | + | else if (if ((I == z)) | |
200 | + | then (T == s) | |
162 | 201 | else false) | |
163 | 202 | then "" | |
164 | 203 | else throw("Unknown status") | |
165 | - | let | |
166 | - | if (if (( | |
167 | - | then ( | |
204 | + | let V = f(H(S)) | |
205 | + | if (if ((V == 0)) | |
206 | + | then (I != s) | |
168 | 207 | else false) | |
169 | 208 | then throw("You cant set this status, user is not registered.") | |
170 | - | else if (if (( | |
171 | - | then ( | |
209 | + | else if (if ((T == s)) | |
210 | + | then (I == s) | |
172 | 211 | else false) | |
173 | 212 | then throw("User already allowed") | |
174 | - | else if (if (( | |
175 | - | then ( | |
213 | + | else if (if ((T == t)) | |
214 | + | then (I == s) | |
176 | 215 | else false) | |
177 | 216 | then throw("User already allowed & registered") | |
178 | - | else if (if (( | |
179 | - | then ( | |
217 | + | else if (if ((T == u)) | |
218 | + | then (I == s) | |
180 | 219 | else false) | |
181 | 220 | then throw("User already allowed & verified") | |
182 | - | else if (containsElement([ | |
183 | - | then [StringEntry( | |
184 | - | else throw( | |
221 | + | else if (containsElement([q, r, toString(this)], B)) | |
222 | + | then [StringEntry(G(S), U)] | |
223 | + | else throw("Not allowed to change user status") | |
185 | 224 | } | |
186 | 225 | ||
187 | 226 | ||
188 | 227 | ||
189 | - | @Callable( | |
190 | - | func creditUser ( | |
191 | - | let | |
192 | - | let | |
193 | - | if (containsElement([ | |
194 | - | then [ScriptTransfer(Address(fromBase58String( | |
228 | + | @Callable(g) | |
229 | + | func creditUser (S) = { | |
230 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
231 | + | let K = toBase58String(g.transactionId) | |
232 | + | if (containsElement([q, r], B)) | |
233 | + | then [ScriptTransfer(Address(fromBase58String(S)), 30000000000, p)] | |
195 | 234 | else throw("Not allowed") | |
196 | 235 | } | |
197 | 236 | ||
198 | 237 | ||
199 | 238 | ||
200 | - | @Callable( | |
201 | - | func deleteUser ( | |
202 | - | let | |
203 | - | let | |
204 | - | if (containsElement([ | |
205 | - | then [DeleteEntry( | |
239 | + | @Callable(g) | |
240 | + | func deleteUser (S) = { | |
241 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
242 | + | let K = toBase58String(g.transactionId) | |
243 | + | if (containsElement([q, r, toString(this)], B)) | |
244 | + | then [DeleteEntry(H(S)), DeleteEntry(A(S)), DeleteEntry(C(S)), DeleteEntry(D(S)), DeleteEntry(E(S)), DeleteEntry(F(S)), StringEntry(G(S), w)] | |
206 | 245 | else throw("Not allowed") | |
207 | 246 | } | |
208 | 247 | ||
209 | 248 | ||
210 | 249 | ||
211 | - | @Callable( | |
212 | - | func deleteEntry ( | |
213 | - | let | |
214 | - | if (( | |
215 | - | then [DeleteEntry( | |
250 | + | @Callable(g) | |
251 | + | func deleteEntry (W) = { | |
252 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
253 | + | if ((B == q)) | |
254 | + | then [DeleteEntry(W)] | |
216 | 255 | else throw("no") | |
217 | 256 | } | |
218 | 257 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 4 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a' | |
5 | - | ||
6 | - | let b = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp" | |
7 | - | ||
8 | - | let c = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN" | |
9 | - | ||
10 | - | let d = true | |
11 | - | ||
12 | - | let e = true | |
13 | - | ||
14 | - | let f = "SIGN Art is under maintenance" | |
15 | - | ||
16 | - | let g = "ALLOWED" | |
17 | - | ||
18 | - | let h = "REGISTERED" | |
19 | - | ||
20 | - | let i = "VERIFIED" | |
21 | - | ||
22 | - | let j = "SUSPENDED" | |
23 | - | ||
24 | - | let k = "REMOVED" | |
25 | - | ||
26 | - | let l = "CHANGE_REQUIRED" | |
27 | - | ||
28 | - | let m = "UNREGISTERED" | |
29 | - | ||
30 | - | let n = "RESET" | |
31 | - | ||
32 | - | func o (p) = { | |
33 | - | let q = getString(this, p) | |
34 | - | if ($isInstanceOf(q, "String")) | |
4 | + | func a (b) = { | |
5 | + | let c = getString(this, b) | |
6 | + | if ($isInstanceOf(c, "String")) | |
35 | 7 | then { | |
36 | - | let | |
37 | - | | |
8 | + | let d = c | |
9 | + | d | |
38 | 10 | } | |
39 | 11 | else "" | |
40 | 12 | } | |
41 | 13 | ||
42 | 14 | ||
43 | - | func | |
44 | - | let | |
45 | - | if ($isInstanceOf( | |
15 | + | func e (b) = { | |
16 | + | let c = getBoolean(this, b) | |
17 | + | if ($isInstanceOf(c, "Boolean")) | |
46 | 18 | then { | |
47 | - | let t = q | |
48 | - | t | |
19 | + | let d = c | |
20 | + | d | |
21 | + | } | |
22 | + | else false | |
23 | + | } | |
24 | + | ||
25 | + | ||
26 | + | func f (b) = { | |
27 | + | let c = getInteger(this, b) | |
28 | + | if ($isInstanceOf(c, "Int")) | |
29 | + | then { | |
30 | + | let g = c | |
31 | + | g | |
49 | 32 | } | |
50 | 33 | else 0 | |
51 | 34 | } | |
52 | 35 | ||
53 | 36 | ||
54 | - | func | |
55 | - | then (60 > size(split( | |
37 | + | func h (i) = if (if ((75 > size(i))) | |
38 | + | then (60 > size(split(i, "/")[0])) | |
56 | 39 | else false) | |
57 | - | then (16 > size(split( | |
40 | + | then (16 > size(split(i, "/")[1])) | |
58 | 41 | else false | |
59 | 42 | ||
60 | 43 | ||
61 | - | func w (x) = ("user_" + x) | |
44 | + | let j = "conf_dapp_is_running" | |
45 | + | ||
46 | + | let k = "conf_maintenance_msg" | |
47 | + | ||
48 | + | let l = "conf_whitelisted_only" | |
49 | + | ||
50 | + | let m = e(j) | |
51 | + | ||
52 | + | let n = a(k) | |
53 | + | ||
54 | + | let o = e(l) | |
55 | + | ||
56 | + | let p = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a' | |
57 | + | ||
58 | + | let q = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp" | |
59 | + | ||
60 | + | let r = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN" | |
61 | + | ||
62 | + | let s = "ALLOWED" | |
63 | + | ||
64 | + | let t = "REGISTERED" | |
65 | + | ||
66 | + | let u = "VERIFIED" | |
67 | + | ||
68 | + | let v = "SUSPENDED" | |
69 | + | ||
70 | + | let w = "REMOVED" | |
71 | + | ||
72 | + | let x = "CHANGE_REQUIRED" | |
73 | + | ||
74 | + | let y = "UNREGISTERED" | |
75 | + | ||
76 | + | let z = "RESET" | |
77 | + | ||
78 | + | func A (B) = ("user_" + B) | |
62 | 79 | ||
63 | 80 | ||
64 | - | func | |
81 | + | func C (B) = ("user_name_" + B) | |
65 | 82 | ||
66 | 83 | ||
67 | - | func | |
84 | + | func D (B) = ("user_desc_" + B) | |
68 | 85 | ||
69 | 86 | ||
70 | - | func | |
87 | + | func E (B) = ("user_social_" + B) | |
71 | 88 | ||
72 | 89 | ||
73 | - | func | |
90 | + | func F (B) = ("user_thumb_" + B) | |
74 | 91 | ||
75 | 92 | ||
76 | - | func | |
93 | + | func G (B) = ("user_status_" + B) | |
77 | 94 | ||
78 | 95 | ||
79 | - | func | |
96 | + | func H (B) = ("user_date_" + B) | |
80 | 97 | ||
81 | 98 | ||
82 | - | @Callable(t) | |
83 | - | func registerUser (E,F,G,H) = if (!(e)) | |
84 | - | then throw(f) | |
99 | + | @Callable(g) | |
100 | + | func maintenance (I,J) = { | |
101 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
102 | + | let K = toBase58String(g.transactionId) | |
103 | + | if (containsElement([q, r, toString(this)], B)) | |
104 | + | then [BooleanEntry("conf_dapp_is_running", I), StringEntry("conf_maintenance_msg", J)] | |
105 | + | else throw("You are not allowed to change this") | |
106 | + | } | |
107 | + | ||
108 | + | ||
109 | + | ||
110 | + | @Callable(g) | |
111 | + | func registrationMode (o) = { | |
112 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
113 | + | let K = toBase58String(g.transactionId) | |
114 | + | if (containsElement([q, r, toString(this)], B)) | |
115 | + | then [BooleanEntry("conf_whitelisted_only", o)] | |
116 | + | else throw("You are not allowed to change this") | |
117 | + | } | |
118 | + | ||
119 | + | ||
120 | + | ||
121 | + | @Callable(g) | |
122 | + | func registerUser (L,M,N,O) = if (!(m)) | |
123 | + | then throw(n) | |
85 | 124 | else { | |
86 | - | let | |
87 | - | let | |
88 | - | let | |
89 | - | let | |
90 | - | if (if (( | |
125 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
126 | + | let P = a(G(B)) | |
127 | + | let K = toBase58String(g.transactionId) | |
128 | + | let Q = lastBlock.timestamp | |
129 | + | if (if ((P == v)) | |
91 | 130 | then true | |
92 | - | else ( | |
131 | + | else (P == w)) | |
93 | 132 | then throw("Account suspended/ removed.") | |
94 | - | else if (( | |
133 | + | else if ((P == t)) | |
95 | 134 | then throw("Already registered") | |
96 | - | else if (if (( | |
97 | - | then | |
135 | + | else if (if ((P == "")) | |
136 | + | then o | |
98 | 137 | else false) | |
99 | 138 | then throw("Can't register, get approved first.") | |
100 | - | else if (if (( | |
139 | + | else if (if ((L == "")) | |
101 | 140 | then true | |
102 | - | else ( | |
141 | + | else (M == "")) | |
103 | 142 | then throw("Name and description cannot be empty") | |
104 | - | else if ((size( | |
143 | + | else if ((size(M) > 600)) | |
105 | 144 | then throw("600 Char. max description") | |
106 | - | else if ((size( | |
145 | + | else if ((size(L) > 45)) | |
107 | 146 | then throw("45 Char. max name") | |
108 | - | else [IntegerEntry( | |
147 | + | else [IntegerEntry(H(B), Q), StringEntry(A(B), ((K + "_") + toString(Q))), StringEntry(C(B), L), StringEntry(D(B), M), StringEntry(E(B), O), StringEntry(F(B), N), StringEntry(G(B), t)] | |
109 | 148 | } | |
110 | 149 | ||
111 | 150 | ||
112 | 151 | ||
113 | - | @Callable( | |
114 | - | func updateUser ( | |
115 | - | then throw( | |
152 | + | @Callable(g) | |
153 | + | func updateUser (L,M,N,O) = if (!(m)) | |
154 | + | then throw(n) | |
116 | 155 | else { | |
117 | - | let | |
118 | - | let | |
119 | - | let | |
120 | - | if (if (( | |
156 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
157 | + | let K = toBase58String(g.transactionId) | |
158 | + | let R = a(G(B)) | |
159 | + | if (if ((R == v)) | |
121 | 160 | then true | |
122 | - | else ( | |
161 | + | else (R == w)) | |
123 | 162 | then throw("Account suspended/ removed.") | |
124 | - | else if (if (( | |
163 | + | else if (if ((R == "")) | |
125 | 164 | then true | |
126 | - | else ( | |
165 | + | else (R == s)) | |
127 | 166 | then throw("Register first") | |
128 | - | else if (if (( | |
167 | + | else if (if ((L == "")) | |
129 | 168 | then true | |
130 | - | else ( | |
169 | + | else (M == "")) | |
131 | 170 | then throw("Name & description cannot be empty") | |
132 | - | else if ((size( | |
171 | + | else if ((size(M) > 600)) | |
133 | 172 | then throw("600 Char. max for description") | |
134 | - | else if ((size( | |
173 | + | else if ((size(L) > 45)) | |
135 | 174 | then throw("45 Char. max name") | |
136 | - | else [StringEntry( | |
175 | + | else [StringEntry(C(B), L), StringEntry(D(B), M), StringEntry(E(B), O), StringEntry(F(B), N)] | |
137 | 176 | } | |
138 | 177 | ||
139 | 178 | ||
140 | 179 | ||
141 | - | @Callable( | |
142 | - | func changeUserStatus ( | |
143 | - | then throw( | |
180 | + | @Callable(g) | |
181 | + | func changeUserStatus (S,I) = if (!(m)) | |
182 | + | then throw(n) | |
144 | 183 | else { | |
145 | - | let | |
146 | - | let | |
147 | - | let | |
148 | - | let | |
149 | - | then | |
150 | - | else if (( | |
151 | - | then | |
152 | - | else if (( | |
153 | - | then | |
154 | - | else if (( | |
155 | - | then | |
156 | - | else if (( | |
157 | - | then | |
158 | - | else if (( | |
159 | - | then | |
160 | - | else if (if (( | |
161 | - | then ( | |
184 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
185 | + | let K = toBase58String(g.transactionId) | |
186 | + | let T = a(G(S)) | |
187 | + | let U = if ((I == u)) | |
188 | + | then u | |
189 | + | else if ((I == t)) | |
190 | + | then t | |
191 | + | else if ((I == v)) | |
192 | + | then v | |
193 | + | else if ((I == w)) | |
194 | + | then w | |
195 | + | else if ((I == s)) | |
196 | + | then s | |
197 | + | else if ((I == x)) | |
198 | + | then x | |
199 | + | else if (if ((I == z)) | |
200 | + | then (T == s) | |
162 | 201 | else false) | |
163 | 202 | then "" | |
164 | 203 | else throw("Unknown status") | |
165 | - | let | |
166 | - | if (if (( | |
167 | - | then ( | |
204 | + | let V = f(H(S)) | |
205 | + | if (if ((V == 0)) | |
206 | + | then (I != s) | |
168 | 207 | else false) | |
169 | 208 | then throw("You cant set this status, user is not registered.") | |
170 | - | else if (if (( | |
171 | - | then ( | |
209 | + | else if (if ((T == s)) | |
210 | + | then (I == s) | |
172 | 211 | else false) | |
173 | 212 | then throw("User already allowed") | |
174 | - | else if (if (( | |
175 | - | then ( | |
213 | + | else if (if ((T == t)) | |
214 | + | then (I == s) | |
176 | 215 | else false) | |
177 | 216 | then throw("User already allowed & registered") | |
178 | - | else if (if (( | |
179 | - | then ( | |
217 | + | else if (if ((T == u)) | |
218 | + | then (I == s) | |
180 | 219 | else false) | |
181 | 220 | then throw("User already allowed & verified") | |
182 | - | else if (containsElement([ | |
183 | - | then [StringEntry( | |
184 | - | else throw( | |
221 | + | else if (containsElement([q, r, toString(this)], B)) | |
222 | + | then [StringEntry(G(S), U)] | |
223 | + | else throw("Not allowed to change user status") | |
185 | 224 | } | |
186 | 225 | ||
187 | 226 | ||
188 | 227 | ||
189 | - | @Callable( | |
190 | - | func creditUser ( | |
191 | - | let | |
192 | - | let | |
193 | - | if (containsElement([ | |
194 | - | then [ScriptTransfer(Address(fromBase58String( | |
228 | + | @Callable(g) | |
229 | + | func creditUser (S) = { | |
230 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
231 | + | let K = toBase58String(g.transactionId) | |
232 | + | if (containsElement([q, r], B)) | |
233 | + | then [ScriptTransfer(Address(fromBase58String(S)), 30000000000, p)] | |
195 | 234 | else throw("Not allowed") | |
196 | 235 | } | |
197 | 236 | ||
198 | 237 | ||
199 | 238 | ||
200 | - | @Callable( | |
201 | - | func deleteUser ( | |
202 | - | let | |
203 | - | let | |
204 | - | if (containsElement([ | |
205 | - | then [DeleteEntry( | |
239 | + | @Callable(g) | |
240 | + | func deleteUser (S) = { | |
241 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
242 | + | let K = toBase58String(g.transactionId) | |
243 | + | if (containsElement([q, r, toString(this)], B)) | |
244 | + | then [DeleteEntry(H(S)), DeleteEntry(A(S)), DeleteEntry(C(S)), DeleteEntry(D(S)), DeleteEntry(E(S)), DeleteEntry(F(S)), StringEntry(G(S), w)] | |
206 | 245 | else throw("Not allowed") | |
207 | 246 | } | |
208 | 247 | ||
209 | 248 | ||
210 | 249 | ||
211 | - | @Callable( | |
212 | - | func deleteEntry ( | |
213 | - | let | |
214 | - | if (( | |
215 | - | then [DeleteEntry( | |
250 | + | @Callable(g) | |
251 | + | func deleteEntry (W) = { | |
252 | + | let B = toString(addressFromPublicKey(g.callerPublicKey)) | |
253 | + | if ((B == q)) | |
254 | + | then [DeleteEntry(W)] | |
216 | 255 | else throw("no") | |
217 | 256 | } | |
218 | 257 | ||
219 | 258 |
github/deemru/w8io/169f3d6 71.00 ms ◑![]()