tx · CpfeV8FcfKmsKySxTahpm9cbfTMaNV3iauTgeQNDtcK8 3MsDcpvGYmnYxoBXTsHddyvayC33Ytd3ygQ: -0.01000000 Waves 2020.06.17 13:45 [1047414] smart account 3MsDcpvGYmnYxoBXTsHddyvayC33Ytd3ygQ > SELF 0.00000000 Waves
{ "type": 13, "id": "CpfeV8FcfKmsKySxTahpm9cbfTMaNV3iauTgeQNDtcK8", "fee": 1000000, "feeAssetId": null, "timestamp": 1592390751281, "version": 1, "sender": "3MsDcpvGYmnYxoBXTsHddyvayC33Ytd3ygQ", "senderPublicKey": "Ht8nxSVf7PAMNjKaXBrBFwdqC68yW1zCD7c4DUfpmkqt", "proofs": [ "3TgLvwM5ZPEVT4N9qziKmwjSZXG5Nf7CjNd3hkTwRGMus5S4Ah1VwouxYCrYTzigKwvsmh5hxSq5ZaEVGTxdy8Rx" ], "script": "base64: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AgUAAAANJGxpc3QzMzA4MzMzOQAAAAAAAAAACQMJAAAAAAAAAgUAAAANJHNpemUzMzA4MzMzOQAAAAAAAAAACgUAAAAOJGFjYzEwMzMwODMzMzkEAAAADiRhY2MxMTMzMDgzMzM5CQEAAAAIZm9sZEZ1bmMAAAACBQAAAA4kYWNjMTAzMzA4MzMzOQkAAZEAAAACBQAAAA0kbGlzdDMzMDgzMzM5AAAAAAAAAAAKCQAAAgAAAAECAAAAE0xpc3Qgc2l6ZSBleGNlZWQgMTAEAAAAA3JlcwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAALcXVlc3Rpb25LZXkFAAAABmFuc3dlcgUAAAAFYWNjdW0EAAAAGnJlc1dpdGhRdWVzdGlvblRvdGFsV2VpZ2h0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABZxdWVzdGlvblRvdGFsV2VpZ2h0S2V5CQAAZAAAAAIJAQAAAAlnZXRBbW91bnQAAAABBQAAABZxdWVzdGlvblRvdGFsV2VpZ2h0S2V5BQAAAAxjYWxsZXJXZWlnaHQFAAAAA3JlcwMJAAAAAAAAAgUAAAALY2FsbGVyVm90ZWQGCQEAAAAIV3JpdGVTZXQAAAABBQAAABpyZXNXaXRoUXVlc3Rpb25Ub3RhbFdlaWdodAQAAAALcmVzV2l0aEZsYWcJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADnRvdGFsV2VpZ2h0S2V5CQAAZAAAAAIJAQAAAAlnZXRBbW91bnQAAAABBQAAAA50b3RhbFdlaWdodEtleQUAAAAMY2FsbGVyV2VpZ2h0BQAAABpyZXNXaXRoUXVlc3Rpb25Ub3RhbFdlaWdodAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAPYWRkcmVzc1ZvdGVkS2V5BgUAAAALcmVzV2l0aEZsYWcAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAAnR4BQAAAAckbWF0Y2gwBAAAAAR0eElkCQACWAAAAAEIBQAAAAJ0eAAAAAJpZAQAAAAJcEFkZHJlc3MxCQEAAAASZ2V0QWRkcmVzc0Zyb21Cb29rAAAAAQIAAAAJcEFkZHJlc3MxBAAAAAlwQWRkcmVzczIJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABAgAAAAlwQWRkcmVzczIEAAAACXBBZGRyZXNzMwkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAECAAAACXBBZGRyZXNzMwQAAAAJcEFkZHJlc3M0CQEAAAASZ2V0QWRkcmVzc0Zyb21Cb29rAAAAAQIAAAAJcEFkZHJlc3M0BAAAAAlwQWRkcmVzczUJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABAgAAAAlwQWRkcmVzczUEAAAACXBBZGRyZXNzNgkBAAAAEmdldEFkZHJlc3NGcm9tQm9vawAAAAECAAAACXBBZGRyZXNzNgQAAAAJcEFkZHJlc3M3CQEAAAASZ2V0QWRkcmVzc0Zyb21Cb29rAAAAAQIAAAAJcEFkZHJlc3M3BAAAAAlwQWRkcmVzczgJAQAAABJnZXRBZGRyZXNzRnJvbUJvb2sAAAABAgAAAAlwQWRkcmVzczgEAAAAC3BLZXkxU2lnbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAJcEFkZHJlc3MxBQAAAAR0eElkAAAAAAAAAAABAAAAAAAAAAAABAAAAAtwS2V5MlNpZ25lZAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAACXBBZGRyZXNzMgUAAAAEdHhJZAAAAAAAAAAAAQAAAAAAAAAAAAQAAAALcEtleTNTaWduZWQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAlwQWRkcmVzczMFAAAABHR4SWQAAAAAAAAAAAEAAAAAAAAAAAAEAAAAC3BLZXk0U2lnbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAJcEFkZHJlc3M0BQAAAAR0eElkAAAAAAAAAAABAAAAAAAAAAAABAAAAAtwS2V5NVNpZ25lZAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAACXBBZGRyZXNzNQUAAAAEdHhJZAAAAAAAAAAAAQAAAAAAAAAAAAQAAAALcEtleTZTaWduZWQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAlwQWRkcmVzczYFAAAABHR4SWQAAAAAAAAAAAEAAAAAAAAAAAAEAAAAC3BLZXk3U2lnbmVkAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAJcEFkZHJlc3M3BQAAAAR0eElkAAAAAAAAAAABAAAAAAAAAAAABAAAAAtwS2V5OFNpZ25lZAMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAACXBBZGRyZXNzOAUAAAAEdHhJZAAAAAAAAAAAAQAAAAAAAAAAAAkAAGcAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIFAAAAC3BLZXkxU2lnbmVkBQAAAAtwS2V5MlNpZ25lZAUAAAALcEtleTNTaWduZWQFAAAAC3BLZXk0U2lnbmVkBQAAAAtwS2V5NVNpZ25lZAUAAAALcEtleTZTaWduZWQFAAAAC3BLZXk3U2lnbmVkBQAAAAtwS2V5OFNpZ25lZAAAAAAAAAAAAwf+fK3i", "chainId": 84, "height": 1047414, "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 addressBook = Address(base58'3MwoVRAPfC2NKuuYJKHVAVtUFhq8MyTEfQh') | |
5 | + | ||
6 | + | let whitelistAddressKey = "whitelistAddress" | |
7 | + | ||
8 | + | let dAppWhitelistAddressKey = "dAppWhitelistAddress" | |
9 | + | ||
10 | + | let totalWeightKey = "totalWeight" | |
11 | + | ||
12 | + | let minTotalWeightKey = "minTotalWeight" | |
13 | + | ||
14 | + | let startTime = 1592341200 | |
15 | + | ||
16 | + | let endTime = 1593291600 | |
17 | + | ||
18 | + | let ver = "5.0.1" | |
19 | + | ||
20 | + | let validState = 1000 | |
21 | + | ||
22 | + | let getCurrentTime = (lastBlock.timestamp / 1000) | |
23 | + | ||
24 | + | func hasStarted () = (getCurrentTime >= startTime) | |
25 | + | ||
26 | + | ||
27 | + | func hasEnded () = (getCurrentTime > endTime) | |
28 | + | ||
29 | + | ||
30 | + | func getAddressFromBook (key) = match getString(addressBook, key) { | |
31 | + | case a: String => | |
32 | + | Address(fromBase58String(a)) | |
33 | + | case _ => | |
34 | + | throw("no key") | |
35 | + | } | |
36 | + | ||
37 | + | ||
38 | + | func checkAddress (account) = { | |
39 | + | let isAccountAllow = match getInteger(getAddressFromBook(whitelistAddressKey), account) { | |
40 | + | case a: Int => | |
41 | + | a | |
42 | + | case _ => | |
43 | + | -255 | |
44 | + | } | |
45 | + | (isAccountAllow == validState) | |
46 | + | } | |
47 | + | ||
48 | + | ||
49 | + | func getAmount (key) = match getInteger(this, key) { | |
50 | + | case a: Int => | |
51 | + | a | |
52 | + | case _ => | |
53 | + | 0 | |
54 | + | } | |
55 | + | ||
56 | + | ||
57 | + | func isVoted (key) = match getBoolean(this, key) { | |
58 | + | case a: Boolean => | |
59 | + | a | |
60 | + | case _ => | |
61 | + | false | |
62 | + | } | |
63 | + | ||
64 | + | ||
65 | + | func getQuestionAnswerKey (question,answer) = ((("question_" + question) + "_answer_") + answer) | |
66 | + | ||
67 | + | ||
68 | + | @Callable(i) | |
69 | + | func vote (question,answer) = { | |
70 | + | let dAppStatus = match getInteger(getAddressFromBook(dAppWhitelistAddressKey), toString(this)) { | |
71 | + | case a: Int => | |
72 | + | a | |
73 | + | case _ => | |
74 | + | 0 | |
75 | + | } | |
76 | + | let callerAddress = toString(i.caller) | |
77 | + | let callerCheck = checkAddress(callerAddress) | |
78 | + | let questionKey = ((("address_" + callerAddress) + "_question_") + question) | |
79 | + | let addressVotedKey = (("address_" + callerAddress) + "_voted") | |
80 | + | let addressWeightKey = (("address_" + callerAddress) + "_weight") | |
81 | + | let questionTotalWeightKey = (("question_" + question) + "_totalWeight") | |
82 | + | let callerWeight = getAmount(addressWeightKey) | |
83 | + | let callerVoted = isVoted(addressVotedKey) | |
84 | + | let callerVotedOnQuestion = match getString(this, questionKey) { | |
85 | + | case a: String => | |
86 | + | true | |
87 | + | case _ => | |
88 | + | false | |
89 | + | } | |
90 | + | if ((dAppStatus != 1)) | |
91 | + | then throw("#001 Dealer dApp is not active") | |
92 | + | else if (!(hasStarted())) | |
93 | + | then throw("#002 The Vote not start") | |
94 | + | else if (hasEnded()) | |
95 | + | then throw("#003 The Vote already completed") | |
96 | + | else if (!(callerCheck)) | |
97 | + | then throw("#004 This account has no right to vote.") | |
98 | + | else if ((callerWeight == 0)) | |
99 | + | then throw("#005 This account has no weight to vote.") | |
100 | + | else if ((callerVotedOnQuestion == true)) | |
101 | + | then throw("#006 This account has already voted on this question.") | |
102 | + | else { | |
103 | + | let answers = split(answer, ",") | |
104 | + | func foldFunc (acc,e) = { | |
105 | + | let key = getQuestionAnswerKey(question, e) | |
106 | + | let currentWeight = valueOrErrorMessage(getInteger(this, key), "#007 Wrong answer") | |
107 | + | DataEntry(key, (callerWeight + currentWeight)) :: acc | |
108 | + | } | |
109 | + | ||
110 | + | let accum = { | |
111 | + | let $list33083339 = answers | |
112 | + | let $size33083339 = size($list33083339) | |
113 | + | let $acc033083339 = nil | |
114 | + | if (($size33083339 == 0)) | |
115 | + | then $acc033083339 | |
116 | + | else { | |
117 | + | let $acc133083339 = foldFunc($acc033083339, $list33083339[0]) | |
118 | + | if (($size33083339 == 1)) | |
119 | + | then $acc133083339 | |
120 | + | else { | |
121 | + | let $acc233083339 = foldFunc($acc133083339, $list33083339[1]) | |
122 | + | if (($size33083339 == 2)) | |
123 | + | then $acc233083339 | |
124 | + | else { | |
125 | + | let $acc333083339 = foldFunc($acc233083339, $list33083339[2]) | |
126 | + | if (($size33083339 == 3)) | |
127 | + | then $acc333083339 | |
128 | + | else { | |
129 | + | let $acc433083339 = foldFunc($acc333083339, $list33083339[3]) | |
130 | + | if (($size33083339 == 4)) | |
131 | + | then $acc433083339 | |
132 | + | else { | |
133 | + | let $acc533083339 = foldFunc($acc433083339, $list33083339[4]) | |
134 | + | if (($size33083339 == 5)) | |
135 | + | then $acc533083339 | |
136 | + | else { | |
137 | + | let $acc633083339 = foldFunc($acc533083339, $list33083339[5]) | |
138 | + | if (($size33083339 == 6)) | |
139 | + | then $acc633083339 | |
140 | + | else { | |
141 | + | let $acc733083339 = foldFunc($acc633083339, $list33083339[6]) | |
142 | + | if (($size33083339 == 7)) | |
143 | + | then $acc733083339 | |
144 | + | else { | |
145 | + | let $acc833083339 = foldFunc($acc733083339, $list33083339[7]) | |
146 | + | if (($size33083339 == 8)) | |
147 | + | then $acc833083339 | |
148 | + | else { | |
149 | + | let $acc933083339 = foldFunc($acc833083339, $list33083339[8]) | |
150 | + | if (($size33083339 == 9)) | |
151 | + | then $acc933083339 | |
152 | + | else { | |
153 | + | let $acc1033083339 = foldFunc($acc933083339, $list33083339[9]) | |
154 | + | if (($size33083339 == 10)) | |
155 | + | then $acc1033083339 | |
156 | + | else { | |
157 | + | let $acc1133083339 = foldFunc($acc1033083339, $list33083339[10]) | |
158 | + | throw("List size exceed 10") | |
159 | + | } | |
160 | + | } | |
161 | + | } | |
162 | + | } | |
163 | + | } | |
164 | + | } | |
165 | + | } | |
166 | + | } | |
167 | + | } | |
168 | + | } | |
169 | + | } | |
170 | + | } | |
171 | + | let res = DataEntry(questionKey, answer) :: accum | |
172 | + | let resWithQuestionTotalWeight = DataEntry(questionTotalWeightKey, (getAmount(questionTotalWeightKey) + callerWeight)) :: res | |
173 | + | if ((callerVoted == true)) | |
174 | + | then WriteSet(resWithQuestionTotalWeight) | |
175 | + | else { | |
176 | + | let resWithFlag = DataEntry(totalWeightKey, (getAmount(totalWeightKey) + callerWeight)) :: resWithQuestionTotalWeight | |
177 | + | WriteSet(DataEntry(addressVotedKey, true) :: resWithFlag) | |
178 | + | } | |
179 | + | } | |
180 | + | } | |
181 | + | ||
182 | + | ||
183 | + | @Verifier(tx) | |
184 | + | func verify () = match tx { | |
185 | + | case tx: SetScriptTransaction => | |
186 | + | let txId = toBase58String(tx.id) | |
187 | + | let pAddress1 = getAddressFromBook("pAddress1") | |
188 | + | let pAddress2 = getAddressFromBook("pAddress2") | |
189 | + | let pAddress3 = getAddressFromBook("pAddress3") | |
190 | + | let pAddress4 = getAddressFromBook("pAddress4") | |
191 | + | let pAddress5 = getAddressFromBook("pAddress5") | |
192 | + | let pAddress6 = getAddressFromBook("pAddress6") | |
193 | + | let pAddress7 = getAddressFromBook("pAddress7") | |
194 | + | let pAddress8 = getAddressFromBook("pAddress8") | |
195 | + | let pKey1Signed = if (isDefined(getInteger(pAddress1, txId))) | |
196 | + | then 1 | |
197 | + | else 0 | |
198 | + | let pKey2Signed = if (isDefined(getInteger(pAddress2, txId))) | |
199 | + | then 1 | |
200 | + | else 0 | |
201 | + | let pKey3Signed = if (isDefined(getInteger(pAddress3, txId))) | |
202 | + | then 1 | |
203 | + | else 0 | |
204 | + | let pKey4Signed = if (isDefined(getInteger(pAddress4, txId))) | |
205 | + | then 1 | |
206 | + | else 0 | |
207 | + | let pKey5Signed = if (isDefined(getInteger(pAddress5, txId))) | |
208 | + | then 1 | |
209 | + | else 0 | |
210 | + | let pKey6Signed = if (isDefined(getInteger(pAddress6, txId))) | |
211 | + | then 1 | |
212 | + | else 0 | |
213 | + | let pKey7Signed = if (isDefined(getInteger(pAddress7, txId))) | |
214 | + | then 1 | |
215 | + | else 0 | |
216 | + | let pKey8Signed = if (isDefined(getInteger(pAddress8, txId))) | |
217 | + | then 1 | |
218 | + | else 0 | |
219 | + | ((((((((pKey1Signed + pKey2Signed) + pKey3Signed) + pKey4Signed) + pKey5Signed) + pKey6Signed) + pKey7Signed) + pKey8Signed) >= 3) | |
220 | + | case _ => | |
221 | + | false | |
222 | + | } | |
223 | + |
github/deemru/w8io/026f985 23.46 ms ◑