tx · G4dxZjwc2fW6TGwwddGfGEmeMd7HJMVJ6MmbUejz1Xzk

3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ:  -0.02100000 Waves

2023.05.20 14:18 [3651710] smart account 3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ > SELF 0.00000000 Waves

{ "type": 13, "id": "G4dxZjwc2fW6TGwwddGfGEmeMd7HJMVJ6MmbUejz1Xzk", "fee": 2100000, "feeAssetId": null, "timestamp": 1684581505788, "version": 2, "chainId": 87, "sender": "3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ", "senderPublicKey": "HobXgEQL44LfeEEq2G69uiciuAuiUBfG33UF4ubYmNMd", "proofs": [ "5wAgccz7VuCNgvFbpfwzwrhgjicSxP5qEstLFqM6YBJRHSBiG7RyWhRzYBdSDdcSA5V6H4u5k5GE7Zp3n1smxoTH", "5BoC6tUmWpfYH4NJ3zqVe838VHtNH3UG3Stnfmt742fyWhkrpQSRXpm2g9imQLfuJ3CSz9CWViLR3uKB8rKvrHQU" ], "script": "base64:AAIFAAAAAAAAABEIAhIDCgEIEgMKAQgSAwoBCAAAADABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABF0cnlHZXRJbnRFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAbUlRHSUU6IFNvbWV0aGluZyB3ZW50IHdyb25nAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAABBkZWxheUZvckhhdGNoaW5nAAAAAAAAAAACAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAAAAAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAAGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwAAAAACAAAAFXN0YXRpY19mYXJtaW5nQWRkcmVzcwEAAAAZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwAAAAACAAAAFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBAAAAGXN0YXRpY0tleV9nYW1lRGFwcEFkZHJlc3MAAAAAAgAAABZzdGF0aWNfZ2FtZURhcHBBZGRyZXNzAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAIAAAATc3RhdGljX2l0ZW1zQWRkcmVzcwEAAAAYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAAAAAIAAAAVc3RhdGljX2NvdXBvbnNBZGRyZXNzAQAAABlzdGF0aWNLZXlfbWV0YVJhY2VBZGRyZXNzAAAAAAIAAAAWc3RhdGljX21ldGFSYWNlQWRkcmVzcwEAAAAVc3RhdGljS2V5X2h1bnRBZGRyZXNzAAAAAAIAAAASc3RhdGljX2h1bnRBZGRyZXNzAQAAABVzdGF0aWNLZXlfYnVybkFkZHJlc3MAAAAAAgAAABJzdGF0aWNfYnVybkFkZHJlc3MBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAgAAAA9zdGF0aWNfZXh0cmFGZWUBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAIAAAAUc3RhdGljX2ZlZUFnZ3JlZ2F0b3IBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAABAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwAAAAABAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2JyZWVkZXJBZGRyZXNzAAAAAAEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABhzdGF0aWNLZXlfZmFybWluZ0FkZHJlc3MAAAAAAQAAABJnZXRCYWJ5RHVja0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABlzdGF0aWNLZXlfYmFieUR1Y2tBZGRyZXNzAAAAAAEAAAASZ2V0R2FtZURhcHBBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAZc3RhdGljS2V5X2dhbWVEYXBwQWRkcmVzcwAAAAABAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAAAAAAQAAABFnZXRDb3Vwb25zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGHN0YXRpY0tleV9jb3Vwb25zQWRkcmVzcwAAAAABAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGXN0YXRpY0tleV9tZXRhUmFjZUFkZHJlc3MAAAAAAQAAAA5nZXRIdW50QWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFXN0YXRpY0tleV9odW50QWRkcmVzcwAAAAABAAAADmdldEJ1cm5BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAAAAAEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAABAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAABAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABlSQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABxSQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQABpAAAAAEFAAAACWZlZUFtb3VudAIAAAATIGFtb3VudCBvZiB3YXZlbGV0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAFAAAACWZlZUFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAABJQ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", "height": 3651710, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GfjSKRN5RaDLyqWUpK67YAzVLg3cJigcZsCYCXXniSmo Next: EAuARJDp7JJdobBNt4L9TE8bKgedtC4UKmVpWUwxcSZ1 Diff:
OldNewDifferences
215215 then "item_ART-BUILTBODY"
216216 else if ((750 > n))
217217 then "item_ART-FEED10"
218- else if ((875 > n))
219- then "ar"
220- else "meta"
218+ else if ((800 > n))
219+ then "item_ART-FIRE_ARMOUR"
220+ else if ((900 > n))
221+ then "ar"
222+ else "meta"
221223 }
222224 }
223225
300302 else 0
301303 if ((payment == payment))
302304 then {
303- let $t085158564 = getAssetFarmingPower(assetId)
304- let gen = $t085158564._1
305- let rarity = $t085158564._2
305+ let $t085668615 = getAssetFarmingPower(assetId)
306+ let gen = $t085668615._1
307+ let rarity = $t085668615._2
306308 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
307309 if ((call == call))
308310 then ([IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))] ++ validPayment)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func tryGetStringExternal (address,key) = match getString(address, key) {
55 case a: String =>
66 a
77 case _ =>
88 ""
99 }
1010
1111
1212 func tryGetIntExternal (address,key) = match getInteger(address, key) {
1313 case a: Int =>
1414 a
1515 case _ =>
1616 throw("RTGIE: Something went wrong")
1717 }
1818
1919
2020 func tryGetString (key) = tryGetStringExternal(this, key)
2121
2222
2323 let delayForHatching = 2
2424
2525 func staticKey_oracleAddress () = "static_oracleAddress"
2626
2727
2828 func staticKey_eggAssetId () = "static_eggAssetId"
2929
3030
3131 func staticKey_incubatorAddress () = "static_incubatorAddress"
3232
3333
3434 func staticKey_breederAddress () = "static_breederAddress"
3535
3636
3737 func staticKey_farmingAddress () = "static_farmingAddress"
3838
3939
4040 func staticKey_babyDuckAddress () = "static_babyDuckAddress"
4141
4242
4343 func staticKey_gameDappAddress () = "static_gameDappAddress"
4444
4545
4646 func staticKey_itemsAddress () = "static_itemsAddress"
4747
4848
4949 func staticKey_couponsAddress () = "static_couponsAddress"
5050
5151
5252 func staticKey_metaRaceAddress () = "static_metaRaceAddress"
5353
5454
5555 func staticKey_huntAddress () = "static_huntAddress"
5656
5757
5858 func staticKey_burnAddress () = "static_burnAddress"
5959
6060
6161 func staticKey_refContractAddress () = "static_refContractAddress"
6262
6363
6464 func staticKey_extraFee () = "static_extraFee"
6565
6666
6767 func staticKey_feeAggregator () = "static_feeAggregator"
6868
6969
7070 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
7171
7272
7373 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
7474
7575
7676 func getIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_incubatorAddress())))
7777
7878
7979 func getBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_breederAddress())))
8080
8181
8282 func getFarmingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_farmingAddress())))
8383
8484
8585 func getBabyDuckAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_babyDuckAddress())))
8686
8787
8888 func getGameDappAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_gameDappAddress())))
8989
9090
9191 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
9292
9393
9494 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
9595
9696
9797 func getMetaraceAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_metaRaceAddress())))
9898
9999
100100 func getHuntAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_huntAddress())))
101101
102102
103103 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_burnAddress())))
104104
105105
106106 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
107107
108108
109109 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
110110
111111
112112 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
113113 then throw("RCAP: Please attach waves")
114114 else {
115115 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
116116 if ((payment.amount != feeAmount))
117117 then throw((("RCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
118118 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
119119 }
120120
121121
122122 let PHOENIXBASEOPTIONS = 1000
123123
124124 func tryGetInteger (key) = match getInteger(this, key) {
125125 case b: Int =>
126126 b
127127 case _ =>
128128 0
129129 }
130130
131131
132132 func asString (value) = match value {
133133 case s: String =>
134134 s
135135 case s: Int =>
136136 throw("wrong type, expected: String, got: Int")
137137 case s: Unit =>
138138 throw("wrong type, expected: String, got: Unit")
139139 case _ =>
140140 throw("wrong type, expected: String")
141141 }
142142
143143
144144 let feeAmount = tryGetInteger("currentPrice")
145145
146146 func getAmountOrClear (amount) = if (contains(amount, "0"))
147147 then ""
148148 else amount
149149
150150
151151 func getAssetOrigin (generation) = if ((generation == "G"))
152152 then getIncubatorAddress()
153153 else getBreederAddress()
154154
155155
156156 func getAssetRarity (genotype,generation) = {
157157 let quantity = getIntegerValue(getAssetOrigin(generation), (("stats_" + genotype) + "_quantity"))
158158 let power = pow((10000 / quantity), 4, 5, 1, 2, FLOOR)
159159 if ((power > 0))
160160 then power
161161 else 2
162162 }
163163
164164
165165 func getAssetFarmingPower (assetId) = if (if ((value(assetInfo(assetId)).issuer == getBreederAddress()))
166166 then true
167167 else (value(assetInfo(assetId)).issuer == getIncubatorAddress()))
168168 then {
169169 let assetName = value(assetInfo(assetId)).name
170170 let generation = take(takeRight(assetName, 2), 1)
171171 let farmGen = asString(invoke(getBreederAddress(), "getGenFromName", [assetName], nil))
172172 if ((farmGen == farmGen))
173173 then $Tuple2(farmGen, getAssetRarity(farmGen, generation))
174174 else throw("Strict value is not equal to itself.")
175175 }
176176 else throw("not valid NFT")
177177
178178
179179 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
180180 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
181181 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
182182 (toInt(randomHash, (offset * 8)) % options)
183183 }
184184
185185
186186 func getRandomWin (tx,finishHeight,assetRarity) = {
187187 let phoenixOptions = (PHOENIXBASEOPTIONS - fraction((PHOENIXBASEOPTIONS / 2), assetRarity, 100))
188188 let jackpotRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 1)
189189 let itemRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 2)
190190 if ((jackpotRandom == 1))
191191 then "phoenix"
192192 else if ((itemRandom == 1))
193193 then "item_ART-FREEGENE"
194194 else {
195195 let n = getRandomNumber(1000, tx, finishHeight, 0)
196196 if ((150 > n))
197197 then "duckling_2"
198198 else if ((200 > n))
199199 then "duckling_10"
200200 else if ((210 > n))
201201 then "duckling_20"
202202 else if ((250 > n))
203203 then "incubator"
204204 else if ((280 > n))
205205 then "item_ART-SNAKE"
206206 else if ((410 > n))
207207 then "item_ART-KATANA"
208208 else if ((460 > n))
209209 then "item_ART-ROBODUCK"
210210 else if ((480 > n))
211211 then "item_ART-CROWN"
212212 else if ((610 > n))
213213 then "item_ART-SCEPTER"
214214 else if ((740 > n))
215215 then "item_ART-BUILTBODY"
216216 else if ((750 > n))
217217 then "item_ART-FEED10"
218- else if ((875 > n))
219- then "ar"
220- else "meta"
218+ else if ((800 > n))
219+ then "item_ART-FIRE_ARMOUR"
220+ else if ((900 > n))
221+ then "ar"
222+ else "meta"
221223 }
222224 }
223225
224226
225227 func getOrigin (assetId) = {
226228 let assetName = value(assetInfo(assetId)).name
227229 let generation = take(takeRight(assetName, 2), 1)
228230 if (if ((generation == "G"))
229231 then true
230232 else (generation == "J"))
231233 then getIncubatorAddress()
232234 else getBreederAddress()
233235 }
234236
235237
236238 func asInt (value) = match value {
237239 case int: Int =>
238240 int
239241 case string: String =>
240242 throw(("RAI: wrong type, expected: Int, but got: " + string))
241243 case _ =>
242244 throw("RAI: wrong type, expected: Int")
243245 }
244246
245247
246248 func getBool (key) = match getBoolean(this, key) {
247249 case b: Boolean =>
248250 b
249251 case _ =>
250252 false
251253 }
252254
253255
254256 func isTestEnv () = getBool("TESTENV")
255257
256258
257259 @Callable(i)
258260 func configureOracle (oracle) = if ((i.caller != this))
259261 then throw("RCU: admin only")
260262 else [StringEntry("static_oracleAddress", oracle)]
261263
262264
263265
264266 @Callable(i)
265267 func initRebirth (refererAddress) = {
266268 let pmt = i.payments[0]
267269 let assetId = value(pmt.assetId)
268270 let initTx = toBase58String(i.transactionId)
269271 let address = toString(i.caller)
270272 if ((pmt.amount != 1))
271273 then throw("NFT is not attached")
272274 else {
273275 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
274276 if ((amountPaidByCoupons == amountPaidByCoupons))
275277 then {
276278 let leftToPay = (feeAmount - amountPaidByCoupons)
277279 let validPayment = checkAdditionalPayment(i.payments[1])
278280 if ((validPayment == validPayment))
279281 then {
280282 let payment = if ((leftToPay != 0))
281283 then {
282284 let feePayment = value(i.payments[2])
283285 if ((feePayment.assetId != getEggAssetId()))
284286 then throw("You need to attach EGG tokens as fee")
285287 else if ((leftToPay > feePayment.amount))
286288 then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
287289 else {
288290 let refererRewardForPerch = fraction(leftToPay, 5, 100)
289291 let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
290292 if ((refCall == refCall))
291293 then {
292294 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
293295 if ((burnCall == burnCall))
294296 then leftToPay
295297 else throw("Strict value is not equal to itself.")
296298 }
297299 else throw("Strict value is not equal to itself.")
298300 }
299301 }
300302 else 0
301303 if ((payment == payment))
302304 then {
303- let $t085158564 = getAssetFarmingPower(assetId)
304- let gen = $t085158564._1
305- let rarity = $t085158564._2
305+ let $t085668615 = getAssetFarmingPower(assetId)
306+ let gen = $t085668615._1
307+ let rarity = $t085668615._2
306308 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
307309 if ((call == call))
308310 then ([IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"), rarity), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))] ++ validPayment)
309311 else throw("Strict value is not equal to itself.")
310312 }
311313 else throw("Strict value is not equal to itself.")
312314 }
313315 else throw("Strict value is not equal to itself.")
314316 }
315317 else throw("Strict value is not equal to itself.")
316318 }
317319 }
318320
319321
320322
321323 @Callable(i)
322324 func finishRebirth (initTx) = {
323325 let address = toString(i.caller)
324326 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
325327 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
326328 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
327329 let validPayment = checkAdditionalPayment(i.payments[0])
328330 if ((validPayment == validPayment))
329331 then {
330332 func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
331333
332334 func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
333335
334336 if ((status != "open"))
335337 then throw("rebirth is finished or not open")
336338 else if ((finishBlock > height))
337339 then throw("you cannot finish rebirth, yet")
338340 else {
339341 let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
340342 let txId = initTx
341343 let result = if ((indexOf(win, "perch") != unit))
342344 then {
343345 let color = takeRight(win, 1)
344346 let call = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
345347 if ((call == call))
346348 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
347349 else throw("Strict value is not equal to itself.")
348350 }
349351 else if ((win == "incubator"))
350352 then {
351353 let call = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
352354 if ((call == call))
353355 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
354356 else throw("Strict value is not equal to itself.")
355357 }
356358 else if ((win == "ar"))
357359 then {
358360 let assetId = getAccessItemAssetId(getHuntAddress())
359361 let price = getAccessItemPrice(getHuntAddress())
360362 let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
361363 if ((call == call))
362364 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
363365 else throw("Strict value is not equal to itself.")
364366 }
365367 else if ((win == "meta"))
366368 then {
367369 let assetId = getAccessItemAssetId(getMetaraceAddress())
368370 let price = getAccessItemPrice(getMetaraceAddress())
369371 let call = invoke(getMetaraceAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
370372 if ((call == call))
371373 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
372374 else throw("Strict value is not equal to itself.")
373375 }
374376 else if ((win == "phoenix"))
375377 then {
376378 let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
377379 if ((call == call))
378380 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
379381 else throw("Strict value is not equal to itself.")
380382 }
381383 else if ((indexOf(win, "duckling") != unit))
382384 then {
383385 let level = parseIntValue(split(win, "_")[1])
384386 let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, level], nil)
385387 if ((call == call))
386388 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
387389 else throw("Strict value is not equal to itself.")
388390 }
389391 else if ((indexOf(win, "item") != unit))
390392 then {
391393 let itemName = split(win, "_")[1]
392394 let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
393395 if ((call == call))
394396 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
395397 else throw("Strict value is not equal to itself.")
396398 }
397399 else throw("RFB: Some error occured, please contact the admins!")
398400 ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
399401 }
400402 }
401403 else throw("Strict value is not equal to itself.")
402404 }
403405
404406
405407 @Verifier(tx)
406408 func verify () = if (isTestEnv())
407409 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
408410 else {
409411 let firstUser = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
410412 let secondUser = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
411413 let thirdUser = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
412414 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
413415 then 1
414416 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
415417 then 1
416418 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
417419 then 1
418420 else 0
419421 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
420422 then 1
421423 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
422424 then 1
423425 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
424426 then 1
425427 else 0
426428 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
427429 then 1
428430 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
429431 then 1
430432 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
431433 then 1
432434 else 0
433435 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
434436 match tx {
435437 case _ =>
436438 (signaturesCount >= 2)
437439 }
438440 }
439441

github/deemru/w8io/3ef1775 
63.94 ms