tx · CXAQE2sUzziUugnuDdd1QgowME2WvwuKftAau73VSrzV

3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv:  -0.01400000 Waves

2021.06.25 00:55 [2649783] smart account 3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv > SELF 0.00000000 Waves

{ "type": 13, "id": "CXAQE2sUzziUugnuDdd1QgowME2WvwuKftAau73VSrzV", "fee": 1400000, "feeAssetId": null, "timestamp": 1624571763903, "version": 2, "chainId": 87, "sender": "3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv", "senderPublicKey": "EBHsV7TQYm4qS2V7iZXEXwcbUdEYQyCSLEdY2AMvLPns", "proofs": [ "4vF6A5VHUN9oNu1YJbyPdbwfAvGnPiCKb3AbaiURSeR8demje8qJh625X5P3dy9WfknrjLnBHTpSmndFJvBqNYQh" ], "script": "base64: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", "height": 2649783, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C3zKQYe379tkS9HfpPZ8poLF4sV3BuEwagkDF1SLabYG Next: 7zLEybnVi5hJEdxmDb5Yfi3Cic7cxP1GvT7Gv1ynj1sj Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
55
6-let b = 100
6+let b = 2
77
8-let c = 10000
8+let c = 10
99
10-let d = 1000000
10+let d = 6
1111
12-let e = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
12+let e = "HATCHING_STARTED"
1313
14-let f = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
14+let f = "HATCHING_FINISHED"
1515
16-let g = ["A", "B", "C", "D", "E", "F", "G"]
17-
18-func h () = 684
16+func g (h,i) = (((h + "_") + toBase58String(i)) + "_status")
1917
2018
21-func i (j) = {
22- let k = getInteger(this, j)
23- if ($isInstanceOf(k, "Int"))
24- then {
25- let l = k
26- l
27- }
28- else 0
19+func j (h,i) = (((h + "_") + toBase58String(i)) + "_fh")
20+
21+
22+func k (h,i) = (((h + "_") + toBase58String(i)) + "_di")
23+
24+
25+func l (m) = (("stats_" + m) + "_amount")
26+
27+
28+func n (o) = {
29+ let p = {
30+ let q = getInteger(this, o)
31+ if ($isInstanceOf(q, "Int"))
32+ then {
33+ let r = q
34+ r
35+ }
36+ else 0
37+ }
38+ p
2939 }
3040
3141
32-func m (j) = {
33- let k = getString(this, j)
34- if ($isInstanceOf(k, "String"))
35- then {
36- let n = k
37- n
38- }
39- else ""
42+func s (t,i,u,v) = {
43+ let w = value(blockInfoByHeight((u - 1)))
44+ let x = sha256((i + value(w.vrf)))
45+ (toInt(x, (v * 8)) % t)
4046 }
4147
4248
43-func o (p,q) = if ((q == "A"))
44- then (p + 1)
45- else (p + 0)
49+func y (z) = n(l(z))
4650
4751
48-func r (p,q) = if ((q == "B"))
49- then (p + 1)
50- else (p + 0)
51-
52-
53-func s (p,q) = if ((q == "C"))
54- then (p + 1)
55- else (p + 0)
56-
57-
58-func t (p,q) = if ((q == "D"))
59- then (p + 1)
60- else (p + 0)
61-
62-
63-func u (p,q) = if ((q == "E"))
64- then (p + 1)
65- else (p + 0)
66-
67-
68-func v (p,q) = if ((q == "F"))
69- then (p + 1)
70- else (p + 0)
71-
72-
73-func w (p,q) = if ((q == "G"))
74- then (p + 1)
75- else (p + 0)
76-
77-
78-func x (p,q) = if ((q == "H"))
79- then (p + 1)
80- else (p + 0)
81-
82-
83-func y (z) = if (contains(z, "0"))
84- then ""
85- else z
86-
87-
88-func A (B) = {
89- let C = split(dropRight(drop(B, 5), 3), "")
90- (((((((y((toString({
91- let D = C
92- let E = size(D)
93- let F = 0
94- if ((E == 0))
95- then F
96- else {
97- let G = o(F, D[0])
98- if ((E == 1))
99- then G
100- else {
101- let H = o(G, D[1])
102- if ((E == 2))
103- then H
104- else {
105- let I = o(H, D[2])
106- if ((E == 3))
107- then I
108- else {
109- let J = o(I, D[3])
110- if ((E == 4))
111- then J
112- else {
113- let K = o(J, D[4])
114- if ((E == 5))
115- then K
116- else {
117- let L = o(K, D[5])
118- if ((E == 6))
119- then L
120- else {
121- let M = o(L, D[6])
122- if ((E == 7))
123- then M
124- else {
125- let N = o(M, D[7])
126- if ((E == 8))
127- then N
128- else {
129- let O = o(N, D[8])
130- throw("List size exceed 8")
131- }
132- }
133- }
134- }
135- }
136- }
137- }
138- }
139- }
140- }) + "A")) + y((toString({
141- let P = C
142- let Q = size(P)
143- let R = 0
144- if ((Q == 0))
145- then R
146- else {
147- let S = r(R, P[0])
148- if ((Q == 1))
149- then S
150- else {
151- let T = r(S, P[1])
152- if ((Q == 2))
153- then T
154- else {
155- let U = r(T, P[2])
156- if ((Q == 3))
157- then U
158- else {
159- let V = r(U, P[3])
160- if ((Q == 4))
161- then V
162- else {
163- let W = r(V, P[4])
164- if ((Q == 5))
165- then W
166- else {
167- let X = r(W, P[5])
168- if ((Q == 6))
169- then X
170- else {
171- let Y = r(X, P[6])
172- if ((Q == 7))
173- then Y
174- else {
175- let Z = r(Y, P[7])
176- if ((Q == 8))
177- then Z
178- else {
179- let aa = r(Z, P[8])
180- throw("List size exceed 8")
181- }
182- }
183- }
184- }
185- }
186- }
187- }
188- }
189- }
190- }) + "B"))) + y((toString({
191- let ab = C
192- let ac = size(ab)
193- let ad = 0
194- if ((ac == 0))
195- then ad
196- else {
197- let ae = s(ad, ab[0])
198- if ((ac == 1))
199- then ae
200- else {
201- let af = s(ae, ab[1])
202- if ((ac == 2))
203- then af
204- else {
205- let ag = s(af, ab[2])
206- if ((ac == 3))
207- then ag
208- else {
209- let ah = s(ag, ab[3])
210- if ((ac == 4))
211- then ah
212- else {
213- let ai = s(ah, ab[4])
214- if ((ac == 5))
215- then ai
216- else {
217- let aj = s(ai, ab[5])
218- if ((ac == 6))
219- then aj
220- else {
221- let ak = s(aj, ab[6])
222- if ((ac == 7))
223- then ak
224- else {
225- let al = s(ak, ab[7])
226- if ((ac == 8))
227- then al
228- else {
229- let am = s(al, ab[8])
230- throw("List size exceed 8")
231- }
232- }
233- }
234- }
235- }
236- }
237- }
238- }
239- }
240- }) + "C"))) + y((toString({
241- let an = C
242- let ao = size(an)
243- let ap = 0
244- if ((ao == 0))
245- then ap
246- else {
247- let aq = t(ap, an[0])
248- if ((ao == 1))
249- then aq
250- else {
251- let ar = t(aq, an[1])
252- if ((ao == 2))
253- then ar
254- else {
255- let as = t(ar, an[2])
256- if ((ao == 3))
257- then as
258- else {
259- let at = t(as, an[3])
260- if ((ao == 4))
261- then at
262- else {
263- let au = t(at, an[4])
264- if ((ao == 5))
265- then au
266- else {
267- let av = t(au, an[5])
268- if ((ao == 6))
269- then av
270- else {
271- let aw = t(av, an[6])
272- if ((ao == 7))
273- then aw
274- else {
275- let ax = t(aw, an[7])
276- if ((ao == 8))
277- then ax
278- else {
279- let ay = t(ax, an[8])
280- throw("List size exceed 8")
281- }
282- }
283- }
284- }
285- }
286- }
287- }
288- }
289- }
290- }) + "D"))) + y((toString({
291- let az = C
292- let aA = size(az)
293- let aB = 0
294- if ((aA == 0))
295- then aB
296- else {
297- let aC = u(aB, az[0])
298- if ((aA == 1))
299- then aC
300- else {
301- let aD = u(aC, az[1])
302- if ((aA == 2))
303- then aD
304- else {
305- let aE = u(aD, az[2])
306- if ((aA == 3))
307- then aE
308- else {
309- let aF = u(aE, az[3])
310- if ((aA == 4))
311- then aF
312- else {
313- let aG = u(aF, az[4])
314- if ((aA == 5))
315- then aG
316- else {
317- let aH = u(aG, az[5])
318- if ((aA == 6))
319- then aH
320- else {
321- let aI = u(aH, az[6])
322- if ((aA == 7))
323- then aI
324- else {
325- let aJ = u(aI, az[7])
326- if ((aA == 8))
327- then aJ
328- else {
329- let aK = u(aJ, az[8])
330- throw("List size exceed 8")
331- }
332- }
333- }
334- }
335- }
336- }
337- }
338- }
339- }
340- }) + "E"))) + y((toString({
341- let aL = C
342- let aM = size(aL)
343- let aN = 0
344- if ((aM == 0))
345- then aN
346- else {
347- let aO = v(aN, aL[0])
348- if ((aM == 1))
349- then aO
350- else {
351- let aP = v(aO, aL[1])
352- if ((aM == 2))
353- then aP
354- else {
355- let aQ = v(aP, aL[2])
356- if ((aM == 3))
357- then aQ
358- else {
359- let aR = v(aQ, aL[3])
360- if ((aM == 4))
361- then aR
362- else {
363- let aS = v(aR, aL[4])
364- if ((aM == 5))
365- then aS
366- else {
367- let aT = v(aS, aL[5])
368- if ((aM == 6))
369- then aT
370- else {
371- let aU = v(aT, aL[6])
372- if ((aM == 7))
373- then aU
374- else {
375- let aV = v(aU, aL[7])
376- if ((aM == 8))
377- then aV
378- else {
379- let aW = v(aV, aL[8])
380- throw("List size exceed 8")
381- }
382- }
383- }
384- }
385- }
386- }
387- }
388- }
389- }
390- }) + "F"))) + y((toString({
391- let aX = C
392- let aY = size(aX)
393- let aZ = 0
394- if ((aY == 0))
395- then aZ
396- else {
397- let ba = w(aZ, aX[0])
398- if ((aY == 1))
399- then ba
400- else {
401- let bb = w(ba, aX[1])
402- if ((aY == 2))
403- then bb
404- else {
405- let bc = w(bb, aX[2])
406- if ((aY == 3))
407- then bc
408- else {
409- let bd = w(bc, aX[3])
410- if ((aY == 4))
411- then bd
412- else {
413- let be = w(bd, aX[4])
414- if ((aY == 5))
415- then be
416- else {
417- let bf = w(be, aX[5])
418- if ((aY == 6))
419- then bf
420- else {
421- let bg = w(bf, aX[6])
422- if ((aY == 7))
423- then bg
424- else {
425- let bh = w(bg, aX[7])
426- if ((aY == 8))
427- then bh
428- else {
429- let bi = w(bh, aX[8])
430- throw("List size exceed 8")
431- }
432- }
433- }
434- }
435- }
436- }
437- }
438- }
439- }
440- }) + "G"))) + y((toString({
441- let bj = C
442- let bk = size(bj)
443- let bl = 0
444- if ((bk == 0))
445- then bl
446- else {
447- let bm = x(bl, bj[0])
448- if ((bk == 1))
449- then bm
450- else {
451- let bn = x(bm, bj[1])
452- if ((bk == 2))
453- then bn
454- else {
455- let bo = x(bn, bj[2])
456- if ((bk == 3))
457- then bo
458- else {
459- let bp = x(bo, bj[3])
460- if ((bk == 4))
461- then bp
462- else {
463- let bq = x(bp, bj[4])
464- if ((bk == 5))
465- then bq
466- else {
467- let br = x(bq, bj[5])
468- if ((bk == 6))
469- then br
470- else {
471- let bs = x(br, bj[6])
472- if ((bk == 7))
473- then bs
474- else {
475- let bt = x(bs, bj[7])
476- if ((bk == 8))
477- then bt
478- else {
479- let bu = x(bt, bj[8])
480- throw("List size exceed 8")
481- }
482- }
483- }
484- }
485- }
486- }
487- }
488- }
489- }
490- }) + "H")))
52+func A (i,u) = {
53+ let B = s(500, i, u, 0)
54+ if (if ((B == 1))
55+ then (y("DUCK-WWWWWWWW-JU") == 0)
56+ else false)
57+ then $Tuple2("DUCK-WWWWWWWW-JU", "8W-J")
58+ else {
59+ let C = s(4, i, u, 0)
60+ let D = s(4, i, u, 1)
61+ let E = if ((D == 0))
62+ then "Y"
63+ else if ((D == 1))
64+ then "G"
65+ else if ((D == 2))
66+ then "B"
67+ else "R"
68+ if ((C == 0))
69+ then $Tuple2(("DUCK-FFFFFFFF-G" + E), "8F-G")
70+ else if ((C == 1))
71+ then $Tuple2(("DUCK-DDDDDDDD-G" + E), "8D-G")
72+ else if ((C == 2))
73+ then $Tuple2(("DUCK-CCCCCCCC-G" + E), "8C-G")
74+ else $Tuple2(("DUCK-EEEEEEEE-G" + E), "8E-G")
75+ }
49176 }
49277
49378
494-func bv (bw) = if ((bw == "G"))
495- then e
496- else f
497-
498-
499-func bx (C,bw) = {
500- let by = getIntegerValue(Address(bv(bw)), (("stats_" + C) + "_quantity"))
501- let bz = pow((10000 / by), 4, 5, 1, 2, HALFDOWN)
502- if ((bz > 0))
503- then bz
504- else 2
79+func F (G) = {
80+ let H = G
81+ let I = c
82+ let J = d
83+ let K = pow((100 + ((H * I) / (10 * J))), 2, 5, 1, 2, DOWN)
84+ K
50585 }
50686
50787
508-func bA (bB) = {
509- let B = value(assetInfo(bB)).name
510- let bw = take(takeRight(B, 2), 1)
511- let bC = ((A(B) + "-") + bw)
512- $Tuple2(bC, bx(bC, bw))
88+@Callable(L)
89+func startDuckHatching () = {
90+ let G = n("ducks_amount")
91+ let M = F(G)
92+ let N = value(L.payments[0])
93+ if ((N.assetId != a))
94+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a)))
95+ else if ((M > N.amount))
96+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(M)))
97+ else [StringEntry(g(toString(L.caller), L.transactionId), e), IntegerEntry(j(toString(L.caller), L.transactionId), (height + b)), IntegerEntry("ducks_amount", (G + 1)), IntegerEntry("ducks_last_price", M), ScriptTransfer(L.caller, (N.amount - M), a)]
51398 }
51499
515100
516-func bD (bE,bB) = i((((("address_" + bE) + "_asset_") + bB) + "_farmingPower"))
517101
518-
519-func bF (bC) = {
520- let bG = m(("assets_" + bC))
521- if ((bG == ""))
522- then nil
523- else split(bG, ",")
524- }
525-
526-
527-func bH (bI,bJ,bK) = (bI + (((c * h()) * (height - bJ)) / bK))
528-
529-
530-func bL () = if ((i("total_farmingPower") > 0))
531- then {
532- let bI = i("total_lastCheckInterest")
533- let bJ = i("total_lastCheckInterestHeight")
534- let bK = i("total_farmingPower")
535- bH(bI, bJ, bK)
536- }
537- else if ((i("total_startHeight") != 0))
538- then i("total_lastCheckInterest")
539- else throw("farming is not launched, yet")
540-
541-
542-func bM (bE,bB,bN) = {
543- let bO = i((((("address_" + bE) + "_asset_") + bB) + "_lastCheckInterest"))
544- let bP = bL()
545- (bN * (bP - bO))
546- }
547-
548-
549-func bQ (bB,bR) = {
550- let bS = m((("assets_" + bR) + "_locked"))
551- if ((bS == ""))
552- then bB
553- else ((bS + ",") + bB)
554- }
555-
556-
557-func bT (bE,bB,bN) = {
558- let bU = toBase58String(bB)
559-[IntegerEntry("total_farmingPower", (i("total_farmingPower") + bN)), IntegerEntry("total_lastCheckInterest", bL()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_farmingPower"), bN), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_lastCheckInterest"), bL())]
560- }
561-
562-
563-func bV (bE,bB,bW,bX,bN) = {
564- let bU = toBase58String(bB)
565-[IntegerEntry("total_farmingPower", (i("total_farmingPower") - bN)), IntegerEntry("total_lastCheckInterest", bL()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_farmingPower"), 0), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_lastCheckInterest"), bL()), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_withdrawnAmount"), (i((((("address_" + bE) + "_asset_") + bU) + "_withdrawnAmount")) + (bX * d))), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_lastCheckFarmedAmount"), (i((((("address_" + bE) + "_asset_") + bU) + "_lastCheckFarmedAmount")) + bW))]
566- }
567-
568-
569-@Callable(bY)
570-func init () = if ((bY.caller != this))
571- then throw("admin only")
572- else [IntegerEntry("total_startHeight", height)]
573-
574-
575-
576-@Callable(bY)
577-func buyPerch (bZ) = if ((0 > value(indexOf(["B", "R", "G", "Y"], bZ))))
578- then throw("you need to set color properly")
579- else {
580- let ca = value(bY.payments[0])
581- if ((ca.assetId != a))
582- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a)))
583- else if ((ca.amount != b))
584- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(b)))
585- else {
586- let cb = ((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ)
587- let cc = i(cb)
588-[IntegerEntry(cb, (cc + 1))]
589- }
590- }
591-
592-
593-
594-@Callable(bY)
595-func stakeNFT () = nil
596-
597-
598-
599-@Callable(bY)
600-func unstakeNFT (bU) = nil
601-
602-
603-
604-@Callable(bY)
605-func stakeJackpot (bZ) = {
606- let bB = value(value(bY.payments[0]).assetId)
607- let bE = toString(bY.caller)
608- let cd = i(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ))
609- if ((takeRight(value(value(assetInfo(bB)).name), 1) != "U"))
610- then throw("jackpot only")
611- else if ((0 >= cd))
612- then throw(("no perches available for the color " + bZ))
102+@Callable(L)
103+func finishDuckHatching (O) = {
104+ let i = fromBase58String(O)
105+ let P = g(toString(L.caller), i)
106+ let Q = j(toString(L.caller), i)
107+ let R = k(toString(L.caller), i)
108+ let S = getStringValue(this, P)
109+ let u = getIntegerValue(this, Q)
110+ if ((S == f))
111+ then {
112+ let T = getStringValue(this, k(toString(L.caller), i))
113+ throw(("The duck was hatched and claimed already, here is the folowing: " + T))
114+ }
115+ else if ((u > height))
116+ then throw((((("Hatching is not finished yet " + toString((u - height))) + " blocks remaining, it will take around ") + toString((u - height))) + " minutes"))
613117 else {
614- let bN = 100
615- (bT(bE, bB, bN) ++ [IntegerEntry(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ), (cd - 1)), StringEntry((((("address_" + toString(bY.caller)) + "_asset_") + toBase58String(bB)) + "_perchColor"), bZ)])
118+ let U = A(i, u)
119+ let V = U._1
120+ let W = U._2
121+ let X = (("{\"genotype\": \"" + V) + "\", \"crossbreeding\": true}")
122+ let Y = Issue(V, X, 1, 0, false, unit, u)
123+ let Z = calculateAssetId(Y)
124+ let aa = (n(l(V)) + 1)
125+[StringEntry(P, f), StringEntry(R, toBase58String(Z)), StringEntry(toBase58String(Z), R), IntegerEntry(l(V), aa), IntegerEntry((("stats_" + W) + "_quantity"), (n((("stats_" + W) + "_quantity")) + 1)), Y, ScriptTransfer(L.caller, 1, Z)]
616126 }
617127 }
618128
619129
620-
621-@Callable(bY)
622-func unstakeJackpot (bU) = {
623- let bB = fromBase58String(bU)
624- let bE = toString(bY.caller)
625- let bZ = m((((("address_" + bE) + "_asset_") + bU) + "_perchColor"))
626- let bN = bD(bE, bU)
627- let ce = bM(bE, bU, bN)
628- let cf = (ce + i((((("address_" + bE) + "_asset_") + bU) + "_lastCheckFarmedAmount")))
629- let bX = i((((("address_" + bE) + "_asset_") + bU) + "_withdrawnAmount"))
630- let cg = ((cf - bX) / (c * 100))
631- if ((takeRight(value(value(assetInfo(bB)).name), 1) != "U"))
632- then throw("jackpot only")
633- else if ((bN > 0))
634- then {
635- let ch = bV(bE, bB, ce, cg, bN)
636- (ch ++ [IntegerEntry(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ), (i(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ)) + 1)), ScriptTransfer(bY.caller, cg, a), ScriptTransfer(bY.caller, 1, bB)])
637- }
638- else throw("")
639- }
640-
641-
642-
643-@Callable(bY)
644-func claimReward (bU) = nil
645-
646-
647-@Verifier(ci)
648-func cj () = sigVerify(ci.bodyBytes, ci.proofs[0], ci.senderPublicKey)
130+@Verifier(ab)
131+func ac () = sigVerify(ab.bodyBytes, ab.proofs[0], ab.senderPublicKey)
649132
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
55
6-let b = 100
6+let b = 2
77
8-let c = 10000
8+let c = 10
99
10-let d = 1000000
10+let d = 6
1111
12-let e = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
12+let e = "HATCHING_STARTED"
1313
14-let f = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
14+let f = "HATCHING_FINISHED"
1515
16-let g = ["A", "B", "C", "D", "E", "F", "G"]
17-
18-func h () = 684
16+func g (h,i) = (((h + "_") + toBase58String(i)) + "_status")
1917
2018
21-func i (j) = {
22- let k = getInteger(this, j)
23- if ($isInstanceOf(k, "Int"))
24- then {
25- let l = k
26- l
27- }
28- else 0
19+func j (h,i) = (((h + "_") + toBase58String(i)) + "_fh")
20+
21+
22+func k (h,i) = (((h + "_") + toBase58String(i)) + "_di")
23+
24+
25+func l (m) = (("stats_" + m) + "_amount")
26+
27+
28+func n (o) = {
29+ let p = {
30+ let q = getInteger(this, o)
31+ if ($isInstanceOf(q, "Int"))
32+ then {
33+ let r = q
34+ r
35+ }
36+ else 0
37+ }
38+ p
2939 }
3040
3141
32-func m (j) = {
33- let k = getString(this, j)
34- if ($isInstanceOf(k, "String"))
35- then {
36- let n = k
37- n
38- }
39- else ""
42+func s (t,i,u,v) = {
43+ let w = value(blockInfoByHeight((u - 1)))
44+ let x = sha256((i + value(w.vrf)))
45+ (toInt(x, (v * 8)) % t)
4046 }
4147
4248
43-func o (p,q) = if ((q == "A"))
44- then (p + 1)
45- else (p + 0)
49+func y (z) = n(l(z))
4650
4751
48-func r (p,q) = if ((q == "B"))
49- then (p + 1)
50- else (p + 0)
51-
52-
53-func s (p,q) = if ((q == "C"))
54- then (p + 1)
55- else (p + 0)
56-
57-
58-func t (p,q) = if ((q == "D"))
59- then (p + 1)
60- else (p + 0)
61-
62-
63-func u (p,q) = if ((q == "E"))
64- then (p + 1)
65- else (p + 0)
66-
67-
68-func v (p,q) = if ((q == "F"))
69- then (p + 1)
70- else (p + 0)
71-
72-
73-func w (p,q) = if ((q == "G"))
74- then (p + 1)
75- else (p + 0)
76-
77-
78-func x (p,q) = if ((q == "H"))
79- then (p + 1)
80- else (p + 0)
81-
82-
83-func y (z) = if (contains(z, "0"))
84- then ""
85- else z
86-
87-
88-func A (B) = {
89- let C = split(dropRight(drop(B, 5), 3), "")
90- (((((((y((toString({
91- let D = C
92- let E = size(D)
93- let F = 0
94- if ((E == 0))
95- then F
96- else {
97- let G = o(F, D[0])
98- if ((E == 1))
99- then G
100- else {
101- let H = o(G, D[1])
102- if ((E == 2))
103- then H
104- else {
105- let I = o(H, D[2])
106- if ((E == 3))
107- then I
108- else {
109- let J = o(I, D[3])
110- if ((E == 4))
111- then J
112- else {
113- let K = o(J, D[4])
114- if ((E == 5))
115- then K
116- else {
117- let L = o(K, D[5])
118- if ((E == 6))
119- then L
120- else {
121- let M = o(L, D[6])
122- if ((E == 7))
123- then M
124- else {
125- let N = o(M, D[7])
126- if ((E == 8))
127- then N
128- else {
129- let O = o(N, D[8])
130- throw("List size exceed 8")
131- }
132- }
133- }
134- }
135- }
136- }
137- }
138- }
139- }
140- }) + "A")) + y((toString({
141- let P = C
142- let Q = size(P)
143- let R = 0
144- if ((Q == 0))
145- then R
146- else {
147- let S = r(R, P[0])
148- if ((Q == 1))
149- then S
150- else {
151- let T = r(S, P[1])
152- if ((Q == 2))
153- then T
154- else {
155- let U = r(T, P[2])
156- if ((Q == 3))
157- then U
158- else {
159- let V = r(U, P[3])
160- if ((Q == 4))
161- then V
162- else {
163- let W = r(V, P[4])
164- if ((Q == 5))
165- then W
166- else {
167- let X = r(W, P[5])
168- if ((Q == 6))
169- then X
170- else {
171- let Y = r(X, P[6])
172- if ((Q == 7))
173- then Y
174- else {
175- let Z = r(Y, P[7])
176- if ((Q == 8))
177- then Z
178- else {
179- let aa = r(Z, P[8])
180- throw("List size exceed 8")
181- }
182- }
183- }
184- }
185- }
186- }
187- }
188- }
189- }
190- }) + "B"))) + y((toString({
191- let ab = C
192- let ac = size(ab)
193- let ad = 0
194- if ((ac == 0))
195- then ad
196- else {
197- let ae = s(ad, ab[0])
198- if ((ac == 1))
199- then ae
200- else {
201- let af = s(ae, ab[1])
202- if ((ac == 2))
203- then af
204- else {
205- let ag = s(af, ab[2])
206- if ((ac == 3))
207- then ag
208- else {
209- let ah = s(ag, ab[3])
210- if ((ac == 4))
211- then ah
212- else {
213- let ai = s(ah, ab[4])
214- if ((ac == 5))
215- then ai
216- else {
217- let aj = s(ai, ab[5])
218- if ((ac == 6))
219- then aj
220- else {
221- let ak = s(aj, ab[6])
222- if ((ac == 7))
223- then ak
224- else {
225- let al = s(ak, ab[7])
226- if ((ac == 8))
227- then al
228- else {
229- let am = s(al, ab[8])
230- throw("List size exceed 8")
231- }
232- }
233- }
234- }
235- }
236- }
237- }
238- }
239- }
240- }) + "C"))) + y((toString({
241- let an = C
242- let ao = size(an)
243- let ap = 0
244- if ((ao == 0))
245- then ap
246- else {
247- let aq = t(ap, an[0])
248- if ((ao == 1))
249- then aq
250- else {
251- let ar = t(aq, an[1])
252- if ((ao == 2))
253- then ar
254- else {
255- let as = t(ar, an[2])
256- if ((ao == 3))
257- then as
258- else {
259- let at = t(as, an[3])
260- if ((ao == 4))
261- then at
262- else {
263- let au = t(at, an[4])
264- if ((ao == 5))
265- then au
266- else {
267- let av = t(au, an[5])
268- if ((ao == 6))
269- then av
270- else {
271- let aw = t(av, an[6])
272- if ((ao == 7))
273- then aw
274- else {
275- let ax = t(aw, an[7])
276- if ((ao == 8))
277- then ax
278- else {
279- let ay = t(ax, an[8])
280- throw("List size exceed 8")
281- }
282- }
283- }
284- }
285- }
286- }
287- }
288- }
289- }
290- }) + "D"))) + y((toString({
291- let az = C
292- let aA = size(az)
293- let aB = 0
294- if ((aA == 0))
295- then aB
296- else {
297- let aC = u(aB, az[0])
298- if ((aA == 1))
299- then aC
300- else {
301- let aD = u(aC, az[1])
302- if ((aA == 2))
303- then aD
304- else {
305- let aE = u(aD, az[2])
306- if ((aA == 3))
307- then aE
308- else {
309- let aF = u(aE, az[3])
310- if ((aA == 4))
311- then aF
312- else {
313- let aG = u(aF, az[4])
314- if ((aA == 5))
315- then aG
316- else {
317- let aH = u(aG, az[5])
318- if ((aA == 6))
319- then aH
320- else {
321- let aI = u(aH, az[6])
322- if ((aA == 7))
323- then aI
324- else {
325- let aJ = u(aI, az[7])
326- if ((aA == 8))
327- then aJ
328- else {
329- let aK = u(aJ, az[8])
330- throw("List size exceed 8")
331- }
332- }
333- }
334- }
335- }
336- }
337- }
338- }
339- }
340- }) + "E"))) + y((toString({
341- let aL = C
342- let aM = size(aL)
343- let aN = 0
344- if ((aM == 0))
345- then aN
346- else {
347- let aO = v(aN, aL[0])
348- if ((aM == 1))
349- then aO
350- else {
351- let aP = v(aO, aL[1])
352- if ((aM == 2))
353- then aP
354- else {
355- let aQ = v(aP, aL[2])
356- if ((aM == 3))
357- then aQ
358- else {
359- let aR = v(aQ, aL[3])
360- if ((aM == 4))
361- then aR
362- else {
363- let aS = v(aR, aL[4])
364- if ((aM == 5))
365- then aS
366- else {
367- let aT = v(aS, aL[5])
368- if ((aM == 6))
369- then aT
370- else {
371- let aU = v(aT, aL[6])
372- if ((aM == 7))
373- then aU
374- else {
375- let aV = v(aU, aL[7])
376- if ((aM == 8))
377- then aV
378- else {
379- let aW = v(aV, aL[8])
380- throw("List size exceed 8")
381- }
382- }
383- }
384- }
385- }
386- }
387- }
388- }
389- }
390- }) + "F"))) + y((toString({
391- let aX = C
392- let aY = size(aX)
393- let aZ = 0
394- if ((aY == 0))
395- then aZ
396- else {
397- let ba = w(aZ, aX[0])
398- if ((aY == 1))
399- then ba
400- else {
401- let bb = w(ba, aX[1])
402- if ((aY == 2))
403- then bb
404- else {
405- let bc = w(bb, aX[2])
406- if ((aY == 3))
407- then bc
408- else {
409- let bd = w(bc, aX[3])
410- if ((aY == 4))
411- then bd
412- else {
413- let be = w(bd, aX[4])
414- if ((aY == 5))
415- then be
416- else {
417- let bf = w(be, aX[5])
418- if ((aY == 6))
419- then bf
420- else {
421- let bg = w(bf, aX[6])
422- if ((aY == 7))
423- then bg
424- else {
425- let bh = w(bg, aX[7])
426- if ((aY == 8))
427- then bh
428- else {
429- let bi = w(bh, aX[8])
430- throw("List size exceed 8")
431- }
432- }
433- }
434- }
435- }
436- }
437- }
438- }
439- }
440- }) + "G"))) + y((toString({
441- let bj = C
442- let bk = size(bj)
443- let bl = 0
444- if ((bk == 0))
445- then bl
446- else {
447- let bm = x(bl, bj[0])
448- if ((bk == 1))
449- then bm
450- else {
451- let bn = x(bm, bj[1])
452- if ((bk == 2))
453- then bn
454- else {
455- let bo = x(bn, bj[2])
456- if ((bk == 3))
457- then bo
458- else {
459- let bp = x(bo, bj[3])
460- if ((bk == 4))
461- then bp
462- else {
463- let bq = x(bp, bj[4])
464- if ((bk == 5))
465- then bq
466- else {
467- let br = x(bq, bj[5])
468- if ((bk == 6))
469- then br
470- else {
471- let bs = x(br, bj[6])
472- if ((bk == 7))
473- then bs
474- else {
475- let bt = x(bs, bj[7])
476- if ((bk == 8))
477- then bt
478- else {
479- let bu = x(bt, bj[8])
480- throw("List size exceed 8")
481- }
482- }
483- }
484- }
485- }
486- }
487- }
488- }
489- }
490- }) + "H")))
52+func A (i,u) = {
53+ let B = s(500, i, u, 0)
54+ if (if ((B == 1))
55+ then (y("DUCK-WWWWWWWW-JU") == 0)
56+ else false)
57+ then $Tuple2("DUCK-WWWWWWWW-JU", "8W-J")
58+ else {
59+ let C = s(4, i, u, 0)
60+ let D = s(4, i, u, 1)
61+ let E = if ((D == 0))
62+ then "Y"
63+ else if ((D == 1))
64+ then "G"
65+ else if ((D == 2))
66+ then "B"
67+ else "R"
68+ if ((C == 0))
69+ then $Tuple2(("DUCK-FFFFFFFF-G" + E), "8F-G")
70+ else if ((C == 1))
71+ then $Tuple2(("DUCK-DDDDDDDD-G" + E), "8D-G")
72+ else if ((C == 2))
73+ then $Tuple2(("DUCK-CCCCCCCC-G" + E), "8C-G")
74+ else $Tuple2(("DUCK-EEEEEEEE-G" + E), "8E-G")
75+ }
49176 }
49277
49378
494-func bv (bw) = if ((bw == "G"))
495- then e
496- else f
497-
498-
499-func bx (C,bw) = {
500- let by = getIntegerValue(Address(bv(bw)), (("stats_" + C) + "_quantity"))
501- let bz = pow((10000 / by), 4, 5, 1, 2, HALFDOWN)
502- if ((bz > 0))
503- then bz
504- else 2
79+func F (G) = {
80+ let H = G
81+ let I = c
82+ let J = d
83+ let K = pow((100 + ((H * I) / (10 * J))), 2, 5, 1, 2, DOWN)
84+ K
50585 }
50686
50787
508-func bA (bB) = {
509- let B = value(assetInfo(bB)).name
510- let bw = take(takeRight(B, 2), 1)
511- let bC = ((A(B) + "-") + bw)
512- $Tuple2(bC, bx(bC, bw))
88+@Callable(L)
89+func startDuckHatching () = {
90+ let G = n("ducks_amount")
91+ let M = F(G)
92+ let N = value(L.payments[0])
93+ if ((N.assetId != a))
94+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a)))
95+ else if ((M > N.amount))
96+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(M)))
97+ else [StringEntry(g(toString(L.caller), L.transactionId), e), IntegerEntry(j(toString(L.caller), L.transactionId), (height + b)), IntegerEntry("ducks_amount", (G + 1)), IntegerEntry("ducks_last_price", M), ScriptTransfer(L.caller, (N.amount - M), a)]
51398 }
51499
515100
516-func bD (bE,bB) = i((((("address_" + bE) + "_asset_") + bB) + "_farmingPower"))
517101
518-
519-func bF (bC) = {
520- let bG = m(("assets_" + bC))
521- if ((bG == ""))
522- then nil
523- else split(bG, ",")
524- }
525-
526-
527-func bH (bI,bJ,bK) = (bI + (((c * h()) * (height - bJ)) / bK))
528-
529-
530-func bL () = if ((i("total_farmingPower") > 0))
531- then {
532- let bI = i("total_lastCheckInterest")
533- let bJ = i("total_lastCheckInterestHeight")
534- let bK = i("total_farmingPower")
535- bH(bI, bJ, bK)
536- }
537- else if ((i("total_startHeight") != 0))
538- then i("total_lastCheckInterest")
539- else throw("farming is not launched, yet")
540-
541-
542-func bM (bE,bB,bN) = {
543- let bO = i((((("address_" + bE) + "_asset_") + bB) + "_lastCheckInterest"))
544- let bP = bL()
545- (bN * (bP - bO))
546- }
547-
548-
549-func bQ (bB,bR) = {
550- let bS = m((("assets_" + bR) + "_locked"))
551- if ((bS == ""))
552- then bB
553- else ((bS + ",") + bB)
554- }
555-
556-
557-func bT (bE,bB,bN) = {
558- let bU = toBase58String(bB)
559-[IntegerEntry("total_farmingPower", (i("total_farmingPower") + bN)), IntegerEntry("total_lastCheckInterest", bL()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_farmingPower"), bN), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_lastCheckInterest"), bL())]
560- }
561-
562-
563-func bV (bE,bB,bW,bX,bN) = {
564- let bU = toBase58String(bB)
565-[IntegerEntry("total_farmingPower", (i("total_farmingPower") - bN)), IntegerEntry("total_lastCheckInterest", bL()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_farmingPower"), 0), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_lastCheckInterest"), bL()), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_withdrawnAmount"), (i((((("address_" + bE) + "_asset_") + bU) + "_withdrawnAmount")) + (bX * d))), IntegerEntry((((("address_" + bE) + "_asset_") + bU) + "_lastCheckFarmedAmount"), (i((((("address_" + bE) + "_asset_") + bU) + "_lastCheckFarmedAmount")) + bW))]
566- }
567-
568-
569-@Callable(bY)
570-func init () = if ((bY.caller != this))
571- then throw("admin only")
572- else [IntegerEntry("total_startHeight", height)]
573-
574-
575-
576-@Callable(bY)
577-func buyPerch (bZ) = if ((0 > value(indexOf(["B", "R", "G", "Y"], bZ))))
578- then throw("you need to set color properly")
579- else {
580- let ca = value(bY.payments[0])
581- if ((ca.assetId != a))
582- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(a)))
583- else if ((ca.amount != b))
584- then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(b)))
585- else {
586- let cb = ((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ)
587- let cc = i(cb)
588-[IntegerEntry(cb, (cc + 1))]
589- }
590- }
591-
592-
593-
594-@Callable(bY)
595-func stakeNFT () = nil
596-
597-
598-
599-@Callable(bY)
600-func unstakeNFT (bU) = nil
601-
602-
603-
604-@Callable(bY)
605-func stakeJackpot (bZ) = {
606- let bB = value(value(bY.payments[0]).assetId)
607- let bE = toString(bY.caller)
608- let cd = i(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ))
609- if ((takeRight(value(value(assetInfo(bB)).name), 1) != "U"))
610- then throw("jackpot only")
611- else if ((0 >= cd))
612- then throw(("no perches available for the color " + bZ))
102+@Callable(L)
103+func finishDuckHatching (O) = {
104+ let i = fromBase58String(O)
105+ let P = g(toString(L.caller), i)
106+ let Q = j(toString(L.caller), i)
107+ let R = k(toString(L.caller), i)
108+ let S = getStringValue(this, P)
109+ let u = getIntegerValue(this, Q)
110+ if ((S == f))
111+ then {
112+ let T = getStringValue(this, k(toString(L.caller), i))
113+ throw(("The duck was hatched and claimed already, here is the folowing: " + T))
114+ }
115+ else if ((u > height))
116+ then throw((((("Hatching is not finished yet " + toString((u - height))) + " blocks remaining, it will take around ") + toString((u - height))) + " minutes"))
613117 else {
614- let bN = 100
615- (bT(bE, bB, bN) ++ [IntegerEntry(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ), (cd - 1)), StringEntry((((("address_" + toString(bY.caller)) + "_asset_") + toBase58String(bB)) + "_perchColor"), bZ)])
118+ let U = A(i, u)
119+ let V = U._1
120+ let W = U._2
121+ let X = (("{\"genotype\": \"" + V) + "\", \"crossbreeding\": true}")
122+ let Y = Issue(V, X, 1, 0, false, unit, u)
123+ let Z = calculateAssetId(Y)
124+ let aa = (n(l(V)) + 1)
125+[StringEntry(P, f), StringEntry(R, toBase58String(Z)), StringEntry(toBase58String(Z), R), IntegerEntry(l(V), aa), IntegerEntry((("stats_" + W) + "_quantity"), (n((("stats_" + W) + "_quantity")) + 1)), Y, ScriptTransfer(L.caller, 1, Z)]
616126 }
617127 }
618128
619129
620-
621-@Callable(bY)
622-func unstakeJackpot (bU) = {
623- let bB = fromBase58String(bU)
624- let bE = toString(bY.caller)
625- let bZ = m((((("address_" + bE) + "_asset_") + bU) + "_perchColor"))
626- let bN = bD(bE, bU)
627- let ce = bM(bE, bU, bN)
628- let cf = (ce + i((((("address_" + bE) + "_asset_") + bU) + "_lastCheckFarmedAmount")))
629- let bX = i((((("address_" + bE) + "_asset_") + bU) + "_withdrawnAmount"))
630- let cg = ((cf - bX) / (c * 100))
631- if ((takeRight(value(value(assetInfo(bB)).name), 1) != "U"))
632- then throw("jackpot only")
633- else if ((bN > 0))
634- then {
635- let ch = bV(bE, bB, ce, cg, bN)
636- (ch ++ [IntegerEntry(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ), (i(((("address_" + toString(bY.caller)) + "_perchesAvailable_") + bZ)) + 1)), ScriptTransfer(bY.caller, cg, a), ScriptTransfer(bY.caller, 1, bB)])
637- }
638- else throw("")
639- }
640-
641-
642-
643-@Callable(bY)
644-func claimReward (bU) = nil
645-
646-
647-@Verifier(ci)
648-func cj () = sigVerify(ci.bodyBytes, ci.proofs[0], ci.senderPublicKey)
130+@Verifier(ab)
131+func ac () = sigVerify(ab.bodyBytes, ab.proofs[0], ab.senderPublicKey)
649132

github/deemru/w8io/3ef1775 
64.09 ms