tx · 2p5LFMJMrrJbv7KdkJigWze5RLTd5q7mu9QvcKXCu1c2

3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK:  -0.05000000 Waves

2022.01.26 21:37 [1896270] smart account 3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK > SELF 0.00000000 Waves

{ "type": 13, "id": "2p5LFMJMrrJbv7KdkJigWze5RLTd5q7mu9QvcKXCu1c2", "fee": 5000000, "feeAssetId": null, "timestamp": 1643222254722, "version": 2, "chainId": 84, "sender": "3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK", "senderPublicKey": "3itc77jAZTQAcaPCyYEe4KD7h18CvqZZ2JRynZHsuJ61", "proofs": [ "5eAeNRnp42o11GpGQyyQn5orFfqHBjJ6qa1CzhfmUZ2zdox51vU9wUgdHfHPcX3Df3QqwD2s6RSuXw7dRT4HqjSM" ], "script": "base64:AAIFAAAAAAAAACkIAhIFCgMICAgSABIAEgMKAQgSBAoCCAESBAoCCAgSBAoCCAESAwoBCAAAABEAAAAADGFkbWluQWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzAgAAAAVhZG1pbgIAAAAAAAAAABBpbnNwZWN0b3JBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAJaW5zcGVjdG9yAgAAABpObyBrZXkgaW5zcGVjdG9yIHdhcyBmb3VuZAAAAAALdG90YWxTdXBwbHkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAALdG90YWxTdXBwbHkAAAAAAAAAAAAAAAAADnZvdGluZ0R1cmF0aW9uCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwIAAAAOdm90aW5nRHVyYXRpb24CAAAAH05vIGtleSB2b3RpbmdEdXJhdGlvbiB3YXMgZm91bmQAAAAACGN0b2tlbklkCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAHdG9rZW5JZAIAAAAZTm8ga2V5IGNUb2tlbklkIHdhcyBmb3VuZAAAAAARbWF4UGxheWVyc1BlclRlYW0JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAAA5wbGF5ZXJzUGVyVGVhbQIAAAAfTm8ga2V5IHBsYXllcnNQZXJUZWFtIHdhcyBmb3VuZAEAAAAHaXNBZG1pbgAAAAEAAAANY2FsbGVyQWRkcmVzcwMJAAAAAAAAAgUAAAANY2FsbGVyQWRkcmVzcwkAAlkAAAABBQAAAAxhZG1pbkFkZHJlc3MGBwEAAAAMd3JpdGVJbnRlZ2VyAAAAAgAAAANrZXkAAAAMaW50ZWdlclZhbHVlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAADa2V5BQAAAAxpbnRlZ2VyVmFsdWUBAAAAC3dyaXRlU3RyaW5nAAAAAgAAAANrZXkAAAALc3RyaW5nVmFsdWUJAQAAAAtTdHJpbmdFbnRyeQAA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FExpc3Qgc2l6ZSBleGNlZWRzIDQyCQEAAAAFJGYxXzIAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACCQEAAAAFJGYxXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAA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bmcEAAAAFmN1cnJlbnRWb3RpbmdFbnRyeUxpc3QJAARNAAAAAgUAAAAPdm90aW5nRW50cnlMaXN0BQAAAAduZXdWb3RlBAAAABJjdXJyZW50Vm90aW5nRW50cnkJAAS5AAAAAgUAAAAWY3VycmVudFZvdGluZ0VudHJ5TGlzdAIAAAABLAQAAAAKdm90ZWRGaWVsZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQEAAAATdXBkYXRlVm90aW5nUmVzdWx0cwAAAAEFAAAAFmN1cnJlbnRWb3RpbmdFbnRyeUxpc3QEAAAADGN1cnJlbnRGaWVsZAMJAQAAAAIhPQAAAAIFAAAACnZvdGVkRmllbGQFAAAAD3N0b3JlZE1vc3RWb3RlZAUAAAAKdm90ZWRGaWVsZAUAAAAPc3RvcmVkTW9zdFZvdGVkBAAAAAxhbHRlcmVkQm9hcmQJAQAAAAphbHRlckJvYXJkAAAABAUAAAAMY3VycmVudEZpZWxkBQAAAA9zdG9yZWRNb3N0Vm90ZWQFAAAABmdhbWVJZAUAAAAKYWN0aXZlVGVhbQQAAAAPcG90ZW50aWFsV2lubmVyCQAD/AAAAAQJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAEGluc3BlY3RvckFkZHJlc3MCAAAAC2NoZWNrRm9yV2luCQAETAAAAAIFAAAADGFsdGVyZWRCb2FyZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAD3BvdGVudGlhbFdpbm5lcgUAAAAPcG90ZW50aWFsV2lubmVyBAAAAAckbWF0Y2gwBQAAAA9wb3RlbnRpYWxXaW5uZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABdAUAAAAHJG1hdGNoMAMJAABmAAAAAgUAAAARbWF4UGxheWVyc1BlclRlYW0JAAGQAAAAAQUAAAAWY3VycmVudFZvdGluZ0VudHJ5TGlzdAkABEwAAAACCQEAAAALd3JpdGVTdHJpbmcAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAhfdm90aW5nXwkAAaQAAAABBQAAAAVyb3VuZAUAAAASY3VycmVudFZvdGluZ0VudHJ5CQAETAAAAAIJAQAAAAt3cml0ZVN0cmluZwAAAAIJAAEs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", "height": 1896270, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: A19ZfUqVp2FMjodY2z8bc1gM7nyFED5Fe1M9q2W4DuUy Next: 6U7DhW64Ve5mRw8GKbKpD4dBTEfq3DkqRpTUxhJhyhSg Diff:
OldNewDifferences
361361 let newVote = ((callerAddress + "_") + toString(voting))
362362 let currentVotingEntryList = [newVote]
363363 let votedField = parseIntValue(updateVotingResults(currentVotingEntryList))
364- let alteredBoard = alterBoard(votedField, -1, gameId, activeTeam)
364+ let alteredBoard = alterBoard(votedField, -1, gameId, unactiveTeam)
365365 [writeString((gameId + "_board"), alteredBoard), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_status"), ((("round_" + toString((round + 1))) + ",turn_") + unactiveTeam)), writeString(((gameId + "_voting_") + toString((round + 1))), newVote), writeInteger((gameId + "_mostVoted"), votedField)]
366366 }
367367 else throw((("Caller is not in " + unactiveTeam) + "!"))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let adminAddress = valueOrElse(getString(this, "admin"), "")
55
66 let inspectorAddress = valueOrErrorMessage(getString(this, "inspector"), "No key inspector was found")
77
88 let totalSupply = valueOrElse(getInteger(this, "totalSupply"), 0)
99
1010 let votingDuration = valueOrErrorMessage(getInteger(this, "votingDuration"), "No key votingDuration was found")
1111
1212 let ctokenId = valueOrErrorMessage(getString(this, "tokenId"), "No key cTokenId was found")
1313
1414 let maxPlayersPerTeam = valueOrErrorMessage(getInteger(this, "playersPerTeam"), "No key playersPerTeam was found")
1515
1616 func isAdmin (callerAddress) = if ((callerAddress == fromBase58String(adminAddress)))
1717 then true
1818 else false
1919
2020
2121 func writeInteger (key,integerValue) = IntegerEntry(key, integerValue)
2222
2323
2424 func writeString (key,stringValue) = StringEntry(key, stringValue)
2525
2626
2727 func countFrequency (helperList,votingList) = {
2828 func foldFrequency (accum,next) = {
2929 func countItems (acc,item) = if ((next == item))
3030 then (acc + 1)
3131 else acc
3232
3333 (accum :+ {
3434 let $l = votingList
3535 let $s = size($l)
3636 let $acc0 = 0
3737 func $f0_1 ($a,$i) = if (($i >= $s))
3838 then $a
3939 else countItems($a, $l[$i])
4040
4141 func $f0_2 ($a,$i) = if (($i >= $s))
4242 then $a
4343 else throw("List size exceeds 5")
4444
4545 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
4646 })
4747 }
4848
4949 let $l = helperList
5050 let $s = size($l)
5151 let $acc0 = nil
5252 func $f0_1 ($a,$i) = if (($i >= $s))
5353 then $a
5454 else foldFrequency($a, $l[$i])
5555
5656 func $f0_2 ($a,$i) = if (($i >= $s))
5757 then $a
5858 else throw("List size exceeds 5")
5959
6060 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
6161 }
6262
6363
6464 func initVotingHelperList (voteArray) = {
6565 func foldHelperList (accum,next) = if ((containsElement(accum, next) == false))
6666 then (accum :+ next)
6767 else accum
6868
6969 let $l = voteArray
7070 let $s = size($l)
7171 let $acc0 = nil
7272 func $f0_1 ($a,$i) = if (($i >= $s))
7373 then $a
7474 else foldHelperList($a, $l[$i])
7575
7676 func $f0_2 ($a,$i) = if (($i >= $s))
7777 then $a
7878 else throw("List size exceeds 5")
7979
8080 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
8181 }
8282
8383
8484 func isGreaterThen (potential,itemList) = {
8585 let listLength = (size(itemList) - 1)
8686 let currentGreatest = itemList[listLength]
8787 if ((potential > currentGreatest))
8888 then true
8989 else false
9090 }
9191
9292
9393 func findHighestVote (helperList,frequencies) = {
9494 func foldFrequencies (highestItemList,nextItem) = if ((size(highestItemList) == 0))
9595 then (highestItemList :+ nextItem)
9696 else if (isGreaterThen(nextItem, highestItemList))
9797 then (highestItemList :+ nextItem)
9898 else highestItemList
9999
100100 let highestVotes = {
101101 let $l = frequencies
102102 let $s = size($l)
103103 let $acc0 = nil
104104 func $f0_1 ($a,$i) = if (($i >= $s))
105105 then $a
106106 else foldFrequencies($a, $l[$i])
107107
108108 func $f0_2 ($a,$i) = if (($i >= $s))
109109 then $a
110110 else throw("List size exceeds 5")
111111
112112 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
113113 }
114114 let lastIdx = (size(highestVotes) - 1)
115115 let highestVote = highestVotes[lastIdx]
116116 let helperIdx = indexOf(frequencies, highestVote)
117117 match helperIdx {
118118 case t: Int =>
119119 helperList[t]
120120 case _ =>
121121 throw("Type does not match! Function: findHighestVote")
122122 }
123123 }
124124
125125
126126 func createBoard (board) = makeString(board, ",")
127127
128128
129129 func alterBoard (newField,oldValue,gameId,team) = {
130130 let currentBoard = getStringValue((gameId + "_board"))
131131 let boardList = split(currentBoard, ",")
132132 let teamTag = if ((team == "teamBlue"))
133133 then "B"
134134 else "Y"
135135 func foldOldEntry (accum,nextValue) = {
136136 let $t047314754 = accum
137137 let result = $t047314754._1
138138 let j = $t047314754._2
139139 if ((j == oldValue))
140140 then $Tuple2((result :+ "0"), (j + 1))
141141 else $Tuple2((result :+ nextValue), (j + 1))
142142 }
143143
144144 func foldBoard (accum,nextValue) = {
145145 let $t049314954 = accum
146146 let result = $t049314954._1
147147 let j = $t049314954._2
148148 if ((j == newField))
149149 then $Tuple2((result :+ teamTag), (j + 1))
150150 else $Tuple2((result :+ nextValue), (j + 1))
151151 }
152152
153153 let cleanedBoard = {
154154 let $l = boardList
155155 let $s = size($l)
156156 let $acc0 = $Tuple2(nil, 0)
157157 func $f0_1 ($a,$i) = if (($i >= $s))
158158 then $a
159159 else foldOldEntry($a, $l[$i])
160160
161161 func $f0_2 ($a,$i) = if (($i >= $s))
162162 then $a
163163 else throw("List size exceeds 42")
164164
165165 $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)
166166 }
167167 let newBoardList = {
168168 let $l = cleanedBoard._1
169169 let $s = size($l)
170170 let $acc0 = $Tuple2(nil, 0)
171171 func $f1_1 ($a,$i) = if (($i >= $s))
172172 then $a
173173 else foldBoard($a, $l[$i])
174174
175175 func $f1_2 ($a,$i) = if (($i >= $s))
176176 then $a
177177 else throw("List size exceeds 42")
178178
179179 $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)
180180 }
181181 createBoard(newBoardList._1)
182182 }
183183
184184
185185 func updateVotingResults (currentVotingEntryList) = {
186186 func foldVotings (accum,nextValue) = (accum :+ split(nextValue, "_")[1])
187187
188188 let votes = {
189189 let $l = currentVotingEntryList
190190 let $s = size($l)
191191 let $acc0 = nil
192192 func $f0_1 ($a,$i) = if (($i >= $s))
193193 then $a
194194 else foldVotings($a, $l[$i])
195195
196196 func $f0_2 ($a,$i) = if (($i >= $s))
197197 then $a
198198 else throw("List size exceeds 5")
199199
200200 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
201201 }
202202 let helperList = initVotingHelperList(votes)
203203 let frequencies = countFrequency(helperList, votes)
204204 findHighestVote(helperList, frequencies)
205205 }
206206
207207
208208 func checkTeammembers (team,potentialMember) = if (!(containsElement(team, potentialMember)))
209209 then true
210210 else false
211211
212212
213213 @Callable(i)
214214 func setup (inspectorAddress,tokenName,tokenDescription) = if (!(isDefined(getString(this, "admin"))))
215215 then {
216216 let asset = Issue(tokenName, tokenDescription, 0, 8, true)
217217 let tokenId = calculateAssetId(asset)
218218 [asset, writeString("admin", toBase58String(i.caller.bytes)), writeString("inspector", inspectorAddress), writeInteger("votingDuration", 2), writeInteger("totalSupply", 0), writeString("tokenName", tokenName), writeString("tokenId", toBase58String(tokenId)), writeInteger("tokenDecimals", 8)]
219219 }
220220 else throw("DApp already setup!")
221221
222222
223223
224224 @Callable(i)
225225 func buyRound () = if ((size(i.payments) > 0))
226226 then {
227227 let amount = i.payments[0].amount
228228 if ((amount >= 1))
229229 then {
230230 let cTokenAmount = fraction(amount, 42, 1)
231231 let currentTotalSupply = (totalSupply + cTokenAmount)
232232 [writeInteger("totalSupply", currentTotalSupply), Reissue(fromBase58String(ctokenId), cTokenAmount, true), ScriptTransfer(i.caller, cTokenAmount, fromBase58String(ctokenId))]
233233 }
234234 else throw("Payment is to small!")
235235 }
236236 else throw("No payment attached!")
237237
238238
239239
240240 @Callable(i)
241241 func createGame () = {
242242 let board = "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
243243 let gameId = toBase58String(i.transactionId)
244244 [writeString((gameId + "_board"), board), writeString((gameId + "_status"), "waiting for players"), writeString((gameId + "_teamBlue"), toString(i.caller)), writeString((gameId + "_teamYellow"), "")]
245245 }
246246
247247
248248
249249 @Callable(i)
250250 func joinGame (gameId) = {
251251 let userAddress = toBase58String(i.caller.bytes)
252252 let teamBlue = getStringValue((gameId + "_teamBlue"))
253253 let teamYellow = getStringValue((gameId + "_teamYellow"))
254254 let teamBlueList = split(teamBlue, ",")
255255 let teamYellowList = if ((size(teamYellow) > 0))
256256 then split(teamYellow, ",")
257257 else nil
258258 if (if (checkTeammembers(teamBlueList, userAddress))
259259 then checkTeammembers(teamYellowList, userAddress)
260260 else false)
261261 then if ((maxPlayersPerTeam > size(teamBlueList)))
262262 then [writeString((gameId + "_teamBlue"), ((teamBlue + ",") + userAddress))]
263263 else if ((size(teamYellowList) == (maxPlayersPerTeam - 1)))
264264 then [writeString((gameId + "_status"), "round_1,turn_teamBlue"), writeString((gameId + "_voting_1"), ""), writeString((gameId + "_winner"), ""), writeInteger((gameId + "_mostVoted"), -1), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_teamYellow"), ((teamYellow + ",") + userAddress))]
265265 else if ((size(teamYellowList) == 0))
266266 then [writeString((gameId + "_teamYellow"), userAddress)]
267267 else if (((maxPlayersPerTeam - 1) > size(teamYellowList)))
268268 then [writeString((gameId + "_teamYellow"), ((teamYellow + ",") + userAddress))]
269269 else throw("Teams are full, cannot join.")
270270 else throw("Player already in a Team!")
271271 }
272272
273273
274274
275275 @Callable(i)
276276 func vote (gameId,voting) = {
277277 let status = valueOrErrorMessage(getStringValue((gameId + "_status")), "No status entry found under gameId!")
278278 let round = parseIntValue(drop(split(status, ",")[0], 6))
279279 let activeTeam = drop(split(status, ",")[1], 5)
280280 let storedHeight = valueOrErrorMessage(getInteger((gameId + "_storedHeight")), (("No status entry found under " + gameId) + "_storedHeight!"))
281281 let storedMostVoted = valueOrErrorMessage(getIntegerValue((gameId + "_mostVoted")), (("No status entry found under " + gameId) + "_mostVoted!"))
282282 let votingEntry = valueOrErrorMessage(getStringValue(((gameId + "_voting_") + toString(round))), "No votes found for this game id!")
283283 let votingEntryList = if ((size(votingEntry) > 0))
284284 then split(votingEntry, ",")
285285 else nil
286286 let members = if ((activeTeam == "teamBlue"))
287287 then {
288288 let teamB = getStringValue((gameId + "_teamBlue"))
289289 let teamBList = split(teamB, ",")
290290 teamBList
291291 }
292292 else {
293293 let teamY = getStringValue((gameId + "_teamYellow"))
294294 let teamYList = split(teamY, ",")
295295 teamYList
296296 }
297297 let unactiveTeam = if ((activeTeam == "teamBlue"))
298298 then "teamYellow"
299299 else "teamBlue"
300300 let membersUnactive = if ((unactiveTeam == "teamBlue"))
301301 then {
302302 let teamB = getStringValue((gameId + "_teamBlue"))
303303 let teamBList = split(teamB, ",")
304304 teamBList
305305 }
306306 else {
307307 let teamY = getStringValue((gameId + "_teamYellow"))
308308 let teamYList = split(teamY, ",")
309309 teamYList
310310 }
311311 let callerAddress = toBase58String(i.caller.bytes)
312312 if ((size(i.payments) > 0))
313313 then if ((fromBase58String(ctokenId) == i.payments[0].assetId))
314314 then if ((i.payments[0].amount == 100000000))
315315 then if ((storedHeight >= height))
316316 then if (containsElement(members, callerAddress))
317317 then {
318318 func foldVoters (accum,nextValue) = (accum :+ split(nextValue, "_")[0])
319319
320320 let voters = {
321321 let $l = votingEntryList
322322 let $s = size($l)
323323 let $acc0 = nil
324324 func $f0_1 ($a,$i) = if (($i >= $s))
325325 then $a
326326 else foldVoters($a, $l[$i])
327327
328328 func $f0_2 ($a,$i) = if (($i >= $s))
329329 then $a
330330 else throw("List size exceeds 5")
331331
332332 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
333333 }
334334 if ((containsElement(voters, callerAddress) == false))
335335 then {
336336 let newVote = ((callerAddress + "_") + toString(voting))
337337 let currentVotingEntryList = (votingEntryList :+ newVote)
338338 let currentVotingEntry = makeString(currentVotingEntryList, ",")
339339 let votedField = parseIntValue(updateVotingResults(currentVotingEntryList))
340340 let currentField = if ((votedField != storedMostVoted))
341341 then votedField
342342 else storedMostVoted
343343 let alteredBoard = alterBoard(currentField, storedMostVoted, gameId, activeTeam)
344344 let potentialWinner = invoke(addressFromStringValue(inspectorAddress), "checkForWin", [alteredBoard], nil)
345345 if ((potentialWinner == potentialWinner))
346346 then match potentialWinner {
347347 case t: String =>
348348 if ((maxPlayersPerTeam > size(currentVotingEntryList)))
349349 then [writeString(((gameId + "_voting_") + toString(round)), currentVotingEntry), writeString((gameId + "_board"), alteredBoard), writeString((gameId + "_winner"), t), writeInteger((gameId + "_mostVoted"), currentField)]
350350 else [writeString(((gameId + "_voting_") + toString(round)), currentVotingEntry), writeString((gameId + "_board"), alteredBoard), writeString((gameId + "_winner"), t), writeInteger((gameId + "_mostVoted"), -1), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_status"), ((("round_" + toString((round + 1))) + ",turn_") + unactiveTeam)), writeString(((gameId + "_voting_") + toString((round + 1))), "")]
351351 case _ =>
352352 throw("Invokation result type is not a String!")
353353 }
354354 else throw("Strict value is not equal to itself.")
355355 }
356356 else throw("Caller already voted!")
357357 }
358358 else throw((("Caller is not in " + activeTeam) + "!"))
359359 else if (containsElement(membersUnactive, callerAddress))
360360 then {
361361 let newVote = ((callerAddress + "_") + toString(voting))
362362 let currentVotingEntryList = [newVote]
363363 let votedField = parseIntValue(updateVotingResults(currentVotingEntryList))
364- let alteredBoard = alterBoard(votedField, -1, gameId, activeTeam)
364+ let alteredBoard = alterBoard(votedField, -1, gameId, unactiveTeam)
365365 [writeString((gameId + "_board"), alteredBoard), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_status"), ((("round_" + toString((round + 1))) + ",turn_") + unactiveTeam)), writeString(((gameId + "_voting_") + toString((round + 1))), newVote), writeInteger((gameId + "_mostVoted"), votedField)]
366366 }
367367 else throw((("Caller is not in " + unactiveTeam) + "!"))
368368 else throw("Amount has to be 1!")
369369 else throw("Payment has to be a Connect four Token!")
370370 else throw("No Payment attached!")
371371 }
372372
373373
374374
375375 @Callable(i)
376376 func updateStringEntry (key,stringValue) = if (isAdmin(i.caller.bytes))
377377 then [writeString(key, stringValue)]
378378 else throw("Address does not match with admin address!")
379379
380380
381381
382382 @Callable(i)
383383 func updateIntegerEntry (key,integerValue) = if (isAdmin(i.caller.bytes))
384384 then [writeInteger(key, integerValue)]
385385 else throw("Address does not match with admin address!")
386386
387387
388388
389389 @Callable(i)
390390 func deleteStorageEntry (key) = if (isAdmin(i.caller.bytes))
391391 then [DeleteEntry(key)]
392392 else throw("Address does not match with admin address!")
393393
394394
395395 @Verifier(tx)
396396 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
397397

github/deemru/w8io/026f985 
67.58 ms