tx · GGvfrA6NRCJKLMB7uEkTFa8V2dtpZehd8H2sd5c9s6vi

3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK:  -0.01000000 Waves

2022.01.16 16:13 [1881545] smart account 3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK > SELF 0.00000000 Waves

{ "type": 13, "id": "GGvfrA6NRCJKLMB7uEkTFa8V2dtpZehd8H2sd5c9s6vi", "fee": 1000000, "feeAssetId": null, "timestamp": 1642338861550, "version": 2, "chainId": 84, "sender": "3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK", "senderPublicKey": "3itc77jAZTQAcaPCyYEe4KD7h18CvqZZ2JRynZHsuJ61", "proofs": [ "5zjRhphVi7ZjU1M49MCmSmFwfdrqquvGamUC5WmgtxLqqJNNxefku6kEwiqutqkEfzbpnt3nTtC7CfW45PJmSvhw" ], "script": "base64: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JGYwXzIAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACCQEAAAAFJGYwXzEAAAACBQAAAAUkYWNjMAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAgAAAAAAAAAAAwAAAAAAAAAABAAAAAAAAAAABQAAAAAAAAAABgAAAAAAAAAABwAAAAAAAAAACAAAAAAAAAAACQAAAAAAAAAACgAAAAAAAAAACwAAAAAAAAAADAAAAAAAAAAADQAAAAAAAAAADgAAAAAAAAAADwAAAAAAAAAAEAAAAAAAAAAAEQAAAAAAAAAAEgAAAAAAAAAAEwAAAAAAAAAAFAAAAAAAAAAAFQAAAAAAAAAAFgAAAAAAAAAAFwAAAAAAAAAAGAAAAAAAAAAAGQAAAAAAAAAAGgAAAAAAAAAA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", "height": 1881545, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GRyM6FrBGLeEMmpwogHbvzV8fWBt6ZjJb5bnDZdTrHz8 Next: 57eUJuyYivTEXwEu1R6trhtJxxMRAAYmTHLicSwgoNts Diff:
OldNewDifferences
44 let adminAddress = valueOrElse(getString(this, "admin"), "")
55
66 let totalSupply = valueOrElse(getInteger(this, "totalSupply"), 0)
7+
8+let votingDuration = valueOrErrorMessage(getInteger(this, "votingDuration"), "No key votingDuration was found")
79
810 let ctokenId = valueOrErrorMessage(getString(this, "tokenId"), "No key dTokenId was found")
911
1820 func writeString (key,stringValue) = StringEntry(key, stringValue)
1921
2022
23+func countFrequency (helperList,votingList) = {
24+ func foldFrequency (accum,next) = {
25+ func countItems (acc,item) = if ((next == item))
26+ then (acc + 1)
27+ else acc
28+
29+ (accum :+ {
30+ let $l = votingList
31+ let $s = size($l)
32+ let $acc0 = 0
33+ func $f0_1 ($a,$i) = if (($i >= $s))
34+ then $a
35+ else countItems($a, $l[$i])
36+
37+ func $f0_2 ($a,$i) = if (($i >= $s))
38+ then $a
39+ else throw("List size exceeds 5")
40+
41+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
42+ })
43+ }
44+
45+ let $l = helperList
46+ let $s = size($l)
47+ let $acc0 = nil
48+ func $f0_1 ($a,$i) = if (($i >= $s))
49+ then $a
50+ else foldFrequency($a, $l[$i])
51+
52+ func $f0_2 ($a,$i) = if (($i >= $s))
53+ then $a
54+ else throw("List size exceeds 5")
55+
56+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
57+ }
58+
59+
60+func initVotingHelperList (voteArray) = {
61+ func foldHelperList (accum,next) = if ((containsElement(accum, next) == false))
62+ then (accum :+ next)
63+ else accum
64+
65+ let $l = voteArray
66+ let $s = size($l)
67+ let $acc0 = nil
68+ func $f0_1 ($a,$i) = if (($i >= $s))
69+ then $a
70+ else foldHelperList($a, $l[$i])
71+
72+ func $f0_2 ($a,$i) = if (($i >= $s))
73+ then $a
74+ else throw("List size exceeds 5")
75+
76+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
77+ }
78+
79+
80+func isGreaterThen (potential,itemList) = {
81+ let intPotential = parseIntValue(potential)
82+ let listLength = (size(itemList) - 1)
83+ let currentGreatest = itemList[listLength]
84+ if ((intPotential > currentGreatest))
85+ then true
86+ else false
87+ }
88+
89+
90+func findHighestVote (helperList,frequencies) = {
91+ func foldFrequencies (highestItemList,nextItem) = if ((size(highestItemList) == 0))
92+ then (highestItemList :+ parseIntValue(nextItem))
93+ else if (isGreaterThen(nextItem, highestItemList))
94+ then (highestItemList :+ parseIntValue(nextItem))
95+ else highestItemList
96+
97+ let highestVotes = {
98+ let $l = frequencies
99+ let $s = size($l)
100+ let $acc0 = nil
101+ func $f0_1 ($a,$i) = if (($i >= $s))
102+ then $a
103+ else foldFrequencies($a, $l[$i])
104+
105+ func $f0_2 ($a,$i) = if (($i >= $s))
106+ then $a
107+ else throw("List size exceeds 5")
108+
109+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
110+ }
111+ let lastIdx = (size(highestVotes) - 1)
112+ let highestVote = highestVotes[lastIdx]
113+ let helperIdx = indexOf(frequencies, toString(highestVote))
114+ match helperIdx {
115+ case t: Int =>
116+helperList[t]
117+ case _ =>
118+ throw("Type does not match!")
119+ }
120+ }
121+
122+
123+func alterBoard (field,gameId,team) = {
124+ let currentBoard = getStringValue((gameId + "_board"))
125+ let boardList = split(currentBoard, ",")
126+ let teamTag = if ((team == "teamBlue"))
127+ then "B"
128+ else "Y"
129+ func foldBoard (accum,nextValue) = {
130+ let $t045024525 = accum
131+ let result = $t045024525._1
132+ let j = $t045024525._2
133+ if ((j == parseIntValue(field)))
134+ then $Tuple2((result :+ teamTag), (j + 1))
135+ else $Tuple2((result :+ nextValue), (j + 1))
136+ }
137+
138+ let newBoardList = {
139+ let $l = boardList
140+ let $s = size($l)
141+ let $acc0 = $Tuple2(nil, 0)
142+ func $f0_1 ($a,$i) = if (($i >= $s))
143+ then $a
144+ else foldBoard($a, $l[$i])
145+
146+ func $f0_2 ($a,$i) = if (($i >= $s))
147+ then $a
148+ else throw("List size exceeds 42")
149+
150+ $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)
151+ }
152+ match newBoardList {
153+ case t: (List[String], Int) =>
154+ makeString(t._1, ",")
155+ case _ =>
156+ throw("Type does not match!")
157+ }
158+ }
159+
160+
161+func updateVotingResults (gameId,round,activeTeam,currentVotingEntryList) = {
162+ func foldVotings (accum,nextValue) = (accum :+ split(nextValue, "_")[1])
163+
164+ let votes = {
165+ let $l = currentVotingEntryList
166+ let $s = size($l)
167+ let $acc0 = nil
168+ func $f0_1 ($a,$i) = if (($i >= $s))
169+ then $a
170+ else foldVotings($a, $l[$i])
171+
172+ func $f0_2 ($a,$i) = if (($i >= $s))
173+ then $a
174+ else throw("List size exceeds 5")
175+
176+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
177+ }
178+ let helperList = initVotingHelperList(votes)
179+ let frequencies = countFrequency(helperList, votes)
180+ let votedField = findHighestVote(helperList, frequencies)
181+ alterBoard(votedField, gameId, activeTeam)
182+ }
183+
184+
21185 @Callable(i)
22186 func setup (adminAddress,tokenName,tokenDescription) = if (!(isDefined(getString(this, "admin"))))
23187 then {
24188 let asset = Issue(tokenName, tokenDescription, 0, 8, true)
25189 let tokenId = calculateAssetId(asset)
26-[asset, writeString("admin", adminAddress), writeInteger("totalSupply", 0), writeString("tokenName", tokenName), writeString("tokenId", toBase58String(tokenId)), writeInteger("tokenDecimals", 8)]
190+[asset, writeString("admin", adminAddress), writeInteger("votingDuration", 2), writeInteger("totalSupply", 0), writeString("tokenName", tokenName), writeString("tokenId", toBase58String(tokenId)), writeInteger("tokenDecimals", 8)]
27191 }
28192 else throw("Pool already setup!")
29193
35199 let amount = i.payments[0].amount
36200 if ((amount >= 1))
37201 then {
38- let cTokenAmount = fraction(amount, 21, 1)
202+ let cTokenAmount = fraction(amount, 42, 1)
39203 let currentTotalSupply = (totalSupply + cTokenAmount)
40204 [writeInteger("totalSupply", currentTotalSupply), Reissue(fromBase58String(ctokenId), cTokenAmount, true), ScriptTransfer(i.caller, cTokenAmount, fromBase58String(ctokenId))]
41205 }
42206 else throw("Payment is to small!")
43207 }
44208 else throw("No payment attached!")
209+
210+
211+
212+@Callable(i)
213+func createGame () = {
214+ 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"
215+ let gameId = toBase58String(i.transactionId)
216+[writeString((gameId + "_board"), board), writeString((gameId + "_status"), "waiting for players"), writeString((gameId + "_teamBlue"), toString(i.caller)), writeString((gameId + "_teamYellow"), "")]
217+ }
218+
219+
220+
221+@Callable(i)
222+func joinGame (gameId) = {
223+ let teamBlue = getStringValue((gameId + "_teamBlue"))
224+ let teamYellow = getStringValue((gameId + "_teamYellow"))
225+ let teamBlueList = split(teamBlue, ",")
226+ let teamYellowList = split(teamYellow, ",")
227+ if ((5 > size(teamBlueList)))
228+ then [writeString((gameId + "_teamBlue"), ((teamBlue + ",") + toBase58String(i.caller.bytes)))]
229+ else if ((size(teamYellowList) == 4))
230+ then [writeString((gameId + "_status"), "round_1,turn_teamBlue"), writeString((gameId + "_voting_1"), ""), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_teamYellow"), ((teamYellow + ",") + toBase58String(i.caller.bytes)))]
231+ else if ((4 > size(teamYellowList)))
232+ then [writeString((gameId + "_teamYellow"), ((teamYellow + ",") + toBase58String(i.caller.bytes)))]
233+ else throw("Teams are full, cannot join.")
234+ }
235+
236+
237+
238+@Callable(i)
239+func vote (gameId,voting) = {
240+ let status = valueOrErrorMessage(getStringValue((gameId + "_status")), "No status entry found under gameId!")
241+ let round = parseIntValue(drop(split(status, ",")[0], 6))
242+ let activeTeam = drop(split(status, ",")[1], 5)
243+ let storedHeight = valueOrErrorMessage(getInteger((gameId + "_storedHeight")), (("No status entry found under " + gameId) + "_storedHeight!"))
244+ let votingEntry = valueOrErrorMessage(getStringValue(((gameId + "_voting_") + toString(round))), "No votes found for this game id!")
245+ let votingEntryList = split(votingEntry, ",")
246+ let members = if ((activeTeam == "teamBlue"))
247+ then {
248+ let teamB = getStringValue((gameId + "_teamBlue"))
249+ let teamBList = split(teamB, ",")
250+ teamBList
251+ }
252+ else {
253+ let teamY = getStringValue((gameId + "_teamYellow"))
254+ let teamYList = split(teamY, ",")
255+ teamYList
256+ }
257+ let unactiveTeam = if ((activeTeam == "teamBlue"))
258+ then "teamYellow"
259+ else "teamBlue"
260+ let membersUnactive = if ((unactiveTeam == "teamBlue"))
261+ then {
262+ let teamB = getStringValue((gameId + "_teamBlue"))
263+ let teamBList = split(teamB, ",")
264+ teamBList
265+ }
266+ else {
267+ let teamY = getStringValue((gameId + "_teamYellow"))
268+ let teamYList = split(teamY, ",")
269+ teamYList
270+ }
271+ let callerAddress = toBase58String(i.caller.bytes)
272+ if ((storedHeight >= height))
273+ then if (containsElement(members, callerAddress))
274+ then {
275+ func foldVoters (accum,nextValue) = (accum :+ split(nextValue, "_")[0])
276+
277+ let voters = {
278+ let $l = votingEntryList
279+ let $s = size($l)
280+ let $acc0 = nil
281+ func $f0_1 ($a,$i) = if (($i >= $s))
282+ then $a
283+ else foldVoters($a, $l[$i])
284+
285+ func $f0_2 ($a,$i) = if (($i >= $s))
286+ then $a
287+ else throw("List size exceeds 5")
288+
289+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
290+ }
291+ if ((containsElement(voters, callerAddress) == false))
292+ then {
293+ let newVote = ((callerAddress + "_") + toString(voting))
294+ let currentVotingEntryList = (votingEntryList :+ newVote)
295+ let currentVotingEntry = makeString(currentVotingEntryList, ",")
296+ let alteredBoard = updateVotingResults(gameId, round, activeTeam, currentVotingEntryList)
297+ if ((5 > size(currentVotingEntryList)))
298+ then [writeString(((gameId + "_voting_") + toString(round)), currentVotingEntry)]
299+ else [writeString(((gameId + "_voting_") + toString(round)), currentVotingEntry), writeString((gameId + "_board"), alteredBoard), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_status"), ((("round_" + toString((round + 1))) + ",turn_") + unactiveTeam)), writeString(((gameId + "_voting_") + toString((round + 1))), "")]
300+ }
301+ else throw("Caller already voted!")
302+ }
303+ else throw((("Caller is not in " + activeTeam) + "!"))
304+ else if (containsElement(membersUnactive, callerAddress))
305+ then {
306+ let alteredBoard = updateVotingResults(gameId, round, activeTeam, votingEntryList)
307+ let newVote = ((callerAddress + "_") + toString(voting))
308+[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)]
309+ }
310+ else throw((("Caller is not in " + unactiveTeam) + "!"))
311+ }
45312
46313
47314
65332 else throw("Address does not match with admin address!")
66333
67334
335+@Verifier(tx)
336+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
337+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let adminAddress = valueOrElse(getString(this, "admin"), "")
55
66 let totalSupply = valueOrElse(getInteger(this, "totalSupply"), 0)
7+
8+let votingDuration = valueOrErrorMessage(getInteger(this, "votingDuration"), "No key votingDuration was found")
79
810 let ctokenId = valueOrErrorMessage(getString(this, "tokenId"), "No key dTokenId was found")
911
1012 func isAdmin (callerAddress) = if ((callerAddress == fromBase58String(adminAddress)))
1113 then true
1214 else false
1315
1416
1517 func writeInteger (key,integerValue) = IntegerEntry(key, integerValue)
1618
1719
1820 func writeString (key,stringValue) = StringEntry(key, stringValue)
1921
2022
23+func countFrequency (helperList,votingList) = {
24+ func foldFrequency (accum,next) = {
25+ func countItems (acc,item) = if ((next == item))
26+ then (acc + 1)
27+ else acc
28+
29+ (accum :+ {
30+ let $l = votingList
31+ let $s = size($l)
32+ let $acc0 = 0
33+ func $f0_1 ($a,$i) = if (($i >= $s))
34+ then $a
35+ else countItems($a, $l[$i])
36+
37+ func $f0_2 ($a,$i) = if (($i >= $s))
38+ then $a
39+ else throw("List size exceeds 5")
40+
41+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
42+ })
43+ }
44+
45+ let $l = helperList
46+ let $s = size($l)
47+ let $acc0 = nil
48+ func $f0_1 ($a,$i) = if (($i >= $s))
49+ then $a
50+ else foldFrequency($a, $l[$i])
51+
52+ func $f0_2 ($a,$i) = if (($i >= $s))
53+ then $a
54+ else throw("List size exceeds 5")
55+
56+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
57+ }
58+
59+
60+func initVotingHelperList (voteArray) = {
61+ func foldHelperList (accum,next) = if ((containsElement(accum, next) == false))
62+ then (accum :+ next)
63+ else accum
64+
65+ let $l = voteArray
66+ let $s = size($l)
67+ let $acc0 = nil
68+ func $f0_1 ($a,$i) = if (($i >= $s))
69+ then $a
70+ else foldHelperList($a, $l[$i])
71+
72+ func $f0_2 ($a,$i) = if (($i >= $s))
73+ then $a
74+ else throw("List size exceeds 5")
75+
76+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
77+ }
78+
79+
80+func isGreaterThen (potential,itemList) = {
81+ let intPotential = parseIntValue(potential)
82+ let listLength = (size(itemList) - 1)
83+ let currentGreatest = itemList[listLength]
84+ if ((intPotential > currentGreatest))
85+ then true
86+ else false
87+ }
88+
89+
90+func findHighestVote (helperList,frequencies) = {
91+ func foldFrequencies (highestItemList,nextItem) = if ((size(highestItemList) == 0))
92+ then (highestItemList :+ parseIntValue(nextItem))
93+ else if (isGreaterThen(nextItem, highestItemList))
94+ then (highestItemList :+ parseIntValue(nextItem))
95+ else highestItemList
96+
97+ let highestVotes = {
98+ let $l = frequencies
99+ let $s = size($l)
100+ let $acc0 = nil
101+ func $f0_1 ($a,$i) = if (($i >= $s))
102+ then $a
103+ else foldFrequencies($a, $l[$i])
104+
105+ func $f0_2 ($a,$i) = if (($i >= $s))
106+ then $a
107+ else throw("List size exceeds 5")
108+
109+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
110+ }
111+ let lastIdx = (size(highestVotes) - 1)
112+ let highestVote = highestVotes[lastIdx]
113+ let helperIdx = indexOf(frequencies, toString(highestVote))
114+ match helperIdx {
115+ case t: Int =>
116+helperList[t]
117+ case _ =>
118+ throw("Type does not match!")
119+ }
120+ }
121+
122+
123+func alterBoard (field,gameId,team) = {
124+ let currentBoard = getStringValue((gameId + "_board"))
125+ let boardList = split(currentBoard, ",")
126+ let teamTag = if ((team == "teamBlue"))
127+ then "B"
128+ else "Y"
129+ func foldBoard (accum,nextValue) = {
130+ let $t045024525 = accum
131+ let result = $t045024525._1
132+ let j = $t045024525._2
133+ if ((j == parseIntValue(field)))
134+ then $Tuple2((result :+ teamTag), (j + 1))
135+ else $Tuple2((result :+ nextValue), (j + 1))
136+ }
137+
138+ let newBoardList = {
139+ let $l = boardList
140+ let $s = size($l)
141+ let $acc0 = $Tuple2(nil, 0)
142+ func $f0_1 ($a,$i) = if (($i >= $s))
143+ then $a
144+ else foldBoard($a, $l[$i])
145+
146+ func $f0_2 ($a,$i) = if (($i >= $s))
147+ then $a
148+ else throw("List size exceeds 42")
149+
150+ $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)
151+ }
152+ match newBoardList {
153+ case t: (List[String], Int) =>
154+ makeString(t._1, ",")
155+ case _ =>
156+ throw("Type does not match!")
157+ }
158+ }
159+
160+
161+func updateVotingResults (gameId,round,activeTeam,currentVotingEntryList) = {
162+ func foldVotings (accum,nextValue) = (accum :+ split(nextValue, "_")[1])
163+
164+ let votes = {
165+ let $l = currentVotingEntryList
166+ let $s = size($l)
167+ let $acc0 = nil
168+ func $f0_1 ($a,$i) = if (($i >= $s))
169+ then $a
170+ else foldVotings($a, $l[$i])
171+
172+ func $f0_2 ($a,$i) = if (($i >= $s))
173+ then $a
174+ else throw("List size exceeds 5")
175+
176+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
177+ }
178+ let helperList = initVotingHelperList(votes)
179+ let frequencies = countFrequency(helperList, votes)
180+ let votedField = findHighestVote(helperList, frequencies)
181+ alterBoard(votedField, gameId, activeTeam)
182+ }
183+
184+
21185 @Callable(i)
22186 func setup (adminAddress,tokenName,tokenDescription) = if (!(isDefined(getString(this, "admin"))))
23187 then {
24188 let asset = Issue(tokenName, tokenDescription, 0, 8, true)
25189 let tokenId = calculateAssetId(asset)
26-[asset, writeString("admin", adminAddress), writeInteger("totalSupply", 0), writeString("tokenName", tokenName), writeString("tokenId", toBase58String(tokenId)), writeInteger("tokenDecimals", 8)]
190+[asset, writeString("admin", adminAddress), writeInteger("votingDuration", 2), writeInteger("totalSupply", 0), writeString("tokenName", tokenName), writeString("tokenId", toBase58String(tokenId)), writeInteger("tokenDecimals", 8)]
27191 }
28192 else throw("Pool already setup!")
29193
30194
31195
32196 @Callable(i)
33197 func buyRound () = if ((size(i.payments) > 0))
34198 then {
35199 let amount = i.payments[0].amount
36200 if ((amount >= 1))
37201 then {
38- let cTokenAmount = fraction(amount, 21, 1)
202+ let cTokenAmount = fraction(amount, 42, 1)
39203 let currentTotalSupply = (totalSupply + cTokenAmount)
40204 [writeInteger("totalSupply", currentTotalSupply), Reissue(fromBase58String(ctokenId), cTokenAmount, true), ScriptTransfer(i.caller, cTokenAmount, fromBase58String(ctokenId))]
41205 }
42206 else throw("Payment is to small!")
43207 }
44208 else throw("No payment attached!")
209+
210+
211+
212+@Callable(i)
213+func createGame () = {
214+ 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"
215+ let gameId = toBase58String(i.transactionId)
216+[writeString((gameId + "_board"), board), writeString((gameId + "_status"), "waiting for players"), writeString((gameId + "_teamBlue"), toString(i.caller)), writeString((gameId + "_teamYellow"), "")]
217+ }
218+
219+
220+
221+@Callable(i)
222+func joinGame (gameId) = {
223+ let teamBlue = getStringValue((gameId + "_teamBlue"))
224+ let teamYellow = getStringValue((gameId + "_teamYellow"))
225+ let teamBlueList = split(teamBlue, ",")
226+ let teamYellowList = split(teamYellow, ",")
227+ if ((5 > size(teamBlueList)))
228+ then [writeString((gameId + "_teamBlue"), ((teamBlue + ",") + toBase58String(i.caller.bytes)))]
229+ else if ((size(teamYellowList) == 4))
230+ then [writeString((gameId + "_status"), "round_1,turn_teamBlue"), writeString((gameId + "_voting_1"), ""), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_teamYellow"), ((teamYellow + ",") + toBase58String(i.caller.bytes)))]
231+ else if ((4 > size(teamYellowList)))
232+ then [writeString((gameId + "_teamYellow"), ((teamYellow + ",") + toBase58String(i.caller.bytes)))]
233+ else throw("Teams are full, cannot join.")
234+ }
235+
236+
237+
238+@Callable(i)
239+func vote (gameId,voting) = {
240+ let status = valueOrErrorMessage(getStringValue((gameId + "_status")), "No status entry found under gameId!")
241+ let round = parseIntValue(drop(split(status, ",")[0], 6))
242+ let activeTeam = drop(split(status, ",")[1], 5)
243+ let storedHeight = valueOrErrorMessage(getInteger((gameId + "_storedHeight")), (("No status entry found under " + gameId) + "_storedHeight!"))
244+ let votingEntry = valueOrErrorMessage(getStringValue(((gameId + "_voting_") + toString(round))), "No votes found for this game id!")
245+ let votingEntryList = split(votingEntry, ",")
246+ let members = if ((activeTeam == "teamBlue"))
247+ then {
248+ let teamB = getStringValue((gameId + "_teamBlue"))
249+ let teamBList = split(teamB, ",")
250+ teamBList
251+ }
252+ else {
253+ let teamY = getStringValue((gameId + "_teamYellow"))
254+ let teamYList = split(teamY, ",")
255+ teamYList
256+ }
257+ let unactiveTeam = if ((activeTeam == "teamBlue"))
258+ then "teamYellow"
259+ else "teamBlue"
260+ let membersUnactive = if ((unactiveTeam == "teamBlue"))
261+ then {
262+ let teamB = getStringValue((gameId + "_teamBlue"))
263+ let teamBList = split(teamB, ",")
264+ teamBList
265+ }
266+ else {
267+ let teamY = getStringValue((gameId + "_teamYellow"))
268+ let teamYList = split(teamY, ",")
269+ teamYList
270+ }
271+ let callerAddress = toBase58String(i.caller.bytes)
272+ if ((storedHeight >= height))
273+ then if (containsElement(members, callerAddress))
274+ then {
275+ func foldVoters (accum,nextValue) = (accum :+ split(nextValue, "_")[0])
276+
277+ let voters = {
278+ let $l = votingEntryList
279+ let $s = size($l)
280+ let $acc0 = nil
281+ func $f0_1 ($a,$i) = if (($i >= $s))
282+ then $a
283+ else foldVoters($a, $l[$i])
284+
285+ func $f0_2 ($a,$i) = if (($i >= $s))
286+ then $a
287+ else throw("List size exceeds 5")
288+
289+ $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
290+ }
291+ if ((containsElement(voters, callerAddress) == false))
292+ then {
293+ let newVote = ((callerAddress + "_") + toString(voting))
294+ let currentVotingEntryList = (votingEntryList :+ newVote)
295+ let currentVotingEntry = makeString(currentVotingEntryList, ",")
296+ let alteredBoard = updateVotingResults(gameId, round, activeTeam, currentVotingEntryList)
297+ if ((5 > size(currentVotingEntryList)))
298+ then [writeString(((gameId + "_voting_") + toString(round)), currentVotingEntry)]
299+ else [writeString(((gameId + "_voting_") + toString(round)), currentVotingEntry), writeString((gameId + "_board"), alteredBoard), writeInteger((gameId + "_storedHeight"), (height + votingDuration)), writeString((gameId + "_status"), ((("round_" + toString((round + 1))) + ",turn_") + unactiveTeam)), writeString(((gameId + "_voting_") + toString((round + 1))), "")]
300+ }
301+ else throw("Caller already voted!")
302+ }
303+ else throw((("Caller is not in " + activeTeam) + "!"))
304+ else if (containsElement(membersUnactive, callerAddress))
305+ then {
306+ let alteredBoard = updateVotingResults(gameId, round, activeTeam, votingEntryList)
307+ let newVote = ((callerAddress + "_") + toString(voting))
308+[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)]
309+ }
310+ else throw((("Caller is not in " + unactiveTeam) + "!"))
311+ }
45312
46313
47314
48315 @Callable(i)
49316 func updateStringEntry (key,stringValue) = if (isAdmin(i.caller.bytes))
50317 then [writeString(key, stringValue)]
51318 else throw("Address does not match with admin address!")
52319
53320
54321
55322 @Callable(i)
56323 func updateIntegerEntry (key,integerValue) = if (isAdmin(i.caller.bytes))
57324 then [writeInteger(key, integerValue)]
58325 else throw("Address does not match with admin address!")
59326
60327
61328
62329 @Callable(i)
63330 func deleteStorageEntry (key) = if (isAdmin(i.caller.bytes))
64331 then [DeleteEntry(key)]
65332 else throw("Address does not match with admin address!")
66333
67334
335+@Verifier(tx)
336+func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
337+

github/deemru/w8io/169f3d6 
51.80 ms