tx · 4zrHKEhC3pguvoHM22y2ewmLzQVii38ejakZe9oTiYHy

3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW:  -0.01400000 Waves

2021.10.21 17:32 [2821155] smart account 3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW > SELF 0.00000000 Waves

{ "type": 13, "id": "4zrHKEhC3pguvoHM22y2ewmLzQVii38ejakZe9oTiYHy", "fee": 1400000, "feeAssetId": null, "timestamp": 1634826793475, "version": 2, "chainId": 87, "sender": "3PAETTtuW7aSiyKtn9GuML3RgtV1xdq1mQW", "senderPublicKey": "DSNxHVyf38CbPoz2oSJ1b4FWqRvqFsAphCzdtrPeWPHa", "proofs": [ "4hR3MeUXRP3wsGMNNUE5cups7rqEsbxCss3pc36zFk354MTX6hLxMj3GfwFWY1QbAi1w5oGcb33BWXeWMLPTBBXV" ], "script": "base64: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AAECAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0BAAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BAAAABF0b3RhbEZhcm1pbmdQb3dlcgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAQAAAAxjYWxjSW50ZXJlc3QAAAADBQAAABBwcmV2aW91c0ludGVyZXN0BQAAABZwcmV2aW91c0ludGVyZXN0SGVpZ2h0BQAAABF0b3RhbEZhcm1pbmdQb3dlcgMJAQAAAAIhPQAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAARdG90YWxfc3RhcnRIZWlnaHQAAAAAAAAAAAAJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAAXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QJAAACAAAAAQIAAAAcZmFybWluZyBpcyBub3QgbGF1bmNoZWQsIHlldAEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADAAAAB2FkZHJlc3MAAAAHYXNzZXRJZAAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAWbGFzdENoZWNrQXNzZXRJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAdhc3NldElkAgAAABJfbGFzdENoZWNrSW50ZXJlc3QEAAAAD2N1cnJlbnRJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAABoAAAAAgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAABlAAAAAgUAAAAPY3VycmVudEludGVyZXN0BQAAABZsYXN0Q2hlY2tBc3NldEludGVyZXN0AQAAABRhZGRBc3NldElkVG9HZW5FbnRyeQAAAAIAAAAHYXNzZXRJZAAAAAhhc3NldEdlbgQAAAAMY3VycmVudFZhbHVlCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkAASwAAAACCQABLAAAAAICAAAAB2Fzc2V0c18FAAAACGFzc2V0R2VuAgAAAAdfbG9ja2VkAwkAAAAAAAACBQAAAAxjdXJyZW50VmFsdWUCAAAAAAUAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAIFAAAADGN1cnJlbnRWYWx1ZQIAAAABLAUAAAAHYXNzZXRJZAEAAAAOZ2V0U3Rha2VSZXN1bHQAAAADAAAAB2FkZHJlc3MAAAAHYXNzZXRJZAAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAFYXNzZXQJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAASdG90YWxfZmFybWluZ1Bvd2VyCQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyBQAAABFhc3NldEZhcm1pbmdQb3dlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAXdG90YWxfbGFzdENoZWNrSW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAANX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABJfbGFzdENoZWNrSW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAABQAAAANuaWwBAAAAEGdldFVuc3Rha2VSZXN1bHQAAAAFAAAAB2FkZHJlc3MAAAAHYXNzZXRJZAAAAAtyZXdhcmREZWx0YQAAAA93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b25lIG9mIHRoZSBEdWNrc3F1aWQgZ2FtZXMhIEFzIHlvdSBhbHJlYWR5IGtub3csIGFueSBsb3NzIGhhcyBpdHMgY29uc2VxdWVuY2VzLCBzbyB5b3Ugd2lsbCBiZSBub3QgYWJsZSB0byBjbGFpbSB5b3VyIGZhcm1pbmcgcmV3YXJkcyB0aWxsIHRoZSBlbmQgb2YgRHVja1NxdWlkIGdhbWUuIFF1YWNrIGluIHBlYWNlIQMJAABmAAAAAgkBAAAACGlzTG9ja2VkAAAAAAAAAAAAAAAAAAkAAAIAAAABAgAAACVFR0cgb3BlcmF0aW9ucyBhcmUgdGVtcG9yYXJpbHkgbG9ja2VkBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAAAdhZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAARYXNzZXRGYXJtaW5nUG93ZXIJAQAAAB1nZXRMYXN0S25vd25Bc3NldEZhcm1pbmdQb3dlcgAAAAIFAAAAB2FkZHJlc3MFAAAABWFzc2V0BAAAABBhc3NldFJld2FyZERlbHRhCQEAAAAUY2FsY0Fzc2V0UmV3YXJkRGVsdGEAAAADBQAAAAdhZGRyZXNzBQAAAAVhc3NldAUAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAADGZhcm1lZEFtb3VudAkAAGQAAAACBQAAABBhc3NldFJld2FyZERlbHRhCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABZfbGFzdENoZWNrRmFybWVkQW1vdW50BAAAAA93aXRoZHJhd25BbW91bnQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQEAAAABnJld2FyZAkAAGkAAAACCQAAZQAAAAIFAAAADGZhcm1lZEFtb3VudAUAAAAPd2l0aGRyYXduQW1vdW50CQAAaAAA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", "height": 2821155, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8jPVf2SF8jn4NJavWYkQSTk4czHXcqedm98tRe6znmkn Next: 4ggovozEjvDfcpf16o7AQUrJBeXdnCG5SU5Bcb326vDY Diff:
OldNewDifferences
5151 }
5252
5353
54+func isUserBlacklisted (address) = {
55+ let k = getBoolean(Address(base58'3PAHCfc8ZAwJ26bB32YK6ZNVTVBpgVnGTNc'), (("locked_" + address) + "_status"))
56+ match k {
57+ case k: Boolean =>
58+ k
59+ case _ =>
60+ false
61+ }
62+ }
63+
64+
5465 func isSymbolA (accumulated,sym) = if ((sym == "A"))
5566 then (accumulated + 1)
5667 else (accumulated + 0)
99110 func getGen (assetName) = {
100111 let genotype = split(dropRight(drop(assetName, 5), 3), "")
101112 (((((((getAmountOrClear((toString({
102- let $list22212252 = genotype
103- let $size22212252 = size($list22212252)
104- let $acc022212252 = 0
105- if (($size22212252 == 0))
106- then $acc022212252
107- else {
108- let $acc122212252 = isSymbolA($acc022212252, $list22212252[0])
109- if (($size22212252 == 1))
110- then $acc122212252
111- else {
112- let $acc222212252 = isSymbolA($acc122212252, $list22212252[1])
113- if (($size22212252 == 2))
114- then $acc222212252
115- else {
116- let $acc322212252 = isSymbolA($acc222212252, $list22212252[2])
117- if (($size22212252 == 3))
118- then $acc322212252
119- else {
120- let $acc422212252 = isSymbolA($acc322212252, $list22212252[3])
121- if (($size22212252 == 4))
122- then $acc422212252
123- else {
124- let $acc522212252 = isSymbolA($acc422212252, $list22212252[4])
125- if (($size22212252 == 5))
126- then $acc522212252
127- else {
128- let $acc622212252 = isSymbolA($acc522212252, $list22212252[5])
129- if (($size22212252 == 6))
130- then $acc622212252
131- else {
132- let $acc722212252 = isSymbolA($acc622212252, $list22212252[6])
133- if (($size22212252 == 7))
134- then $acc722212252
135- else {
136- let $acc822212252 = isSymbolA($acc722212252, $list22212252[7])
137- if (($size22212252 == 8))
138- then $acc822212252
139- else {
140- let $acc922212252 = isSymbolA($acc822212252, $list22212252[8])
141- throw("List size exceed 8")
142- }
143- }
144- }
145- }
146- }
147- }
148- }
149- }
150- }
113+ let $l = genotype
114+ let $s = size($l)
115+ let $acc0 = 0
116+ func 1 ($a,$i) = if (($i >= $s))
117+ then $a
118+ else isSymbolA($a, $l[$i])
119+
120+ func 2 ($a,$i) = if (($i >= $s))
121+ then $a
122+ else throw("List size exceeds 8")
123+
124+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
151125 }) + "A")) + getAmountOrClear((toString({
152- let $list22892320 = genotype
153- let $size22892320 = size($list22892320)
154- let $acc022892320 = 0
155- if (($size22892320 == 0))
156- then $acc022892320
157- else {
158- let $acc122892320 = isSymbolB($acc022892320, $list22892320[0])
159- if (($size22892320 == 1))
160- then $acc122892320
161- else {
162- let $acc222892320 = isSymbolB($acc122892320, $list22892320[1])
163- if (($size22892320 == 2))
164- then $acc222892320
165- else {
166- let $acc322892320 = isSymbolB($acc222892320, $list22892320[2])
167- if (($size22892320 == 3))
168- then $acc322892320
169- else {
170- let $acc422892320 = isSymbolB($acc322892320, $list22892320[3])
171- if (($size22892320 == 4))
172- then $acc422892320
173- else {
174- let $acc522892320 = isSymbolB($acc422892320, $list22892320[4])
175- if (($size22892320 == 5))
176- then $acc522892320
177- else {
178- let $acc622892320 = isSymbolB($acc522892320, $list22892320[5])
179- if (($size22892320 == 6))
180- then $acc622892320
181- else {
182- let $acc722892320 = isSymbolB($acc622892320, $list22892320[6])
183- if (($size22892320 == 7))
184- then $acc722892320
185- else {
186- let $acc822892320 = isSymbolB($acc722892320, $list22892320[7])
187- if (($size22892320 == 8))
188- then $acc822892320
189- else {
190- let $acc922892320 = isSymbolB($acc822892320, $list22892320[8])
191- throw("List size exceed 8")
192- }
193- }
194- }
195- }
196- }
197- }
198- }
199- }
200- }
126+ let $l = genotype
127+ let $s = size($l)
128+ let $acc0 = 0
129+ func 1 ($a,$i) = if (($i >= $s))
130+ then $a
131+ else isSymbolB($a, $l[$i])
132+
133+ func 2 ($a,$i) = if (($i >= $s))
134+ then $a
135+ else throw("List size exceeds 8")
136+
137+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
201138 }) + "B"))) + getAmountOrClear((toString({
202- let $list23572388 = genotype
203- let $size23572388 = size($list23572388)
204- let $acc023572388 = 0
205- if (($size23572388 == 0))
206- then $acc023572388
207- else {
208- let $acc123572388 = isSymbolC($acc023572388, $list23572388[0])
209- if (($size23572388 == 1))
210- then $acc123572388
211- else {
212- let $acc223572388 = isSymbolC($acc123572388, $list23572388[1])
213- if (($size23572388 == 2))
214- then $acc223572388
215- else {
216- let $acc323572388 = isSymbolC($acc223572388, $list23572388[2])
217- if (($size23572388 == 3))
218- then $acc323572388
219- else {
220- let $acc423572388 = isSymbolC($acc323572388, $list23572388[3])
221- if (($size23572388 == 4))
222- then $acc423572388
223- else {
224- let $acc523572388 = isSymbolC($acc423572388, $list23572388[4])
225- if (($size23572388 == 5))
226- then $acc523572388
227- else {
228- let $acc623572388 = isSymbolC($acc523572388, $list23572388[5])
229- if (($size23572388 == 6))
230- then $acc623572388
231- else {
232- let $acc723572388 = isSymbolC($acc623572388, $list23572388[6])
233- if (($size23572388 == 7))
234- then $acc723572388
235- else {
236- let $acc823572388 = isSymbolC($acc723572388, $list23572388[7])
237- if (($size23572388 == 8))
238- then $acc823572388
239- else {
240- let $acc923572388 = isSymbolC($acc823572388, $list23572388[8])
241- throw("List size exceed 8")
242- }
243- }
244- }
245- }
246- }
247- }
248- }
249- }
250- }
139+ let $l = genotype
140+ let $s = size($l)
141+ let $acc0 = 0
142+ func 1 ($a,$i) = if (($i >= $s))
143+ then $a
144+ else isSymbolC($a, $l[$i])
145+
146+ func 2 ($a,$i) = if (($i >= $s))
147+ then $a
148+ else throw("List size exceeds 8")
149+
150+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
251151 }) + "C"))) + getAmountOrClear((toString({
252- let $list24272458 = genotype
253- let $size24272458 = size($list24272458)
254- let $acc024272458 = 0
255- if (($size24272458 == 0))
256- then $acc024272458
257- else {
258- let $acc124272458 = isSymbolD($acc024272458, $list24272458[0])
259- if (($size24272458 == 1))
260- then $acc124272458
261- else {
262- let $acc224272458 = isSymbolD($acc124272458, $list24272458[1])
263- if (($size24272458 == 2))
264- then $acc224272458
265- else {
266- let $acc324272458 = isSymbolD($acc224272458, $list24272458[2])
267- if (($size24272458 == 3))
268- then $acc324272458
269- else {
270- let $acc424272458 = isSymbolD($acc324272458, $list24272458[3])
271- if (($size24272458 == 4))
272- then $acc424272458
273- else {
274- let $acc524272458 = isSymbolD($acc424272458, $list24272458[4])
275- if (($size24272458 == 5))
276- then $acc524272458
277- else {
278- let $acc624272458 = isSymbolD($acc524272458, $list24272458[5])
279- if (($size24272458 == 6))
280- then $acc624272458
281- else {
282- let $acc724272458 = isSymbolD($acc624272458, $list24272458[6])
283- if (($size24272458 == 7))
284- then $acc724272458
285- else {
286- let $acc824272458 = isSymbolD($acc724272458, $list24272458[7])
287- if (($size24272458 == 8))
288- then $acc824272458
289- else {
290- let $acc924272458 = isSymbolD($acc824272458, $list24272458[8])
291- throw("List size exceed 8")
292- }
293- }
294- }
295- }
296- }
297- }
298- }
299- }
300- }
152+ let $l = genotype
153+ let $s = size($l)
154+ let $acc0 = 0
155+ func 1 ($a,$i) = if (($i >= $s))
156+ then $a
157+ else isSymbolD($a, $l[$i])
158+
159+ func 2 ($a,$i) = if (($i >= $s))
160+ then $a
161+ else throw("List size exceeds 8")
162+
163+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
301164 }) + "D"))) + getAmountOrClear((toString({
302- let $list24952526 = genotype
303- let $size24952526 = size($list24952526)
304- let $acc024952526 = 0
305- if (($size24952526 == 0))
306- then $acc024952526
307- else {
308- let $acc124952526 = isSymbolE($acc024952526, $list24952526[0])
309- if (($size24952526 == 1))
310- then $acc124952526
311- else {
312- let $acc224952526 = isSymbolE($acc124952526, $list24952526[1])
313- if (($size24952526 == 2))
314- then $acc224952526
315- else {
316- let $acc324952526 = isSymbolE($acc224952526, $list24952526[2])
317- if (($size24952526 == 3))
318- then $acc324952526
319- else {
320- let $acc424952526 = isSymbolE($acc324952526, $list24952526[3])
321- if (($size24952526 == 4))
322- then $acc424952526
323- else {
324- let $acc524952526 = isSymbolE($acc424952526, $list24952526[4])
325- if (($size24952526 == 5))
326- then $acc524952526
327- else {
328- let $acc624952526 = isSymbolE($acc524952526, $list24952526[5])
329- if (($size24952526 == 6))
330- then $acc624952526
331- else {
332- let $acc724952526 = isSymbolE($acc624952526, $list24952526[6])
333- if (($size24952526 == 7))
334- then $acc724952526
335- else {
336- let $acc824952526 = isSymbolE($acc724952526, $list24952526[7])
337- if (($size24952526 == 8))
338- then $acc824952526
339- else {
340- let $acc924952526 = isSymbolE($acc824952526, $list24952526[8])
341- throw("List size exceed 8")
342- }
343- }
344- }
345- }
346- }
347- }
348- }
349- }
350- }
165+ let $l = genotype
166+ let $s = size($l)
167+ let $acc0 = 0
168+ func 1 ($a,$i) = if (($i >= $s))
169+ then $a
170+ else isSymbolE($a, $l[$i])
171+
172+ func 2 ($a,$i) = if (($i >= $s))
173+ then $a
174+ else throw("List size exceeds 8")
175+
176+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
351177 }) + "E"))) + getAmountOrClear((toString({
352- let $list25632594 = genotype
353- let $size25632594 = size($list25632594)
354- let $acc025632594 = 0
355- if (($size25632594 == 0))
356- then $acc025632594
357- else {
358- let $acc125632594 = isSymbolF($acc025632594, $list25632594[0])
359- if (($size25632594 == 1))
360- then $acc125632594
361- else {
362- let $acc225632594 = isSymbolF($acc125632594, $list25632594[1])
363- if (($size25632594 == 2))
364- then $acc225632594
365- else {
366- let $acc325632594 = isSymbolF($acc225632594, $list25632594[2])
367- if (($size25632594 == 3))
368- then $acc325632594
369- else {
370- let $acc425632594 = isSymbolF($acc325632594, $list25632594[3])
371- if (($size25632594 == 4))
372- then $acc425632594
373- else {
374- let $acc525632594 = isSymbolF($acc425632594, $list25632594[4])
375- if (($size25632594 == 5))
376- then $acc525632594
377- else {
378- let $acc625632594 = isSymbolF($acc525632594, $list25632594[5])
379- if (($size25632594 == 6))
380- then $acc625632594
381- else {
382- let $acc725632594 = isSymbolF($acc625632594, $list25632594[6])
383- if (($size25632594 == 7))
384- then $acc725632594
385- else {
386- let $acc825632594 = isSymbolF($acc725632594, $list25632594[7])
387- if (($size25632594 == 8))
388- then $acc825632594
389- else {
390- let $acc925632594 = isSymbolF($acc825632594, $list25632594[8])
391- throw("List size exceed 8")
392- }
393- }
394- }
395- }
396- }
397- }
398- }
399- }
400- }
178+ let $l = genotype
179+ let $s = size($l)
180+ let $acc0 = 0
181+ func 1 ($a,$i) = if (($i >= $s))
182+ then $a
183+ else isSymbolF($a, $l[$i])
184+
185+ func 2 ($a,$i) = if (($i >= $s))
186+ then $a
187+ else throw("List size exceeds 8")
188+
189+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
401190 }) + "F"))) + getAmountOrClear((toString({
402- let $list26332664 = genotype
403- let $size26332664 = size($list26332664)
404- let $acc026332664 = 0
405- if (($size26332664 == 0))
406- then $acc026332664
407- else {
408- let $acc126332664 = isSymbolG($acc026332664, $list26332664[0])
409- if (($size26332664 == 1))
410- then $acc126332664
411- else {
412- let $acc226332664 = isSymbolG($acc126332664, $list26332664[1])
413- if (($size26332664 == 2))
414- then $acc226332664
415- else {
416- let $acc326332664 = isSymbolG($acc226332664, $list26332664[2])
417- if (($size26332664 == 3))
418- then $acc326332664
419- else {
420- let $acc426332664 = isSymbolG($acc326332664, $list26332664[3])
421- if (($size26332664 == 4))
422- then $acc426332664
423- else {
424- let $acc526332664 = isSymbolG($acc426332664, $list26332664[4])
425- if (($size26332664 == 5))
426- then $acc526332664
427- else {
428- let $acc626332664 = isSymbolG($acc526332664, $list26332664[5])
429- if (($size26332664 == 6))
430- then $acc626332664
431- else {
432- let $acc726332664 = isSymbolG($acc626332664, $list26332664[6])
433- if (($size26332664 == 7))
434- then $acc726332664
435- else {
436- let $acc826332664 = isSymbolG($acc726332664, $list26332664[7])
437- if (($size26332664 == 8))
438- then $acc826332664
439- else {
440- let $acc926332664 = isSymbolG($acc826332664, $list26332664[8])
441- throw("List size exceed 8")
442- }
443- }
444- }
445- }
446- }
447- }
448- }
449- }
450- }
191+ let $l = genotype
192+ let $s = size($l)
193+ let $acc0 = 0
194+ func 1 ($a,$i) = if (($i >= $s))
195+ then $a
196+ else isSymbolG($a, $l[$i])
197+
198+ func 2 ($a,$i) = if (($i >= $s))
199+ then $a
200+ else throw("List size exceeds 8")
201+
202+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
451203 }) + "G"))) + getAmountOrClear((toString({
452- let $list27012732 = genotype
453- let $size27012732 = size($list27012732)
454- let $acc027012732 = 0
455- if (($size27012732 == 0))
456- then $acc027012732
457- else {
458- let $acc127012732 = isSymbolH($acc027012732, $list27012732[0])
459- if (($size27012732 == 1))
460- then $acc127012732
461- else {
462- let $acc227012732 = isSymbolH($acc127012732, $list27012732[1])
463- if (($size27012732 == 2))
464- then $acc227012732
465- else {
466- let $acc327012732 = isSymbolH($acc227012732, $list27012732[2])
467- if (($size27012732 == 3))
468- then $acc327012732
469- else {
470- let $acc427012732 = isSymbolH($acc327012732, $list27012732[3])
471- if (($size27012732 == 4))
472- then $acc427012732
473- else {
474- let $acc527012732 = isSymbolH($acc427012732, $list27012732[4])
475- if (($size27012732 == 5))
476- then $acc527012732
477- else {
478- let $acc627012732 = isSymbolH($acc527012732, $list27012732[5])
479- if (($size27012732 == 6))
480- then $acc627012732
481- else {
482- let $acc727012732 = isSymbolH($acc627012732, $list27012732[6])
483- if (($size27012732 == 7))
484- then $acc727012732
485- else {
486- let $acc827012732 = isSymbolH($acc727012732, $list27012732[7])
487- if (($size27012732 == 8))
488- then $acc827012732
489- else {
490- let $acc927012732 = isSymbolH($acc827012732, $list27012732[8])
491- throw("List size exceed 8")
492- }
493- }
494- }
495- }
496- }
497- }
498- }
499- }
500- }
204+ let $l = genotype
205+ let $s = size($l)
206+ let $acc0 = 0
207+ func 1 ($a,$i) = if (($i >= $s))
208+ then $a
209+ else isSymbolH($a, $l[$i])
210+
211+ func 2 ($a,$i) = if (($i >= $s))
212+ then $a
213+ else throw("List size exceeds 8")
214+
215+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
501216 }) + "H")))
502217 }
503218
640355 if ((0 >= availablePerches))
641356 then throw(("no perches available for the color " + color))
642357 else {
643- let $t089909055 = getAssetFarmingPower(assetId)
644- let assetGen = $t089909055._1
645- let assetFarmingPower = $t089909055._2
358+ let $t092029267 = getAssetFarmingPower(assetId)
359+ let assetGen = $t092029267._1
360+ let assetFarmingPower = $t092029267._2
646361 let assetRewardDelta = calcAssetRewardDelta(address, toBase58String(assetId), assetFarmingPower)
647362 (getStakeResult(address, assetId, assetFarmingPower) ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (availablePerches - 1))])
648363 }
651366
652367
653368 @Callable(i)
654-func unstakeNFT (asset) = if ((isLocked() > 0))
655- then throw("EGG operations are temporarily locked")
656- else {
657- let assetId = fromBase58String(asset)
658- let address = toString(i.caller)
659- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
660- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
661- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
662- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
663- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
664- let color = takeRight(value(assetInfo(assetId)).name, 1)
665- if ((0 >= assetFarmingPower))
666- then throw("asset not available")
667- else if ((color == "U"))
668- then throw("use another function to unstake Jackpot NFT")
669- else {
670- let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
671- $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
672- }
673- }
369+func unstakeNFT (asset) = if (isUserBlacklisted(toString(i.caller)))
370+ then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
371+ else if ((isLocked() > 0))
372+ then throw("EGG operations are temporarily locked")
373+ else {
374+ let assetId = fromBase58String(asset)
375+ let address = toString(i.caller)
376+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
377+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
378+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
379+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
380+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
381+ let color = takeRight(value(assetInfo(assetId)).name, 1)
382+ if ((0 >= assetFarmingPower))
383+ then throw("asset not available")
384+ else if ((color == "U"))
385+ then throw("use another function to unstake Jackpot NFT")
386+ else {
387+ let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
388+ $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
389+ }
390+ }
674391
675392
676393
696413
697414
698415 @Callable(i)
699-func unstakeJackpot (asset) = if ((isLocked() > 0))
700- then throw("EGG operations are temporarily locked")
701- else {
702- let assetId = fromBase58String(asset)
703- let address = toString(i.caller)
704- let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
705- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
706- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
707- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
708- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
709- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
710- if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
711- then throw("jackpot only")
712- else if ((assetFarmingPower > 0))
713- then {
714- let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
715- $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
716- }
717- else throw("")
718- }
416+func unstakeJackpot (asset) = if (isUserBlacklisted(toString(i.caller)))
417+ then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
418+ else if ((isLocked() > 0))
419+ then throw("EGG operations are temporarily locked")
420+ else {
421+ let assetId = fromBase58String(asset)
422+ let address = toString(i.caller)
423+ let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
424+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
425+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
426+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
427+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
428+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
429+ if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
430+ then throw("jackpot only")
431+ else if ((assetFarmingPower > 0))
432+ then {
433+ let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
434+ $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
435+ }
436+ else throw("")
437+ }
719438
720439
721440
722441 @Callable(i)
723-func claimReward (asset) = if ((isLocked() > 0))
724- then throw("EGG operations are temporarily locked")
725- else {
726- let address = toString(i.caller)
727- let assetId = fromBase58String(asset)
728- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
729- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
730- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
731- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
732- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
733- if ((0 >= reward))
734- then throw("you have no EGGs to withdraw")
735- else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), eggsAssetId)], (reward * 1000000))
736- }
442+func claimReward (asset) = if (isUserBlacklisted(toString(i.caller)))
443+ then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
444+ else if ((isLocked() > 0))
445+ then throw("EGG operations are temporarily locked")
446+ else {
447+ let address = toString(i.caller)
448+ let assetId = fromBase58String(asset)
449+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
450+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
451+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
452+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
453+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
454+ if ((0 >= reward))
455+ then throw("you have no EGGs to withdraw")
456+ else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), eggsAssetId)], (reward * 1000000))
457+ }
737458
738459
739460 @Verifier(tx)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'
55
66 let perchPrice = (100 * 1000000)
77
88 let scale = 10000
99
1010 let scale2 = 1000000
1111
1212 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
1313
1414 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
1515
1616 let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe'
1717
1818 let RefererReward = 5
1919
2020 let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ'
2121
2222 let GENS = ["A", "B", "C", "D", "E", "F", "G"]
2323
2424 func getRewardPerBlock () = 684
2525
2626
2727 func isLocked () = {
2828 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
2929 match getInteger(masterAddress, "egglock") {
3030 case b: Int =>
3131 b
3232 case _ =>
3333 0
3434 }
3535 }
3636
3737
3838 func tryGetInteger (key) = match getInteger(this, key) {
3939 case b: Int =>
4040 b
4141 case _ =>
4242 0
4343 }
4444
4545
4646 func tryGetString (key) = match getString(this, key) {
4747 case a: String =>
4848 a
4949 case _ =>
5050 ""
5151 }
5252
5353
54+func isUserBlacklisted (address) = {
55+ let k = getBoolean(Address(base58'3PAHCfc8ZAwJ26bB32YK6ZNVTVBpgVnGTNc'), (("locked_" + address) + "_status"))
56+ match k {
57+ case k: Boolean =>
58+ k
59+ case _ =>
60+ false
61+ }
62+ }
63+
64+
5465 func isSymbolA (accumulated,sym) = if ((sym == "A"))
5566 then (accumulated + 1)
5667 else (accumulated + 0)
5768
5869
5970 func isSymbolB (accumulated,sym) = if ((sym == "B"))
6071 then (accumulated + 1)
6172 else (accumulated + 0)
6273
6374
6475 func isSymbolC (accumulated,sym) = if ((sym == "C"))
6576 then (accumulated + 1)
6677 else (accumulated + 0)
6778
6879
6980 func isSymbolD (accumulated,sym) = if ((sym == "D"))
7081 then (accumulated + 1)
7182 else (accumulated + 0)
7283
7384
7485 func isSymbolE (accumulated,sym) = if ((sym == "E"))
7586 then (accumulated + 1)
7687 else (accumulated + 0)
7788
7889
7990 func isSymbolF (accumulated,sym) = if ((sym == "F"))
8091 then (accumulated + 1)
8192 else (accumulated + 0)
8293
8394
8495 func isSymbolG (accumulated,sym) = if ((sym == "G"))
8596 then (accumulated + 1)
8697 else (accumulated + 0)
8798
8899
89100 func isSymbolH (accumulated,sym) = if ((sym == "H"))
90101 then (accumulated + 1)
91102 else (accumulated + 0)
92103
93104
94105 func getAmountOrClear (amount) = if (contains(amount, "0"))
95106 then ""
96107 else amount
97108
98109
99110 func getGen (assetName) = {
100111 let genotype = split(dropRight(drop(assetName, 5), 3), "")
101112 (((((((getAmountOrClear((toString({
102- let $list22212252 = genotype
103- let $size22212252 = size($list22212252)
104- let $acc022212252 = 0
105- if (($size22212252 == 0))
106- then $acc022212252
107- else {
108- let $acc122212252 = isSymbolA($acc022212252, $list22212252[0])
109- if (($size22212252 == 1))
110- then $acc122212252
111- else {
112- let $acc222212252 = isSymbolA($acc122212252, $list22212252[1])
113- if (($size22212252 == 2))
114- then $acc222212252
115- else {
116- let $acc322212252 = isSymbolA($acc222212252, $list22212252[2])
117- if (($size22212252 == 3))
118- then $acc322212252
119- else {
120- let $acc422212252 = isSymbolA($acc322212252, $list22212252[3])
121- if (($size22212252 == 4))
122- then $acc422212252
123- else {
124- let $acc522212252 = isSymbolA($acc422212252, $list22212252[4])
125- if (($size22212252 == 5))
126- then $acc522212252
127- else {
128- let $acc622212252 = isSymbolA($acc522212252, $list22212252[5])
129- if (($size22212252 == 6))
130- then $acc622212252
131- else {
132- let $acc722212252 = isSymbolA($acc622212252, $list22212252[6])
133- if (($size22212252 == 7))
134- then $acc722212252
135- else {
136- let $acc822212252 = isSymbolA($acc722212252, $list22212252[7])
137- if (($size22212252 == 8))
138- then $acc822212252
139- else {
140- let $acc922212252 = isSymbolA($acc822212252, $list22212252[8])
141- throw("List size exceed 8")
142- }
143- }
144- }
145- }
146- }
147- }
148- }
149- }
150- }
113+ let $l = genotype
114+ let $s = size($l)
115+ let $acc0 = 0
116+ func 1 ($a,$i) = if (($i >= $s))
117+ then $a
118+ else isSymbolA($a, $l[$i])
119+
120+ func 2 ($a,$i) = if (($i >= $s))
121+ then $a
122+ else throw("List size exceeds 8")
123+
124+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
151125 }) + "A")) + getAmountOrClear((toString({
152- let $list22892320 = genotype
153- let $size22892320 = size($list22892320)
154- let $acc022892320 = 0
155- if (($size22892320 == 0))
156- then $acc022892320
157- else {
158- let $acc122892320 = isSymbolB($acc022892320, $list22892320[0])
159- if (($size22892320 == 1))
160- then $acc122892320
161- else {
162- let $acc222892320 = isSymbolB($acc122892320, $list22892320[1])
163- if (($size22892320 == 2))
164- then $acc222892320
165- else {
166- let $acc322892320 = isSymbolB($acc222892320, $list22892320[2])
167- if (($size22892320 == 3))
168- then $acc322892320
169- else {
170- let $acc422892320 = isSymbolB($acc322892320, $list22892320[3])
171- if (($size22892320 == 4))
172- then $acc422892320
173- else {
174- let $acc522892320 = isSymbolB($acc422892320, $list22892320[4])
175- if (($size22892320 == 5))
176- then $acc522892320
177- else {
178- let $acc622892320 = isSymbolB($acc522892320, $list22892320[5])
179- if (($size22892320 == 6))
180- then $acc622892320
181- else {
182- let $acc722892320 = isSymbolB($acc622892320, $list22892320[6])
183- if (($size22892320 == 7))
184- then $acc722892320
185- else {
186- let $acc822892320 = isSymbolB($acc722892320, $list22892320[7])
187- if (($size22892320 == 8))
188- then $acc822892320
189- else {
190- let $acc922892320 = isSymbolB($acc822892320, $list22892320[8])
191- throw("List size exceed 8")
192- }
193- }
194- }
195- }
196- }
197- }
198- }
199- }
200- }
126+ let $l = genotype
127+ let $s = size($l)
128+ let $acc0 = 0
129+ func 1 ($a,$i) = if (($i >= $s))
130+ then $a
131+ else isSymbolB($a, $l[$i])
132+
133+ func 2 ($a,$i) = if (($i >= $s))
134+ then $a
135+ else throw("List size exceeds 8")
136+
137+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
201138 }) + "B"))) + getAmountOrClear((toString({
202- let $list23572388 = genotype
203- let $size23572388 = size($list23572388)
204- let $acc023572388 = 0
205- if (($size23572388 == 0))
206- then $acc023572388
207- else {
208- let $acc123572388 = isSymbolC($acc023572388, $list23572388[0])
209- if (($size23572388 == 1))
210- then $acc123572388
211- else {
212- let $acc223572388 = isSymbolC($acc123572388, $list23572388[1])
213- if (($size23572388 == 2))
214- then $acc223572388
215- else {
216- let $acc323572388 = isSymbolC($acc223572388, $list23572388[2])
217- if (($size23572388 == 3))
218- then $acc323572388
219- else {
220- let $acc423572388 = isSymbolC($acc323572388, $list23572388[3])
221- if (($size23572388 == 4))
222- then $acc423572388
223- else {
224- let $acc523572388 = isSymbolC($acc423572388, $list23572388[4])
225- if (($size23572388 == 5))
226- then $acc523572388
227- else {
228- let $acc623572388 = isSymbolC($acc523572388, $list23572388[5])
229- if (($size23572388 == 6))
230- then $acc623572388
231- else {
232- let $acc723572388 = isSymbolC($acc623572388, $list23572388[6])
233- if (($size23572388 == 7))
234- then $acc723572388
235- else {
236- let $acc823572388 = isSymbolC($acc723572388, $list23572388[7])
237- if (($size23572388 == 8))
238- then $acc823572388
239- else {
240- let $acc923572388 = isSymbolC($acc823572388, $list23572388[8])
241- throw("List size exceed 8")
242- }
243- }
244- }
245- }
246- }
247- }
248- }
249- }
250- }
139+ let $l = genotype
140+ let $s = size($l)
141+ let $acc0 = 0
142+ func 1 ($a,$i) = if (($i >= $s))
143+ then $a
144+ else isSymbolC($a, $l[$i])
145+
146+ func 2 ($a,$i) = if (($i >= $s))
147+ then $a
148+ else throw("List size exceeds 8")
149+
150+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
251151 }) + "C"))) + getAmountOrClear((toString({
252- let $list24272458 = genotype
253- let $size24272458 = size($list24272458)
254- let $acc024272458 = 0
255- if (($size24272458 == 0))
256- then $acc024272458
257- else {
258- let $acc124272458 = isSymbolD($acc024272458, $list24272458[0])
259- if (($size24272458 == 1))
260- then $acc124272458
261- else {
262- let $acc224272458 = isSymbolD($acc124272458, $list24272458[1])
263- if (($size24272458 == 2))
264- then $acc224272458
265- else {
266- let $acc324272458 = isSymbolD($acc224272458, $list24272458[2])
267- if (($size24272458 == 3))
268- then $acc324272458
269- else {
270- let $acc424272458 = isSymbolD($acc324272458, $list24272458[3])
271- if (($size24272458 == 4))
272- then $acc424272458
273- else {
274- let $acc524272458 = isSymbolD($acc424272458, $list24272458[4])
275- if (($size24272458 == 5))
276- then $acc524272458
277- else {
278- let $acc624272458 = isSymbolD($acc524272458, $list24272458[5])
279- if (($size24272458 == 6))
280- then $acc624272458
281- else {
282- let $acc724272458 = isSymbolD($acc624272458, $list24272458[6])
283- if (($size24272458 == 7))
284- then $acc724272458
285- else {
286- let $acc824272458 = isSymbolD($acc724272458, $list24272458[7])
287- if (($size24272458 == 8))
288- then $acc824272458
289- else {
290- let $acc924272458 = isSymbolD($acc824272458, $list24272458[8])
291- throw("List size exceed 8")
292- }
293- }
294- }
295- }
296- }
297- }
298- }
299- }
300- }
152+ let $l = genotype
153+ let $s = size($l)
154+ let $acc0 = 0
155+ func 1 ($a,$i) = if (($i >= $s))
156+ then $a
157+ else isSymbolD($a, $l[$i])
158+
159+ func 2 ($a,$i) = if (($i >= $s))
160+ then $a
161+ else throw("List size exceeds 8")
162+
163+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
301164 }) + "D"))) + getAmountOrClear((toString({
302- let $list24952526 = genotype
303- let $size24952526 = size($list24952526)
304- let $acc024952526 = 0
305- if (($size24952526 == 0))
306- then $acc024952526
307- else {
308- let $acc124952526 = isSymbolE($acc024952526, $list24952526[0])
309- if (($size24952526 == 1))
310- then $acc124952526
311- else {
312- let $acc224952526 = isSymbolE($acc124952526, $list24952526[1])
313- if (($size24952526 == 2))
314- then $acc224952526
315- else {
316- let $acc324952526 = isSymbolE($acc224952526, $list24952526[2])
317- if (($size24952526 == 3))
318- then $acc324952526
319- else {
320- let $acc424952526 = isSymbolE($acc324952526, $list24952526[3])
321- if (($size24952526 == 4))
322- then $acc424952526
323- else {
324- let $acc524952526 = isSymbolE($acc424952526, $list24952526[4])
325- if (($size24952526 == 5))
326- then $acc524952526
327- else {
328- let $acc624952526 = isSymbolE($acc524952526, $list24952526[5])
329- if (($size24952526 == 6))
330- then $acc624952526
331- else {
332- let $acc724952526 = isSymbolE($acc624952526, $list24952526[6])
333- if (($size24952526 == 7))
334- then $acc724952526
335- else {
336- let $acc824952526 = isSymbolE($acc724952526, $list24952526[7])
337- if (($size24952526 == 8))
338- then $acc824952526
339- else {
340- let $acc924952526 = isSymbolE($acc824952526, $list24952526[8])
341- throw("List size exceed 8")
342- }
343- }
344- }
345- }
346- }
347- }
348- }
349- }
350- }
165+ let $l = genotype
166+ let $s = size($l)
167+ let $acc0 = 0
168+ func 1 ($a,$i) = if (($i >= $s))
169+ then $a
170+ else isSymbolE($a, $l[$i])
171+
172+ func 2 ($a,$i) = if (($i >= $s))
173+ then $a
174+ else throw("List size exceeds 8")
175+
176+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
351177 }) + "E"))) + getAmountOrClear((toString({
352- let $list25632594 = genotype
353- let $size25632594 = size($list25632594)
354- let $acc025632594 = 0
355- if (($size25632594 == 0))
356- then $acc025632594
357- else {
358- let $acc125632594 = isSymbolF($acc025632594, $list25632594[0])
359- if (($size25632594 == 1))
360- then $acc125632594
361- else {
362- let $acc225632594 = isSymbolF($acc125632594, $list25632594[1])
363- if (($size25632594 == 2))
364- then $acc225632594
365- else {
366- let $acc325632594 = isSymbolF($acc225632594, $list25632594[2])
367- if (($size25632594 == 3))
368- then $acc325632594
369- else {
370- let $acc425632594 = isSymbolF($acc325632594, $list25632594[3])
371- if (($size25632594 == 4))
372- then $acc425632594
373- else {
374- let $acc525632594 = isSymbolF($acc425632594, $list25632594[4])
375- if (($size25632594 == 5))
376- then $acc525632594
377- else {
378- let $acc625632594 = isSymbolF($acc525632594, $list25632594[5])
379- if (($size25632594 == 6))
380- then $acc625632594
381- else {
382- let $acc725632594 = isSymbolF($acc625632594, $list25632594[6])
383- if (($size25632594 == 7))
384- then $acc725632594
385- else {
386- let $acc825632594 = isSymbolF($acc725632594, $list25632594[7])
387- if (($size25632594 == 8))
388- then $acc825632594
389- else {
390- let $acc925632594 = isSymbolF($acc825632594, $list25632594[8])
391- throw("List size exceed 8")
392- }
393- }
394- }
395- }
396- }
397- }
398- }
399- }
400- }
178+ let $l = genotype
179+ let $s = size($l)
180+ let $acc0 = 0
181+ func 1 ($a,$i) = if (($i >= $s))
182+ then $a
183+ else isSymbolF($a, $l[$i])
184+
185+ func 2 ($a,$i) = if (($i >= $s))
186+ then $a
187+ else throw("List size exceeds 8")
188+
189+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
401190 }) + "F"))) + getAmountOrClear((toString({
402- let $list26332664 = genotype
403- let $size26332664 = size($list26332664)
404- let $acc026332664 = 0
405- if (($size26332664 == 0))
406- then $acc026332664
407- else {
408- let $acc126332664 = isSymbolG($acc026332664, $list26332664[0])
409- if (($size26332664 == 1))
410- then $acc126332664
411- else {
412- let $acc226332664 = isSymbolG($acc126332664, $list26332664[1])
413- if (($size26332664 == 2))
414- then $acc226332664
415- else {
416- let $acc326332664 = isSymbolG($acc226332664, $list26332664[2])
417- if (($size26332664 == 3))
418- then $acc326332664
419- else {
420- let $acc426332664 = isSymbolG($acc326332664, $list26332664[3])
421- if (($size26332664 == 4))
422- then $acc426332664
423- else {
424- let $acc526332664 = isSymbolG($acc426332664, $list26332664[4])
425- if (($size26332664 == 5))
426- then $acc526332664
427- else {
428- let $acc626332664 = isSymbolG($acc526332664, $list26332664[5])
429- if (($size26332664 == 6))
430- then $acc626332664
431- else {
432- let $acc726332664 = isSymbolG($acc626332664, $list26332664[6])
433- if (($size26332664 == 7))
434- then $acc726332664
435- else {
436- let $acc826332664 = isSymbolG($acc726332664, $list26332664[7])
437- if (($size26332664 == 8))
438- then $acc826332664
439- else {
440- let $acc926332664 = isSymbolG($acc826332664, $list26332664[8])
441- throw("List size exceed 8")
442- }
443- }
444- }
445- }
446- }
447- }
448- }
449- }
450- }
191+ let $l = genotype
192+ let $s = size($l)
193+ let $acc0 = 0
194+ func 1 ($a,$i) = if (($i >= $s))
195+ then $a
196+ else isSymbolG($a, $l[$i])
197+
198+ func 2 ($a,$i) = if (($i >= $s))
199+ then $a
200+ else throw("List size exceeds 8")
201+
202+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
451203 }) + "G"))) + getAmountOrClear((toString({
452- let $list27012732 = genotype
453- let $size27012732 = size($list27012732)
454- let $acc027012732 = 0
455- if (($size27012732 == 0))
456- then $acc027012732
457- else {
458- let $acc127012732 = isSymbolH($acc027012732, $list27012732[0])
459- if (($size27012732 == 1))
460- then $acc127012732
461- else {
462- let $acc227012732 = isSymbolH($acc127012732, $list27012732[1])
463- if (($size27012732 == 2))
464- then $acc227012732
465- else {
466- let $acc327012732 = isSymbolH($acc227012732, $list27012732[2])
467- if (($size27012732 == 3))
468- then $acc327012732
469- else {
470- let $acc427012732 = isSymbolH($acc327012732, $list27012732[3])
471- if (($size27012732 == 4))
472- then $acc427012732
473- else {
474- let $acc527012732 = isSymbolH($acc427012732, $list27012732[4])
475- if (($size27012732 == 5))
476- then $acc527012732
477- else {
478- let $acc627012732 = isSymbolH($acc527012732, $list27012732[5])
479- if (($size27012732 == 6))
480- then $acc627012732
481- else {
482- let $acc727012732 = isSymbolH($acc627012732, $list27012732[6])
483- if (($size27012732 == 7))
484- then $acc727012732
485- else {
486- let $acc827012732 = isSymbolH($acc727012732, $list27012732[7])
487- if (($size27012732 == 8))
488- then $acc827012732
489- else {
490- let $acc927012732 = isSymbolH($acc827012732, $list27012732[8])
491- throw("List size exceed 8")
492- }
493- }
494- }
495- }
496- }
497- }
498- }
499- }
500- }
204+ let $l = genotype
205+ let $s = size($l)
206+ let $acc0 = 0
207+ func 1 ($a,$i) = if (($i >= $s))
208+ then $a
209+ else isSymbolH($a, $l[$i])
210+
211+ func 2 ($a,$i) = if (($i >= $s))
212+ then $a
213+ else throw("List size exceeds 8")
214+
215+ 2(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
501216 }) + "H")))
502217 }
503218
504219
505220 func getAssetOrigin (generation) = if ((generation == "G"))
506221 then incubatorAddress
507222 else breederAddress
508223
509224
510225 func getAssetRarity (genotype,generation) = {
511226 let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + genotype) + "_quantity"))
512227 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
513228 if ((power > 0))
514229 then power
515230 else 2
516231 }
517232
518233
519234 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
520235 then true
521236 else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
522237 then {
523238 let assetName = value(assetInfo(assetId)).name
524239 let generation = take(takeRight(assetName, 2), 1)
525240 let gen = ((getGen(assetName) + "-") + generation)
526241 $Tuple2(gen, getAssetRarity(gen, generation))
527242 }
528243 else throw("not valid NFT")
529244
530245
531246 func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_farmingPower"))
532247
533248
534249 func getAssetsByGen (gen) = {
535250 let s = tryGetString(("assets_" + gen))
536251 if ((s == ""))
537252 then nil
538253 else split(s, ",")
539254 }
540255
541256
542257 func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower))
543258
544259
545260 func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0))
546261 then {
547262 let previousInterest = tryGetInteger("total_lastCheckInterest")
548263 let previousInterestHeight = tryGetInteger("total_lastCheckInterestHeight")
549264 let totalFarmingPower = tryGetInteger("total_farmingPower")
550265 calcInterest(previousInterest, previousInterestHeight, totalFarmingPower)
551266 }
552267 else if ((tryGetInteger("total_startHeight") != 0))
553268 then tryGetInteger("total_lastCheckInterest")
554269 else throw("farming is not launched, yet")
555270
556271
557272 func calcAssetRewardDelta (address,assetId,assetFarmingPower) = {
558273 let lastCheckAssetInterest = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_lastCheckInterest"))
559274 let currentInterest = getCurrentInterest()
560275 (assetFarmingPower * (currentInterest - lastCheckAssetInterest))
561276 }
562277
563278
564279 func addAssetIdToGenEntry (assetId,assetGen) = {
565280 let currentValue = tryGetString((("assets_" + assetGen) + "_locked"))
566281 if ((currentValue == ""))
567282 then assetId
568283 else ((currentValue + ",") + assetId)
569284 }
570285
571286
572287 func getStakeResult (address,assetId,assetFarmingPower) = {
573288 let asset = toBase58String(assetId)
574289 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") + assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), assetFarmingPower), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest())]
575290 }
576291
577292
578293 func getUnstakeResult (address,assetId,rewardDelta,withdrawnAmount,assetFarmingPower) = {
579294 let asset = toBase58String(assetId)
580295 [IntegerEntry("total_farmingPower", (tryGetInteger("total_farmingPower") - assetFarmingPower)), IntegerEntry("total_lastCheckInterest", getCurrentInterest()), IntegerEntry("total_lastCheckInterestHeight", height), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_farmingPower"), 0), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckInterest"), getCurrentInterest()), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (withdrawnAmount * scale2))), IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")) + rewardDelta))]
581296 }
582297
583298
584299 @Callable(i)
585300 func init () = if ((i.caller != this))
586301 then throw("admin only")
587302 else [IntegerEntry("total_startHeight", height)]
588303
589304
590305
591306 @Callable(i)
592307 func buyPerch (color,refererAddress) = if ((isLocked() > 0))
593308 then throw("EGG operations are temporarily locked")
594309 else if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
595310 then throw("you need to set color properly")
596311 else {
597312 let firstPayment = value(i.payments[0])
598313 if ((firstPayment.assetId != eggsAssetId))
599314 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
600315 else if ((firstPayment.amount != perchPrice))
601316 then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(perchPrice)))
602317 else {
603318 let refererRewardForPerch = fraction(firstPayment.amount, RefererReward, 100)
604319 let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererRewardForPerch)])
605320 if ((refCall == refCall))
606321 then {
607322 let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
608323 let perchAmount = tryGetInteger(perchAmountKey)
609324 [IntegerEntry(perchAmountKey, (perchAmount + 1))]
610325 }
611326 else throw("Strict value is not equal to itself.")
612327 }
613328 }
614329
615330
616331
617332 @Callable(i)
618333 func addFreePerch (address,color) = if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
619334 then throw("you need to set color properly")
620335 else if (if ((i.caller != Address(rebirthAddress)))
621336 then (i.caller != this)
622337 else false)
623338 then throw("rebirth only")
624339 else {
625340 let perchAmountKey = ((("address_" + address) + "_perchesAvailable_") + color)
626341 let perchAmount = tryGetInteger(perchAmountKey)
627342 $Tuple2([IntegerEntry(perchAmountKey, (perchAmount + 1))], "")
628343 }
629344
630345
631346
632347 @Callable(i)
633348 func stakeNFT () = if ((isLocked() > 0))
634349 then throw("EGG operations are temporarily locked")
635350 else {
636351 let assetId = value(value(i.payments[0]).assetId)
637352 let address = toString(i.caller)
638353 let color = takeRight(value(assetInfo(assetId)).name, 1)
639354 let availablePerches = tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color))
640355 if ((0 >= availablePerches))
641356 then throw(("no perches available for the color " + color))
642357 else {
643- let $t089909055 = getAssetFarmingPower(assetId)
644- let assetGen = $t089909055._1
645- let assetFarmingPower = $t089909055._2
358+ let $t092029267 = getAssetFarmingPower(assetId)
359+ let assetGen = $t092029267._1
360+ let assetFarmingPower = $t092029267._2
646361 let assetRewardDelta = calcAssetRewardDelta(address, toBase58String(assetId), assetFarmingPower)
647362 (getStakeResult(address, assetId, assetFarmingPower) ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (availablePerches - 1))])
648363 }
649364 }
650365
651366
652367
653368 @Callable(i)
654-func unstakeNFT (asset) = if ((isLocked() > 0))
655- then throw("EGG operations are temporarily locked")
656- else {
657- let assetId = fromBase58String(asset)
658- let address = toString(i.caller)
659- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
660- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
661- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
662- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
663- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
664- let color = takeRight(value(assetInfo(assetId)).name, 1)
665- if ((0 >= assetFarmingPower))
666- then throw("asset not available")
667- else if ((color == "U"))
668- then throw("use another function to unstake Jackpot NFT")
669- else {
670- let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
671- $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
672- }
673- }
369+func unstakeNFT (asset) = if (isUserBlacklisted(toString(i.caller)))
370+ then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
371+ else if ((isLocked() > 0))
372+ then throw("EGG operations are temporarily locked")
373+ else {
374+ let assetId = fromBase58String(asset)
375+ let address = toString(i.caller)
376+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
377+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
378+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
379+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
380+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
381+ let color = takeRight(value(assetInfo(assetId)).name, 1)
382+ if ((0 >= assetFarmingPower))
383+ then throw("asset not available")
384+ else if ((color == "U"))
385+ then throw("use another function to unstake Jackpot NFT")
386+ else {
387+ let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
388+ $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
389+ }
390+ }
674391
675392
676393
677394 @Callable(i)
678395 func stakeJackpot (color) = if ((isLocked() > 0))
679396 then throw("EGG operations are temporarily locked")
680397 else {
681398 let assetId = value(value(i.payments[0]).assetId)
682399 let address = toString(i.caller)
683400 let availablePerches = tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color))
684401 let assetIssuer = value(assetInfo(assetId)).issuer.bytes
685402 if (if ((assetIssuer == incubatorAddress))
686403 then true
687404 else (assetIssuer == breederAddress))
688405 then if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
689406 then throw("jackpot only")
690407 else if ((0 >= availablePerches))
691408 then throw(("no perches available for the color " + color))
692409 else (getStakeResult(address, assetId, 100) ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (availablePerches - 1)), StringEntry((((("address_" + toString(i.caller)) + "_asset_") + toBase58String(assetId)) + "_perchColor"), color)])
693410 else throw("asset is not valid")
694411 }
695412
696413
697414
698415 @Callable(i)
699-func unstakeJackpot (asset) = if ((isLocked() > 0))
700- then throw("EGG operations are temporarily locked")
701- else {
702- let assetId = fromBase58String(asset)
703- let address = toString(i.caller)
704- let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
705- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
706- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
707- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
708- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
709- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
710- if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
711- then throw("jackpot only")
712- else if ((assetFarmingPower > 0))
713- then {
714- let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
715- $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
716- }
717- else throw("")
718- }
416+func unstakeJackpot (asset) = if (isUserBlacklisted(toString(i.caller)))
417+ then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
418+ else if ((isLocked() > 0))
419+ then throw("EGG operations are temporarily locked")
420+ else {
421+ let assetId = fromBase58String(asset)
422+ let address = toString(i.caller)
423+ let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
424+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
425+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
426+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
427+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
428+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
429+ if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
430+ then throw("jackpot only")
431+ else if ((assetFarmingPower > 0))
432+ then {
433+ let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
434+ $Tuple2((result ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)) + 1)), ScriptTransfer(i.caller, (reward * 1000000), eggsAssetId), ScriptTransfer(i.caller, 1, assetId)]), (reward * 1000000))
435+ }
436+ else throw("")
437+ }
719438
720439
721440
722441 @Callable(i)
723-func claimReward (asset) = if ((isLocked() > 0))
724- then throw("EGG operations are temporarily locked")
725- else {
726- let address = toString(i.caller)
727- let assetId = fromBase58String(asset)
728- let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
729- let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
730- let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
731- let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
732- let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
733- if ((0 >= reward))
734- then throw("you have no EGGs to withdraw")
735- else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), eggsAssetId)], (reward * 1000000))
736- }
442+func claimReward (asset) = if (isUserBlacklisted(toString(i.caller)))
443+ then throw("Ooops, looks like you lost in one of the Ducksquid games! As you already know, any loss has its consequences, so you will be not able to claim your farming rewards till the end of DuckSquid game. Quack in peace!")
444+ else if ((isLocked() > 0))
445+ then throw("EGG operations are temporarily locked")
446+ else {
447+ let address = toString(i.caller)
448+ let assetId = fromBase58String(asset)
449+ let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
450+ let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
451+ let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
452+ let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
453+ let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
454+ if ((0 >= reward))
455+ then throw("you have no EGGs to withdraw")
456+ else $Tuple2([IntegerEntry((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"), (tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount")) + (reward * scale2))), ScriptTransfer(Address(fromBase58String(address)), (reward * 1000000), eggsAssetId)], (reward * 1000000))
457+ }
737458
738459
739460 @Verifier(tx)
740461 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
741462

github/deemru/w8io/0e76f2f 
109.88 ms