tx · Ae39177fymDncqfQLMk3ihgcN2fJaKWWCXHhfkfuM9v8

3MvCLdwRiQSNrhgumfFunsbyUJUw6ViTMwB:  -0.05000000 Waves

2021.08.21 17:25 [1668211] smart account 3MvCLdwRiQSNrhgumfFunsbyUJUw6ViTMwB > SELF 0.00000000 Waves

{ "type": 13, "id": "Ae39177fymDncqfQLMk3ihgcN2fJaKWWCXHhfkfuM9v8", "fee": 5000000, "feeAssetId": null, "timestamp": 1629555951083, "version": 2, "chainId": 84, "sender": "3MvCLdwRiQSNrhgumfFunsbyUJUw6ViTMwB", "senderPublicKey": "9Vbnf3b9hhuCerzPXf38mLo8mUGTPNVW3jtQRbymjaSw", "proofs": [ "3bPcoaUTbm8GgGFy3vEt6vhKMYGuHUB7x6UgCSTMjjyvJH2MJ3XFdp3Hv6ee66kg7xTkVwrcFRaXem5MR7i3CZv9" ], "script": "base64:AAIFAAAAAAAAADoIAhIGCgQBAQEBEgMKAQESAwoBARIDCgEBEgMKAQESAwoBARIECgIBCBIFCgMBCAgSAwoBARIDCgEBAAAALAAAAAAQaW5jdWJhdG9yQWRkcmVzcwEAAAAaAVQu1YzRxAHn1ekAzs1AJJ6xFAc06V7PK6oAAAAADmJyZWVkZXJBZGRyZXNzAQAAABoBVC7VjNHEAefV6QDOzUAknrEUBzTpXs8rqgAAAAAOZmFybWluZ0FkZHJlc3MBAAAAGgFU8jY5wCvKx9IdZ1jq9byeNi+peiAgajPTAAAAAAtlZ2dzQXNzZXRJZAEAAAAgJQJlzPcEaMi+AVmReOVYWjhmFBOtSkxKt/4FF0gXFoMAAAAACG1ha2VyRmVlAAAAAAAAAAABAAAAAAh0YWtlckZlZQAAAAAAAAAAAQAAAAAFU0xPVFMAAAAAAAAAAAoAAAAAB1dBSVRJTkcAAAAAAAAAAAUAAAAADHN0ZXBEdXJhdGlvbgAAAAAAAAAAAwEAAAANdHJ5R2V0SW50ZWdlcgAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiAAAAAAAAAAAAAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAA10cnlHZXRCb29sZWFuAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFiBQAAAAckbWF0Y2gwBQAAAAFiBwEAAAANZ2V0TmV4dEdhbWVJZAAAAAAEAAAABm5leHRJZAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAApuZXh0R2FtZUlkAwkAAAAAAAACBQAAAAZuZXh0SWQAAAAAAAAAAAAAAAAAAAAAAAEFAAAABm5leHRJZAEAAAAXZ2V0UGxheWVyQ3VycmVudEdhbWVLZXkAAAABAAAAB2FkZHJlc3MJAAEsAAAAAgIAAAAMY3VycmVudEdhbWVfBQAAAAdhZGRyZXNzAQAAABRnZXRQbGF5ZXJDdXJyZW50R2FtZQAAAAEAAAAHYWRkcmVzcwkBAAAADXRyeUdldEludGVnZXIAAAABCQEAAAAXZ2V0UGxheWVyQ3VycmVudEdhbWVLZXkAAAABBQAAAAdhZGRyZXNzAQAAAApnZXRTbG90S2V5AAAAAQAAAARzbG90CQABLAAAAAICAAAABXNsb3RfCQABpAAAAAEFAAAABHNsb3QBAAAAB2dldFNsb3QAAAABAAAABHNsb3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAACmdldFNsb3RLZXkAAAABBQAAAARzbG90AQAAAAtnZXRNYWtlcktleQAAAAEAAAAGZ2FtZUlkCQABLAAAAAIJAAEsAAAAAgIAAAAFZ2FtZV8JAAGkAAAAAQUAAAAGZ2FtZUlkAgAAAAZfbWFrZXIBAAAACGdldE1ha2VyAAAAAQAAAAZnYW1lSWQJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAALZ2V0TWFrZXJLZXkAAAABBQAAAAZnYW1lSWQBAAAAC2dldFRha2VyS2V5AAAAAQAAAAZnYW1lSWQJAAEsAAAAAgkAASwAAAACAgAAAAVnYW1lXwkAAaQAAAABBQAAAAZnYW1lSWQCAAAABl90YWtlcgEAAAAIZ2V0VGFrZXIAAAABAAAABmdhbWVJZAkBAAAADHRyeUdldFN0cmluZwAAAAEJAQAAAAtnZXRUYWtlcktleQAAAAEFAAAABmdhbWVJZAEAAAANZ2V0QmV0RWdnc0tleQAAAAEAAAAGZ2FtZUlkCQABLAAAAAIJAAEsAAAAAgIAAAAFZ2FtZV8JAAGkAAAAAQUAAAAGZ2FtZUlkAgAAAAhfYmV0RWdncwEAAAAKZ2V0QmV0RWdncwAAAAEAAAAGZ2FtZUlkCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAQAAAA1nZXRCZXRFZ2dzS2V5AAAAAQUAAAAGZ2FtZUlkAQAAAB1nZXRXYWl0aW5nRXhwaXJhdGlvbkhlaWdodEtleQAAAAEAAAAGZ2FtZUlkCQABLAAAAAIJAAEsAAAAAgIAAAAFZ2FtZV8JAAGkAAAAAQUAAAAGZ2FtZUlkAgAAABhfd2FpdGluZ0V4cGlyYXRpb25IZWlnaHQBAAAAGmdldFdhaXRpbmdFeHBpcmF0aW9uSGVpZ2h0AAAAAQAAAAZnYW1lSWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAHWdldFdhaXRpbmdFeHBpcmF0aW9uSGVpZ2h0S2V5AAAAAQUAAAAGZ2FtZUlkAQAAABZnZXRFeHBpcmF0aW9uSGVpZ2h0S2V5AAAAAQAAAAZnYW1lSWQJAAEsAAAAAgkAASwAAAACAgAAAAVnYW1lXwkAAaQAAAABBQAAAAZnYW1lSWQCAAAAEV9leHBpcmF0aW9uSGVpZ2h0AQAAABNnZXRFeHBpcmF0aW9uSGVpZ2h0AAAAAQAAAAZnYW1lSWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAFmdldEV4cGlyYXRpb25IZWlnaHRLZXkAAAABBQAAAAZnYW1lSWQBAAAAEWdldFJhcml0eVJhbmdlS2V5AAAAAgAAAAZnYW1lSWQAAAANcmFuZ2VQb3NpdGlvbgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAFZ2FtZV8JAAGkAAAAAQUAAAAGZ2FtZUlkAgAAAA1fcmFyaXR5UmFuZ2VfBQAAAA1yYW5nZVBvc2l0aW9uAQAAAA5nZXRSYXJpdHlSYW5nZQAAAAIAAAAGZ2FtZUlkAAAADXJhbmdlUG9zaXRpb24JAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAAEWdldFJhcml0eVJhbmdlS2V5AAAAAgUAAAAGZ2FtZUlkBQAAAA1yYW5nZVBvc2l0aW9uAQAAAApnZXRTdGVwS2V5AAAAAQAAAAZnYW1lSWQJAAEsAAAAAgkAASwAAAACAgAAAAVnYW1lXwkAAaQAAAABBQAAAAZnYW1lSWQCAAAABV9zdGVwAQAAAAdnZXRTdGVwAAAAAQAAAAZnYW1lSWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkBAAAACmdldFN0ZXBLZXkAAAABBQAAAAZnYW1lSWQBAAAADGdldFJhcml0eUtleQAAAAMAAAAGZ2FtZUlkAAAACnBsYXllclJvbGUAAAANcmFuZ2VQb3NpdGlvbgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwA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AAAKcGxheWVyUm9sZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAF2dldFBsYXllckN1cnJlbnRHYW1lS2V5AAAAAQUAAAAMbWFrZXJBZGRyZXNzAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAXZ2V0UGxheWVyQ3VycmVudEdhbWVLZXkAAAABBQAAAAx0YWtlckFkZHJlc3MAAAAAAAAAAAAJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAA9nZXRQcml6ZVNlbnRLZXkAAAACBQAAAAZnYW1lSWQFAAAACnBsYXllclJvbGUGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXBsYXllckFkZHJlc3MJAABoAAAAAgkBAAAACmdldEJldEVnZ3MAAAABBQAAAAZnYW1lSWQAAAAAAAAAAAIFAAAAC2VnZ3NBc3NldElkBQAAAANuaWwDCQAAAAAAAAIFAAAABndpbm5lcgIAAAAEZHJhdwMJAAAAAAAAAgUAAAAKcGxheWVyUm9sZQIAAAAFbWFrZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABdnZXRQbGF5ZXJDdXJyZW50R2FtZUtleQAAAAEFAAAADG1ha2VyQWRkcmVzcwAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAD2dldFByaXplU2VudEtleQAAAAIFAAAABmdhbWVJZAUAAAAKcGxheWVyUm9sZQYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAANcGxheWVyQWRkcmVzcwkBAAAACmdldEJldEVnZ3MAAAABBQAAAAZnYW1lSWQFAAAAC2VnZ3NBc3NldElkBQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABdnZXRQbGF5ZXJDdXJyZW50R2FtZUtleQAAAAEFAAAADHRha2VyQWRkcmVzcwAAAAAAAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAD2dldFByaXplU2VudEtleQAAAAIFAAAABmdhbWVJZAUAAAAKcGxheWVy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", "height": 1668211, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DJJFE6k83nSDLzHbsbHfStV2aCsxg92EUc3aAjKENj7u Next: C42FHXJicaJQgtvAG9KEiMSyirEZAXevrVo1jCgUhRmY Diff:
OldNewDifferences
126126 func S (z,P) = n(R(z, P))
127127
128128
129-func T (z,U) = (((("game_" + toString(z)) + "_") + U) + "_duckOrder")
129+func T (z,P) = (((("game_" + toString(z)) + "_") + P) + "_duckOrder")
130130
131131
132-func V (z,U) = n(T(z, U))
132+func U (z,P) = n(T(z, P))
133133
134134
135-func W (z,U) = (((("game_" + toString(z)) + "_") + U) + "_withdrawStatus")
135+func V (z,P) = (((("game_" + toString(z)) + "_") + P) + "_prizeSent")
136136
137137
138-func X (z,U) = p(W(z, U))
138+func W (z,P) = p(V(z, P))
139139
140140
141-func Y (z,U,Z,aa,ab,K,ac) = {
142- let ad = L(z, K)
143- if (if (if (if ((ad == 5))
144- then (40 > ab)
141+func X (z,P,Y,Z,aa,K,ab) = {
142+ let ac = L(z, K)
143+ if (if (if (if ((ac == 5))
144+ then (40 > aa)
145145 else false)
146146 then true
147- else (ab >= (ad * 10)))
147+ else (aa >= (ac * 10)))
148148 then true
149- else (((ad - 1) * 10) > ab))
149+ else (((ac - 1) * 10) > aa))
150150 then throw("This duck doesn't fit the rarity range")
151- else [IntegerEntry(O(z, U, K), ab), IntegerEntry(M(z), (ac + 1)), IntegerEntry(H(z), (height + i)), ScriptTransfer(Z, 1, aa)]
151+ else [IntegerEntry(O(z, P, K), aa), IntegerEntry(M(z), (ab + 1)), IntegerEntry(H(z), (height + i)), ScriptTransfer(Y, 1, Z)]
152152 }
153153
154154
155-func ae (o,m) = if ((o > m))
155+func ad (o,m) = if ((o > m))
156156 then 1
157157 else if ((m > o))
158158 then -1
159159 else 0
160160
161161
162-func af (z) = {
163- let ag = split(V(z, "maker"), ",")
164- let ah = split(V(z, "taker"), ",")
165- let ai = Q(z, "maker", ag[0])
166- let aj = Q(z, "maker", ag[1])
167- let ak = Q(z, "maker", ag[2])
168- let al = Q(z, "taker", ag[0])
169- let am = Q(z, "taker", ag[1])
170- let an = Q(z, "taker", ag[2])
171- let ao = ((ae(ai, al) + ae(aj, am)) + ae(ak, an))
172- if ((ao > 0))
162+func ae (z) = {
163+ let af = split(U(z, "maker"), ",")
164+ let ag = split(U(z, "taker"), ",")
165+ let ah = Q(z, "maker", af[0])
166+ let ai = Q(z, "maker", af[1])
167+ let aj = Q(z, "maker", af[2])
168+ let ak = Q(z, "taker", af[0])
169+ let al = Q(z, "taker", af[1])
170+ let am = Q(z, "taker", af[2])
171+ let an = ((ad(ah, ak) + ad(ai, al)) + ad(aj, am))
172+ if ((an > 0))
173173 then "maker"
174- else if ((0 > ao))
174+ else if ((0 > an))
175175 then "taker"
176176 else "draw"
177177 }
178178
179179
180-func ap (aq) = if (if (if (if (if ((aq == 0))
180+func ao (ap) = if (if (if (if (if ((ap == 0))
181181 then true
182- else (aq == 3))
182+ else (ap == 3))
183183 then true
184- else (aq == 4))
184+ else (ap == 4))
185185 then true
186- else (aq == 7))
186+ else (ap == 7))
187187 then true
188- else (aq == 9))
188+ else (ap == 9))
189189 then "maker"
190- else if (if (if (if (if ((aq == 1))
190+ else if (if (if (if (if ((ap == 1))
191191 then true
192- else (aq == 2))
192+ else (ap == 2))
193193 then true
194- else (aq == 5))
194+ else (ap == 5))
195195 then true
196- else (aq == 6))
196+ else (ap == 6))
197197 then true
198- else (aq == 8))
198+ else (ap == 8))
199199 then "taker"
200200 else "draw"
201201
202202
203-func ar (z,Z,U,as) = {
204- let at = A(z)
205- let au = C(z)
206- if (X(z, U))
203+func aq (z,Y,P,ar) = {
204+ let as = A(z)
205+ let at = C(z)
206+ if (W(z, P))
207207 then throw("You have already got the prize")
208- else if ((as == U))
209- then [IntegerEntry(s(at), 0), IntegerEntry(s(au), 0), BooleanEntry(W(z, U), true), ScriptTransfer(Z, (E(z) * 2), d)]
210- else if ((as == "draw"))
211- then if ((U == "maker"))
212- then [IntegerEntry(s(at), 0), BooleanEntry(W(z, U), true), ScriptTransfer(Z, E(z), d)]
213- else [IntegerEntry(s(au), 0), BooleanEntry(W(z, U), true), ScriptTransfer(Z, E(z), d)]
208+ else if ((ar == P))
209+ then [IntegerEntry(s(as), 0), IntegerEntry(s(at), 0), BooleanEntry(V(z, P), true), ScriptTransfer(Y, (E(z) * 2), d)]
210+ else if ((ar == "draw"))
211+ then if ((P == "maker"))
212+ then [IntegerEntry(s(as), 0), BooleanEntry(V(z, P), true), ScriptTransfer(Y, E(z), d)]
213+ else [IntegerEntry(s(at), 0), BooleanEntry(V(z, P), true), ScriptTransfer(Y, E(z), d)]
214214 else throw("You lose and don't have any prize")
215215 }
216216
217217
218-@Callable(av)
219-func makeGame (w,aw,ax,ay) = {
220- let az = toBase58String(av.caller.bytes)
221- let aA = x(w)
222- let aB = value(av.payments[0])
223- let aC = (aB.amount - e)
218+@Callable(au)
219+func makeGame (w,av,aw,ax) = {
220+ let ay = toBase58String(au.caller.bytes)
221+ let az = x(w)
222+ let aA = value(au.payments[0])
223+ let aB = (aA.amount - e)
224224 let z = q()
225- if ((aB.assetId != d))
225+ if ((aA.assetId != d))
226226 then throw(("You can attach only EGGs with the following asset id: " + toBase58String(d)))
227- else if ((0 >= aC))
227+ else if ((0 >= aB))
228228 then throw("Not enough EGGs")
229- else if ((u(az) != 0))
229+ else if ((u(ay) != 0))
230230 then throw("You already have an active game")
231231 else if (if ((0 > w))
232232 then true
233233 else (w >= g))
234234 then throw("Invalid slot")
235- else if ((aA != 0))
235+ else if ((az != 0))
236236 then throw("This slot is busy")
237- else if (if ((1 > aw))
237+ else if (if ((1 > av))
238238 then true
239- else (aw > 5))
239+ else (av > 5))
240240 then throw("Invalid rarity range for the worst duck")
241- else if (if ((1 > ax))
241+ else if (if ((1 > aw))
242242 then true
243- else (ax > 5))
243+ else (aw > 5))
244244 then throw("Invalid rarity range for the medium duck")
245- else if (if ((1 > ay))
245+ else if (if ((1 > ax))
246246 then true
247- else (ay > 5))
247+ else (ax > 5))
248248 then throw("Invalid rarity range for the best duck")
249- else if ((aw >= ax))
249+ else if ((av >= aw))
250250 then throw("The medium duck must be better than the worst one")
251- else if ((ax >= ay))
251+ else if ((aw >= ax))
252252 then throw("The best duck must be better than the medium one")
253- else [IntegerEntry(s(az), z), StringEntry(y(z), az), IntegerEntry(D(z), aC), IntegerEntry(J(z, "worst"), aw), IntegerEntry(J(z, "medium"), ax), IntegerEntry(J(z, "best"), ay), IntegerEntry(F(z), (height + h)), IntegerEntry(v(w), z), IntegerEntry("next_game_id", (z + 1))]
253+ else [IntegerEntry(s(ay), z), StringEntry(y(z), ay), IntegerEntry(D(z), aB), IntegerEntry(J(z, "worst"), av), IntegerEntry(J(z, "medium"), aw), IntegerEntry(J(z, "best"), ax), IntegerEntry(F(z), (height + h)), IntegerEntry(v(w), z), IntegerEntry("next_game_id", (z + 1))]
254254 }
255255
256256
257257
258-@Callable(av)
258+@Callable(au)
259259 func takeGame (w) = {
260- let az = toBase58String(av.caller.bytes)
260+ let ay = toBase58String(au.caller.bytes)
261261 let z = x(w)
262- let aB = value(av.payments[0])
262+ let aA = value(au.payments[0])
263263 if ((x(w) == 0))
264264 then throw("This slot is empty")
265- else if ((aB.assetId != d))
265+ else if ((aA.assetId != d))
266266 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(d)))
267- else if ((aB.amount != (E(z) + f)))
267+ else if ((aA.amount != (E(z) + f)))
268268 then throw("Insufficient eggs amount")
269269 else if ((C(z) != ""))
270270 then throw("This game is already taken")
271271 else if ((height >= G(z)))
272272 then throw("This game is expired")
273- else [IntegerEntry(s(az), z), StringEntry(B(z), az), IntegerEntry(H(z), (height + i)), IntegerEntry(v(w), 0)]
273+ else [IntegerEntry(s(ay), z), StringEntry(B(z), ay), IntegerEntry(H(z), (height + i)), IntegerEntry(v(w), 0)]
274274 }
275275
276276
277277
278-@Callable(av)
278+@Callable(au)
279279 func kickGame (w) = {
280280 let z = x(w)
281281 if (if ((0 > w))
289289 else if ((C(z) != ""))
290290 then throw("This game is started")
291291 else {
292- let aD = A(z)
293-[IntegerEntry(s(aD), 0), IntegerEntry(v(w), 0), ScriptTransfer(Address(fromBase58String(aD)), (E(z) + e), d)]
292+ let aC = A(z)
293+[IntegerEntry(s(aC), 0), IntegerEntry(v(w), 0), ScriptTransfer(Address(fromBase58String(aC)), (E(z) + e), d)]
294294 }
295295 }
296296
297297
298298
299-@Callable(av)
299+@Callable(au)
300300 func pickWorstDuck (z) = {
301- let az = toBase58String(av.caller.bytes)
302- let aa = value(value(av.payments[0]).assetId)
303- let aq = N(z)
304- if (if ((value(assetInfo(aa)).issuer != Address(b)))
305- then (value(assetInfo(aa)).issuer != Address(a))
301+ let ay = toBase58String(au.caller.bytes)
302+ let Z = value(value(au.payments[0]).assetId)
303+ let ap = N(z)
304+ if (if ((value(assetInfo(Z)).issuer != Address(b)))
305+ then (value(assetInfo(Z)).issuer != Address(a))
306306 else false)
307307 then throw("Invalid NFT")
308- else if ((aq == 0))
309- then if ((az != C(z)))
308+ else if ((ap == 0))
309+ then if ((ay != C(z)))
310310 then throw("It is the taker's turn to pick now")
311311 else {
312- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
313- if ((aE == aE))
312+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
313+ if ((aD == aD))
314314 then {
315- let ab = {
316- let l = aE
315+ let aa = {
316+ let l = aD
317317 if ($isInstanceOf(l, "Int"))
318318 then {
319- let aF = l
320- aF
319+ let aE = l
320+ aE
321321 }
322322 else throw("Incorrect invoke result")
323323 }
324- Y(z, "taker", av.caller, aa, ab, "worst", 0)
324+ X(z, "taker", au.caller, Z, aa, "worst", 0)
325325 }
326326 else throw("Strict value is not equal to itself.")
327327 }
328- else if ((aq == 1))
329- then if ((az != A(z)))
328+ else if ((ap == 1))
329+ then if ((ay != A(z)))
330330 then throw("It is the maker's turn to pick now")
331331 else {
332- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
333- if ((aE == aE))
332+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
333+ if ((aD == aD))
334334 then {
335- let ab = {
336- let l = aE
335+ let aa = {
336+ let l = aD
337337 if ($isInstanceOf(l, "Int"))
338338 then {
339- let aF = l
340- aF
339+ let aE = l
340+ aE
341341 }
342342 else throw("Incorrect invoke result")
343343 }
344- Y(z, "maker", av.caller, aa, ab, "worst", 1)
344+ X(z, "maker", au.caller, Z, aa, "worst", 1)
345345 }
346346 else throw("Strict value is not equal to itself.")
347347 }
350350
351351
352352
353-@Callable(av)
353+@Callable(au)
354354 func pickMediumtDuck (z) = {
355- let az = toBase58String(av.caller.bytes)
356- let aa = value(value(av.payments[0]).assetId)
357- let aq = N(z)
358- if (if ((value(assetInfo(aa)).issuer != Address(b)))
359- then (value(assetInfo(aa)).issuer != Address(a))
355+ let ay = toBase58String(au.caller.bytes)
356+ let Z = value(value(au.payments[0]).assetId)
357+ let ap = N(z)
358+ if (if ((value(assetInfo(Z)).issuer != Address(b)))
359+ then (value(assetInfo(Z)).issuer != Address(a))
360360 else false)
361361 then throw("Invalid NFT")
362- else if ((2 > aq))
362+ else if ((2 > ap))
363363 then throw("The medium duck must be picked after the worst one")
364- else if ((aq == 2))
365- then if ((az != A(z)))
364+ else if ((ap == 2))
365+ then if ((ay != A(z)))
366366 then throw("It is the maker's turn to pick now")
367367 else {
368- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
369- if ((aE == aE))
368+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
369+ if ((aD == aD))
370370 then {
371- let ab = {
372- let l = aE
371+ let aa = {
372+ let l = aD
373373 if ($isInstanceOf(l, "Int"))
374374 then {
375- let aF = l
376- aF
375+ let aE = l
376+ aE
377377 }
378378 else throw("Incorrect invoke result")
379379 }
380- Y(z, "maker", av.caller, aa, ab, "medium", 2)
380+ X(z, "maker", au.caller, Z, aa, "medium", 2)
381381 }
382382 else throw("Strict value is not equal to itself.")
383383 }
384- else if ((aq == 3))
385- then if ((az != C(z)))
384+ else if ((ap == 3))
385+ then if ((ay != C(z)))
386386 then throw("It is the taker's turn to pick now")
387387 else {
388- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
389- if ((aE == aE))
388+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
389+ if ((aD == aD))
390390 then {
391- let ab = {
392- let l = aE
391+ let aa = {
392+ let l = aD
393393 if ($isInstanceOf(l, "Int"))
394394 then {
395- let aF = l
396- aF
395+ let aE = l
396+ aE
397397 }
398398 else throw("Incorrect invoke result")
399399 }
400- Y(z, "taker", av.caller, aa, ab, "medium", 3)
400+ X(z, "taker", au.caller, Z, aa, "medium", 3)
401401 }
402402 else throw("Strict value is not equal to itself.")
403403 }
406406
407407
408408
409-@Callable(av)
409+@Callable(au)
410410 func pickBestDuck (z) = {
411- let az = toBase58String(av.caller.bytes)
412- let aa = value(value(av.payments[0]).assetId)
413- let aq = N(z)
414- if (if ((value(assetInfo(aa)).issuer != Address(b)))
415- then (value(assetInfo(aa)).issuer != Address(a))
411+ let ay = toBase58String(au.caller.bytes)
412+ let Z = value(value(au.payments[0]).assetId)
413+ let ap = N(z)
414+ if (if ((value(assetInfo(Z)).issuer != Address(b)))
415+ then (value(assetInfo(Z)).issuer != Address(a))
416416 else false)
417417 then throw("Invalid NFT")
418- else if ((4 > aq))
418+ else if ((4 > ap))
419419 then throw("The best duck must be picked after the worst and the medium ones")
420- else if ((aq == 4))
421- then if ((az != C(z)))
420+ else if ((ap == 4))
421+ then if ((ay != C(z)))
422422 then throw("It is the taker's turn to pick now")
423423 else {
424- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
425- if ((aE == aE))
424+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
425+ if ((aD == aD))
426426 then {
427- let ab = {
428- let l = aE
427+ let aa = {
428+ let l = aD
429429 if ($isInstanceOf(l, "Int"))
430430 then {
431- let aF = l
432- aF
431+ let aE = l
432+ aE
433433 }
434434 else throw("Incorrect invoke result")
435435 }
436- Y(z, "taker", av.caller, aa, ab, "best", 4)
436+ X(z, "taker", au.caller, Z, aa, "best", 4)
437437 }
438438 else throw("Strict value is not equal to itself.")
439439 }
440- else if ((aq == 5))
441- then if ((az != A(z)))
440+ else if ((ap == 5))
441+ then if ((ay != A(z)))
442442 then throw("It is the maker's turn to pick now")
443443 else {
444- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
445- if ((aE == aE))
444+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
445+ if ((aD == aD))
446446 then {
447- let ab = {
448- let l = aE
447+ let aa = {
448+ let l = aD
449449 if ($isInstanceOf(l, "Int"))
450450 then {
451- let aF = l
452- aF
451+ let aE = l
452+ aE
453453 }
454454 else throw("Incorrect invoke result")
455455 }
456- Y(z, "maker", av.caller, aa, ab, "best", 5)
456+ X(z, "maker", au.caller, Z, aa, "best", 5)
457457 }
458458 else throw("Strict value is not equal to itself.")
459459 }
462462
463463
464464
465-@Callable(av)
466-func commit (z,aG) = {
467- let az = toBase58String(av.caller.bytes)
468- let aq = N(z)
469- if ((6 > aq))
465+@Callable(au)
466+func commit (z,aF) = {
467+ let ay = toBase58String(au.caller.bytes)
468+ let ap = N(z)
469+ if ((6 > ap))
470470 then throw("Ducks hasn't been picked yet")
471- else if ((aq == 6))
472- then if ((az != A(z)))
471+ else if ((ap == 6))
472+ then if ((ay != A(z)))
473473 then throw("It is the maker's turn to commit now")
474- else [StringEntry(R(z, "maker"), aG), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
475- else if ((aq == 7))
476- then if ((az != C(z)))
474+ else [StringEntry(R(z, "maker"), aF), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
475+ else if ((ap == 7))
476+ then if ((ay != C(z)))
477477 then throw("It is the taker's turn to commit now")
478- else [StringEntry(R(z, "taker"), aG), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
478+ else [StringEntry(R(z, "taker"), aF), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
479479 else throw("Commit is finished")
480480 }
481481
482482
483483
484-@Callable(av)
485-func reveal (z,aH,aI) = {
486- let az = toBase58String(av.caller.bytes)
487- let aq = N(z)
488- if ((8 > aq))
484+@Callable(au)
485+func reveal (z,aG,aH) = {
486+ let ay = toBase58String(au.caller.bytes)
487+ let ap = N(z)
488+ if ((8 > ap))
489489 then throw("Reveal is not started")
490- else if (if (if (if (if (if ((aH != "worst,medium,best"))
490+ else if (if (if (if (if (if ((aG != "worst,medium,best"))
491491 then true
492- else (aH != "worst,best,medium"))
492+ else (aG != "worst,best,medium"))
493493 then true
494- else (aH != "medium,worst,best"))
494+ else (aG != "medium,worst,best"))
495495 then true
496- else (aH != "medium,best,worst"))
496+ else (aG != "medium,best,worst"))
497497 then true
498- else (aH != "best,worst,medium"))
498+ else (aG != "best,worst,medium"))
499499 then true
500- else (aH != "best,medium,worst"))
500+ else (aG != "best,medium,worst"))
501501 then throw("Invalid duckOrder")
502- else if ((aq == 8))
503- then if ((az != A(z)))
502+ else if ((ap == 8))
503+ then if ((ay != A(z)))
504504 then throw("It is the maker's turn to reveal now")
505- else if ((toBase58String(sha256(toBytes((aH + aI)))) != S(z, "maker")))
505+ else if ((toBase58String(sha256(toBytes((aG + aH)))) != S(z, "maker")))
506506 then throw("reveal data is not valid")
507- else [StringEntry(T(z, "maker"), aH), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
508- else if ((aq == 9))
509- then if ((az != C(z)))
507+ else [StringEntry(T(z, "maker"), aG), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
508+ else if ((ap == 9))
509+ then if ((ay != C(z)))
510510 then throw("It is the taker's turn to reveal now")
511- else if ((toBase58String(sha256(toBytes((aH + aI)))) != S(z, "taker")))
511+ else if ((toBase58String(sha256(toBytes((aG + aH)))) != S(z, "taker")))
512512 then throw("reveal data is not valid")
513- else [StringEntry(T(z, "taker"), aH), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
513+ else [StringEntry(T(z, "taker"), aG), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
514514 else throw("Reveal is finished")
515515 }
516516
517517
518518
519-@Callable(av)
519+@Callable(au)
520520 func getPrize (z) = {
521- let az = toBase58String(av.caller.bytes)
522- let aq = N(z)
523- if ((aq != 10))
521+ let ay = toBase58String(au.caller.bytes)
522+ let ap = N(z)
523+ if ((ap != 10))
524524 then throw("Game is not finished")
525- else if ((az == A(z)))
526- then ar(z, av.caller, "maker", af(z))
527- else if ((az == C(z)))
528- then ar(z, av.caller, "taker", af(z))
525+ else if ((ay == A(z)))
526+ then aq(z, au.caller, "maker", ae(z))
527+ else if ((ay == C(z)))
528+ then aq(z, au.caller, "taker", ae(z))
529529 else throw("Invalid caller address")
530530 }
531531
532532
533533
534-@Callable(av)
534+@Callable(au)
535535 func getPrizeExpired (z) = {
536- let az = toBase58String(av.caller.bytes)
537- let aq = N(z)
538- if ((aq == 10))
536+ let ay = toBase58String(au.caller.bytes)
537+ let ap = N(z)
538+ if ((ap == 10))
539539 then throw("Game is finished, call getPrize instead")
540540 else if ((I(z) > height))
541541 then throw("Game is not expired")
542- else if ((az == A(z)))
543- then ar(z, av.caller, "maker", ap(aq))
544- else if ((az == C(z)))
545- then ar(z, av.caller, "taker", ap(aq))
542+ else if ((ay == A(z)))
543+ then aq(z, au.caller, "maker", ao(ap))
544+ else if ((ay == C(z)))
545+ then aq(z, au.caller, "taker", ao(ap))
546546 else throw("Invalid caller address")
547547 }
548548
549549
550-@Verifier(aJ)
551-func aK () = sigVerify(aJ.bodyBytes, aJ.proofs[0], aJ.senderPublicKey)
550+@Verifier(aI)
551+func aJ () = sigVerify(aI.bodyBytes, aI.proofs[0], aI.senderPublicKey)
552552
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'3MtBigTsaeevrcJAEwVcr4quwkqcrtnjoAh'
55
66 let b = base58'3MtBigTsaeevrcJAEwVcr4quwkqcrtnjoAh'
77
88 let c = base58'3NBznG19rEYUAcnukTRTtwJHBVKQLbobVdC'
99
1010 let d = base58'3VUCuh9dWqe54SdzzNUkXhFXpc8UQynnJVh42B7MjNzN'
1111
1212 let e = 1
1313
1414 let f = 1
1515
1616 let g = 10
1717
1818 let h = 5
1919
2020 let i = 3
2121
2222 func j (k) = {
2323 let l = getInteger(this, k)
2424 if ($isInstanceOf(l, "Int"))
2525 then {
2626 let m = l
2727 m
2828 }
2929 else 0
3030 }
3131
3232
3333 func n (k) = {
3434 let l = getString(this, k)
3535 if ($isInstanceOf(l, "String"))
3636 then {
3737 let o = l
3838 o
3939 }
4040 else ""
4141 }
4242
4343
4444 func p (k) = {
4545 let l = getBoolean(this, k)
4646 if ($isInstanceOf(l, "Boolean"))
4747 then {
4848 let m = l
4949 m
5050 }
5151 else false
5252 }
5353
5454
5555 func q () = {
5656 let r = j("nextGameId")
5757 if ((r == 0))
5858 then 1
5959 else r
6060 }
6161
6262
6363 func s (t) = ("currentGame_" + t)
6464
6565
6666 func u (t) = j(s(t))
6767
6868
6969 func v (w) = ("slot_" + toString(w))
7070
7171
7272 func x (w) = j(v(w))
7373
7474
7575 func y (z) = (("game_" + toString(z)) + "_maker")
7676
7777
7878 func A (z) = n(y(z))
7979
8080
8181 func B (z) = (("game_" + toString(z)) + "_taker")
8282
8383
8484 func C (z) = n(B(z))
8585
8686
8787 func D (z) = (("game_" + toString(z)) + "_betEggs")
8888
8989
9090 func E (z) = j(D(z))
9191
9292
9393 func F (z) = (("game_" + toString(z)) + "_waitingExpirationHeight")
9494
9595
9696 func G (z) = j(F(z))
9797
9898
9999 func H (z) = (("game_" + toString(z)) + "_expirationHeight")
100100
101101
102102 func I (z) = j(H(z))
103103
104104
105105 func J (z,K) = ((("game_" + toString(z)) + "_rarityRange_") + K)
106106
107107
108108 func L (z,K) = j(J(z, K))
109109
110110
111111 func M (z) = (("game_" + toString(z)) + "_step")
112112
113113
114114 func N (z) = j(M(z))
115115
116116
117117 func O (z,P,K) = (((((("game_" + toString(z)) + "_") + P) + "_") + K) + "Rarity")
118118
119119
120120 func Q (z,P,K) = j(O(z, P, K))
121121
122122
123123 func R (z,P) = (((("game_" + toString(z)) + "_") + P) + "_commit")
124124
125125
126126 func S (z,P) = n(R(z, P))
127127
128128
129-func T (z,U) = (((("game_" + toString(z)) + "_") + U) + "_duckOrder")
129+func T (z,P) = (((("game_" + toString(z)) + "_") + P) + "_duckOrder")
130130
131131
132-func V (z,U) = n(T(z, U))
132+func U (z,P) = n(T(z, P))
133133
134134
135-func W (z,U) = (((("game_" + toString(z)) + "_") + U) + "_withdrawStatus")
135+func V (z,P) = (((("game_" + toString(z)) + "_") + P) + "_prizeSent")
136136
137137
138-func X (z,U) = p(W(z, U))
138+func W (z,P) = p(V(z, P))
139139
140140
141-func Y (z,U,Z,aa,ab,K,ac) = {
142- let ad = L(z, K)
143- if (if (if (if ((ad == 5))
144- then (40 > ab)
141+func X (z,P,Y,Z,aa,K,ab) = {
142+ let ac = L(z, K)
143+ if (if (if (if ((ac == 5))
144+ then (40 > aa)
145145 else false)
146146 then true
147- else (ab >= (ad * 10)))
147+ else (aa >= (ac * 10)))
148148 then true
149- else (((ad - 1) * 10) > ab))
149+ else (((ac - 1) * 10) > aa))
150150 then throw("This duck doesn't fit the rarity range")
151- else [IntegerEntry(O(z, U, K), ab), IntegerEntry(M(z), (ac + 1)), IntegerEntry(H(z), (height + i)), ScriptTransfer(Z, 1, aa)]
151+ else [IntegerEntry(O(z, P, K), aa), IntegerEntry(M(z), (ab + 1)), IntegerEntry(H(z), (height + i)), ScriptTransfer(Y, 1, Z)]
152152 }
153153
154154
155-func ae (o,m) = if ((o > m))
155+func ad (o,m) = if ((o > m))
156156 then 1
157157 else if ((m > o))
158158 then -1
159159 else 0
160160
161161
162-func af (z) = {
163- let ag = split(V(z, "maker"), ",")
164- let ah = split(V(z, "taker"), ",")
165- let ai = Q(z, "maker", ag[0])
166- let aj = Q(z, "maker", ag[1])
167- let ak = Q(z, "maker", ag[2])
168- let al = Q(z, "taker", ag[0])
169- let am = Q(z, "taker", ag[1])
170- let an = Q(z, "taker", ag[2])
171- let ao = ((ae(ai, al) + ae(aj, am)) + ae(ak, an))
172- if ((ao > 0))
162+func ae (z) = {
163+ let af = split(U(z, "maker"), ",")
164+ let ag = split(U(z, "taker"), ",")
165+ let ah = Q(z, "maker", af[0])
166+ let ai = Q(z, "maker", af[1])
167+ let aj = Q(z, "maker", af[2])
168+ let ak = Q(z, "taker", af[0])
169+ let al = Q(z, "taker", af[1])
170+ let am = Q(z, "taker", af[2])
171+ let an = ((ad(ah, ak) + ad(ai, al)) + ad(aj, am))
172+ if ((an > 0))
173173 then "maker"
174- else if ((0 > ao))
174+ else if ((0 > an))
175175 then "taker"
176176 else "draw"
177177 }
178178
179179
180-func ap (aq) = if (if (if (if (if ((aq == 0))
180+func ao (ap) = if (if (if (if (if ((ap == 0))
181181 then true
182- else (aq == 3))
182+ else (ap == 3))
183183 then true
184- else (aq == 4))
184+ else (ap == 4))
185185 then true
186- else (aq == 7))
186+ else (ap == 7))
187187 then true
188- else (aq == 9))
188+ else (ap == 9))
189189 then "maker"
190- else if (if (if (if (if ((aq == 1))
190+ else if (if (if (if (if ((ap == 1))
191191 then true
192- else (aq == 2))
192+ else (ap == 2))
193193 then true
194- else (aq == 5))
194+ else (ap == 5))
195195 then true
196- else (aq == 6))
196+ else (ap == 6))
197197 then true
198- else (aq == 8))
198+ else (ap == 8))
199199 then "taker"
200200 else "draw"
201201
202202
203-func ar (z,Z,U,as) = {
204- let at = A(z)
205- let au = C(z)
206- if (X(z, U))
203+func aq (z,Y,P,ar) = {
204+ let as = A(z)
205+ let at = C(z)
206+ if (W(z, P))
207207 then throw("You have already got the prize")
208- else if ((as == U))
209- then [IntegerEntry(s(at), 0), IntegerEntry(s(au), 0), BooleanEntry(W(z, U), true), ScriptTransfer(Z, (E(z) * 2), d)]
210- else if ((as == "draw"))
211- then if ((U == "maker"))
212- then [IntegerEntry(s(at), 0), BooleanEntry(W(z, U), true), ScriptTransfer(Z, E(z), d)]
213- else [IntegerEntry(s(au), 0), BooleanEntry(W(z, U), true), ScriptTransfer(Z, E(z), d)]
208+ else if ((ar == P))
209+ then [IntegerEntry(s(as), 0), IntegerEntry(s(at), 0), BooleanEntry(V(z, P), true), ScriptTransfer(Y, (E(z) * 2), d)]
210+ else if ((ar == "draw"))
211+ then if ((P == "maker"))
212+ then [IntegerEntry(s(as), 0), BooleanEntry(V(z, P), true), ScriptTransfer(Y, E(z), d)]
213+ else [IntegerEntry(s(at), 0), BooleanEntry(V(z, P), true), ScriptTransfer(Y, E(z), d)]
214214 else throw("You lose and don't have any prize")
215215 }
216216
217217
218-@Callable(av)
219-func makeGame (w,aw,ax,ay) = {
220- let az = toBase58String(av.caller.bytes)
221- let aA = x(w)
222- let aB = value(av.payments[0])
223- let aC = (aB.amount - e)
218+@Callable(au)
219+func makeGame (w,av,aw,ax) = {
220+ let ay = toBase58String(au.caller.bytes)
221+ let az = x(w)
222+ let aA = value(au.payments[0])
223+ let aB = (aA.amount - e)
224224 let z = q()
225- if ((aB.assetId != d))
225+ if ((aA.assetId != d))
226226 then throw(("You can attach only EGGs with the following asset id: " + toBase58String(d)))
227- else if ((0 >= aC))
227+ else if ((0 >= aB))
228228 then throw("Not enough EGGs")
229- else if ((u(az) != 0))
229+ else if ((u(ay) != 0))
230230 then throw("You already have an active game")
231231 else if (if ((0 > w))
232232 then true
233233 else (w >= g))
234234 then throw("Invalid slot")
235- else if ((aA != 0))
235+ else if ((az != 0))
236236 then throw("This slot is busy")
237- else if (if ((1 > aw))
237+ else if (if ((1 > av))
238238 then true
239- else (aw > 5))
239+ else (av > 5))
240240 then throw("Invalid rarity range for the worst duck")
241- else if (if ((1 > ax))
241+ else if (if ((1 > aw))
242242 then true
243- else (ax > 5))
243+ else (aw > 5))
244244 then throw("Invalid rarity range for the medium duck")
245- else if (if ((1 > ay))
245+ else if (if ((1 > ax))
246246 then true
247- else (ay > 5))
247+ else (ax > 5))
248248 then throw("Invalid rarity range for the best duck")
249- else if ((aw >= ax))
249+ else if ((av >= aw))
250250 then throw("The medium duck must be better than the worst one")
251- else if ((ax >= ay))
251+ else if ((aw >= ax))
252252 then throw("The best duck must be better than the medium one")
253- else [IntegerEntry(s(az), z), StringEntry(y(z), az), IntegerEntry(D(z), aC), IntegerEntry(J(z, "worst"), aw), IntegerEntry(J(z, "medium"), ax), IntegerEntry(J(z, "best"), ay), IntegerEntry(F(z), (height + h)), IntegerEntry(v(w), z), IntegerEntry("next_game_id", (z + 1))]
253+ else [IntegerEntry(s(ay), z), StringEntry(y(z), ay), IntegerEntry(D(z), aB), IntegerEntry(J(z, "worst"), av), IntegerEntry(J(z, "medium"), aw), IntegerEntry(J(z, "best"), ax), IntegerEntry(F(z), (height + h)), IntegerEntry(v(w), z), IntegerEntry("next_game_id", (z + 1))]
254254 }
255255
256256
257257
258-@Callable(av)
258+@Callable(au)
259259 func takeGame (w) = {
260- let az = toBase58String(av.caller.bytes)
260+ let ay = toBase58String(au.caller.bytes)
261261 let z = x(w)
262- let aB = value(av.payments[0])
262+ let aA = value(au.payments[0])
263263 if ((x(w) == 0))
264264 then throw("This slot is empty")
265- else if ((aB.assetId != d))
265+ else if ((aA.assetId != d))
266266 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(d)))
267- else if ((aB.amount != (E(z) + f)))
267+ else if ((aA.amount != (E(z) + f)))
268268 then throw("Insufficient eggs amount")
269269 else if ((C(z) != ""))
270270 then throw("This game is already taken")
271271 else if ((height >= G(z)))
272272 then throw("This game is expired")
273- else [IntegerEntry(s(az), z), StringEntry(B(z), az), IntegerEntry(H(z), (height + i)), IntegerEntry(v(w), 0)]
273+ else [IntegerEntry(s(ay), z), StringEntry(B(z), ay), IntegerEntry(H(z), (height + i)), IntegerEntry(v(w), 0)]
274274 }
275275
276276
277277
278-@Callable(av)
278+@Callable(au)
279279 func kickGame (w) = {
280280 let z = x(w)
281281 if (if ((0 > w))
282282 then true
283283 else (w >= g))
284284 then throw("Invalid slot")
285285 else if ((z == 0))
286286 then throw("Slot is empty")
287287 else if ((G(z) > height))
288288 then throw("Waiting is not finished yet")
289289 else if ((C(z) != ""))
290290 then throw("This game is started")
291291 else {
292- let aD = A(z)
293-[IntegerEntry(s(aD), 0), IntegerEntry(v(w), 0), ScriptTransfer(Address(fromBase58String(aD)), (E(z) + e), d)]
292+ let aC = A(z)
293+[IntegerEntry(s(aC), 0), IntegerEntry(v(w), 0), ScriptTransfer(Address(fromBase58String(aC)), (E(z) + e), d)]
294294 }
295295 }
296296
297297
298298
299-@Callable(av)
299+@Callable(au)
300300 func pickWorstDuck (z) = {
301- let az = toBase58String(av.caller.bytes)
302- let aa = value(value(av.payments[0]).assetId)
303- let aq = N(z)
304- if (if ((value(assetInfo(aa)).issuer != Address(b)))
305- then (value(assetInfo(aa)).issuer != Address(a))
301+ let ay = toBase58String(au.caller.bytes)
302+ let Z = value(value(au.payments[0]).assetId)
303+ let ap = N(z)
304+ if (if ((value(assetInfo(Z)).issuer != Address(b)))
305+ then (value(assetInfo(Z)).issuer != Address(a))
306306 else false)
307307 then throw("Invalid NFT")
308- else if ((aq == 0))
309- then if ((az != C(z)))
308+ else if ((ap == 0))
309+ then if ((ay != C(z)))
310310 then throw("It is the taker's turn to pick now")
311311 else {
312- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
313- if ((aE == aE))
312+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
313+ if ((aD == aD))
314314 then {
315- let ab = {
316- let l = aE
315+ let aa = {
316+ let l = aD
317317 if ($isInstanceOf(l, "Int"))
318318 then {
319- let aF = l
320- aF
319+ let aE = l
320+ aE
321321 }
322322 else throw("Incorrect invoke result")
323323 }
324- Y(z, "taker", av.caller, aa, ab, "worst", 0)
324+ X(z, "taker", au.caller, Z, aa, "worst", 0)
325325 }
326326 else throw("Strict value is not equal to itself.")
327327 }
328- else if ((aq == 1))
329- then if ((az != A(z)))
328+ else if ((ap == 1))
329+ then if ((ay != A(z)))
330330 then throw("It is the maker's turn to pick now")
331331 else {
332- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
333- if ((aE == aE))
332+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
333+ if ((aD == aD))
334334 then {
335- let ab = {
336- let l = aE
335+ let aa = {
336+ let l = aD
337337 if ($isInstanceOf(l, "Int"))
338338 then {
339- let aF = l
340- aF
339+ let aE = l
340+ aE
341341 }
342342 else throw("Incorrect invoke result")
343343 }
344- Y(z, "maker", av.caller, aa, ab, "worst", 1)
344+ X(z, "maker", au.caller, Z, aa, "worst", 1)
345345 }
346346 else throw("Strict value is not equal to itself.")
347347 }
348348 else throw("The worst duck has already been picked")
349349 }
350350
351351
352352
353-@Callable(av)
353+@Callable(au)
354354 func pickMediumtDuck (z) = {
355- let az = toBase58String(av.caller.bytes)
356- let aa = value(value(av.payments[0]).assetId)
357- let aq = N(z)
358- if (if ((value(assetInfo(aa)).issuer != Address(b)))
359- then (value(assetInfo(aa)).issuer != Address(a))
355+ let ay = toBase58String(au.caller.bytes)
356+ let Z = value(value(au.payments[0]).assetId)
357+ let ap = N(z)
358+ if (if ((value(assetInfo(Z)).issuer != Address(b)))
359+ then (value(assetInfo(Z)).issuer != Address(a))
360360 else false)
361361 then throw("Invalid NFT")
362- else if ((2 > aq))
362+ else if ((2 > ap))
363363 then throw("The medium duck must be picked after the worst one")
364- else if ((aq == 2))
365- then if ((az != A(z)))
364+ else if ((ap == 2))
365+ then if ((ay != A(z)))
366366 then throw("It is the maker's turn to pick now")
367367 else {
368- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
369- if ((aE == aE))
368+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
369+ if ((aD == aD))
370370 then {
371- let ab = {
372- let l = aE
371+ let aa = {
372+ let l = aD
373373 if ($isInstanceOf(l, "Int"))
374374 then {
375- let aF = l
376- aF
375+ let aE = l
376+ aE
377377 }
378378 else throw("Incorrect invoke result")
379379 }
380- Y(z, "maker", av.caller, aa, ab, "medium", 2)
380+ X(z, "maker", au.caller, Z, aa, "medium", 2)
381381 }
382382 else throw("Strict value is not equal to itself.")
383383 }
384- else if ((aq == 3))
385- then if ((az != C(z)))
384+ else if ((ap == 3))
385+ then if ((ay != C(z)))
386386 then throw("It is the taker's turn to pick now")
387387 else {
388- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
389- if ((aE == aE))
388+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
389+ if ((aD == aD))
390390 then {
391- let ab = {
392- let l = aE
391+ let aa = {
392+ let l = aD
393393 if ($isInstanceOf(l, "Int"))
394394 then {
395- let aF = l
396- aF
395+ let aE = l
396+ aE
397397 }
398398 else throw("Incorrect invoke result")
399399 }
400- Y(z, "taker", av.caller, aa, ab, "medium", 3)
400+ X(z, "taker", au.caller, Z, aa, "medium", 3)
401401 }
402402 else throw("Strict value is not equal to itself.")
403403 }
404404 else throw("The medium duck has already been picked")
405405 }
406406
407407
408408
409-@Callable(av)
409+@Callable(au)
410410 func pickBestDuck (z) = {
411- let az = toBase58String(av.caller.bytes)
412- let aa = value(value(av.payments[0]).assetId)
413- let aq = N(z)
414- if (if ((value(assetInfo(aa)).issuer != Address(b)))
415- then (value(assetInfo(aa)).issuer != Address(a))
411+ let ay = toBase58String(au.caller.bytes)
412+ let Z = value(value(au.payments[0]).assetId)
413+ let ap = N(z)
414+ if (if ((value(assetInfo(Z)).issuer != Address(b)))
415+ then (value(assetInfo(Z)).issuer != Address(a))
416416 else false)
417417 then throw("Invalid NFT")
418- else if ((4 > aq))
418+ else if ((4 > ap))
419419 then throw("The best duck must be picked after the worst and the medium ones")
420- else if ((aq == 4))
421- then if ((az != C(z)))
420+ else if ((ap == 4))
421+ then if ((ay != C(z)))
422422 then throw("It is the taker's turn to pick now")
423423 else {
424- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
425- if ((aE == aE))
424+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
425+ if ((aD == aD))
426426 then {
427- let ab = {
428- let l = aE
427+ let aa = {
428+ let l = aD
429429 if ($isInstanceOf(l, "Int"))
430430 then {
431- let aF = l
432- aF
431+ let aE = l
432+ aE
433433 }
434434 else throw("Incorrect invoke result")
435435 }
436- Y(z, "taker", av.caller, aa, ab, "best", 4)
436+ X(z, "taker", au.caller, Z, aa, "best", 4)
437437 }
438438 else throw("Strict value is not equal to itself.")
439439 }
440- else if ((aq == 5))
441- then if ((az != A(z)))
440+ else if ((ap == 5))
441+ then if ((ay != A(z)))
442442 then throw("It is the maker's turn to pick now")
443443 else {
444- let aE = invoke(Address(c), "getAssetRarityCallable", [aa], nil)
445- if ((aE == aE))
444+ let aD = invoke(Address(c), "getAssetRarityCallable", [Z], nil)
445+ if ((aD == aD))
446446 then {
447- let ab = {
448- let l = aE
447+ let aa = {
448+ let l = aD
449449 if ($isInstanceOf(l, "Int"))
450450 then {
451- let aF = l
452- aF
451+ let aE = l
452+ aE
453453 }
454454 else throw("Incorrect invoke result")
455455 }
456- Y(z, "maker", av.caller, aa, ab, "best", 5)
456+ X(z, "maker", au.caller, Z, aa, "best", 5)
457457 }
458458 else throw("Strict value is not equal to itself.")
459459 }
460460 else throw("The best duck has already been picked")
461461 }
462462
463463
464464
465-@Callable(av)
466-func commit (z,aG) = {
467- let az = toBase58String(av.caller.bytes)
468- let aq = N(z)
469- if ((6 > aq))
465+@Callable(au)
466+func commit (z,aF) = {
467+ let ay = toBase58String(au.caller.bytes)
468+ let ap = N(z)
469+ if ((6 > ap))
470470 then throw("Ducks hasn't been picked yet")
471- else if ((aq == 6))
472- then if ((az != A(z)))
471+ else if ((ap == 6))
472+ then if ((ay != A(z)))
473473 then throw("It is the maker's turn to commit now")
474- else [StringEntry(R(z, "maker"), aG), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
475- else if ((aq == 7))
476- then if ((az != C(z)))
474+ else [StringEntry(R(z, "maker"), aF), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
475+ else if ((ap == 7))
476+ then if ((ay != C(z)))
477477 then throw("It is the taker's turn to commit now")
478- else [StringEntry(R(z, "taker"), aG), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
478+ else [StringEntry(R(z, "taker"), aF), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
479479 else throw("Commit is finished")
480480 }
481481
482482
483483
484-@Callable(av)
485-func reveal (z,aH,aI) = {
486- let az = toBase58String(av.caller.bytes)
487- let aq = N(z)
488- if ((8 > aq))
484+@Callable(au)
485+func reveal (z,aG,aH) = {
486+ let ay = toBase58String(au.caller.bytes)
487+ let ap = N(z)
488+ if ((8 > ap))
489489 then throw("Reveal is not started")
490- else if (if (if (if (if (if ((aH != "worst,medium,best"))
490+ else if (if (if (if (if (if ((aG != "worst,medium,best"))
491491 then true
492- else (aH != "worst,best,medium"))
492+ else (aG != "worst,best,medium"))
493493 then true
494- else (aH != "medium,worst,best"))
494+ else (aG != "medium,worst,best"))
495495 then true
496- else (aH != "medium,best,worst"))
496+ else (aG != "medium,best,worst"))
497497 then true
498- else (aH != "best,worst,medium"))
498+ else (aG != "best,worst,medium"))
499499 then true
500- else (aH != "best,medium,worst"))
500+ else (aG != "best,medium,worst"))
501501 then throw("Invalid duckOrder")
502- else if ((aq == 8))
503- then if ((az != A(z)))
502+ else if ((ap == 8))
503+ then if ((ay != A(z)))
504504 then throw("It is the maker's turn to reveal now")
505- else if ((toBase58String(sha256(toBytes((aH + aI)))) != S(z, "maker")))
505+ else if ((toBase58String(sha256(toBytes((aG + aH)))) != S(z, "maker")))
506506 then throw("reveal data is not valid")
507- else [StringEntry(T(z, "maker"), aH), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
508- else if ((aq == 9))
509- then if ((az != C(z)))
507+ else [StringEntry(T(z, "maker"), aG), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
508+ else if ((ap == 9))
509+ then if ((ay != C(z)))
510510 then throw("It is the taker's turn to reveal now")
511- else if ((toBase58String(sha256(toBytes((aH + aI)))) != S(z, "taker")))
511+ else if ((toBase58String(sha256(toBytes((aG + aH)))) != S(z, "taker")))
512512 then throw("reveal data is not valid")
513- else [StringEntry(T(z, "taker"), aH), IntegerEntry(M(z), (aq + 1)), IntegerEntry(H(z), (height + i))]
513+ else [StringEntry(T(z, "taker"), aG), IntegerEntry(M(z), (ap + 1)), IntegerEntry(H(z), (height + i))]
514514 else throw("Reveal is finished")
515515 }
516516
517517
518518
519-@Callable(av)
519+@Callable(au)
520520 func getPrize (z) = {
521- let az = toBase58String(av.caller.bytes)
522- let aq = N(z)
523- if ((aq != 10))
521+ let ay = toBase58String(au.caller.bytes)
522+ let ap = N(z)
523+ if ((ap != 10))
524524 then throw("Game is not finished")
525- else if ((az == A(z)))
526- then ar(z, av.caller, "maker", af(z))
527- else if ((az == C(z)))
528- then ar(z, av.caller, "taker", af(z))
525+ else if ((ay == A(z)))
526+ then aq(z, au.caller, "maker", ae(z))
527+ else if ((ay == C(z)))
528+ then aq(z, au.caller, "taker", ae(z))
529529 else throw("Invalid caller address")
530530 }
531531
532532
533533
534-@Callable(av)
534+@Callable(au)
535535 func getPrizeExpired (z) = {
536- let az = toBase58String(av.caller.bytes)
537- let aq = N(z)
538- if ((aq == 10))
536+ let ay = toBase58String(au.caller.bytes)
537+ let ap = N(z)
538+ if ((ap == 10))
539539 then throw("Game is finished, call getPrize instead")
540540 else if ((I(z) > height))
541541 then throw("Game is not expired")
542- else if ((az == A(z)))
543- then ar(z, av.caller, "maker", ap(aq))
544- else if ((az == C(z)))
545- then ar(z, av.caller, "taker", ap(aq))
542+ else if ((ay == A(z)))
543+ then aq(z, au.caller, "maker", ao(ap))
544+ else if ((ay == C(z)))
545+ then aq(z, au.caller, "taker", ao(ap))
546546 else throw("Invalid caller address")
547547 }
548548
549549
550-@Verifier(aJ)
551-func aK () = sigVerify(aJ.bodyBytes, aJ.proofs[0], aJ.senderPublicKey)
550+@Verifier(aI)
551+func aJ () = sigVerify(aI.bodyBytes, aI.proofs[0], aI.senderPublicKey)
552552

github/deemru/w8io/873ac7e 
170.14 ms