tx · 4qu85VzpzyAhm6yzJHoCWKsZQaD5kWJGBSBF6KLrbWHF

3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA:  -0.01400000 Waves

2022.03.24 11:12 [3042924] smart account 3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA > SELF 0.00000000 Waves

{ "type": 13, "id": "4qu85VzpzyAhm6yzJHoCWKsZQaD5kWJGBSBF6KLrbWHF", "fee": 1400000, "feeAssetId": null, "timestamp": 1648109573791, "version": 2, "chainId": 87, "sender": "3PH75p2rmMKCV2nyW4TsAdFgFtmc61mJaqA", "senderPublicKey": "3GtkwhnMmG1yeozW51o4dJ1x3BDToPaLBXyBWKGdAc2e", "proofs": [ "4HPjWcMzZZtrRja7HELBsCiTorXhSWbMnoDH8trgyBhf623QQ4KDTzjdMyhLfSjNQhsCWYVGqXHc3ukT6U8x7eu6" ], "script": "base64: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AAABcwkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgIAAAAHYXNzZXRzXwUAAAADZ2VuAwkAAAAAAAACBQAAAAFzAgAAAAAFAAAAA25pbAkABLUAAAACBQAAAAFzAgAAAAEsAQAAAAxjYWxjSW50ZXJlc3QAAAADAAAAEHByZXZpb3VzSW50ZXJlc3QAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAAAABF0b3RhbEZhcm1pbmdQb3dlcgkAAGQAAAACBQAAABBwcmV2aW91c0ludGVyZXN0CQAAaQAAAAIJAABoAAAAAgkAAGgAAAACBQAAAAVzY2FsZQkBAAAAEWdldFJld2FyZFBlckJsb2NrAAAAAAkAAGUAAAACBQAAAAZoZWlnaHQFAAAAFnByZXZpb3VzSW50ZXJlc3RIZWlnaHQFAAAAEXRvdGFsRmFybWluZ1Bvd2VyAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAAAwkAAGYAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgAAAAAAAAAAAAQAAAAQcHJldmlvdXNJbnRlcmVzdAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAQAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAkBAAAADXRyeUdldEludGVnZXIAAAABAgAAAB10b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdEhlaWdodAQAAAARdG90YWxGYXJtaW5nUG93ZXIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQIAAAASdG90YWxfZmFybWluZ1Bvd2VyCQEAAAAMY2FsY0ludGVyZXN0AAAAAwUAAAAQcHJldmlvdXNJbnRlcmVzdAUAAAAWcHJldmlvdXNJbnRlcmVzdEhlaWdodAUAAAARdG90YWxGYXJtaW5nUG93ZXIDCQEAAAACIT0AAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEXRvdGFsX3N0YXJ0SGVpZ2h0AAAAAAAAAAAACQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQAAAgAAAAECAAAAHGZhcm1pbmcgaXMgbm90IGxhdW5jaGVkLCB5ZXQBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAAFmxhc3RDaGVja0Fzc2V0SW50ZXJlc3QJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAHYXNzZXRJZAIAAAASX2xhc3RDaGVja0ludGVyZXN0BAAAAA9jdXJyZW50SW50ZXJlc3QJAQAAABJnZXRDdXJyZW50SW50ZXJlc3QAAAAACQAAaAAAAAIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAAZQAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAAWbGFzdENoZWNrQXNzZXRJbnRlcmVzdAEAAAAUYWRkQXNzZXRJZFRvR2VuRW50cnkAAAACAAAAB2Fzc2V0SWQAAAAIYXNzZXRHZW4EAAAADGN1cnJlbnRWYWx1ZQkBAAAADHRyeUdldFN0cmluZwAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAdhc3NldHNfBQAAAAhhc3NldEdlbgIAAAAHX2xvY2tlZAMJAAAAAAAAAgUAAAAMY3VycmVudFZhbHVlAgAAAAAFAAAAB2Fzc2V0SWQJAAEsAAAAAgkAASwAAAACBQAAAAxjdXJyZW50VmFsdWUCAAAAASwFAAAAB2Fzc2V0SWQBAAAADmdldFN0YWtlUmVzdWx0AAAAAwAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAARYXNzZXRGYXJtaW5nUG93ZXIEAAAABWFzc2V0CQACWAAAAAEFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgkAAGQAAAACCQEAAAANdHJ5R2V0SW50ZWdlcgAAAAECAAAAEnRvdGFsX2Zhcm1pbmdQb3dlcgUAAAARYXNzZXRGYXJtaW5nUG93ZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAF3RvdGFsX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAddG90YWxfbGFzdENoZWNrSW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAADV9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAASX2xhc3RDaGVja0ludGVyZXN0CQEAAAASZ2V0Q3VycmVudEludGVyZXN0AAAAAAUAAAADbmlsAQAAABBnZXRVbnN0YWtlUmVzdWx0AAAABQAAAAdhZGRyZXNzAAAAB2Fzc2V0SWQAAAALcmV3YXJkRGVsdGEAAAAPd2l0aGRyYXduQW1vdW50AAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAAVhc3NldAkAAlgAAAABBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIJAABlAAAAAgkBAAAADXRyeUdldEludGVnZXIAAAABAgAAABJ0b3RhbF9mYXJtaW5nUG93ZXIFAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABd0b3RhbF9sYXN0Q2hlY2tJbnRlcmVzdAkBAAAAEmdldEN1cnJlbnRJbnRlcmVzdAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAHXRvdGFsX2xhc3RDaGVja0ludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIA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ZVBlcmNoZXMAAAAAAAAAAAEFAAAAA25pbAAAAAFpAQAAAAp1bnN0YWtlTkZUAAAAAQAAAAVhc3NldAMJAQAAABFpc1VzZXJCbGFja2xpc3RlZAAAAAEJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQAAAgAAAAECAAAA009vb3BzLCBsb29rcyBsaWtlIHlvdSBsb3N0IGluIG9uZSBvZiB0aGUgRHVja3NxdWlkIGdhbWVzISBBcyB5b3UgYWxyZWFkeSBrbm93LCBhbnkgbG9zcyBoYXMgaXRzIGNvbnNlcXVlbmNlcywgc28geW91IHdpbGwgYmUgbm90IGFibGUgdG8gY2xhaW0geW91ciBmYXJtaW5nIHJld2FyZHMgdGlsbCB0aGUgZW5kIG9mIER1Y2tTcXVpZCBnYW1lLiBRdWFjayBpbiBwZWFjZSEDCQAAZgAAAAIJAQAAAAhpc0xvY2tlZAAAAAAAAAAAAAAAAAAJAAACAAAAAQIAAAAlRUdHIG9wZXJhdGlvbnMgYXJlIHRlbXBvcmFyaWx5IGxvY2tlZAQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAVhc3NldAQAAAAHYWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAEWFzc2V0RmFybWluZ1Bvd2VyCQEAAAAdZ2V0TGFzdEtub3duQXNzZXRGYXJtaW5nUG93ZXIAAAACBQAAAAdhZGRyZXNzBQAAAAVhc3NldAQAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAAFGNhbGNBc3NldFJld2FyZERlbHRhAAAAAwUAAAAHYWRkcmVzcwUAAAAFYXNzZXQFAAAAEWFzc2V0RmFybWluZ1Bvd2VyBAAAAAxmYXJtZWRBbW91bnQJAABkAAAAAgUAAAAQYXNzZXRSZXdhcmREZWx0YQkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAWX2xhc3RDaGVja0Zhcm1lZEFtb3VudAQAAAAPd2l0aGRyYXduQW1vdW50CQEAAAANdHJ5R2V0SW50ZWdlcgAAAAEJAAEsAAAAAgkAASwAAAAC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IG5vdCBhYmxlIHRvIGNsYWltIHlvdXIgZmFybWluZyByZXdhcmRzIHRpbGwgdGhlIGVuZCBvZiBEdWNrU3F1aWQgZ2FtZS4gUXVhY2sgaW4gcGVhY2UhAwkAAGYAAAACCQEAAAAIaXNMb2NrZWQAAAAAAAAAAAAAAAAACQAAAgAAAAECAAAAJUVHRyBvcGVyYXRpb25zIGFyZSB0ZW1wb3JhcmlseSBsb2NrZWQEAAAAB2FkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAdhc3NldElkCQACWQAAAAEFAAAABWFzc2V0BAAAABFhc3NldEZhcm1pbmdQb3dlcgkBAAAAHWdldExhc3RLbm93bkFzc2V0RmFybWluZ1Bvd2VyAAAAAgUAAAAHYWRkcmVzcwUAAAAFYXNzZXQEAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAABRjYWxjQXNzZXRSZXdhcmREZWx0YQAAAAMFAAAAB2FkZHJlc3MFAAAABWFzc2V0BQAAABFhc3NldEZhcm1pbmdQb3dlcgQAAAAMZmFybWVkQW1vdW50CQAAZAAAAAIFAAAAEGFzc2V0UmV3YXJkRGVsdGEJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAFl9sYXN0Q2hlY2tGYXJtZWRBbW91bnQEAAAAD3dpdGhkcmF3bkFtb3VudAkBAAAADXRyeUdldEludGVnZXIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGFkZHJlc3NfBQAAAAdhZGRyZXNzAgAAAAdfYXNzZXRfBQAAAAVhc3NldAIAAAAQX3dpdGhkcmF3bkFtb3VudAQAAAAGcmV3YXJkCQAAaQAAAAIJAABlAAAAAgUAAAAMZmFybWVkQW1vdW50BQAAAA93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAFc2NhbGUAAAAAAAAAAGQDCQAAZwAAAAIAAAAAAAAAAAAFAAAABnJld2FyZAkAAAIAAAABAgAAABx5b3UgaGF2ZSBubyBFR0dzIHRvIHdpdGhkcmF3CQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIYWRkcmVzc18FAAAAB2FkZHJlc3MCAAAAB19hc3NldF8FAAAABWFzc2V0AgAAABBfd2l0aGRyYXduQW1vdW50CQAAZAAAAAIJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhhZGRyZXNzXwUAAAAHYWRkcmVzcwIAAAAHX2Fzc2V0XwUAAAAFYXNzZXQCAAAAEF93aXRoZHJhd25BbW91bnQJAABoAAAAAgUAAAAGcmV3YXJkBQAAAAZzY2FsZTIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAB2FkZHJlc3MJAABoAAAAAgUAAAAGcmV3YXJkAAAAAAAAD0JABQAAAAtlZ2dzQXNzZXRJZAUAAAADbmlsCQAAaAAAAAIFAAAABnJld2FyZAAAAAAAAA9CQAAAAABLkZJE", "height": 3042924, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9Zwn187BrkcBovLg9cvGqjvXPMfgGBbBVQMptqWpyD69 Next: 34hC1nFCpYA11V1ymfoMxAUSwJvs5oUwX47xoH7jc4yG Diff:
OldNewDifferences
6060 func isUserBlacklisted (address) = false
6161
6262
63-func isSymbolA (accumulated,sym) = if ((sym == "A"))
64- then (accumulated + 1)
65- else (accumulated + 0)
66-
67-
68-func isSymbolB (accumulated,sym) = if ((sym == "B"))
69- then (accumulated + 1)
70- else (accumulated + 0)
71-
72-
73-func isSymbolC (accumulated,sym) = if ((sym == "C"))
74- then (accumulated + 1)
75- else (accumulated + 0)
76-
77-
78-func isSymbolD (accumulated,sym) = if ((sym == "D"))
79- then (accumulated + 1)
80- else (accumulated + 0)
81-
82-
83-func isSymbolE (accumulated,sym) = if ((sym == "E"))
84- then (accumulated + 1)
85- else (accumulated + 0)
86-
87-
88-func isSymbolF (accumulated,sym) = if ((sym == "F"))
89- then (accumulated + 1)
90- else (accumulated + 0)
91-
92-
93-func isSymbolG (accumulated,sym) = if ((sym == "G"))
94- then (accumulated + 1)
95- else (accumulated + 0)
96-
97-
98-func isSymbolH (accumulated,sym) = if ((sym == "H"))
99- then (accumulated + 1)
100- else (accumulated + 0)
101-
102-
103-func isSymbolI (accumulated,sym) = if ((sym == "I"))
104- then (accumulated + 1)
105- else (accumulated + 0)
106-
107-
108-func getAmountOrClear (amount) = if (contains(amount, "0"))
109- then ""
110- else amount
111-
112-
113-func getGen (assetName) = {
114- let genotype = split(dropRight(drop(assetName, 5), 3), "")
115- ((((((((getAmountOrClear((toString({
116- let $l = genotype
117- let $s = size($l)
118- let $acc0 = 0
119- func $f0_1 ($a,$i) = if (($i >= $s))
120- then $a
121- else isSymbolA($a, $l[$i])
122-
123- func $f0_2 ($a,$i) = if (($i >= $s))
124- then $a
125- else throw("List size exceeds 8")
126-
127- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
128- }) + "A")) + getAmountOrClear((toString({
129- let $l = genotype
130- let $s = size($l)
131- let $acc0 = 0
132- func $f1_1 ($a,$i) = if (($i >= $s))
133- then $a
134- else isSymbolB($a, $l[$i])
135-
136- func $f1_2 ($a,$i) = if (($i >= $s))
137- then $a
138- else throw("List size exceeds 8")
139-
140- $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
141- }) + "B"))) + getAmountOrClear((toString({
142- let $l = genotype
143- let $s = size($l)
144- let $acc0 = 0
145- func $f2_1 ($a,$i) = if (($i >= $s))
146- then $a
147- else isSymbolC($a, $l[$i])
148-
149- func $f2_2 ($a,$i) = if (($i >= $s))
150- then $a
151- else throw("List size exceeds 8")
152-
153- $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
154- }) + "C"))) + getAmountOrClear((toString({
155- let $l = genotype
156- let $s = size($l)
157- let $acc0 = 0
158- func $f3_1 ($a,$i) = if (($i >= $s))
159- then $a
160- else isSymbolD($a, $l[$i])
161-
162- func $f3_2 ($a,$i) = if (($i >= $s))
163- then $a
164- else throw("List size exceeds 8")
165-
166- $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
167- }) + "D"))) + getAmountOrClear((toString({
168- let $l = genotype
169- let $s = size($l)
170- let $acc0 = 0
171- func $f4_1 ($a,$i) = if (($i >= $s))
172- then $a
173- else isSymbolE($a, $l[$i])
174-
175- func $f4_2 ($a,$i) = if (($i >= $s))
176- then $a
177- else throw("List size exceeds 8")
178-
179- $f4_2($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
180- }) + "E"))) + getAmountOrClear((toString({
181- let $l = genotype
182- let $s = size($l)
183- let $acc0 = 0
184- func $f5_1 ($a,$i) = if (($i >= $s))
185- then $a
186- else isSymbolF($a, $l[$i])
187-
188- func $f5_2 ($a,$i) = if (($i >= $s))
189- then $a
190- else throw("List size exceeds 8")
191-
192- $f5_2($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
193- }) + "F"))) + getAmountOrClear((toString({
194- let $l = genotype
195- let $s = size($l)
196- let $acc0 = 0
197- func $f6_1 ($a,$i) = if (($i >= $s))
198- then $a
199- else isSymbolG($a, $l[$i])
200-
201- func $f6_2 ($a,$i) = if (($i >= $s))
202- then $a
203- else throw("List size exceeds 8")
204-
205- $f6_2($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
206- }) + "G"))) + getAmountOrClear((toString({
207- let $l = genotype
208- let $s = size($l)
209- let $acc0 = 0
210- func $f7_1 ($a,$i) = if (($i >= $s))
211- then $a
212- else isSymbolH($a, $l[$i])
213-
214- func $f7_2 ($a,$i) = if (($i >= $s))
215- then $a
216- else throw("List size exceeds 8")
217-
218- $f7_2($f7_1($f7_1($f7_1($f7_1($f7_1($f7_1($f7_1($f7_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
219- }) + "H"))) + getAmountOrClear((toString({
220- let $l = genotype
221- let $s = size($l)
222- let $acc0 = 0
223- func $f8_1 ($a,$i) = if (($i >= $s))
224- then $a
225- else isSymbolI($a, $l[$i])
226-
227- func $f8_2 ($a,$i) = if (($i >= $s))
228- then $a
229- else throw("List size exceeds 8")
230-
231- $f8_2($f8_1($f8_1($f8_1($f8_1($f8_1($f8_1($f8_1($f8_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
232- }) + "I")))
233- }
234-
235-
23663 func getAssetOrigin (generation) = if ((generation == "G"))
23764 then incubatorAddress
23865 else breederAddress
24774 }
24875
24976
77+func asString (value) = match value {
78+ case string: String =>
79+ string
80+ case _ =>
81+ throw("wrong type, expected: String")
82+}
83+
84+
25085 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
25186 then true
25287 else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
25388 then {
25489 let assetName = value(assetInfo(assetId)).name
25590 let generation = take(takeRight(assetName, 2), 1)
256- let gen = ((getGen(assetName) + "-") + generation)
257- $Tuple2(gen, getAssetRarity(gen, generation))
91+ let farmGen = asString(invoke(Address(breederAddress), "getGenFromName", [assetName], nil))
92+ if ((farmGen == farmGen))
93+ then {
94+ let gen = ((farmGen + "-") + generation)
95+ $Tuple2(gen, getAssetRarity(gen, generation))
96+ }
97+ else throw("Strict value is not equal to itself.")
25898 }
25999 else throw("not valid NFT")
260100
334174 then throw("you need to set color properly")
335175 else {
336176 let firstPayment = value(i.payments[0])
337- let exactPrice = calculatePerchPrice(toBase58String(i.caller.bytes))
177+ let exactPrice = calculatePerchPrice(toString(i.caller))
338178 if ((firstPayment.assetId != eggsAssetId))
339179 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
340180 else if ((firstPayment.amount != exactPrice))
385225 else if ((0 >= availablePerches))
386226 then throw(("no perches available for the color " + color))
387227 else {
388- let $t01007310138 = getAssetFarmingPower(assetId)
389- let assetGen = $t01007310138._1
390- let assetFarmingPower = $t01007310138._2
228+ let $t084208485 = getAssetFarmingPower(assetId)
229+ let assetGen = $t084208485._1
230+ let assetFarmingPower = $t084208485._2
391231 let assetRewardDelta = calcAssetRewardDelta(address, toBase58String(assetId), assetFarmingPower)
392232 (getStakeResult(address, assetId, assetFarmingPower) ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (availablePerches - 1))])
393233 }
490330 }
491331
492332
493-@Verifier(tx)
494-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
495-
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
55
66 let perchPrice = (100 * 1000000)
77
88 let scale = 10000
99
1010 let scale2 = 1000000
1111
1212 let incubatorAddress = base58'3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM'
1313
1414 let breederAddress = base58'3P9REuLBnYBafDqtEu6hfzs2Rv2haSU158y'
1515
1616 let swopPromoAddress = base58'3P6s9C39Ak5FAQ3F5VapYJ3ULxgbsAReXWD'
1717
1818 let refContractAddress = base58'3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX'
1919
2020 let RefererReward = 5
2121
2222 let rebirthAddress = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba'
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 tryGetStringExternal (address,key) = match getString(address, key) {
4747 case a: String =>
4848 a
4949 case _ =>
5050 ""
5151 }
5252
5353
5454 func tryGetString (key) = tryGetStringExternal(this, key)
5555
5656
5757 func getItemsAddress () = fromBase58String(tryGetString("static_itemsAddress"))
5858
5959
6060 func isUserBlacklisted (address) = false
6161
6262
63-func isSymbolA (accumulated,sym) = if ((sym == "A"))
64- then (accumulated + 1)
65- else (accumulated + 0)
66-
67-
68-func isSymbolB (accumulated,sym) = if ((sym == "B"))
69- then (accumulated + 1)
70- else (accumulated + 0)
71-
72-
73-func isSymbolC (accumulated,sym) = if ((sym == "C"))
74- then (accumulated + 1)
75- else (accumulated + 0)
76-
77-
78-func isSymbolD (accumulated,sym) = if ((sym == "D"))
79- then (accumulated + 1)
80- else (accumulated + 0)
81-
82-
83-func isSymbolE (accumulated,sym) = if ((sym == "E"))
84- then (accumulated + 1)
85- else (accumulated + 0)
86-
87-
88-func isSymbolF (accumulated,sym) = if ((sym == "F"))
89- then (accumulated + 1)
90- else (accumulated + 0)
91-
92-
93-func isSymbolG (accumulated,sym) = if ((sym == "G"))
94- then (accumulated + 1)
95- else (accumulated + 0)
96-
97-
98-func isSymbolH (accumulated,sym) = if ((sym == "H"))
99- then (accumulated + 1)
100- else (accumulated + 0)
101-
102-
103-func isSymbolI (accumulated,sym) = if ((sym == "I"))
104- then (accumulated + 1)
105- else (accumulated + 0)
106-
107-
108-func getAmountOrClear (amount) = if (contains(amount, "0"))
109- then ""
110- else amount
111-
112-
113-func getGen (assetName) = {
114- let genotype = split(dropRight(drop(assetName, 5), 3), "")
115- ((((((((getAmountOrClear((toString({
116- let $l = genotype
117- let $s = size($l)
118- let $acc0 = 0
119- func $f0_1 ($a,$i) = if (($i >= $s))
120- then $a
121- else isSymbolA($a, $l[$i])
122-
123- func $f0_2 ($a,$i) = if (($i >= $s))
124- then $a
125- else throw("List size exceeds 8")
126-
127- $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
128- }) + "A")) + getAmountOrClear((toString({
129- let $l = genotype
130- let $s = size($l)
131- let $acc0 = 0
132- func $f1_1 ($a,$i) = if (($i >= $s))
133- then $a
134- else isSymbolB($a, $l[$i])
135-
136- func $f1_2 ($a,$i) = if (($i >= $s))
137- then $a
138- else throw("List size exceeds 8")
139-
140- $f1_2($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($f1_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
141- }) + "B"))) + getAmountOrClear((toString({
142- let $l = genotype
143- let $s = size($l)
144- let $acc0 = 0
145- func $f2_1 ($a,$i) = if (($i >= $s))
146- then $a
147- else isSymbolC($a, $l[$i])
148-
149- func $f2_2 ($a,$i) = if (($i >= $s))
150- then $a
151- else throw("List size exceeds 8")
152-
153- $f2_2($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($f2_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
154- }) + "C"))) + getAmountOrClear((toString({
155- let $l = genotype
156- let $s = size($l)
157- let $acc0 = 0
158- func $f3_1 ($a,$i) = if (($i >= $s))
159- then $a
160- else isSymbolD($a, $l[$i])
161-
162- func $f3_2 ($a,$i) = if (($i >= $s))
163- then $a
164- else throw("List size exceeds 8")
165-
166- $f3_2($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($f3_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
167- }) + "D"))) + getAmountOrClear((toString({
168- let $l = genotype
169- let $s = size($l)
170- let $acc0 = 0
171- func $f4_1 ($a,$i) = if (($i >= $s))
172- then $a
173- else isSymbolE($a, $l[$i])
174-
175- func $f4_2 ($a,$i) = if (($i >= $s))
176- then $a
177- else throw("List size exceeds 8")
178-
179- $f4_2($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($f4_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
180- }) + "E"))) + getAmountOrClear((toString({
181- let $l = genotype
182- let $s = size($l)
183- let $acc0 = 0
184- func $f5_1 ($a,$i) = if (($i >= $s))
185- then $a
186- else isSymbolF($a, $l[$i])
187-
188- func $f5_2 ($a,$i) = if (($i >= $s))
189- then $a
190- else throw("List size exceeds 8")
191-
192- $f5_2($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($f5_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
193- }) + "F"))) + getAmountOrClear((toString({
194- let $l = genotype
195- let $s = size($l)
196- let $acc0 = 0
197- func $f6_1 ($a,$i) = if (($i >= $s))
198- then $a
199- else isSymbolG($a, $l[$i])
200-
201- func $f6_2 ($a,$i) = if (($i >= $s))
202- then $a
203- else throw("List size exceeds 8")
204-
205- $f6_2($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($f6_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
206- }) + "G"))) + getAmountOrClear((toString({
207- let $l = genotype
208- let $s = size($l)
209- let $acc0 = 0
210- func $f7_1 ($a,$i) = if (($i >= $s))
211- then $a
212- else isSymbolH($a, $l[$i])
213-
214- func $f7_2 ($a,$i) = if (($i >= $s))
215- then $a
216- else throw("List size exceeds 8")
217-
218- $f7_2($f7_1($f7_1($f7_1($f7_1($f7_1($f7_1($f7_1($f7_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
219- }) + "H"))) + getAmountOrClear((toString({
220- let $l = genotype
221- let $s = size($l)
222- let $acc0 = 0
223- func $f8_1 ($a,$i) = if (($i >= $s))
224- then $a
225- else isSymbolI($a, $l[$i])
226-
227- func $f8_2 ($a,$i) = if (($i >= $s))
228- then $a
229- else throw("List size exceeds 8")
230-
231- $f8_2($f8_1($f8_1($f8_1($f8_1($f8_1($f8_1($f8_1($f8_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8)
232- }) + "I")))
233- }
234-
235-
23663 func getAssetOrigin (generation) = if ((generation == "G"))
23764 then incubatorAddress
23865 else breederAddress
23966
24067
24168 func getAssetRarity (genotype,generation) = {
24269 let quantity = getIntegerValue(Address(getAssetOrigin(generation)), (("stats_" + genotype) + "_quantity"))
24370 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
24471 if ((power > 0))
24572 then power
24673 else 2
24774 }
24875
24976
77+func asString (value) = match value {
78+ case string: String =>
79+ string
80+ case _ =>
81+ throw("wrong type, expected: String")
82+}
83+
84+
25085 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == Address(breederAddress)))
25186 then true
25287 else (value(assetInfo(assetId)).issuer == Address(incubatorAddress)))
25388 then {
25489 let assetName = value(assetInfo(assetId)).name
25590 let generation = take(takeRight(assetName, 2), 1)
256- let gen = ((getGen(assetName) + "-") + generation)
257- $Tuple2(gen, getAssetRarity(gen, generation))
91+ let farmGen = asString(invoke(Address(breederAddress), "getGenFromName", [assetName], nil))
92+ if ((farmGen == farmGen))
93+ then {
94+ let gen = ((farmGen + "-") + generation)
95+ $Tuple2(gen, getAssetRarity(gen, generation))
96+ }
97+ else throw("Strict value is not equal to itself.")
25898 }
25999 else throw("not valid NFT")
260100
261101
262102 func getLastKnownAssetFarmingPower (address,assetId) = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_farmingPower"))
263103
264104
265105 func getAssetsByGen (gen) = {
266106 let s = tryGetString(("assets_" + gen))
267107 if ((s == ""))
268108 then nil
269109 else split(s, ",")
270110 }
271111
272112
273113 func calcInterest (previousInterest,previousInterestHeight,totalFarmingPower) = (previousInterest + (((scale * getRewardPerBlock()) * (height - previousInterestHeight)) / totalFarmingPower))
274114
275115
276116 func getCurrentInterest () = if ((tryGetInteger("total_farmingPower") > 0))
277117 then {
278118 let previousInterest = tryGetInteger("total_lastCheckInterest")
279119 let previousInterestHeight = tryGetInteger("total_lastCheckInterestHeight")
280120 let totalFarmingPower = tryGetInteger("total_farmingPower")
281121 calcInterest(previousInterest, previousInterestHeight, totalFarmingPower)
282122 }
283123 else if ((tryGetInteger("total_startHeight") != 0))
284124 then tryGetInteger("total_lastCheckInterest")
285125 else throw("farming is not launched, yet")
286126
287127
288128 func calcAssetRewardDelta (address,assetId,assetFarmingPower) = {
289129 let lastCheckAssetInterest = tryGetInteger((((("address_" + address) + "_asset_") + assetId) + "_lastCheckInterest"))
290130 let currentInterest = getCurrentInterest()
291131 (assetFarmingPower * (currentInterest - lastCheckAssetInterest))
292132 }
293133
294134
295135 func addAssetIdToGenEntry (assetId,assetGen) = {
296136 let currentValue = tryGetString((("assets_" + assetGen) + "_locked"))
297137 if ((currentValue == ""))
298138 then assetId
299139 else ((currentValue + ",") + assetId)
300140 }
301141
302142
303143 func getStakeResult (address,assetId,assetFarmingPower) = {
304144 let asset = toBase58String(assetId)
305145 [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())]
306146 }
307147
308148
309149 func getUnstakeResult (address,assetId,rewardDelta,withdrawnAmount,assetFarmingPower) = {
310150 let asset = toBase58String(assetId)
311151 [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))]
312152 }
313153
314154
315155 func calculatePerchPrice (address) = {
316156 let hasArtefactStaked = tryGetStringExternal(Address(getItemsAddress()), (("ART-XMISTL_" + address) + "_owner"))
317157 if ((hasArtefactStaked == ""))
318158 then perchPrice
319159 else ((perchPrice / 10) * 9)
320160 }
321161
322162
323163 @Callable(i)
324164 func init () = if ((i.caller != this))
325165 then throw("admin only")
326166 else [IntegerEntry("total_startHeight", height)]
327167
328168
329169
330170 @Callable(i)
331171 func buyPerch (color,refererAddress) = if ((isLocked() > 0))
332172 then throw("EGG operations are temporarily locked")
333173 else if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
334174 then throw("you need to set color properly")
335175 else {
336176 let firstPayment = value(i.payments[0])
337- let exactPrice = calculatePerchPrice(toBase58String(i.caller.bytes))
177+ let exactPrice = calculatePerchPrice(toString(i.caller))
338178 if ((firstPayment.assetId != eggsAssetId))
339179 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
340180 else if ((firstPayment.amount != exactPrice))
341181 then throw(("To buy a perch you currently need the following amount of EGGlets: " + toString(exactPrice)))
342182 else {
343183 let refererRewardForPerch = fraction(firstPayment.amount, RefererReward, 100)
344184 let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererRewardForPerch)])
345185 if ((refCall == refCall))
346186 then {
347187 let perchAmountKey = ((("address_" + toString(i.caller)) + "_perchesAvailable_") + color)
348188 let perchAmount = tryGetInteger(perchAmountKey)
349189 [IntegerEntry(perchAmountKey, (perchAmount + 1))]
350190 }
351191 else throw("Strict value is not equal to itself.")
352192 }
353193 }
354194
355195
356196
357197 @Callable(i)
358198 func addFreePerch (address,color) = if ((0 > value(indexOf(["B", "R", "G", "Y"], color))))
359199 then throw("you need to set color properly")
360200 else if (if (if ((i.caller != Address(rebirthAddress)))
361201 then (i.caller != this)
362202 else false)
363203 then (i.caller != Address(swopPromoAddress))
364204 else false)
365205 then throw("rebirth and swop promo only")
366206 else {
367207 let perchAmountKey = ((("address_" + address) + "_perchesAvailable_") + color)
368208 let perchAmount = tryGetInteger(perchAmountKey)
369209 $Tuple2([IntegerEntry(perchAmountKey, (perchAmount + 1))], "")
370210 }
371211
372212
373213
374214 @Callable(i)
375215 func stakeNFT () = if ((isLocked() > 0))
376216 then throw("EGG operations are temporarily locked")
377217 else {
378218 let pmt = value(i.payments[0])
379219 let assetId = value(value(i.payments[0]).assetId)
380220 let address = toString(i.caller)
381221 let color = takeRight(value(assetInfo(assetId)).name, 1)
382222 let availablePerches = tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color))
383223 if ((pmt.amount != 1))
384224 then throw("NFT is not attached")
385225 else if ((0 >= availablePerches))
386226 then throw(("no perches available for the color " + color))
387227 else {
388- let $t01007310138 = getAssetFarmingPower(assetId)
389- let assetGen = $t01007310138._1
390- let assetFarmingPower = $t01007310138._2
228+ let $t084208485 = getAssetFarmingPower(assetId)
229+ let assetGen = $t084208485._1
230+ let assetFarmingPower = $t084208485._2
391231 let assetRewardDelta = calcAssetRewardDelta(address, toBase58String(assetId), assetFarmingPower)
392232 (getStakeResult(address, assetId, assetFarmingPower) ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (availablePerches - 1))])
393233 }
394234 }
395235
396236
397237
398238 @Callable(i)
399239 func unstakeNFT (asset) = if (isUserBlacklisted(toString(i.caller)))
400240 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!")
401241 else if ((isLocked() > 0))
402242 then throw("EGG operations are temporarily locked")
403243 else {
404244 let assetId = fromBase58String(asset)
405245 let address = toString(i.caller)
406246 let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
407247 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
408248 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
409249 let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
410250 let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
411251 let color = takeRight(value(assetInfo(assetId)).name, 1)
412252 if ((0 >= assetFarmingPower))
413253 then throw("asset not available")
414254 else if ((color == "U"))
415255 then throw("use another function to unstake Jackpot NFT")
416256 else {
417257 let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
418258 $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))
419259 }
420260 }
421261
422262
423263
424264 @Callable(i)
425265 func stakeJackpot (color) = if ((isLocked() > 0))
426266 then throw("EGG operations are temporarily locked")
427267 else {
428268 let pmt = value(i.payments[0])
429269 let assetId = value(pmt.assetId)
430270 let address = toString(i.caller)
431271 let availablePerches = tryGetInteger(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color))
432272 let assetIssuer = value(assetInfo(assetId)).issuer.bytes
433273 if ((pmt.amount != 1))
434274 then throw("NFT is not attached")
435275 else if (if ((assetIssuer == incubatorAddress))
436276 then true
437277 else (assetIssuer == breederAddress))
438278 then if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
439279 then throw("jackpot only")
440280 else if ((0 >= availablePerches))
441281 then throw(("no perches available for the color " + color))
442282 else (getStakeResult(address, assetId, 100) ++ [IntegerEntry(((("address_" + toString(i.caller)) + "_perchesAvailable_") + color), (availablePerches - 1)), StringEntry((((("address_" + toString(i.caller)) + "_asset_") + toBase58String(assetId)) + "_perchColor"), color)])
443283 else throw("asset is not valid")
444284 }
445285
446286
447287
448288 @Callable(i)
449289 func unstakeJackpot (asset) = if (isUserBlacklisted(toString(i.caller)))
450290 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!")
451291 else if ((isLocked() > 0))
452292 then throw("EGG operations are temporarily locked")
453293 else {
454294 let assetId = fromBase58String(asset)
455295 let address = toString(i.caller)
456296 let color = tryGetString((((("address_" + address) + "_asset_") + asset) + "_perchColor"))
457297 let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
458298 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
459299 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
460300 let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
461301 let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
462302 if ((takeRight(value(value(assetInfo(assetId)).name), 1) != "U"))
463303 then throw("jackpot only")
464304 else if ((assetFarmingPower > 0))
465305 then {
466306 let result = getUnstakeResult(address, assetId, assetRewardDelta, reward, assetFarmingPower)
467307 $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))
468308 }
469309 else throw("")
470310 }
471311
472312
473313
474314 @Callable(i)
475315 func claimReward (asset) = if (isUserBlacklisted(toString(i.caller)))
476316 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!")
477317 else if ((isLocked() > 0))
478318 then throw("EGG operations are temporarily locked")
479319 else {
480320 let address = toString(i.caller)
481321 let assetId = fromBase58String(asset)
482322 let assetFarmingPower = getLastKnownAssetFarmingPower(address, asset)
483323 let assetRewardDelta = calcAssetRewardDelta(address, asset, assetFarmingPower)
484324 let farmedAmount = (assetRewardDelta + tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_lastCheckFarmedAmount")))
485325 let withdrawnAmount = tryGetInteger((((("address_" + address) + "_asset_") + asset) + "_withdrawnAmount"))
486326 let reward = ((farmedAmount - withdrawnAmount) / (scale * 100))
487327 if ((0 >= reward))
488328 then throw("you have no EGGs to withdraw")
489329 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))
490330 }
491331
492332
493-@Verifier(tx)
494-func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
495-

github/deemru/w8io/6500d08 
71.53 ms