tx · CKAKLktuFWWu8wELKE6YfGmKerGMumqE7QFovxXrxzoW 3MpbzbPN79YRphgGdAoVaTtTzJj5B23NhrT: -0.01000000 Waves 2022.01.27 17:26 [1897470] smart account 3MpbzbPN79YRphgGdAoVaTtTzJj5B23NhrT > SELF 0.00000000 Waves
{ "type": 13, "id": "CKAKLktuFWWu8wELKE6YfGmKerGMumqE7QFovxXrxzoW", "fee": 1000000, "feeAssetId": null, "timestamp": 1643293641654, "version": 2, "chainId": 84, "sender": "3MpbzbPN79YRphgGdAoVaTtTzJj5B23NhrT", "senderPublicKey": "CVoRprJ4DcikA23xvs4wu3PyjihyNYi7rATC7EAwwCr9", "proofs": [ "qXpPuUjWv4KFvPSanANDEzypogFvK7STDsRabGN3P5ci1TkUh5mDPJwVgHFevjpXCLXQuj9CSgrqDSC97XKjF3m" ], "script": "base64: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", "height": 1897470, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: DWb92uqx5Fe4i91TCAQv3T9wu8FkFhKGvaGHCKU17zBJ Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let adminAddress = valueOrElse(getString(this, "admin"), "") | |
5 | + | ||
6 | + | let mainAddress = valueOrErrorMessage(getString(this, "main"), "Address of main dApp is not defined!") | |
7 | + | ||
8 | + | func isAdmin (callerAddress) = if ((callerAddress == fromBase58String(adminAddress))) | |
9 | + | then true | |
10 | + | else false | |
11 | + | ||
12 | + | ||
13 | + | func isMain (callerAddress) = if ((callerAddress == fromBase58String(mainAddress))) | |
14 | + | then true | |
15 | + | else false | |
16 | + | ||
17 | + | ||
18 | + | func writeInteger (key,integerValue) = IntegerEntry(key, integerValue) | |
19 | + | ||
20 | + | ||
21 | + | func writeString (key,stringValue) = StringEntry(key, stringValue) | |
22 | + | ||
23 | + | ||
24 | + | func createBoard (board) = makeString(board, ",") | |
25 | + | ||
26 | + | ||
27 | + | func countFrequency (helperList,votingList) = { | |
28 | + | func foldFrequency (accum,next) = { | |
29 | + | func countItems (acc,item) = if ((next == item)) | |
30 | + | then (acc + 1) | |
31 | + | else acc | |
32 | + | ||
33 | + | (accum :+ { | |
34 | + | let $l = votingList | |
35 | + | let $s = size($l) | |
36 | + | let $acc0 = 0 | |
37 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
38 | + | then $a | |
39 | + | else countItems($a, $l[$i]) | |
40 | + | ||
41 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
42 | + | then $a | |
43 | + | else throw("List size exceeds 5") | |
44 | + | ||
45 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
46 | + | }) | |
47 | + | } | |
48 | + | ||
49 | + | let $l = helperList | |
50 | + | let $s = size($l) | |
51 | + | let $acc0 = nil | |
52 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
53 | + | then $a | |
54 | + | else foldFrequency($a, $l[$i]) | |
55 | + | ||
56 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
57 | + | then $a | |
58 | + | else throw("List size exceeds 5") | |
59 | + | ||
60 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
61 | + | } | |
62 | + | ||
63 | + | ||
64 | + | func isGreaterThen (potential,itemList) = { | |
65 | + | let listLength = (size(itemList) - 1) | |
66 | + | let currentGreatest = itemList[listLength] | |
67 | + | if ((potential > currentGreatest)) | |
68 | + | then true | |
69 | + | else false | |
70 | + | } | |
71 | + | ||
72 | + | ||
73 | + | func initVotingHelperList (voteArray) = { | |
74 | + | func foldHelperList (accum,next) = if ((containsElement(accum, next) == false)) | |
75 | + | then (accum :+ next) | |
76 | + | else accum | |
77 | + | ||
78 | + | let $l = voteArray | |
79 | + | let $s = size($l) | |
80 | + | let $acc0 = nil | |
81 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
82 | + | then $a | |
83 | + | else foldHelperList($a, $l[$i]) | |
84 | + | ||
85 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
86 | + | then $a | |
87 | + | else throw("List size exceeds 5") | |
88 | + | ||
89 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
90 | + | } | |
91 | + | ||
92 | + | ||
93 | + | func findHighestVote (helperList,frequencies) = { | |
94 | + | func foldFrequencies (highestItemList,nextItem) = if ((size(highestItemList) == 0)) | |
95 | + | then (highestItemList :+ nextItem) | |
96 | + | else if (isGreaterThen(nextItem, highestItemList)) | |
97 | + | then (highestItemList :+ nextItem) | |
98 | + | else highestItemList | |
99 | + | ||
100 | + | let highestVotes = { | |
101 | + | let $l = frequencies | |
102 | + | let $s = size($l) | |
103 | + | let $acc0 = nil | |
104 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
105 | + | then $a | |
106 | + | else foldFrequencies($a, $l[$i]) | |
107 | + | ||
108 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
109 | + | then $a | |
110 | + | else throw("List size exceeds 5") | |
111 | + | ||
112 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
113 | + | } | |
114 | + | let lastIdx = (size(highestVotes) - 1) | |
115 | + | let highestVote = highestVotes[lastIdx] | |
116 | + | let helperIdx = indexOf(frequencies, highestVote) | |
117 | + | match helperIdx { | |
118 | + | case t: Int => | |
119 | + | helperList[t] | |
120 | + | case _ => | |
121 | + | throw("Type does not match! Function: findHighestVote") | |
122 | + | } | |
123 | + | } | |
124 | + | ||
125 | + | ||
126 | + | @Callable(i) | |
127 | + | func alterBoard (newField,oldValue,gameId,team) = if (isMain(i.caller.bytes)) | |
128 | + | then { | |
129 | + | let currentBoard = getStringValue((gameId + "_board")) | |
130 | + | let boardList = split(currentBoard, ",") | |
131 | + | let teamTag = if ((team == "teamBlue")) | |
132 | + | then "B" | |
133 | + | else "Y" | |
134 | + | func foldOldEntry (accum,nextValue) = { | |
135 | + | let $t046024625 = accum | |
136 | + | let result = $t046024625._1 | |
137 | + | let j = $t046024625._2 | |
138 | + | if ((j == oldValue)) | |
139 | + | then $Tuple2((result :+ "0"), (j + 1)) | |
140 | + | else $Tuple2((result :+ nextValue), (j + 1)) | |
141 | + | } | |
142 | + | ||
143 | + | func foldBoard (accum,nextValue) = { | |
144 | + | let $t048504873 = accum | |
145 | + | let result = $t048504873._1 | |
146 | + | let j = $t048504873._2 | |
147 | + | if ((j == newField)) | |
148 | + | then $Tuple2((result :+ teamTag), (j + 1)) | |
149 | + | else $Tuple2((result :+ nextValue), (j + 1)) | |
150 | + | } | |
151 | + | ||
152 | + | let cleanedBoard = { | |
153 | + | let $l = boardList | |
154 | + | let $s = size($l) | |
155 | + | let $acc0 = $Tuple2(nil, 0) | |
156 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
157 | + | then $a | |
158 | + | else foldOldEntry($a, $l[$i]) | |
159 | + | ||
160 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
161 | + | then $a | |
162 | + | else throw("List size exceeds 42") | |
163 | + | ||
164 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42) | |
165 | + | } | |
166 | + | let newBoardList = { | |
167 | + | let $l = cleanedBoard._1 | |
168 | + | let $s = size($l) | |
169 | + | let $acc0 = $Tuple2(nil, 0) | |
170 | + | func $f1_1 ($a,$i) = if (($i >= $s)) | |
171 | + | then $a | |
172 | + | else foldBoard($a, $l[$i]) | |
173 | + | ||
174 | + | func $f1_2 ($a,$i) = if (($i >= $s)) | |
175 | + | then $a | |
176 | + | else throw("List size exceeds 42") | |
177 | + | ||
178 | + | $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42) | |
179 | + | } | |
180 | + | let newBoard = createBoard(newBoardList._1) | |
181 | + | $Tuple2(nil, newBoard) | |
182 | + | } | |
183 | + | else throw("Caller is not main dApp!") | |
184 | + | ||
185 | + | ||
186 | + | ||
187 | + | @Callable(i) | |
188 | + | func updateVotingResults (currentVotingEntryList) = if (isMain(i.caller.bytes)) | |
189 | + | then { | |
190 | + | func foldVotings (accum,nextValue) = (accum :+ split(nextValue, "_")[1]) | |
191 | + | ||
192 | + | let votes = { | |
193 | + | let $l = currentVotingEntryList | |
194 | + | let $s = size($l) | |
195 | + | let $acc0 = nil | |
196 | + | func $f0_1 ($a,$i) = if (($i >= $s)) | |
197 | + | then $a | |
198 | + | else foldVotings($a, $l[$i]) | |
199 | + | ||
200 | + | func $f0_2 ($a,$i) = if (($i >= $s)) | |
201 | + | then $a | |
202 | + | else throw("List size exceeds 5") | |
203 | + | ||
204 | + | $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5) | |
205 | + | } | |
206 | + | let helperList = initVotingHelperList(votes) | |
207 | + | let frequencies = countFrequency(helperList, votes) | |
208 | + | let highestVote = findHighestVote(helperList, frequencies) | |
209 | + | $Tuple2(nil, highestVote) | |
210 | + | } | |
211 | + | else throw("Caller is not main dApp!") | |
212 | + | ||
213 | + | ||
214 | + | ||
215 | + | @Callable(i) | |
216 | + | func setup (mainAddress) = if (!(isDefined(getString(this, "admin")))) | |
217 | + | then [writeString("admin", toBase58String(i.caller.bytes)), writeString("main", mainAddress)] | |
218 | + | else throw("DApp already setup!") | |
219 | + | ||
220 | + | ||
221 | + | ||
222 | + | @Callable(i) | |
223 | + | func updateStringEntry (key,stringValue) = if (isAdmin(i.caller.bytes)) | |
224 | + | then [writeString(key, stringValue)] | |
225 | + | else throw("Address does not match with admin address!") | |
226 | + | ||
227 | + | ||
228 | + | ||
229 | + | @Callable(i) | |
230 | + | func updateIntegerEntry (key,integerValue) = if (isAdmin(i.caller.bytes)) | |
231 | + | then [writeInteger(key, integerValue)] | |
232 | + | else throw("Address does not match with admin address!") | |
233 | + | ||
234 | + | ||
235 | + | ||
236 | + | @Callable(i) | |
237 | + | func deleteStorageEntry (key) = if (isAdmin(i.caller.bytes)) | |
238 | + | then [DeleteEntry(key)] | |
239 | + | else throw("Address does not match with admin address!") | |
240 | + | ||
241 | + | ||
242 | + | @Verifier(tx) | |
243 | + | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
244 | + |
github/deemru/w8io/169f3d6 25.91 ms ◑![]()