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:
OldNewDifferences
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