tx · gxWzKTyYXqGujZb3SfDCjJfMytZNBe7oLm9DJGtSuTk

3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK:  -0.05000000 Waves

2022.01.16 22:20 [1881921] smart account 3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK > SELF 0.00000000 Waves

{ "type": 13, "id": "gxWzKTyYXqGujZb3SfDCjJfMytZNBe7oLm9DJGtSuTk", "fee": 5000000, "feeAssetId": null, "timestamp": 1642360883250, "version": 2, "chainId": 84, "sender": "3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK", "senderPublicKey": "3itc77jAZTQAcaPCyYEe4KD7h18CvqZZ2JRynZHsuJ61", "proofs": [ "3TAdqATyw2nyX2evyayuBtmrVtstRKhEhEi8MLLPWdrnGfSc14vJ8FsRkGpp1cw2jDHbThKNtkHwNhLeUPc6JT18" ], "script": "base64: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AAAFAwkAAAAAAAACCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAGdm90ZXJzBQAAAA1jYWxsZXJBZGRyZXNzBwQAAAAHbmV3Vm90ZQkAASwAAAACCQABLAAAAAIFAAAADWNhbGxlckFkZHJlc3MCAAAAAV8JAAGkAAAAAQUAAAAGdm90aW5nBAAAABZjdXJyZW50Vm90aW5nRW50cnlMaXN0CQAETQAAAAIFAAAAD3ZvdGluZ0VudHJ5TGlzdAUAAAAHbmV3Vm90ZQQAAAASY3VycmVudFZvdGluZ0VudHJ5CQAEuQAAAAIFAAAAFmN1cnJlbnRWb3RpbmdFbnRyeUxpc3QCAAAAASwEAAAACnZvdGVkRmllbGQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkBAAAAE3VwZGF0ZVZvdGluZ1Jlc3VsdHMAAAABBQAAABZjdXJyZW50Vm90aW5nRW50cnlMaXN0BAAAAAxjdXJyZW50RmllbGQDCQEAAAACIT0AAAACBQAAAAp2b3RlZEZpZWxkBQAAAA9zdG9yZWRNb3N0Vm90ZWQFAAAACnZvdGVkRmllbGQFAAAAD3N0b3JlZE1vc3RWb3RlZAQAAAAMYWx0ZXJlZEJvYXJkCQEAAAAKYWx0ZXJCb2FyZAAAAAQFAAAADGN1cnJlbnRGaWVsZAUAAAAPc3RvcmVkTW9zdFZvdGVkBQAAAAZnYW1lSWQFAAAACmFjdGl2ZVRlYW0DCQAAZgAAAAIAAAAAAAAAAAUJAAGQAAAAAQUAAAAWY3VycmVudFZvdGluZ0VudHJ5TGlzdAkABEwAAAACCQEAAAALd3JpdGVTdHJpbmcAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAhfdm90aW5nXwkAAaQAAAABBQAAAAVyb3VuZAUAAAASY3VycmVudFZvdGluZ0VudHJ5CQAETAAAAAIJAQAAAAt3cml0ZVN0cmluZwAAAAIJAAEsAAAAAgUAAAAGZ2FtZUlkAgAAAAZfYm9hcmQFAAAADGFsdGVyZWRCb2FyZAkABEwAAAACCQEAAAAMd3JpdGVJbnRlZ2VyAAAAAgkAASwAAAACBQAAAAZnYW1lSWQCAAAACl9tb3N0Vm90ZWQFAAAADGN1cnJlbnRGaWVsZAUAAAADbmlsCQAETAAAAAIJ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", "height": 1881921, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FhsJ9AhqRBzqV1M5BSgTV8uUqDLYVzq8fDaMaA7nRKv4 Next: FAZA1F2ZLBNPs4VXBgxrsBN9jSUKkfxfzRErmy3ycfud Diff:
OldNewDifferences
123123 func U (V) = makeString(V, ",")
124124
125125
126-func W (X,Y,Z) = {
127- let aa = getStringValue((Y + "_board"))
128- let ab = split(aa, ",")
129- let ac = if ((Z == "teamBlue"))
126+func W (X,Y,Z,aa) = {
127+ let ab = getStringValue((Z + "_board"))
128+ let ac = split(ab, ",")
129+ let ad = if ((aa == "teamBlue"))
130130 then "B"
131131 else "Y"
132- func ad (p,ae) = {
133- let af = p
134- let ag = af._1
135- let ah = af._2
136- if ((ah == X))
137- then $Tuple2((ag :+ ac), (ah + 1))
138- else $Tuple2((ag :+ ae), (ah + 1))
132+ func ae (p,af) = {
133+ let ag = p
134+ let ah = ag._1
135+ let ai = ag._2
136+ if ((ai == Y))
137+ then $Tuple2((ah :+ "0"), (ai + 1))
138+ else $Tuple2((ah :+ af), (ai + 1))
139139 }
140140
141- let ai = {
142- let u = ab
141+ func aj (p,af) = {
142+ let ak = p
143+ let ah = ak._1
144+ let ai = ak._2
145+ if ((ai == X))
146+ then $Tuple2((ah :+ ad), (ai + 1))
147+ else $Tuple2((ah :+ af), (ai + 1))
148+ }
149+
150+ let al = {
151+ let u = ac
143152 let v = size(u)
144153 let w = $Tuple2(nil, 0)
145154 func x (y,z) = if ((z >= v))
146155 then y
147- else ad(y, u[z])
156+ else ae(y, u[z])
148157
149158 func A (y,z) = if ((z >= v))
150159 then y
152161
153162 A(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(w, 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)
154163 }
155- U(ai._1)
164+ let am = {
165+ let u = al._1
166+ let v = size(u)
167+ let w = $Tuple2(nil, 0)
168+ func an (y,z) = if ((z >= v))
169+ then y
170+ else aj(y, u[z])
171+
172+ func ao (y,z) = if ((z >= v))
173+ then y
174+ else throw("List size exceeds 42")
175+
176+ ao(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(w, 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)
177+ }
178+ U(am._1)
156179 }
157180
158181
159-func aj (Y,ak,al,am) = {
160- func an (p,ae) = (p :+ split(ae, "_")[1])
182+func ap (aq) = {
183+ func ar (p,af) = (p :+ split(af, "_")[1])
161184
162- let ao = {
163- let u = am
185+ let as = {
186+ let u = aq
164187 let v = size(u)
165188 let w = nil
166189 func x (y,z) = if ((z >= v))
167190 then y
168- else an(y, u[z])
191+ else ar(y, u[z])
169192
170193 func A (y,z) = if ((z >= v))
171194 then y
173196
174197 A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
175198 }
176- let m = B(ao)
177- let K = l(m, ao)
178- let ap = J(m, K)
179- W(parseIntValue(ap), Y, al)
199+ let m = B(as)
200+ let K = l(m, as)
201+ J(m, K)
180202 }
181203
182204
183-@Callable(aq)
184-func setup (a,ar,as) = if (!(isDefined(getString(this, "admin"))))
205+@Callable(at)
206+func setup (a,au,av) = if (!(isDefined(getString(this, "admin"))))
185207 then {
186- let at = Issue(ar, as, 0, 8, true)
187- let au = calculateAssetId(at)
188-[at, j("admin", a), g("votingDuration", 2), g("totalSupply", 0), j("tokenName", ar), j("tokenId", toBase58String(au)), g("tokenDecimals", 8)]
208+ let aw = Issue(au, av, 0, 8, true)
209+ let ax = calculateAssetId(aw)
210+[aw, j("admin", a), g("votingDuration", 2), g("totalSupply", 0), j("tokenName", au), j("tokenId", toBase58String(ax)), g("tokenDecimals", 8)]
189211 }
190212 else throw("Pool already setup!")
191213
192214
193215
194-@Callable(aq)
195-func buyRound () = if ((size(aq.payments) > 0))
216+@Callable(at)
217+func buyRound () = if ((size(at.payments) > 0))
196218 then {
197- let av = aq.payments[0].amount
198- if ((av >= 1))
219+ let ay = at.payments[0].amount
220+ if ((ay >= 1))
199221 then {
200- let aw = fraction(av, 42, 1)
201- let ax = (b + aw)
202-[g("totalSupply", ax), Reissue(fromBase58String(d), aw, true), ScriptTransfer(aq.caller, aw, fromBase58String(d))]
222+ let az = fraction(ay, 42, 1)
223+ let aA = (b + az)
224+[g("totalSupply", aA), Reissue(fromBase58String(d), az, true), ScriptTransfer(at.caller, az, fromBase58String(d))]
203225 }
204226 else throw("Payment is to small!")
205227 }
207229
208230
209231
210-@Callable(aq)
232+@Callable(at)
211233 func createGame () = {
212234 let V = "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"
213- let Y = toBase58String(aq.transactionId)
214-[j((Y + "_board"), V), j((Y + "_status"), "waiting for players"), j((Y + "_teamBlue"), toString(aq.caller)), j((Y + "_teamYellow"), "")]
235+ let Z = toBase58String(at.transactionId)
236+[j((Z + "_board"), V), j((Z + "_status"), "waiting for players"), j((Z + "_teamBlue"), toString(at.caller)), j((Z + "_teamYellow"), "")]
215237 }
216238
217239
218240
219-@Callable(aq)
220-func joinGame (Y) = {
221- let ay = getStringValue((Y + "_teamBlue"))
222- let az = getStringValue((Y + "_teamYellow"))
223- let aA = split(ay, ",")
224- let aB = split(az, ",")
225- if ((5 > size(aA)))
226- then [j((Y + "_teamBlue"), ((ay + ",") + toBase58String(aq.caller.bytes)))]
227- else if ((size(aB) == 4))
228- then [j((Y + "_status"), "round_1,turn_teamBlue"), j((Y + "_voting_1"), ""), g((Y + "_storedHeight"), (height + c)), j((Y + "_teamYellow"), ((az + ",") + toBase58String(aq.caller.bytes)))]
229- else if ((size(aB) == 0))
230- then [j((Y + "_teamYellow"), toBase58String(aq.caller.bytes))]
231- else if ((4 > size(aB)))
232- then [j((Y + "_teamYellow"), ((az + ",") + toBase58String(aq.caller.bytes)))]
241+@Callable(at)
242+func joinGame (Z) = {
243+ let aB = getStringValue((Z + "_teamBlue"))
244+ let aC = getStringValue((Z + "_teamYellow"))
245+ let aD = split(aB, ",")
246+ let aE = split(aC, ",")
247+ if ((5 > size(aD)))
248+ then [j((Z + "_teamBlue"), ((aB + ",") + toBase58String(at.caller.bytes)))]
249+ else if ((size(aE) == 4))
250+ then [j((Z + "_status"), "round_1,turn_teamBlue"), j((Z + "_voting_1"), ""), g((Z + "_mostVoted"), -1), g((Z + "_storedHeight"), (height + c)), j((Z + "_teamYellow"), ((aC + ",") + toBase58String(at.caller.bytes)))]
251+ else if ((size(aE) == 0))
252+ then [j((Z + "_teamYellow"), toBase58String(at.caller.bytes))]
253+ else if ((4 > size(aE)))
254+ then [j((Z + "_teamYellow"), ((aC + ",") + toBase58String(at.caller.bytes)))]
233255 else throw("Teams are full, cannot join.")
234256 }
235257
236258
237259
238-@Callable(aq)
239-func vote (Y,aC) = {
240- let aD = valueOrErrorMessage(getStringValue((Y + "_status")), "No status entry found under gameId!")
241- let ak = parseIntValue(drop(split(aD, ",")[0], 6))
242- let al = drop(split(aD, ",")[1], 5)
243- let aE = valueOrErrorMessage(getInteger((Y + "_storedHeight")), (("No status entry found under " + Y) + "_storedHeight!"))
244- let aF = valueOrErrorMessage(getStringValue(((Y + "_voting_") + toString(ak))), "No votes found for this game id!")
245- let aG = if ((size(aF) > 0))
246- then split(aF, ",")
260+@Callable(at)
261+func vote (Z,aF) = {
262+ let aG = valueOrErrorMessage(getStringValue((Z + "_status")), "No status entry found under gameId!")
263+ let aH = parseIntValue(drop(split(aG, ",")[0], 6))
264+ let aI = drop(split(aG, ",")[1], 5)
265+ let aJ = valueOrErrorMessage(getInteger((Z + "_storedHeight")), (("No status entry found under " + Z) + "_storedHeight!"))
266+ let aK = valueOrErrorMessage(getIntegerValue((Z + "_mostVoted")), (("No status entry found under " + Z) + "_mostVoted!"))
267+ let aL = valueOrErrorMessage(getStringValue(((Z + "_voting_") + toString(aH))), "No votes found for this game id!")
268+ let aM = if ((size(aL) > 0))
269+ then split(aL, ",")
247270 else nil
248- let aH = if ((al == "teamBlue"))
271+ let aN = if ((aI == "teamBlue"))
249272 then {
250- let aI = getStringValue((Y + "_teamBlue"))
251- let aJ = split(aI, ",")
252- aJ
273+ let aO = getStringValue((Z + "_teamBlue"))
274+ let aP = split(aO, ",")
275+ aP
253276 }
254277 else {
255- let aK = getStringValue((Y + "_teamYellow"))
256- let aL = split(aK, ",")
257- aL
278+ let aQ = getStringValue((Z + "_teamYellow"))
279+ let aR = split(aQ, ",")
280+ aR
258281 }
259- let aM = if ((al == "teamBlue"))
282+ let aS = if ((aI == "teamBlue"))
260283 then "teamYellow"
261284 else "teamBlue"
262- let aN = if ((aM == "teamBlue"))
285+ let aT = if ((aS == "teamBlue"))
263286 then {
264- let aI = getStringValue((Y + "_teamBlue"))
265- let aJ = split(aI, ",")
266- aJ
287+ let aO = getStringValue((Z + "_teamBlue"))
288+ let aP = split(aO, ",")
289+ aP
267290 }
268291 else {
269- let aK = getStringValue((Y + "_teamYellow"))
270- let aL = split(aK, ",")
271- aL
292+ let aQ = getStringValue((Z + "_teamYellow"))
293+ let aR = split(aQ, ",")
294+ aR
272295 }
273- let f = toBase58String(aq.caller.bytes)
274- if ((aE >= height))
275- then if (containsElement(aH, f))
276- then {
277- func aO (p,ae) = (p :+ split(ae, "_")[0])
296+ let f = toBase58String(at.caller.bytes)
297+ if ((size(at.payments) > 0))
298+ then if ((fromBase58String(d) == at.payments[0].assetId))
299+ then if ((at.payments[0].amount == 1))
300+ then if ((aJ >= height))
301+ then if (containsElement(aN, f))
302+ then {
303+ func aU (p,af) = (p :+ split(af, "_")[0])
278304
279- let aP = {
280- let u = aG
281- let v = size(u)
282- let w = nil
283- func x (y,z) = if ((z >= v))
284- then y
285- else aO(y, u[z])
305+ let aV = {
306+ let u = aM
307+ let v = size(u)
308+ let w = nil
309+ func x (y,z) = if ((z >= v))
310+ then y
311+ else aU(y, u[z])
286312
287- func A (y,z) = if ((z >= v))
288- then y
289- else throw("List size exceeds 5")
313+ func A (y,z) = if ((z >= v))
314+ then y
315+ else throw("List size exceeds 5")
290316
291- A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
292- }
293- if ((containsElement(aP, f) == false))
294- then {
295- let aQ = ((f + "_") + toString(aC))
296- let am = (aG :+ aQ)
297- let aR = makeString(am, ",")
298- let aS = aj(Y, ak, al, am)
299- if ((5 > size(am)))
300- then [j(((Y + "_voting_") + toString(ak)), aR)]
301- else [j(((Y + "_voting_") + toString(ak)), aR), j((Y + "_board"), aS), g((Y + "_storedHeight"), (height + c)), j((Y + "_status"), ((("round_" + toString((ak + 1))) + ",turn_") + aM)), j(((Y + "_voting_") + toString((ak + 1))), "")]
302- }
303- else throw("Caller already voted!")
304- }
305- else throw((("Caller is not in " + al) + "!"))
306- else if (containsElement(aN, f))
307- then if ((size(aG) > 0))
308- then {
309- let aS = aj(Y, ak, al, aG)
310- let aQ = ((f + "_") + toString(aC))
311-[j((Y + "_board"), aS), g((Y + "_storedHeight"), (height + c)), j((Y + "_status"), ((("round_" + toString((ak + 1))) + ",turn_") + aM)), j(((Y + "_voting_") + toString((ak + 1))), aQ)]
312- }
313- else {
314- let aQ = ((f + "_") + toString(aC))
315-[g((Y + "_storedHeight"), (height + c)), j((Y + "_status"), ((("round_" + toString((ak + 1))) + ",turn_") + aM)), j(((Y + "_voting_") + toString((ak + 1))), aQ)]
316- }
317- else throw((("Caller is not in " + aM) + "!"))
317+ A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
318+ }
319+ if ((containsElement(aV, f) == false))
320+ then {
321+ let aW = ((f + "_") + toString(aF))
322+ let aq = (aM :+ aW)
323+ let aX = makeString(aq, ",")
324+ let aY = parseIntValue(ap(aq))
325+ let aZ = if ((aY != aK))
326+ then aY
327+ else aK
328+ let ba = W(aZ, aK, Z, aI)
329+ if ((5 > size(aq)))
330+ then [j(((Z + "_voting_") + toString(aH)), aX), j((Z + "_board"), ba), g((Z + "_mostVoted"), aZ)]
331+ else [j(((Z + "_voting_") + toString(aH)), aX), j((Z + "_board"), ba), g((Z + "_mostVoted"), -1), g((Z + "_storedHeight"), (height + c)), j((Z + "_status"), ((("round_" + toString((aH + 1))) + ",turn_") + aS)), j(((Z + "_voting_") + toString((aH + 1))), "")]
332+ }
333+ else throw("Caller already voted!")
334+ }
335+ else throw((("Caller is not in " + aI) + "!"))
336+ else if (containsElement(aT, f))
337+ then {
338+ let aW = ((f + "_") + toString(aF))
339+ let aq = [aW]
340+ let aY = parseIntValue(ap(aq))
341+ let ba = W(aY, -1, Z, aI)
342+[j((Z + "_board"), ba), g((Z + "_storedHeight"), (height + c)), j((Z + "_status"), ((("round_" + toString((aH + 1))) + ",turn_") + aS)), j(((Z + "_voting_") + toString((aH + 1))), aW), g((Z + "_mostVoted"), aY)]
343+ }
344+ else throw((("Caller is not in " + aS) + "!"))
345+ else throw("Amount has to be 1!")
346+ else throw("Payment has to be a Connect four Token!")
347+ else throw("No Payment attached!")
318348 }
319349
320350
321351
322-@Callable(aq)
323-func updateStringEntry (h,k) = if (e(aq.caller.bytes))
352+@Callable(at)
353+func updateStringEntry (h,k) = if (e(at.caller.bytes))
324354 then [j(h, k)]
325355 else throw("Address does not match with admin address!")
326356
327357
328358
329-@Callable(aq)
330-func updateIntegerEntry (h,i) = if (e(aq.caller.bytes))
359+@Callable(at)
360+func updateIntegerEntry (h,i) = if (e(at.caller.bytes))
331361 then [g(h, i)]
332362 else throw("Address does not match with admin address!")
333363
334364
335365
336-@Callable(aq)
337-func deleteStorageEntry (h) = if (e(aq.caller.bytes))
366+@Callable(at)
367+func deleteStorageEntry (h) = if (e(at.caller.bytes))
338368 then [DeleteEntry(h)]
339369 else throw("Address does not match with admin address!")
340370
341371
342-@Verifier(aT)
343-func aU () = sigVerify(aT.bodyBytes, aT.proofs[0], aT.senderPublicKey)
372+@Verifier(bb)
373+func bc () = sigVerify(bb.bodyBytes, bb.proofs[0], bb.senderPublicKey)
344374
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = valueOrElse(getString(this, "admin"), "")
55
66 let b = valueOrElse(getInteger(this, "totalSupply"), 0)
77
88 let c = valueOrErrorMessage(getInteger(this, "votingDuration"), "No key votingDuration was found")
99
1010 let d = valueOrErrorMessage(getString(this, "tokenId"), "No key dTokenId was found")
1111
1212 func e (f) = if ((f == fromBase58String(a)))
1313 then true
1414 else false
1515
1616
1717 func g (h,i) = IntegerEntry(h, i)
1818
1919
2020 func j (h,k) = StringEntry(h, k)
2121
2222
2323 func l (m,n) = {
2424 func o (p,q) = {
2525 func r (s,t) = if ((q == t))
2626 then (s + 1)
2727 else s
2828
2929 (p :+ {
3030 let u = n
3131 let v = size(u)
3232 let w = 0
3333 func x (y,z) = if ((z >= v))
3434 then y
3535 else r(y, u[z])
3636
3737 func A (y,z) = if ((z >= v))
3838 then y
3939 else throw("List size exceeds 5")
4040
4141 A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
4242 })
4343 }
4444
4545 let u = m
4646 let v = size(u)
4747 let w = nil
4848 func x (y,z) = if ((z >= v))
4949 then y
5050 else o(y, u[z])
5151
5252 func A (y,z) = if ((z >= v))
5353 then y
5454 else throw("List size exceeds 5")
5555
5656 A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
5757 }
5858
5959
6060 func B (C) = {
6161 func D (p,q) = if ((containsElement(p, q) == false))
6262 then (p :+ q)
6363 else p
6464
6565 let u = C
6666 let v = size(u)
6767 let w = nil
6868 func x (y,z) = if ((z >= v))
6969 then y
7070 else D(y, u[z])
7171
7272 func A (y,z) = if ((z >= v))
7373 then y
7474 else throw("List size exceeds 5")
7575
7676 A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
7777 }
7878
7979
8080 func E (F,G) = {
8181 let H = (size(G) - 1)
8282 let I = G[H]
8383 if ((F > I))
8484 then true
8585 else false
8686 }
8787
8888
8989 func J (m,K) = {
9090 func L (M,N) = if ((size(M) == 0))
9191 then (M :+ N)
9292 else if (E(N, M))
9393 then (M :+ N)
9494 else M
9595
9696 let O = {
9797 let u = K
9898 let v = size(u)
9999 let w = nil
100100 func x (y,z) = if ((z >= v))
101101 then y
102102 else L(y, u[z])
103103
104104 func A (y,z) = if ((z >= v))
105105 then y
106106 else throw("List size exceeds 5")
107107
108108 A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
109109 }
110110 let P = (size(O) - 1)
111111 let Q = O[P]
112112 let R = indexOf(K, Q)
113113 let S = R
114114 if ($isInstanceOf(S, "Int"))
115115 then {
116116 let T = S
117117 m[T]
118118 }
119119 else throw("Type does not match! Function: findHighestVote")
120120 }
121121
122122
123123 func U (V) = makeString(V, ",")
124124
125125
126-func W (X,Y,Z) = {
127- let aa = getStringValue((Y + "_board"))
128- let ab = split(aa, ",")
129- let ac = if ((Z == "teamBlue"))
126+func W (X,Y,Z,aa) = {
127+ let ab = getStringValue((Z + "_board"))
128+ let ac = split(ab, ",")
129+ let ad = if ((aa == "teamBlue"))
130130 then "B"
131131 else "Y"
132- func ad (p,ae) = {
133- let af = p
134- let ag = af._1
135- let ah = af._2
136- if ((ah == X))
137- then $Tuple2((ag :+ ac), (ah + 1))
138- else $Tuple2((ag :+ ae), (ah + 1))
132+ func ae (p,af) = {
133+ let ag = p
134+ let ah = ag._1
135+ let ai = ag._2
136+ if ((ai == Y))
137+ then $Tuple2((ah :+ "0"), (ai + 1))
138+ else $Tuple2((ah :+ af), (ai + 1))
139139 }
140140
141- let ai = {
142- let u = ab
141+ func aj (p,af) = {
142+ let ak = p
143+ let ah = ak._1
144+ let ai = ak._2
145+ if ((ai == X))
146+ then $Tuple2((ah :+ ad), (ai + 1))
147+ else $Tuple2((ah :+ af), (ai + 1))
148+ }
149+
150+ let al = {
151+ let u = ac
143152 let v = size(u)
144153 let w = $Tuple2(nil, 0)
145154 func x (y,z) = if ((z >= v))
146155 then y
147- else ad(y, u[z])
156+ else ae(y, u[z])
148157
149158 func A (y,z) = if ((z >= v))
150159 then y
151160 else throw("List size exceeds 42")
152161
153162 A(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(w, 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)
154163 }
155- U(ai._1)
164+ let am = {
165+ let u = al._1
166+ let v = size(u)
167+ let w = $Tuple2(nil, 0)
168+ func an (y,z) = if ((z >= v))
169+ then y
170+ else aj(y, u[z])
171+
172+ func ao (y,z) = if ((z >= v))
173+ then y
174+ else throw("List size exceeds 42")
175+
176+ ao(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(an(w, 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)
177+ }
178+ U(am._1)
156179 }
157180
158181
159-func aj (Y,ak,al,am) = {
160- func an (p,ae) = (p :+ split(ae, "_")[1])
182+func ap (aq) = {
183+ func ar (p,af) = (p :+ split(af, "_")[1])
161184
162- let ao = {
163- let u = am
185+ let as = {
186+ let u = aq
164187 let v = size(u)
165188 let w = nil
166189 func x (y,z) = if ((z >= v))
167190 then y
168- else an(y, u[z])
191+ else ar(y, u[z])
169192
170193 func A (y,z) = if ((z >= v))
171194 then y
172195 else throw("List size exceeds 5")
173196
174197 A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
175198 }
176- let m = B(ao)
177- let K = l(m, ao)
178- let ap = J(m, K)
179- W(parseIntValue(ap), Y, al)
199+ let m = B(as)
200+ let K = l(m, as)
201+ J(m, K)
180202 }
181203
182204
183-@Callable(aq)
184-func setup (a,ar,as) = if (!(isDefined(getString(this, "admin"))))
205+@Callable(at)
206+func setup (a,au,av) = if (!(isDefined(getString(this, "admin"))))
185207 then {
186- let at = Issue(ar, as, 0, 8, true)
187- let au = calculateAssetId(at)
188-[at, j("admin", a), g("votingDuration", 2), g("totalSupply", 0), j("tokenName", ar), j("tokenId", toBase58String(au)), g("tokenDecimals", 8)]
208+ let aw = Issue(au, av, 0, 8, true)
209+ let ax = calculateAssetId(aw)
210+[aw, j("admin", a), g("votingDuration", 2), g("totalSupply", 0), j("tokenName", au), j("tokenId", toBase58String(ax)), g("tokenDecimals", 8)]
189211 }
190212 else throw("Pool already setup!")
191213
192214
193215
194-@Callable(aq)
195-func buyRound () = if ((size(aq.payments) > 0))
216+@Callable(at)
217+func buyRound () = if ((size(at.payments) > 0))
196218 then {
197- let av = aq.payments[0].amount
198- if ((av >= 1))
219+ let ay = at.payments[0].amount
220+ if ((ay >= 1))
199221 then {
200- let aw = fraction(av, 42, 1)
201- let ax = (b + aw)
202-[g("totalSupply", ax), Reissue(fromBase58String(d), aw, true), ScriptTransfer(aq.caller, aw, fromBase58String(d))]
222+ let az = fraction(ay, 42, 1)
223+ let aA = (b + az)
224+[g("totalSupply", aA), Reissue(fromBase58String(d), az, true), ScriptTransfer(at.caller, az, fromBase58String(d))]
203225 }
204226 else throw("Payment is to small!")
205227 }
206228 else throw("No payment attached!")
207229
208230
209231
210-@Callable(aq)
232+@Callable(at)
211233 func createGame () = {
212234 let V = "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"
213- let Y = toBase58String(aq.transactionId)
214-[j((Y + "_board"), V), j((Y + "_status"), "waiting for players"), j((Y + "_teamBlue"), toString(aq.caller)), j((Y + "_teamYellow"), "")]
235+ let Z = toBase58String(at.transactionId)
236+[j((Z + "_board"), V), j((Z + "_status"), "waiting for players"), j((Z + "_teamBlue"), toString(at.caller)), j((Z + "_teamYellow"), "")]
215237 }
216238
217239
218240
219-@Callable(aq)
220-func joinGame (Y) = {
221- let ay = getStringValue((Y + "_teamBlue"))
222- let az = getStringValue((Y + "_teamYellow"))
223- let aA = split(ay, ",")
224- let aB = split(az, ",")
225- if ((5 > size(aA)))
226- then [j((Y + "_teamBlue"), ((ay + ",") + toBase58String(aq.caller.bytes)))]
227- else if ((size(aB) == 4))
228- then [j((Y + "_status"), "round_1,turn_teamBlue"), j((Y + "_voting_1"), ""), g((Y + "_storedHeight"), (height + c)), j((Y + "_teamYellow"), ((az + ",") + toBase58String(aq.caller.bytes)))]
229- else if ((size(aB) == 0))
230- then [j((Y + "_teamYellow"), toBase58String(aq.caller.bytes))]
231- else if ((4 > size(aB)))
232- then [j((Y + "_teamYellow"), ((az + ",") + toBase58String(aq.caller.bytes)))]
241+@Callable(at)
242+func joinGame (Z) = {
243+ let aB = getStringValue((Z + "_teamBlue"))
244+ let aC = getStringValue((Z + "_teamYellow"))
245+ let aD = split(aB, ",")
246+ let aE = split(aC, ",")
247+ if ((5 > size(aD)))
248+ then [j((Z + "_teamBlue"), ((aB + ",") + toBase58String(at.caller.bytes)))]
249+ else if ((size(aE) == 4))
250+ then [j((Z + "_status"), "round_1,turn_teamBlue"), j((Z + "_voting_1"), ""), g((Z + "_mostVoted"), -1), g((Z + "_storedHeight"), (height + c)), j((Z + "_teamYellow"), ((aC + ",") + toBase58String(at.caller.bytes)))]
251+ else if ((size(aE) == 0))
252+ then [j((Z + "_teamYellow"), toBase58String(at.caller.bytes))]
253+ else if ((4 > size(aE)))
254+ then [j((Z + "_teamYellow"), ((aC + ",") + toBase58String(at.caller.bytes)))]
233255 else throw("Teams are full, cannot join.")
234256 }
235257
236258
237259
238-@Callable(aq)
239-func vote (Y,aC) = {
240- let aD = valueOrErrorMessage(getStringValue((Y + "_status")), "No status entry found under gameId!")
241- let ak = parseIntValue(drop(split(aD, ",")[0], 6))
242- let al = drop(split(aD, ",")[1], 5)
243- let aE = valueOrErrorMessage(getInteger((Y + "_storedHeight")), (("No status entry found under " + Y) + "_storedHeight!"))
244- let aF = valueOrErrorMessage(getStringValue(((Y + "_voting_") + toString(ak))), "No votes found for this game id!")
245- let aG = if ((size(aF) > 0))
246- then split(aF, ",")
260+@Callable(at)
261+func vote (Z,aF) = {
262+ let aG = valueOrErrorMessage(getStringValue((Z + "_status")), "No status entry found under gameId!")
263+ let aH = parseIntValue(drop(split(aG, ",")[0], 6))
264+ let aI = drop(split(aG, ",")[1], 5)
265+ let aJ = valueOrErrorMessage(getInteger((Z + "_storedHeight")), (("No status entry found under " + Z) + "_storedHeight!"))
266+ let aK = valueOrErrorMessage(getIntegerValue((Z + "_mostVoted")), (("No status entry found under " + Z) + "_mostVoted!"))
267+ let aL = valueOrErrorMessage(getStringValue(((Z + "_voting_") + toString(aH))), "No votes found for this game id!")
268+ let aM = if ((size(aL) > 0))
269+ then split(aL, ",")
247270 else nil
248- let aH = if ((al == "teamBlue"))
271+ let aN = if ((aI == "teamBlue"))
249272 then {
250- let aI = getStringValue((Y + "_teamBlue"))
251- let aJ = split(aI, ",")
252- aJ
273+ let aO = getStringValue((Z + "_teamBlue"))
274+ let aP = split(aO, ",")
275+ aP
253276 }
254277 else {
255- let aK = getStringValue((Y + "_teamYellow"))
256- let aL = split(aK, ",")
257- aL
278+ let aQ = getStringValue((Z + "_teamYellow"))
279+ let aR = split(aQ, ",")
280+ aR
258281 }
259- let aM = if ((al == "teamBlue"))
282+ let aS = if ((aI == "teamBlue"))
260283 then "teamYellow"
261284 else "teamBlue"
262- let aN = if ((aM == "teamBlue"))
285+ let aT = if ((aS == "teamBlue"))
263286 then {
264- let aI = getStringValue((Y + "_teamBlue"))
265- let aJ = split(aI, ",")
266- aJ
287+ let aO = getStringValue((Z + "_teamBlue"))
288+ let aP = split(aO, ",")
289+ aP
267290 }
268291 else {
269- let aK = getStringValue((Y + "_teamYellow"))
270- let aL = split(aK, ",")
271- aL
292+ let aQ = getStringValue((Z + "_teamYellow"))
293+ let aR = split(aQ, ",")
294+ aR
272295 }
273- let f = toBase58String(aq.caller.bytes)
274- if ((aE >= height))
275- then if (containsElement(aH, f))
276- then {
277- func aO (p,ae) = (p :+ split(ae, "_")[0])
296+ let f = toBase58String(at.caller.bytes)
297+ if ((size(at.payments) > 0))
298+ then if ((fromBase58String(d) == at.payments[0].assetId))
299+ then if ((at.payments[0].amount == 1))
300+ then if ((aJ >= height))
301+ then if (containsElement(aN, f))
302+ then {
303+ func aU (p,af) = (p :+ split(af, "_")[0])
278304
279- let aP = {
280- let u = aG
281- let v = size(u)
282- let w = nil
283- func x (y,z) = if ((z >= v))
284- then y
285- else aO(y, u[z])
305+ let aV = {
306+ let u = aM
307+ let v = size(u)
308+ let w = nil
309+ func x (y,z) = if ((z >= v))
310+ then y
311+ else aU(y, u[z])
286312
287- func A (y,z) = if ((z >= v))
288- then y
289- else throw("List size exceeds 5")
313+ func A (y,z) = if ((z >= v))
314+ then y
315+ else throw("List size exceeds 5")
290316
291- A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
292- }
293- if ((containsElement(aP, f) == false))
294- then {
295- let aQ = ((f + "_") + toString(aC))
296- let am = (aG :+ aQ)
297- let aR = makeString(am, ",")
298- let aS = aj(Y, ak, al, am)
299- if ((5 > size(am)))
300- then [j(((Y + "_voting_") + toString(ak)), aR)]
301- else [j(((Y + "_voting_") + toString(ak)), aR), j((Y + "_board"), aS), g((Y + "_storedHeight"), (height + c)), j((Y + "_status"), ((("round_" + toString((ak + 1))) + ",turn_") + aM)), j(((Y + "_voting_") + toString((ak + 1))), "")]
302- }
303- else throw("Caller already voted!")
304- }
305- else throw((("Caller is not in " + al) + "!"))
306- else if (containsElement(aN, f))
307- then if ((size(aG) > 0))
308- then {
309- let aS = aj(Y, ak, al, aG)
310- let aQ = ((f + "_") + toString(aC))
311-[j((Y + "_board"), aS), g((Y + "_storedHeight"), (height + c)), j((Y + "_status"), ((("round_" + toString((ak + 1))) + ",turn_") + aM)), j(((Y + "_voting_") + toString((ak + 1))), aQ)]
312- }
313- else {
314- let aQ = ((f + "_") + toString(aC))
315-[g((Y + "_storedHeight"), (height + c)), j((Y + "_status"), ((("round_" + toString((ak + 1))) + ",turn_") + aM)), j(((Y + "_voting_") + toString((ak + 1))), aQ)]
316- }
317- else throw((("Caller is not in " + aM) + "!"))
317+ A(x(x(x(x(x(w, 0), 1), 2), 3), 4), 5)
318+ }
319+ if ((containsElement(aV, f) == false))
320+ then {
321+ let aW = ((f + "_") + toString(aF))
322+ let aq = (aM :+ aW)
323+ let aX = makeString(aq, ",")
324+ let aY = parseIntValue(ap(aq))
325+ let aZ = if ((aY != aK))
326+ then aY
327+ else aK
328+ let ba = W(aZ, aK, Z, aI)
329+ if ((5 > size(aq)))
330+ then [j(((Z + "_voting_") + toString(aH)), aX), j((Z + "_board"), ba), g((Z + "_mostVoted"), aZ)]
331+ else [j(((Z + "_voting_") + toString(aH)), aX), j((Z + "_board"), ba), g((Z + "_mostVoted"), -1), g((Z + "_storedHeight"), (height + c)), j((Z + "_status"), ((("round_" + toString((aH + 1))) + ",turn_") + aS)), j(((Z + "_voting_") + toString((aH + 1))), "")]
332+ }
333+ else throw("Caller already voted!")
334+ }
335+ else throw((("Caller is not in " + aI) + "!"))
336+ else if (containsElement(aT, f))
337+ then {
338+ let aW = ((f + "_") + toString(aF))
339+ let aq = [aW]
340+ let aY = parseIntValue(ap(aq))
341+ let ba = W(aY, -1, Z, aI)
342+[j((Z + "_board"), ba), g((Z + "_storedHeight"), (height + c)), j((Z + "_status"), ((("round_" + toString((aH + 1))) + ",turn_") + aS)), j(((Z + "_voting_") + toString((aH + 1))), aW), g((Z + "_mostVoted"), aY)]
343+ }
344+ else throw((("Caller is not in " + aS) + "!"))
345+ else throw("Amount has to be 1!")
346+ else throw("Payment has to be a Connect four Token!")
347+ else throw("No Payment attached!")
318348 }
319349
320350
321351
322-@Callable(aq)
323-func updateStringEntry (h,k) = if (e(aq.caller.bytes))
352+@Callable(at)
353+func updateStringEntry (h,k) = if (e(at.caller.bytes))
324354 then [j(h, k)]
325355 else throw("Address does not match with admin address!")
326356
327357
328358
329-@Callable(aq)
330-func updateIntegerEntry (h,i) = if (e(aq.caller.bytes))
359+@Callable(at)
360+func updateIntegerEntry (h,i) = if (e(at.caller.bytes))
331361 then [g(h, i)]
332362 else throw("Address does not match with admin address!")
333363
334364
335365
336-@Callable(aq)
337-func deleteStorageEntry (h) = if (e(aq.caller.bytes))
366+@Callable(at)
367+func deleteStorageEntry (h) = if (e(at.caller.bytes))
338368 then [DeleteEntry(h)]
339369 else throw("Address does not match with admin address!")
340370
341371
342-@Verifier(aT)
343-func aU () = sigVerify(aT.bodyBytes, aT.proofs[0], aT.senderPublicKey)
372+@Verifier(bb)
373+func bc () = sigVerify(bb.bodyBytes, bb.proofs[0], bb.senderPublicKey)
344374

github/deemru/w8io/026f985 
110.28 ms