tx · EAuARJDp7JJdobBNt4L9TE8bKgedtC4UKmVpWUwxcSZ1

3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ:  -0.02100000 Waves

2023.05.25 20:32 [3659304] smart account 3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ > SELF 0.00000000 Waves

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

github/deemru/w8io/3ef1775 
71.70 ms