tx · 4taFPuLFCw4VAa3GUMbYWiUD3WdkGW7iN4cipFGRH2yt

3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba:  -0.02100000 Waves

2023.05.12 20:11 [3640474] smart account 3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba > SELF 0.00000000 Waves

{ "type": 13, "id": "4taFPuLFCw4VAa3GUMbYWiUD3WdkGW7iN4cipFGRH2yt", "fee": 2100000, "feeAssetId": null, "timestamp": 1683911620751, "version": 2, "chainId": 87, "sender": "3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba", "senderPublicKey": "8yG34okaNeKtYZriaoqUQTinJjpk3pYKFTeGptmiWvTV", "proofs": [ "X4469cmBGNotRQrtMAtiK2raLENGxqjMsUnifvb4uArt8EhJqHBwvyYD5GL2NAXMShRppBBJZLfuUrmNFPrrWzM" ], "script": "base64:AAIFAAAAAAAAABEIAhIDCgEIEgMKAQgSAwoBCAAAADABAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAABF0cnlHZXRJbnRFeHRlcm5hbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAbUlRHSUU6IFNvbWV0aGluZyB3ZW50IHdyb25nAQAAAAx0cnlHZXRTdHJpbmcAAAABAAAAA2tleQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgUAAAAEdGhpcwUAAAADa2V5AAAAABBkZWxheUZvckhhdGNoaW5nAAAAAAAAAAACAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwAAAAACAAAAF3N0YXRpY19pbmN1YmF0b3JBZGRyZXNzAQAAABhzdGF0aWNLZXlfYnJlZWRlckFkZHJlc3MAAAAAAgAAABVzdGF0aWNfYnJlZWRlckFkZHJlc3MBAAAAGHN0YXRpY0tleV9mYXJtaW5nQWRkcmVzcwAAAAACAAAAFXN0YXRpY19mYXJtaW5nQWRkcmVzcwEAAAAZc3RhdGljS2V5X2JhYnlEdWNrQWRkcmVzcwAAAAACAAAAFnN0YXRpY19iYWJ5RHVja0FkZHJlc3MBAAAAGXN0YXRpY0tleV9nYW1lRGFwcEFkZHJlc3MAAAAAAgAAABZzdGF0aWNfZ2FtZURhcHBBZGRyZXNzAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAIAAAATc3RhdGljX2l0ZW1zQWRkcmVzcwEAAAAYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAAAAAIAAAAVc3RhdGljX2NvdXBvbnNBZGRyZXNzAQAAABlzdGF0aWNLZXlfbWV0YVJhY2VBZGRyZXNzAAAAAAIAAAAWc3RhdGljX21ldGFSYWNlQWRkcmVzcwEAAAAVc3RhdGljS2V5X2h1bnRBZGRyZXNzAAAAAAIAAAASc3RhdGljX2h1bnRBZGRyZXNzAQAAABVzdGF0aWNLZXlfYnVybkFkZHJlc3MAAAAAAgAAABJzdGF0aWNfYnVybkFkZHJlc3MBAAAAHHN0YXRpY0tleV9yZWZDb250cmFjdEFkZHJlc3MAAAAAAgAAABlzdGF0aWNfcmVmQ29udHJhY3RBZGRyZXNzAQAAABJzdGF0aWNLZXlfZXh0cmFGZWUAAAAAAgAAAA9zdGF0aWNfZXh0cmFGZWUBAAAAF3N0YXRpY0tleV9mZWVBZ2dyZWdhdG9yAAAAAAIAAAAUc3RhdGljX2ZlZUFnZ3JlZ2F0b3IBAAAACWdldE9yYWNsZQAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAMdHJ5R2V0U3RyaW5nAAAAAQkBAAAAF3N0YXRpY0tleV9vcmFjbGVBZGRyZXNzAAAAAAEAAAANZ2V0RWdnQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAABAAAAE2dldEluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABpzdGF0aWNLZXlfaW5jdWJhdG9yQWRkcmVzcwAAAAABAAAAEWdldEJyZWVkZXJBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2JyZWVkZXJBZGRyZXNzAAAAAAEAAAARZ2V0RmFybWluZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABhzdGF0aWNLZXlfZmFybWluZ0FkZHJlc3MAAAAAAQAAABJnZXRCYWJ5RHVja0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABlzdGF0aWNLZXlfYmFieUR1Y2tBZGRyZXNzAAAAAAEAAAASZ2V0R2FtZURhcHBBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAZc3RhdGljS2V5X2dhbWVEYXBwQWRkcmVzcwAAAAABAAAAD2dldEl0ZW1zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFnN0YXRpY0tleV9pdGVtc0FkZHJlc3MAAAAAAQAAABFnZXRDb3Vwb25zQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGHN0YXRpY0tleV9jb3Vwb25zQWRkcmVzcwAAAAABAAAAEmdldE1ldGFyYWNlQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAGXN0YXRpY0tleV9tZXRhUmFjZUFkZHJlc3MAAAAAAQAAAA5nZXRIdW50QWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFXN0YXRpY0tleV9odW50QWRkcmVzcwAAAAABAAAADmdldEJ1cm5BZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAVc3RhdGljS2V5X2J1cm5BZGRyZXNzAAAAAAEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAABAAAAEGdldEZlZUFnZ3JlZ2F0b3IAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABdzdGF0aWNLZXlfZmVlQWdncmVnYXRvcgAAAAABAAAAFmNoZWNrQWRkaXRpb25hbFBheW1lbnQAAAABAAAAB3BheW1lbnQDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAABlSQ0FQOiBQbGVhc2UgYXR0YWNoIHdhdmVzBAAAAAlmZWVBbW91bnQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAASc3RhdGljS2V5X2V4dHJhRmVlAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAJZmVlQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABxSQ0FQOiBQbGVhc2UgYXR0YWNoIGV4YWN0bHkgCQABpAAAAAEFAAAACWZlZUFtb3VudAIAAAATIGFtb3VudCBvZiB3YXZlbGV0cwkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAQZ2V0RmVlQWdncmVnYXRvcgAAAAAFAAAACWZlZUFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAABJQ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", "height": 3640474, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G6XefpmYPKbpKLfwWgTSqYMYKmDgxS5nyMApY96DAAa Next: 73XgxhepLTVGzmRLaz46sh7CCX1Qm1iJ64XZxBhBEa5m 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"
218218 else if ((875 > n))
219219 then "ar"
220220 else "meta"
221221 }
222222 }
223223
224224
225225 func getOrigin (assetId) = {
226226 let assetName = value(assetInfo(assetId)).name
227227 let generation = take(takeRight(assetName, 2), 1)
228228 if (if ((generation == "G"))
229229 then true
230230 else (generation == "J"))
231231 then getIncubatorAddress()
232232 else getBreederAddress()
233233 }
234234
235235
236236 func asInt (value) = match value {
237237 case int: Int =>
238238 int
239239 case string: String =>
240240 throw(("RAI: wrong type, expected: Int, but got: " + string))
241241 case _ =>
242242 throw("RAI: wrong type, expected: Int")
243243 }
244244
245245
246246 func getBool (key) = match getBoolean(this, key) {
247247 case b: Boolean =>
248248 b
249249 case _ =>
250250 false
251251 }
252252
253253
254254 func isTestEnv () = getBool("TESTENV")
255255
256256
257257 @Callable(i)
258258 func configureOracle (oracle) = if ((i.caller != this))
259259 then throw("RCU: admin only")
260260 else [StringEntry("static_oracleAddress", oracle)]
261261
262262
263263
264264 @Callable(i)
265265 func initRebirth (refererAddress) = {
266266 let pmt = i.payments[0]
267267 let assetId = value(pmt.assetId)
268268 let initTx = toBase58String(i.transactionId)
269269 let address = toString(i.caller)
270270 if ((pmt.amount != 1))
271271 then throw("NFT is not attached")
272272 else {
273273 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [feeAmount], nil))
274274 if ((amountPaidByCoupons == amountPaidByCoupons))
275275 then {
276276 let leftToPay = (feeAmount - amountPaidByCoupons)
277277 let validPayment = checkAdditionalPayment(i.payments[1])
278278 if ((validPayment == validPayment))
279279 then {
280280 let payment = if ((leftToPay != 0))
281281 then {
282282 let feePayment = value(i.payments[2])
283283 if ((feePayment.assetId != getEggAssetId()))
284284 then throw("You need to attach EGG tokens as fee")
285285 else if ((leftToPay > feePayment.amount))
286286 then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
287287 else {
288288 let refererRewardForPerch = fraction(leftToPay, 5, 100)
289289 let refCall = invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)])
290290 if ((refCall == refCall))
291291 then {
292292 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), (leftToPay - refererRewardForPerch))])
293293 if ((burnCall == burnCall))
294294 then leftToPay
295295 else throw("Strict value is not equal to itself.")
296296 }
297297 else throw("Strict value is not equal to itself.")
298298 }
299299 }
300300 else 0
301301 if ((payment == payment))
302302 then {
303303 let $t085158564 = getAssetFarmingPower(assetId)
304304 let gen = $t085158564._1
305305 let rarity = $t085158564._2
306306 let call = invoke(getOrigin(assetId), "reduceRarity", [toBase58String(assetId), gen], nil)
307307 if ((call == call))
308308 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)
309309 else throw("Strict value is not equal to itself.")
310310 }
311311 else throw("Strict value is not equal to itself.")
312312 }
313313 else throw("Strict value is not equal to itself.")
314314 }
315315 else throw("Strict value is not equal to itself.")
316316 }
317317 }
318318
319319
320320
321321 @Callable(i)
322322 func finishRebirth (initTx) = {
323323 let address = toString(i.caller)
324324 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
325325 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
326326 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
327327 let validPayment = checkAdditionalPayment(i.payments[0])
328328 if ((validPayment == validPayment))
329329 then {
330330 func getAccessItemAssetId (address) = fromBase58String(tryGetStringExternal(address, "static_accessItemAssetId"))
331331
332332 func getAccessItemPrice (address) = tryGetIntExternal(address, "static_accessItemPrice")
333333
334334 if ((status != "open"))
335335 then throw("rebirth is finished or not open")
336336 else if ((finishBlock > height))
337337 then throw("you cannot finish rebirth, yet")
338338 else {
339339 let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
340340 let txId = initTx
341341 let result = if ((indexOf(win, "perch") != unit))
342342 then {
343343 let color = takeRight(win, 1)
344344 let call = invoke(getFarmingAddress(), "addFreePerch", [address, color], nil)
345345 if ((call == call))
346346 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
347347 else throw("Strict value is not equal to itself.")
348348 }
349349 else if ((win == "incubator"))
350350 then {
351351 let call = invoke(getIncubatorAddress(), "issueFreeDuck", [address, txId], nil)
352352 if ((call == call))
353353 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
354354 else throw("Strict value is not equal to itself.")
355355 }
356356 else if ((win == "ar"))
357357 then {
358358 let assetId = getAccessItemAssetId(getHuntAddress())
359359 let price = getAccessItemPrice(getHuntAddress())
360360 let call = invoke(getHuntAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
361361 if ((call == call))
362362 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
363363 else throw("Strict value is not equal to itself.")
364364 }
365365 else if ((win == "meta"))
366366 then {
367367 let assetId = getAccessItemAssetId(getMetaraceAddress())
368368 let price = getAccessItemPrice(getMetaraceAddress())
369369 let call = invoke(getMetaraceAddress(), "buyAccessItemOther", [address], [AttachedPayment(assetId, price)])
370370 if ((call == call))
371371 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
372372 else throw("Strict value is not equal to itself.")
373373 }
374374 else if ((win == "phoenix"))
375375 then {
376376 let call = invoke(getIncubatorAddress(), "issueJackpot", [address, txId, "WWWWWWWP"], nil)
377377 if ((call == call))
378378 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
379379 else throw("Strict value is not equal to itself.")
380380 }
381381 else if ((indexOf(win, "duckling") != unit))
382382 then {
383383 let level = parseIntValue(split(win, "_")[1])
384384 let call = invoke(getBabyDuckAddress(), "issueFreeDuckling", [address, txId, level], nil)
385385 if ((call == call))
386386 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
387387 else throw("Strict value is not equal to itself.")
388388 }
389389 else if ((indexOf(win, "item") != unit))
390390 then {
391391 let itemName = split(win, "_")[1]
392392 let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
393393 if ((call == call))
394394 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
395395 else throw("Strict value is not equal to itself.")
396396 }
397397 else throw("RFB: Some error occured, please contact the admins!")
398398 ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
399399 }
400400 }
401401 else throw("Strict value is not equal to itself.")
402402 }
403403
404404
405405 @Verifier(tx)
406406 func verify () = if (isTestEnv())
407407 then sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
408408 else {
409409 let firstUser = base58'FzsTVRXqD46KW5yj6qGNVrsouvWjpCQvD1446A96iGt4'
410410 let secondUser = base58'E23yUg8eun5nXB1nZRDf7RTyRADKxQhGNXdpTYonEvtU'
411411 let thirdUser = base58'Ga8WEBTPXbHuoXRD355mQ6ms8PsM2RFYKeA1mEP32CFe'
412412 let firstUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], firstUser))
413413 then 1
414414 else if (sigVerify(tx.bodyBytes, tx.proofs[1], firstUser))
415415 then 1
416416 else if (sigVerify(tx.bodyBytes, tx.proofs[2], firstUser))
417417 then 1
418418 else 0
419419 let secondUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], secondUser))
420420 then 1
421421 else if (sigVerify(tx.bodyBytes, tx.proofs[1], secondUser))
422422 then 1
423423 else if (sigVerify(tx.bodyBytes, tx.proofs[2], secondUser))
424424 then 1
425425 else 0
426426 let thirdUserSigned = if (sigVerify(tx.bodyBytes, tx.proofs[0], thirdUser))
427427 then 1
428428 else if (sigVerify(tx.bodyBytes, tx.proofs[1], thirdUser))
429429 then 1
430430 else if (sigVerify(tx.bodyBytes, tx.proofs[2], thirdUser))
431431 then 1
432432 else 0
433433 let signaturesCount = ((firstUserSigned + secondUserSigned) + thirdUserSigned)
434434 match tx {
435435 case _ =>
436436 (signaturesCount >= 2)
437437 }
438438 }
439439

github/deemru/w8io/6500d08 
50.00 ms