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 dAppPublicKey = base58'H1FQXSdk2DP6ZCTNadYpdigGZXT4k5ezfch9ur9JHQPb' | |
5 | + | ||
6 | + | let whitelistingSuffix = "_whitelisted" | |
7 | + | ||
8 | + | let blacklistingSuffix = "_blacklisted" | |
9 | + | ||
10 | + | let birthRecordSuffix = "_alive" | |
11 | + | ||
12 | + | let deathRecordSuffix = "_deceased" | |
13 | + | ||
14 | + | func getListFromData (key) = { | |
15 | + | let getDataString = getString(this, key) | |
16 | + | let publicKey = match getDataString { | |
17 | + | case publicKey: String => | |
18 | + | publicKey | |
19 | + | case _ => | |
20 | + | throw("Account not found!") | |
21 | + | } | |
22 | + | split(publicKey, "_") | |
23 | + | } | |
24 | + | ||
25 | + | ||
26 | + | func isWhitelisted (publicKey) = { | |
27 | + | let whitelistedKey = getString(this, publicKey) | |
28 | + | if (isDefined(whitelistedKey)) | |
29 | + | then { | |
30 | + | let whitelistedDataList = getListFromData(publicKey) | |
31 | + | if ((whitelistedDataList[1] == "whitelisted")) | |
32 | + | then true | |
33 | + | else false | |
34 | + | } | |
35 | + | else false | |
36 | + | } | |
37 | + | ||
38 | + | ||
39 | + | func isBlacklisted (publicKey) = { | |
40 | + | let blacklistedKey = getString(this, publicKey) | |
41 | + | if (isDefined(blacklistedKey)) | |
42 | + | then { | |
43 | + | let blacklistedDataList = getListFromData(publicKey) | |
44 | + | if ((blacklistedDataList[1] == "blacklisted")) | |
45 | + | then true | |
46 | + | else false | |
47 | + | } | |
48 | + | else false | |
49 | + | } | |
50 | + | ||
51 | + | ||
52 | + | func getPositiveRecordKey (intendedKey) = if ((0 > intendedKey)) | |
53 | + | then -(intendedKey) | |
54 | + | else intendedKey | |
55 | + | ||
56 | + | ||
57 | + | @Callable(i) | |
58 | + | func whitelist (publicKey) = if ((i.callerPublicKey == dAppPublicKey)) | |
59 | + | then if (isWhitelisted(publicKey)) | |
60 | + | then throw("This account has already been whitelisted!") | |
61 | + | else { | |
62 | + | let whitelistedValue = (publicKey + whitelistingSuffix) | |
63 | + | WriteSet([DataEntry(publicKey, whitelistedValue)]) | |
64 | + | } | |
65 | + | else throw("You are not authorized to whitelist accounts. Contact dApp Owner!") | |
66 | + | ||
67 | + | ||
68 | + | ||
69 | + | @Callable(i) | |
70 | + | func blacklist (publicKey) = if ((i.callerPublicKey == dAppPublicKey)) | |
71 | + | then if (isWhitelisted(publicKey)) | |
72 | + | then { | |
73 | + | let blacklistedValue = (publicKey + blacklistingSuffix) | |
74 | + | WriteSet([DataEntry(publicKey, blacklistedValue)]) | |
75 | + | } | |
76 | + | else if (isBlacklisted(publicKey)) | |
77 | + | then throw("This account has already been blacklisted!") | |
78 | + | else throw("This account was never whitelisted. Do verify!") | |
79 | + | else throw("You are not authorized to blacklist accounts. Contact dApp Owner!") | |
80 | + | ||
81 | + | ||
82 | + | ||
83 | + | @Callable(i) | |
84 | + | func addBirthRecord (record) = { | |
85 | + | let callerPublicKey = toBase58String(i.callerPublicKey) | |
86 | + | if (isWhitelisted(callerPublicKey)) | |
87 | + | then { | |
88 | + | let birthRecordKey = toString(getPositiveRecordKey(toInt(i.transactionId))) | |
89 | + | let transactionId = ("_" + toBase58String(i.transactionId)) | |
90 | + | let birthRecordValue = ((((record + "_") + callerPublicKey) + transactionId) + birthRecordSuffix) | |
91 | + | WriteSet([DataEntry(birthRecordKey, birthRecordValue)]) | |
92 | + | } | |
93 | + | else if (isBlacklisted(callerPublicKey)) | |
94 | + | then throw("This account has been blacklisted") | |
95 | + | else throw("Only authorized accounts can add birth records to the blockchain") | |
96 | + | } | |
97 | + | ||
98 | + | ||
99 | + | ||
100 | + | @Callable(i) | |
101 | + | func updateRecord (recordId,newRecord) = { | |
102 | + | let callerPublicKey = toBase58String(i.callerPublicKey) | |
103 | + | if (isWhitelisted(callerPublicKey)) | |
104 | + | then { | |
105 | + | let record = getString(this, recordId) | |
106 | + | if (!(isDefined(record))) | |
107 | + | then throw("Record not found") | |
108 | + | else { | |
109 | + | let recordData = match getString(this, recordId) { | |
110 | + | case a: String => | |
111 | + | a | |
112 | + | case _ => | |
113 | + | throw("Record not found") | |
114 | + | } | |
115 | + | let recordList = split(recordData, "_") | |
116 | + | if ((recordList[1] == callerPublicKey)) | |
117 | + | then { | |
118 | + | let newRecordValue = ((((newRecord + "_") + callerPublicKey) + "_") + recordList[2]) | |
119 | + | WriteSet([DataEntry(recordId, newRecordValue)]) | |
120 | + | } | |
121 | + | else if (if ((recordList[1] == callerPublicKey)) | |
122 | + | then isBlacklisted(callerPublicKey) | |
123 | + | else false) | |
124 | + | then throw("This account has been blacklisted. Contact dApp Owner!") | |
125 | + | else throw("Access denied. Only the account that created this record can update it.") | |
126 | + | } | |
127 | + | } | |
128 | + | else throw("You are not authorized for this action!") | |
129 | + | } | |
130 | + | ||
131 | + | ||
132 | + | ||
133 | + | @Callable(i) | |
134 | + | func makeDeceased (recordId) = { | |
135 | + | let callerPublicKey = toBase58String(i.callerPublicKey) | |
136 | + | if (isWhitelisted(callerPublicKey)) | |
137 | + | then { | |
138 | + | let record = getString(this, recordId) | |
139 | + | if (!(isDefined(record))) | |
140 | + | then throw("Record not found") | |
141 | + | else { | |
142 | + | let recordData = match getString(this, recordId) { | |
143 | + | case a: String => | |
144 | + | a | |
145 | + | case _ => | |
146 | + | throw("Record not found") | |
147 | + | } | |
148 | + | let recordList = split(recordData, "_") | |
149 | + | if ((recordList[1] == callerPublicKey)) | |
150 | + | then { | |
151 | + | let newRecordValue = (((recordList[0] + "_") + callerPublicKey) + deathRecordSuffix) | |
152 | + | WriteSet([DataEntry(recordId, newRecordValue)]) | |
153 | + | } | |
154 | + | else if (if ((recordList[1] == callerPublicKey)) | |
155 | + | then isBlacklisted(callerPublicKey) | |
156 | + | else false) | |
157 | + | then throw("This account has been blacklisted. Contact dApp Owner!") | |
158 | + | else throw("Access denied. Only the account that created this record can make it deceased") | |
159 | + | } | |
160 | + | } | |
161 | + | else throw("You are not authorized for this action!") | |
162 | + | } | |
163 | + | ||
164 | + | ||
165 | + | @Verifier(tx) | |
166 | + | func verify () = match tx { | |
167 | + | case d: SetScriptTransaction => | |
168 | + | sigVerify(tx.bodyBytes, tx.proofs[0], dAppPublicKey) | |
169 | + | case e: InvokeScriptTransaction => | |
170 | + | if (isWhitelisted(toBase58String(tx.senderPublicKey))) | |
171 | + | then true | |
172 | + | else sigVerify(tx.bodyBytes, tx.proofs[0], dAppPublicKey) | |
173 | + | case _ => | |
174 | + | false | |
175 | + | } | |
176 | + |
github/deemru/w8io/169f3d6 23.37 ms ◑