tx · FJGAMjZi1ezenyfjJUJ5MeYDXeABg4Zj7TxyLVR3x8e7

3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK:  -0.05000000 Waves

2022.01.25 23:28 [1894916] smart account 3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK > SELF 0.00000000 Waves

{ "type": 13, "id": "FJGAMjZi1ezenyfjJUJ5MeYDXeABg4Zj7TxyLVR3x8e7", "fee": 5000000, "feeAssetId": null, "timestamp": 1643142510185, "version": 2, "chainId": 84, "sender": "3MtKnDmJju2Y4dp9A2ACPr11jDZiW6gmKKK", "senderPublicKey": "3itc77jAZTQAcaPCyYEe4KD7h18CvqZZ2JRynZHsuJ61", "proofs": [ "4y4boBpHy6KaqkmMHKgw4H1W5vTZk4Qn3LgroGuV2azNPBLbG72etngLJH5tPF4RfSrMLobi86bK5A7RqCKn5K7q" ], "script": "base64:AAIFAAAAAAAAACkIAhIFCgMICAgSABIAEgMKAQgSBAoCCAESBAoCCAgSBAoCCAESAwoBCAAAABAAAAAADGFkbWluQWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzAgAAAAVhZG1pbgIAAAAAAAAAAAt0b3RhbFN1cHBseQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAAAt0b3RhbFN1cHBseQAAAAAAAAAAAAAAAAAOdm90aW5nRHVyYXRpb24JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzAgAAAA52b3RpbmdEdXJhdGlvbgIAAAAfTm8ga2V5IHZvdGluZ0R1cmF0aW9uIHdhcyBmb3VuZAAAAAAIY3Rva2VuSWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzAgAAAAd0b2tlbklkAgAAABlObyBrZXkgY1Rva2VuSWQgd2FzIGZvdW5kAAAAABFtYXhQbGF5ZXJzUGVyVGVhbQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMCAAAADnBsYXllcnNQZXJUZWFtAgAAAB9ObyBrZXkgcGxheWVyc1BlclRlYW0gd2FzIGZvdW5kAQAAAAdpc0FkbWluAAAAAQAAAA1jYWxsZXJBZGRyZXNzAwkAAAAAAAACBQAAAA1jYWxsZXJBZGRyZXNzCQACWQAAAAEFAAAADGFkbWluQWRkcmVzcwYHAQAAAAx3cml0ZUludGVnZXIAAAACAAAAA2tleQAAAAxpbnRlZ2VyVmFsdWUJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAANrZXkFAAAADGludGVnZXJWYWx1ZQEAAAALd3JpdGVTdHJpbmcAAAACAAAAA2tleQAAAAtzdHJpbmdWYWx1ZQkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAADa2V5BQAAAAtzdHJpbmdWYWx1ZQEAAAAOY291bnRGcmVxdWVuY3kAAAACAAAACmhlbHBlckxpc3QAAAAKdm90aW5nTGlzdAoBAAAADWZvbGRGcmVxdWVuY3kAAAACAAAABWFjY3VtAAAA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AQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIJAQAAAAUkZjFfMQAAAAIFAAAABSRhY2MwAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAADAAAAAAAAAAAEAAAAAAAAAAAFAAAAAAAAAAAGAAAAAAAAAAAHAAAAAAAAAAAIAAAAAAAAAAAJAAAAAAAAAAAKAAAAAAAAAAALAAAAAAAAAAAMAAAAAAAAAAANAAAAAAAAAAAOAAAAAAAAAAAPAAAAAAAAAAAQAAAAAAAAAAARAAAAAAAAAAASAAAAAAAAAAATAAAAAAAAAAAUAAAAAAAAAAAVAAAAAAAAAAAWAAAAAAAAAAAXAAAAAAAAAAAYAAAAAAAAAAAZAAAAAAAAAAAaAAAAAAAAAAAbAAAAAAAAAAAcAAAAAAAAAAAdAAAAAAAAAAAeAAAAAAAAAAAfAAAAAAAAAAAgAAAAAAAAAAAhAAAAAAAAAAAiAAAAAAAAAAAjAAAAAAAAAAAkAAAA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", "height": 1894916, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 34dENkAprECPWSJK9qkPPYT3jnRe1rAXU1hSyDZBkepz Next: Hih2bNbPa6Sypz4FaefCqxff9DDA868eYUFoeSR4HEfx Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = valueOrElse(getString(this, "admin"), "")
55
6-func b (c) = if ((c == fromBase58String(a)))
6+let b = valueOrElse(getInteger(this, "totalSupply"), 0)
7+
8+let c = valueOrErrorMessage(getInteger(this, "votingDuration"), "No key votingDuration was found")
9+
10+let d = valueOrErrorMessage(getString(this, "tokenId"), "No key cTokenId was found")
11+
12+let e = valueOrErrorMessage(getInteger(this, "playersPerTeam"), "No key playersPerTeam was found")
13+
14+func f (g) = if ((g == fromBase58String(a)))
715 then true
816 else false
917
1018
11-func d (e,f) = IntegerEntry(e, f)
19+func h (i,j) = IntegerEntry(i, j)
1220
1321
14-func g (e,h) = StringEntry(e, h)
22+func k (i,l) = StringEntry(i, l)
1523
1624
17-@Callable(i)
18-func setup (j) = if (!(isDefined(getString(this, "admin"))))
19- then [g("admin", toBase58String(i.caller.bytes)), g("main", j)]
20- else throw("Pool already setup!")
25+func m (n,o) = {
26+ func p (q,r) = {
27+ func s (t,u) = if ((r == u))
28+ then (t + 1)
29+ else t
30+
31+ (q :+ {
32+ let v = o
33+ let w = size(v)
34+ let x = 0
35+ func y (z,A) = if ((A >= w))
36+ then z
37+ else s(z, v[A])
38+
39+ func B (z,A) = if ((A >= w))
40+ then z
41+ else throw("List size exceeds 5")
42+
43+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
44+ })
45+ }
46+
47+ let v = n
48+ let w = size(v)
49+ let x = nil
50+ func y (z,A) = if ((A >= w))
51+ then z
52+ else p(z, v[A])
53+
54+ func B (z,A) = if ((A >= w))
55+ then z
56+ else throw("List size exceeds 5")
57+
58+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
59+ }
60+
61+
62+func C (D) = {
63+ func E (q,r) = if ((containsElement(q, r) == false))
64+ then (q :+ r)
65+ else q
66+
67+ let v = D
68+ let w = size(v)
69+ let x = nil
70+ func y (z,A) = if ((A >= w))
71+ then z
72+ else E(z, v[A])
73+
74+ func B (z,A) = if ((A >= w))
75+ then z
76+ else throw("List size exceeds 5")
77+
78+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
79+ }
80+
81+
82+func F (G,H) = {
83+ let I = (size(H) - 1)
84+ let J = H[I]
85+ if ((G > J))
86+ then true
87+ else false
88+ }
89+
90+
91+func K (n,L) = {
92+ func M (N,O) = if ((size(N) == 0))
93+ then (N :+ O)
94+ else if (F(O, N))
95+ then (N :+ O)
96+ else N
97+
98+ let P = {
99+ let v = L
100+ let w = size(v)
101+ let x = nil
102+ func y (z,A) = if ((A >= w))
103+ then z
104+ else M(z, v[A])
105+
106+ func B (z,A) = if ((A >= w))
107+ then z
108+ else throw("List size exceeds 5")
109+
110+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
111+ }
112+ let Q = (size(P) - 1)
113+ let R = P[Q]
114+ let S = indexOf(L, R)
115+ let T = S
116+ if ($isInstanceOf(T, "Int"))
117+ then {
118+ let U = T
119+n[U]
120+ }
121+ else throw("Type does not match! Function: findHighestVote")
122+ }
123+
124+
125+func V (W) = makeString(W, ",")
126+
127+
128+func X (Y,Z,aa,ab) = {
129+ let ac = getStringValue((aa + "_board"))
130+ let ad = split(ac, ",")
131+ let ae = if ((ab == "teamBlue"))
132+ then "B"
133+ else "Y"
134+ func af (q,ag) = {
135+ let ah = q
136+ let ai = ah._1
137+ let aj = ah._2
138+ if ((aj == Z))
139+ then $Tuple2((ai :+ "0"), (aj + 1))
140+ else $Tuple2((ai :+ ag), (aj + 1))
141+ }
142+
143+ func ak (q,ag) = {
144+ let al = q
145+ let ai = al._1
146+ let aj = al._2
147+ if ((aj == Y))
148+ then $Tuple2((ai :+ ae), (aj + 1))
149+ else $Tuple2((ai :+ ag), (aj + 1))
150+ }
151+
152+ let am = {
153+ let v = ad
154+ let w = size(v)
155+ let x = $Tuple2(nil, 0)
156+ func y (z,A) = if ((A >= w))
157+ then z
158+ else af(z, v[A])
159+
160+ func B (z,A) = if ((A >= w))
161+ then z
162+ else throw("List size exceeds 42")
163+
164+ B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 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 an = {
167+ let v = am._1
168+ let w = size(v)
169+ let x = $Tuple2(nil, 0)
170+ func ao (z,A) = if ((A >= w))
171+ then z
172+ else ak(z, v[A])
173+
174+ func ap (z,A) = if ((A >= w))
175+ then z
176+ else throw("List size exceeds 42")
177+
178+ ap(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(x, 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+ V(an._1)
181+ }
182+
183+
184+func aq (ar) = {
185+ func as (q,ag) = (q :+ split(ag, "_")[1])
186+
187+ let at = {
188+ let v = ar
189+ let w = size(v)
190+ let x = nil
191+ func y (z,A) = if ((A >= w))
192+ then z
193+ else as(z, v[A])
194+
195+ func B (z,A) = if ((A >= w))
196+ then z
197+ else throw("List size exceeds 5")
198+
199+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
200+ }
201+ let n = C(at)
202+ let L = m(n, at)
203+ K(n, L)
204+ }
205+
206+
207+func au (ab,av) = if (!(containsElement(ab, av)))
208+ then true
209+ else false
210+
211+
212+@Callable(aw)
213+func setup (a,ax,ay) = if (!(isDefined(getString(this, "admin"))))
214+ then {
215+ let az = Issue(ax, ay, 0, 8, true)
216+ let aA = calculateAssetId(az)
217+[az, k("admin", a), h("votingDuration", 2), h("totalSupply", 0), k("tokenName", ax), k("tokenId", toBase58String(aA)), h("tokenDecimals", 8)]
218+ }
219+ else throw("DApp already setup!")
21220
22221
23222
24-@Callable(i)
25-func updateStringEntry (e,h) = if (b(i.caller.bytes))
26- then [g(e, h)]
223+@Callable(aw)
224+func buyRound () = if ((size(aw.payments) > 0))
225+ then {
226+ let aB = aw.payments[0].amount
227+ if ((aB >= 1))
228+ then {
229+ let aC = fraction(aB, 42, 1)
230+ let aD = (b + aC)
231+[h("totalSupply", aD), Reissue(fromBase58String(d), aC, true), ScriptTransfer(aw.caller, aC, fromBase58String(d))]
232+ }
233+ else throw("Payment is to small!")
234+ }
235+ else throw("No payment attached!")
236+
237+
238+
239+@Callable(aw)
240+func createGame () = {
241+ let W = "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"
242+ let aa = toBase58String(aw.transactionId)
243+[k((aa + "_board"), W), k((aa + "_status"), "waiting for players"), k((aa + "_teamBlue"), toString(aw.caller)), k((aa + "_teamYellow"), "")]
244+ }
245+
246+
247+
248+@Callable(aw)
249+func joinGame (aa) = {
250+ let aE = toBase58String(aw.caller.bytes)
251+ let aF = getStringValue((aa + "_teamBlue"))
252+ let aG = getStringValue((aa + "_teamYellow"))
253+ let aH = split(aF, ",")
254+ let aI = if ((size(aG) > 0))
255+ then split(aG, ",")
256+ else nil
257+ if (if (au(aH, aE))
258+ then au(aI, aE)
259+ else false)
260+ then if ((e > size(aH)))
261+ then [k((aa + "_teamBlue"), ((aF + ",") + aE))]
262+ else if ((size(aI) == (e - 1)))
263+ then [k((aa + "_status"), "round_1,turn_teamBlue"), k((aa + "_voting_1"), ""), h((aa + "_mostVoted"), -1), h((aa + "_storedHeight"), (height + c)), k((aa + "_teamYellow"), ((aG + ",") + aE))]
264+ else if ((size(aI) == 0))
265+ then [k((aa + "_teamYellow"), aE)]
266+ else if (((e - 1) > size(aI)))
267+ then [k((aa + "_teamYellow"), ((aG + ",") + aE))]
268+ else throw("Teams are full, cannot join.")
269+ else throw("Player already in a Team!")
270+ }
271+
272+
273+
274+@Callable(aw)
275+func vote (aa,aJ) = {
276+ let aK = valueOrErrorMessage(getStringValue((aa + "_status")), "No status entry found under gameId!")
277+ let aL = parseIntValue(drop(split(aK, ",")[0], 6))
278+ let aM = drop(split(aK, ",")[1], 5)
279+ let aN = valueOrErrorMessage(getInteger((aa + "_storedHeight")), (("No status entry found under " + aa) + "_storedHeight!"))
280+ let aO = valueOrErrorMessage(getIntegerValue((aa + "_mostVoted")), (("No status entry found under " + aa) + "_mostVoted!"))
281+ let aP = valueOrErrorMessage(getStringValue(((aa + "_voting_") + toString(aL))), "No votes found for this game id!")
282+ let aQ = if ((size(aP) > 0))
283+ then split(aP, ",")
284+ else nil
285+ let aR = if ((aM == "teamBlue"))
286+ then {
287+ let aS = getStringValue((aa + "_teamBlue"))
288+ let aT = split(aS, ",")
289+ aT
290+ }
291+ else {
292+ let aU = getStringValue((aa + "_teamYellow"))
293+ let aV = split(aU, ",")
294+ aV
295+ }
296+ let aW = if ((aM == "teamBlue"))
297+ then "teamYellow"
298+ else "teamBlue"
299+ let aX = if ((aW == "teamBlue"))
300+ then {
301+ let aS = getStringValue((aa + "_teamBlue"))
302+ let aT = split(aS, ",")
303+ aT
304+ }
305+ else {
306+ let aU = getStringValue((aa + "_teamYellow"))
307+ let aV = split(aU, ",")
308+ aV
309+ }
310+ let g = toBase58String(aw.caller.bytes)
311+ if ((size(aw.payments) > 0))
312+ then if ((fromBase58String(d) == aw.payments[0].assetId))
313+ then if ((aw.payments[0].amount == 100000000))
314+ then if ((aN >= height))
315+ then if (containsElement(aR, g))
316+ then {
317+ func aY (q,ag) = (q :+ split(ag, "_")[0])
318+
319+ let aZ = {
320+ let v = aQ
321+ let w = size(v)
322+ let x = nil
323+ func y (z,A) = if ((A >= w))
324+ then z
325+ else aY(z, v[A])
326+
327+ func B (z,A) = if ((A >= w))
328+ then z
329+ else throw("List size exceeds 5")
330+
331+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
332+ }
333+ if ((containsElement(aZ, g) == false))
334+ then {
335+ let ba = ((g + "_") + toString(aJ))
336+ let ar = (aQ :+ ba)
337+ let bb = makeString(ar, ",")
338+ let bc = parseIntValue(aq(ar))
339+ let bd = if ((bc != aO))
340+ then bc
341+ else aO
342+ let be = X(bd, aO, aa, aM)
343+ if ((e > size(ar)))
344+ then [k(((aa + "_voting_") + toString(aL)), bb), k((aa + "_board"), be), h((aa + "_mostVoted"), bd)]
345+ else [k(((aa + "_voting_") + toString(aL)), bb), k((aa + "_board"), be), h((aa + "_mostVoted"), -1), h((aa + "_storedHeight"), (height + c)), k((aa + "_status"), ((("round_" + toString((aL + 1))) + ",turn_") + aW)), k(((aa + "_voting_") + toString((aL + 1))), "")]
346+ }
347+ else throw("Caller already voted!")
348+ }
349+ else throw((("Caller is not in " + aM) + "!"))
350+ else if (containsElement(aX, g))
351+ then {
352+ let ba = ((g + "_") + toString(aJ))
353+ let ar = [ba]
354+ let bc = parseIntValue(aq(ar))
355+ let be = X(bc, -1, aa, aM)
356+[k((aa + "_board"), be), h((aa + "_storedHeight"), (height + c)), k((aa + "_status"), ((("round_" + toString((aL + 1))) + ",turn_") + aW)), k(((aa + "_voting_") + toString((aL + 1))), ba), h((aa + "_mostVoted"), bc)]
357+ }
358+ else throw((("Caller is not in " + aW) + "!"))
359+ else throw("Amount has to be 1!")
360+ else throw("Payment has to be a Connect four Token!")
361+ else throw("No Payment attached!")
362+ }
363+
364+
365+
366+@Callable(aw)
367+func updateStringEntry (i,l) = if (f(aw.caller.bytes))
368+ then [k(i, l)]
27369 else throw("Address does not match with admin address!")
28370
29371
30372
31-@Callable(i)
32-func updateIntegerEntry (e,f) = if (b(i.caller.bytes))
33- then [d(e, f)]
373+@Callable(aw)
374+func updateIntegerEntry (i,j) = if (f(aw.caller.bytes))
375+ then [h(i, j)]
34376 else throw("Address does not match with admin address!")
35377
36378
37379
38-@Callable(i)
39-func deleteStorageEntry (e) = if (b(i.caller.bytes))
40- then [DeleteEntry(e)]
380+@Callable(aw)
381+func deleteStorageEntry (i) = if (f(aw.caller.bytes))
382+ then [DeleteEntry(i)]
41383 else throw("Address does not match with admin address!")
42384
43385
44-@Verifier(k)
45-func l () = sigVerify(k.bodyBytes, k.proofs[0], k.senderPublicKey)
386+@Verifier(bf)
387+func bg () = sigVerify(bf.bodyBytes, bf.proofs[0], bf.senderPublicKey)
46388
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = valueOrElse(getString(this, "admin"), "")
55
6-func b (c) = if ((c == fromBase58String(a)))
6+let b = valueOrElse(getInteger(this, "totalSupply"), 0)
7+
8+let c = valueOrErrorMessage(getInteger(this, "votingDuration"), "No key votingDuration was found")
9+
10+let d = valueOrErrorMessage(getString(this, "tokenId"), "No key cTokenId was found")
11+
12+let e = valueOrErrorMessage(getInteger(this, "playersPerTeam"), "No key playersPerTeam was found")
13+
14+func f (g) = if ((g == fromBase58String(a)))
715 then true
816 else false
917
1018
11-func d (e,f) = IntegerEntry(e, f)
19+func h (i,j) = IntegerEntry(i, j)
1220
1321
14-func g (e,h) = StringEntry(e, h)
22+func k (i,l) = StringEntry(i, l)
1523
1624
17-@Callable(i)
18-func setup (j) = if (!(isDefined(getString(this, "admin"))))
19- then [g("admin", toBase58String(i.caller.bytes)), g("main", j)]
20- else throw("Pool already setup!")
25+func m (n,o) = {
26+ func p (q,r) = {
27+ func s (t,u) = if ((r == u))
28+ then (t + 1)
29+ else t
30+
31+ (q :+ {
32+ let v = o
33+ let w = size(v)
34+ let x = 0
35+ func y (z,A) = if ((A >= w))
36+ then z
37+ else s(z, v[A])
38+
39+ func B (z,A) = if ((A >= w))
40+ then z
41+ else throw("List size exceeds 5")
42+
43+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
44+ })
45+ }
46+
47+ let v = n
48+ let w = size(v)
49+ let x = nil
50+ func y (z,A) = if ((A >= w))
51+ then z
52+ else p(z, v[A])
53+
54+ func B (z,A) = if ((A >= w))
55+ then z
56+ else throw("List size exceeds 5")
57+
58+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
59+ }
60+
61+
62+func C (D) = {
63+ func E (q,r) = if ((containsElement(q, r) == false))
64+ then (q :+ r)
65+ else q
66+
67+ let v = D
68+ let w = size(v)
69+ let x = nil
70+ func y (z,A) = if ((A >= w))
71+ then z
72+ else E(z, v[A])
73+
74+ func B (z,A) = if ((A >= w))
75+ then z
76+ else throw("List size exceeds 5")
77+
78+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
79+ }
80+
81+
82+func F (G,H) = {
83+ let I = (size(H) - 1)
84+ let J = H[I]
85+ if ((G > J))
86+ then true
87+ else false
88+ }
89+
90+
91+func K (n,L) = {
92+ func M (N,O) = if ((size(N) == 0))
93+ then (N :+ O)
94+ else if (F(O, N))
95+ then (N :+ O)
96+ else N
97+
98+ let P = {
99+ let v = L
100+ let w = size(v)
101+ let x = nil
102+ func y (z,A) = if ((A >= w))
103+ then z
104+ else M(z, v[A])
105+
106+ func B (z,A) = if ((A >= w))
107+ then z
108+ else throw("List size exceeds 5")
109+
110+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
111+ }
112+ let Q = (size(P) - 1)
113+ let R = P[Q]
114+ let S = indexOf(L, R)
115+ let T = S
116+ if ($isInstanceOf(T, "Int"))
117+ then {
118+ let U = T
119+n[U]
120+ }
121+ else throw("Type does not match! Function: findHighestVote")
122+ }
123+
124+
125+func V (W) = makeString(W, ",")
126+
127+
128+func X (Y,Z,aa,ab) = {
129+ let ac = getStringValue((aa + "_board"))
130+ let ad = split(ac, ",")
131+ let ae = if ((ab == "teamBlue"))
132+ then "B"
133+ else "Y"
134+ func af (q,ag) = {
135+ let ah = q
136+ let ai = ah._1
137+ let aj = ah._2
138+ if ((aj == Z))
139+ then $Tuple2((ai :+ "0"), (aj + 1))
140+ else $Tuple2((ai :+ ag), (aj + 1))
141+ }
142+
143+ func ak (q,ag) = {
144+ let al = q
145+ let ai = al._1
146+ let aj = al._2
147+ if ((aj == Y))
148+ then $Tuple2((ai :+ ae), (aj + 1))
149+ else $Tuple2((ai :+ ag), (aj + 1))
150+ }
151+
152+ let am = {
153+ let v = ad
154+ let w = size(v)
155+ let x = $Tuple2(nil, 0)
156+ func y (z,A) = if ((A >= w))
157+ then z
158+ else af(z, v[A])
159+
160+ func B (z,A) = if ((A >= w))
161+ then z
162+ else throw("List size exceeds 42")
163+
164+ B(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(y(x, 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 an = {
167+ let v = am._1
168+ let w = size(v)
169+ let x = $Tuple2(nil, 0)
170+ func ao (z,A) = if ((A >= w))
171+ then z
172+ else ak(z, v[A])
173+
174+ func ap (z,A) = if ((A >= w))
175+ then z
176+ else throw("List size exceeds 42")
177+
178+ ap(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(ao(x, 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+ V(an._1)
181+ }
182+
183+
184+func aq (ar) = {
185+ func as (q,ag) = (q :+ split(ag, "_")[1])
186+
187+ let at = {
188+ let v = ar
189+ let w = size(v)
190+ let x = nil
191+ func y (z,A) = if ((A >= w))
192+ then z
193+ else as(z, v[A])
194+
195+ func B (z,A) = if ((A >= w))
196+ then z
197+ else throw("List size exceeds 5")
198+
199+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
200+ }
201+ let n = C(at)
202+ let L = m(n, at)
203+ K(n, L)
204+ }
205+
206+
207+func au (ab,av) = if (!(containsElement(ab, av)))
208+ then true
209+ else false
210+
211+
212+@Callable(aw)
213+func setup (a,ax,ay) = if (!(isDefined(getString(this, "admin"))))
214+ then {
215+ let az = Issue(ax, ay, 0, 8, true)
216+ let aA = calculateAssetId(az)
217+[az, k("admin", a), h("votingDuration", 2), h("totalSupply", 0), k("tokenName", ax), k("tokenId", toBase58String(aA)), h("tokenDecimals", 8)]
218+ }
219+ else throw("DApp already setup!")
21220
22221
23222
24-@Callable(i)
25-func updateStringEntry (e,h) = if (b(i.caller.bytes))
26- then [g(e, h)]
223+@Callable(aw)
224+func buyRound () = if ((size(aw.payments) > 0))
225+ then {
226+ let aB = aw.payments[0].amount
227+ if ((aB >= 1))
228+ then {
229+ let aC = fraction(aB, 42, 1)
230+ let aD = (b + aC)
231+[h("totalSupply", aD), Reissue(fromBase58String(d), aC, true), ScriptTransfer(aw.caller, aC, fromBase58String(d))]
232+ }
233+ else throw("Payment is to small!")
234+ }
235+ else throw("No payment attached!")
236+
237+
238+
239+@Callable(aw)
240+func createGame () = {
241+ let W = "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"
242+ let aa = toBase58String(aw.transactionId)
243+[k((aa + "_board"), W), k((aa + "_status"), "waiting for players"), k((aa + "_teamBlue"), toString(aw.caller)), k((aa + "_teamYellow"), "")]
244+ }
245+
246+
247+
248+@Callable(aw)
249+func joinGame (aa) = {
250+ let aE = toBase58String(aw.caller.bytes)
251+ let aF = getStringValue((aa + "_teamBlue"))
252+ let aG = getStringValue((aa + "_teamYellow"))
253+ let aH = split(aF, ",")
254+ let aI = if ((size(aG) > 0))
255+ then split(aG, ",")
256+ else nil
257+ if (if (au(aH, aE))
258+ then au(aI, aE)
259+ else false)
260+ then if ((e > size(aH)))
261+ then [k((aa + "_teamBlue"), ((aF + ",") + aE))]
262+ else if ((size(aI) == (e - 1)))
263+ then [k((aa + "_status"), "round_1,turn_teamBlue"), k((aa + "_voting_1"), ""), h((aa + "_mostVoted"), -1), h((aa + "_storedHeight"), (height + c)), k((aa + "_teamYellow"), ((aG + ",") + aE))]
264+ else if ((size(aI) == 0))
265+ then [k((aa + "_teamYellow"), aE)]
266+ else if (((e - 1) > size(aI)))
267+ then [k((aa + "_teamYellow"), ((aG + ",") + aE))]
268+ else throw("Teams are full, cannot join.")
269+ else throw("Player already in a Team!")
270+ }
271+
272+
273+
274+@Callable(aw)
275+func vote (aa,aJ) = {
276+ let aK = valueOrErrorMessage(getStringValue((aa + "_status")), "No status entry found under gameId!")
277+ let aL = parseIntValue(drop(split(aK, ",")[0], 6))
278+ let aM = drop(split(aK, ",")[1], 5)
279+ let aN = valueOrErrorMessage(getInteger((aa + "_storedHeight")), (("No status entry found under " + aa) + "_storedHeight!"))
280+ let aO = valueOrErrorMessage(getIntegerValue((aa + "_mostVoted")), (("No status entry found under " + aa) + "_mostVoted!"))
281+ let aP = valueOrErrorMessage(getStringValue(((aa + "_voting_") + toString(aL))), "No votes found for this game id!")
282+ let aQ = if ((size(aP) > 0))
283+ then split(aP, ",")
284+ else nil
285+ let aR = if ((aM == "teamBlue"))
286+ then {
287+ let aS = getStringValue((aa + "_teamBlue"))
288+ let aT = split(aS, ",")
289+ aT
290+ }
291+ else {
292+ let aU = getStringValue((aa + "_teamYellow"))
293+ let aV = split(aU, ",")
294+ aV
295+ }
296+ let aW = if ((aM == "teamBlue"))
297+ then "teamYellow"
298+ else "teamBlue"
299+ let aX = if ((aW == "teamBlue"))
300+ then {
301+ let aS = getStringValue((aa + "_teamBlue"))
302+ let aT = split(aS, ",")
303+ aT
304+ }
305+ else {
306+ let aU = getStringValue((aa + "_teamYellow"))
307+ let aV = split(aU, ",")
308+ aV
309+ }
310+ let g = toBase58String(aw.caller.bytes)
311+ if ((size(aw.payments) > 0))
312+ then if ((fromBase58String(d) == aw.payments[0].assetId))
313+ then if ((aw.payments[0].amount == 100000000))
314+ then if ((aN >= height))
315+ then if (containsElement(aR, g))
316+ then {
317+ func aY (q,ag) = (q :+ split(ag, "_")[0])
318+
319+ let aZ = {
320+ let v = aQ
321+ let w = size(v)
322+ let x = nil
323+ func y (z,A) = if ((A >= w))
324+ then z
325+ else aY(z, v[A])
326+
327+ func B (z,A) = if ((A >= w))
328+ then z
329+ else throw("List size exceeds 5")
330+
331+ B(y(y(y(y(y(x, 0), 1), 2), 3), 4), 5)
332+ }
333+ if ((containsElement(aZ, g) == false))
334+ then {
335+ let ba = ((g + "_") + toString(aJ))
336+ let ar = (aQ :+ ba)
337+ let bb = makeString(ar, ",")
338+ let bc = parseIntValue(aq(ar))
339+ let bd = if ((bc != aO))
340+ then bc
341+ else aO
342+ let be = X(bd, aO, aa, aM)
343+ if ((e > size(ar)))
344+ then [k(((aa + "_voting_") + toString(aL)), bb), k((aa + "_board"), be), h((aa + "_mostVoted"), bd)]
345+ else [k(((aa + "_voting_") + toString(aL)), bb), k((aa + "_board"), be), h((aa + "_mostVoted"), -1), h((aa + "_storedHeight"), (height + c)), k((aa + "_status"), ((("round_" + toString((aL + 1))) + ",turn_") + aW)), k(((aa + "_voting_") + toString((aL + 1))), "")]
346+ }
347+ else throw("Caller already voted!")
348+ }
349+ else throw((("Caller is not in " + aM) + "!"))
350+ else if (containsElement(aX, g))
351+ then {
352+ let ba = ((g + "_") + toString(aJ))
353+ let ar = [ba]
354+ let bc = parseIntValue(aq(ar))
355+ let be = X(bc, -1, aa, aM)
356+[k((aa + "_board"), be), h((aa + "_storedHeight"), (height + c)), k((aa + "_status"), ((("round_" + toString((aL + 1))) + ",turn_") + aW)), k(((aa + "_voting_") + toString((aL + 1))), ba), h((aa + "_mostVoted"), bc)]
357+ }
358+ else throw((("Caller is not in " + aW) + "!"))
359+ else throw("Amount has to be 1!")
360+ else throw("Payment has to be a Connect four Token!")
361+ else throw("No Payment attached!")
362+ }
363+
364+
365+
366+@Callable(aw)
367+func updateStringEntry (i,l) = if (f(aw.caller.bytes))
368+ then [k(i, l)]
27369 else throw("Address does not match with admin address!")
28370
29371
30372
31-@Callable(i)
32-func updateIntegerEntry (e,f) = if (b(i.caller.bytes))
33- then [d(e, f)]
373+@Callable(aw)
374+func updateIntegerEntry (i,j) = if (f(aw.caller.bytes))
375+ then [h(i, j)]
34376 else throw("Address does not match with admin address!")
35377
36378
37379
38-@Callable(i)
39-func deleteStorageEntry (e) = if (b(i.caller.bytes))
40- then [DeleteEntry(e)]
380+@Callable(aw)
381+func deleteStorageEntry (i) = if (f(aw.caller.bytes))
382+ then [DeleteEntry(i)]
41383 else throw("Address does not match with admin address!")
42384
43385
44-@Verifier(k)
45-func l () = sigVerify(k.bodyBytes, k.proofs[0], k.senderPublicKey)
386+@Verifier(bf)
387+func bg () = sigVerify(bf.bodyBytes, bf.proofs[0], bf.senderPublicKey)
46388

github/deemru/w8io/169f3d6 
47.29 ms