tx · 727BQtHf1UPfhqHCb3vaHB79kxNFeSmkU5AdvybMreKK

3PNaRW9FuMUWpAzZkjrdvHBpZxeX7kNrDoY:  -0.01700000 Waves

2023.09.19 15:31 [3828047] smart account 3PNaRW9FuMUWpAzZkjrdvHBpZxeX7kNrDoY > SELF 0.00000000 Waves

{ "type": 13, "id": "727BQtHf1UPfhqHCb3vaHB79kxNFeSmkU5AdvybMreKK", "fee": 1700000, "feeAssetId": null, "timestamp": 1695126683051, "version": 2, "chainId": 87, "sender": "3PNaRW9FuMUWpAzZkjrdvHBpZxeX7kNrDoY", "senderPublicKey": "Gn265atnbhWaJv1XhND8yPDrhUYMogzgWXzLVTmM4jGj", "proofs": [ "5z2brz2x6Lby9fE6jbyVKQ1sW96TdNn7vJNHa2cpQT3nwGfxWfnCAVxD6Qsijkw5mANGAF4bYZ8buvDpoT5VTryV" ], "script": "base64:AAIFAAAAAAAAABEIAhIDCgEIEgMKAQgSAwoBCAAAAC0BAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQIAAAAAAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWIAAAAAAAAAAAABAAAADHRyeUdldFN0cmluZwAAAAEAAAADa2V5CQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACBQAAAAR0aGlzBQAAAANrZXkBAAAABWFzSW50AAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAADaW50BQAAAAckbWF0Y2gwBQAAAANpbnQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwCQAAAgAAAAEJAAEsAAAAAgIAAAApUkFJOiB3cm9uZyB0eXBlLCBleHBlY3RlZDogSW50LCBidXQgZ290OiAFAAAABnN0cmluZwkAAAIAAAABAgAAAB5SQUk6IHdyb25nIHR5cGUsIGV4cGVjdGVkOiBJbnQBAAAACWFzQm9vbGVhbgAAAAEAAAAFdmFsdWUEAAAAByRtYXRjaDAFAAAABXZhbHVlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAdib29sZWFuBQAAAAckbWF0Y2gwBQAAAAdib29sZWFuCQAAAgAAAAECAAAAIkZBQjogd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEJvb2xlYW4BAAAACGFzU3RyaW5nAAAAAQAAAAV2YWx1ZQQAAAAHJG1hdGNoMAUAAAAFdmFsdWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFzBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAJndyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogSW50AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAFzBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAJ3dyb25nIHR5cGUsIGV4cGVjdGVkOiBTdHJpbmcsIGdvdDogVW5pdAkAAAIAAAABAgAAABx3cm9uZyB0eXBlLCBleHBlY3RlZDogU3RyaW5nAQAAABdzdGF0aWNLZXlfb3JhY2xlQWRkcmVzcwAAAAACAAAAFHN0YXRpY19vcmFjbGVBZGRyZXNzAQAAABRzdGF0aWNLZXlfZWdnQXNzZXRJZAAAAAACAAAAEXN0YXRpY19lZ2dBc3NldElkAQAAABVzdGF0aWNLZXlfYnVybkFkZHJlc3MAAAAAAgAAABJzdGF0aWNfYnVybkFkZHJlc3MBAAAAEnN0YXRpY0tleV9leHRyYUZlZQAAAAACAAAAD3N0YXRpY19leHRyYUZlZQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAgAAABRzdGF0aWNfZmVlQWdncmVnYXRvcgEAAAAgc3RhdGljS2V5X3R1cnRsZUluY3ViYXRvckFkZHJlc3MAAAAAAgAAAB1zdGF0aWNfdHVydGxlSW5jdWJhdG9yQWRkcmVzcwEAAAAec3RhdGljS2V5X3R1cnRsZUJyZWVkZXJBZGRyZXNzAAAAAAIAAAAbc3RhdGljX3R1cnRsZUJyZWVkZXJBZGRyZXNzAQAAABZzdGF0aWNLZXlfc3BpY2VBc3NldElkAAAAAAIAAAATc3RhdGljX3NwaWNlQXNzZXRJZAEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAACAAAAGXN0YXRpY19yZWZDb250cmFjdEFkZHJlc3MBAAAAGHN0YXRpY0tleV9jb3Vwb25zQWRkcmVzcwAAAAACAAAAFXN0YXRpY19jb3Vwb25zQWRkcmVzcwEAAAAec3RhdGljS2V5X3R1cnRsZVN0YWtpbmdBZGRyZXNzAAAAAAIAAAAbc3RhdGljX3R1cnRsZVN0YWtpbmdBZGRyZXNzAQAAABxzdGF0aWNLZXlfZHVja1N0YWtpbmdBZGRyZXNzAAAAAAIAAAAVc3RhdGljX2Zhcm1pbmdBZGRyZXNzAQAAAB5zdGF0aWNLZXlfZHVja0luY3ViYXRvckFkZHJlc3MAAAAAAgAAABdzdGF0aWNfaW5jdWJhdG9yQWRkcmVzcwEAAAAWc3RhdGljS2V5X2l0ZW1zQWRkcmVzcwAAAAACAAAAE3N0YXRpY19pdGVtc0FkZHJlc3MBAAAAIXN0YXRpY0tleV90dXJ0bGVTcGljZVJlYmlydGhQcmljZQAAAAACAAAAHnN0YXRpY190dXJ0bGVTcGljZVJlYmlydGhQcmljZQEAAAAhc3RhdGljS2V5X3R1cnRsZVdhdmVzUmViaXJ0aFByaWNlAAAAAAIAAAAec3RhdGljX3R1cnRsZVdhdmVzUmViaXJ0aFByaWNlAQAAAB9zdGF0aWNLZXlfdHVydGxlRWdnUmViaXJ0aFByaWNlAAAAAAIAAAAcc3RhdGljX3R1cnRsZUVnZ1JlYmlydGhQcmljZQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAAAx0cnlHZXRTdHJpbmcAAAABCQEAAAAXc3RhdGljS2V5X29yYWNsZUFkZHJlc3MAAAAAAQAAAA1nZXRFZ2dBc3NldElkAAAAAAkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAFHN0YXRpY0tleV9lZ2dBc3NldElkAAAAAAEAAAAOZ2V0QnVybkFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABVzdGF0aWNLZXlfYnVybkFkZHJlc3MAAAAAAQAAABBnZXRGZWVBZ2dyZWdhdG9yAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAXc3RhdGljS2V5X2ZlZUFnZ3JlZ2F0b3IAAAAAAQAAABdnZXRUdXJ0bGVCcmVlZGVyQWRkcmVzcwAAAAAJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAAUdHJ5R2V0U3RyaW5nRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAHnN0YXRpY0tleV90dXJ0bGVCcmVlZGVyQWRkcmVzcwAAAAABAAAAGWdldFR1cnRsZUluY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAACBzdGF0aWNLZXlfdHVydGxlSW5jdWJhdG9yQWRkcmVzcwAAAAABAAAAD2dldFNwaWNlQXNzZXRJZAAAAAAJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABZzdGF0aWNLZXlfc3BpY2VBc3NldElkAAAAAAEAAAAVZ2V0UmVmQ29udHJhY3RBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAcc3RhdGljS2V5X3JlZkNvbnRyYWN0QWRkcmVzcwAAAAABAAAAEWdldENvdXBvbnNBZGRyZXNzAAAAAAkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEJAQAAABR0cnlHZXRTdHJpbmdFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAYc3RhdGljS2V5X2NvdXBvbnNBZGRyZXNzAAAAAAEAAAAXZ2V0VHVydGxlU3Rha2luZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAB5zdGF0aWNLZXlfdHVydGxlU3Rha2luZ0FkZHJlc3MAAAAAAQAAABVnZXREdWNrU3Rha2luZ0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABxzdGF0aWNLZXlfZHVja1N0YWtpbmdBZGRyZXNzAAAAAAEAAAAXZ2V0RHVja0luY3ViYXRvckFkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAAB5zdGF0aWNLZXlfZHVja0luY3ViYXRvckFkZHJlc3MAAAAAAQAAAA9nZXRJdGVtc0FkZHJlc3MAAAAACQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQkBAAAAFHRyeUdldFN0cmluZ0V4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAABZzdGF0aWNLZXlfaXRlbXNBZGRyZXNzAAAAAAEAAAAVdHJ5R2V0SW50ZWdlckV4dGVybmFsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgkAAAIAAAABAgAAABpUUjogVmFsdWUgbm90IGZvdW5kIGluIHNjIQAAAAALc3BpY2VBbW91bnQJAQAAABV0cnlHZXRJbnRlZ2VyRXh0ZXJuYWwAAAACCQEAAAAJZ2V0T3JhY2xlAAAAAAkBAAAAIXN0YXRpY0tleV90dXJ0bGVTcGljZVJlYmlydGhQcmljZQAAAAAAAAAACWVnZ0Ftb3VudAkBAAAAFXRyeUdldEludGVnZXJFeHRlcm5hbAAAAAIJAQAAAAlnZXRPcmFjbGUAAAAACQEAAAAfc3RhdGljS2V5X3R1cnRsZUVnZ1JlYmlydGhQcmljZQAAAAAAAAAAC3dhdmVzQW1vdW50CQEAAAAVdHJ5R2V0SW50ZWdlckV4dGVybmFsAAAAAgkBAAAACWdldE9yYWNsZQAAAAAJAQAAACFzdGF0aWNLZXlfdHVydGxlV2F2ZXNSZWJpcnRoUHJpY2UAAAAAAAAAABBkZWxheUZvckhhdGNoaW5nAAAAAAAAAAACAQAAAA9jaGVja1Jl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", "height": 3828047, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6zCWgisHiwddqecwwx6aJeg1NHmXpCwhvKbtU6YPvNnX Next: 9BjzKdgzTvspoiaG4CgANfZL1y8HytRysaPUQfY7BjxJ Diff:
OldNewDifferences
195195 else if ((340 > n))
196196 then "perch_G"
197197 else if ((420 > n))
198- then "perch_y"
198+ then "perch_Y"
199199 else if ((500 > n))
200200 then "perch_R"
201201 else if ((580 > n))
300300 then throw("you cannot finish rebirth, yet")
301301 else {
302302 let win = getRandomWin(fromBase58String(initTx), finishBlock)
303- if ((win != initTx))
304- then throw(win)
305- else {
306- let txId = initTx
307- let result = if ((indexOf(win, "perch") != unit))
303+ let txId = initTx
304+ let result = if ((indexOf(win, "perch") != unit))
305+ then {
306+ let color = takeRight(win, 1)
307+ let call = invoke(getDuckStakingAddress(), "addFreePerch", [address, color], nil)
308+ if ((call == call))
309+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
310+ else throw("Strict value is not equal to itself.")
311+ }
312+ else if ((indexOf(win, "beach") != unit))
313+ then {
314+ let color = takeRight(win, 1)
315+ let call = invoke(getTurtleStakingAddress(), "addFreeBeach", [address, color], nil)
316+ if ((call == call))
317+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
318+ else throw("Strict value is not equal to itself.")
319+ }
320+ else if ((win == "incubator"))
308321 then {
309- let color = takeRight(win, 1)
310- let call = invoke(getDuckStakingAddress(), "addFreePerch", [address, color], nil)
322+ let call = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
311323 if ((call == call))
312324 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
313325 else throw("Strict value is not equal to itself.")
314326 }
315- else if ((indexOf(win, "beach") != unit))
327+ else if ((win == "duck_incubator"))
316328 then {
317- let color = takeRight(win, 1)
318- let call = invoke(getTurtleStakingAddress(), "addFreeBeach", [address, color], nil)
329+ let call = invoke(getDuckIncubatorAddress(), "issueFreeDuckDefinedGenes", [address, txId, "ZZZZZZZZ"], nil)
319330 if ((call == call))
320331 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
321332 else throw("Strict value is not equal to itself.")
322333 }
323- else if ((win == "incubator"))
334+ else if ((indexOf(win, "item") != unit))
324335 then {
325- let call = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
336+ let itemName = split(win, "!")[1]
337+ let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
326338 if ((call == call))
327339 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
328340 else throw("Strict value is not equal to itself.")
329341 }
330- else if ((win == "duck_incubator"))
331- then {
332- let call = invoke(getDuckIncubatorAddress(), "issueFreeDuckDefinedGenes", [address, txId, "ZZZZZZZZ"], nil)
333- if ((call == call))
334- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
335- else throw("Strict value is not equal to itself.")
336- }
337- else if ((indexOf(win, "item") != unit))
338- then {
339- let itemName = split(win, "!")[1]
340- let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
341- if ((call == call))
342- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
343- else throw("Strict value is not equal to itself.")
344- }
345- else throw("RFB: Some error occured, please contact the admins!")
346- ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
347- }
342+ else throw("RFB: Some error occured, please contact the admins!")
343+ ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
348344 }
349345 else throw("Strict value is not equal to itself.")
350346 }
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 tryGetInteger (key) = match getInteger(this, key) {
1313 case b: Int =>
1414 b
1515 case _ =>
1616 0
1717 }
1818
1919
2020 func tryGetString (key) = tryGetStringExternal(this, key)
2121
2222
2323 func asInt (value) = match value {
2424 case int: Int =>
2525 int
2626 case string: String =>
2727 throw(("RAI: wrong type, expected: Int, but got: " + string))
2828 case _ =>
2929 throw("RAI: wrong type, expected: Int")
3030 }
3131
3232
3333 func asBoolean (value) = match value {
3434 case boolean: Boolean =>
3535 boolean
3636 case _ =>
3737 throw("FAB: wrong type, expected: Boolean")
3838 }
3939
4040
4141 func asString (value) = match value {
4242 case s: String =>
4343 s
4444 case s: Int =>
4545 throw("wrong type, expected: String, got: Int")
4646 case s: Unit =>
4747 throw("wrong type, expected: String, got: Unit")
4848 case _ =>
4949 throw("wrong type, expected: String")
5050 }
5151
5252
5353 func staticKey_oracleAddress () = "static_oracleAddress"
5454
5555
5656 func staticKey_eggAssetId () = "static_eggAssetId"
5757
5858
5959 func staticKey_burnAddress () = "static_burnAddress"
6060
6161
6262 func staticKey_extraFee () = "static_extraFee"
6363
6464
6565 func staticKey_feeAggregator () = "static_feeAggregator"
6666
6767
6868 func staticKey_turtleIncubatorAddress () = "static_turtleIncubatorAddress"
6969
7070
7171 func staticKey_turtleBreederAddress () = "static_turtleBreederAddress"
7272
7373
7474 func staticKey_spiceAssetId () = "static_spiceAssetId"
7575
7676
7777 func staticKey_refContractAddress () = "static_refContractAddress"
7878
7979
8080 func staticKey_couponsAddress () = "static_couponsAddress"
8181
8282
8383 func staticKey_turtleStakingAddress () = "static_turtleStakingAddress"
8484
8585
8686 func staticKey_duckStakingAddress () = "static_farmingAddress"
8787
8888
8989 func staticKey_duckIncubatorAddress () = "static_incubatorAddress"
9090
9191
9292 func staticKey_itemsAddress () = "static_itemsAddress"
9393
9494
9595 func staticKey_turtleSpiceRebirthPrice () = "static_turtleSpiceRebirthPrice"
9696
9797
9898 func staticKey_turtleWavesRebirthPrice () = "static_turtleWavesRebirthPrice"
9999
100100
101101 func staticKey_turtleEggRebirthPrice () = "static_turtleEggRebirthPrice"
102102
103103
104104 func getOracle () = Address(fromBase58String(tryGetString(staticKey_oracleAddress())))
105105
106106
107107 func getEggAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_eggAssetId()))
108108
109109
110110 func getBurnAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_burnAddress())))
111111
112112
113113 func getFeeAggregator () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_feeAggregator())))
114114
115115
116116 func getTurtleBreederAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_turtleBreederAddress())))
117117
118118
119119 func getTurtleIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_turtleIncubatorAddress())))
120120
121121
122122 func getSpiceAssetId () = fromBase58String(tryGetStringExternal(getOracle(), staticKey_spiceAssetId()))
123123
124124
125125 func getRefContractAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_refContractAddress())))
126126
127127
128128 func getCouponsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_couponsAddress())))
129129
130130
131131 func getTurtleStakingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_turtleStakingAddress())))
132132
133133
134134 func getDuckStakingAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_duckStakingAddress())))
135135
136136
137137 func getDuckIncubatorAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_duckIncubatorAddress())))
138138
139139
140140 func getItemsAddress () = Address(fromBase58String(tryGetStringExternal(getOracle(), staticKey_itemsAddress())))
141141
142142
143143 func tryGetIntegerExternal (address,key) = match getInteger(address, key) {
144144 case b: Int =>
145145 b
146146 case _ =>
147147 throw("TR: Value not found in sc!")
148148 }
149149
150150
151151 let spiceAmount = tryGetIntegerExternal(getOracle(), staticKey_turtleSpiceRebirthPrice())
152152
153153 let eggAmount = tryGetIntegerExternal(getOracle(), staticKey_turtleEggRebirthPrice())
154154
155155 let wavesAmount = tryGetIntegerExternal(getOracle(), staticKey_turtleWavesRebirthPrice())
156156
157157 let delayForHatching = 2
158158
159159 func checkRealTurtle (assetId) = if (if ((value(assetInfo(assetId)).issuer == getTurtleBreederAddress()))
160160 then true
161161 else (value(assetInfo(assetId)).issuer == getTurtleIncubatorAddress()))
162162 then true
163163 else throw("not valid NFT")
164164
165165
166166 func checkAdditionalPayment (payment) = if (isDefined(payment.assetId))
167167 then throw("RCAP: Please attach waves")
168168 else {
169169 let feeAmount = getIntegerValue(getOracle(), staticKey_extraFee())
170170 if ((payment.amount != feeAmount))
171171 then throw((("RCAP: Please attach exactly " + toString(feeAmount)) + " amount of wavelets"))
172172 else [ScriptTransfer(getFeeAggregator(), feeAmount, unit)]
173173 }
174174
175175
176176 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
177177 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
178178 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
179179 (toInt(randomHash, (offset * 8)) % options)
180180 }
181181
182182
183183 func getRandomWin (tx,finishHeight) = {
184184 let n = getRandomNumber(1000, tx, finishHeight, 0)
185185 if ((60 > n))
186186 then "incubator"
187187 else if ((110 > n))
188188 then "beach_R"
189189 else if ((160 > n))
190190 then "beach_S"
191191 else if ((210 > n))
192192 then "beach_G"
193193 else if ((260 > n))
194194 then "beach_D"
195195 else if ((340 > n))
196196 then "perch_G"
197197 else if ((420 > n))
198- then "perch_y"
198+ then "perch_Y"
199199 else if ((500 > n))
200200 then "perch_R"
201201 else if ((580 > n))
202202 then "perch_B"
203203 else if ((640 > n))
204204 then "duck_incubator"
205205 else if ((680 > n))
206206 then "item!ART-FIRE_TAIL"
207207 else if ((720 > n))
208208 then "item!ART-FIRE_SHIELD"
209209 else if ((920 > n))
210210 then "item!ART-FEED10"
211211 else "item!ART-FEED100"
212212 }
213213
214214
215215 @Callable(i)
216216 func configureOracle (oracle) = if ((i.caller != this))
217217 then throw("RCU: admin only")
218218 else [StringEntry("static_oracleAddress", oracle)]
219219
220220
221221
222222 @Callable(i)
223223 func initRebirth (refererAddress) = {
224224 let pmtTurtle = i.payments[0]
225225 let pmtWaves = i.payments[1]
226226 let pmtSpice = i.payments[2]
227227 let pmtEgg = i.payments[3]
228228 let assetId = value(pmtTurtle.assetId)
229229 let initTx = toBase58String(i.transactionId)
230230 let address = toString(i.caller)
231231 if ((pmtTurtle.amount != 1))
232232 then throw("NFT is not attached")
233233 else if (if ((pmtWaves.amount != wavesAmount))
234234 then true
235235 else (pmtWaves.assetId != unit))
236236 then throw("Wavespayment is not attached or wrong!")
237237 else if (if ((pmtSpice.amount != spiceAmount))
238238 then true
239239 else (pmtSpice.assetId != getSpiceAssetId()))
240240 then throw("SpicePayment is not attached or wrong!")
241241 else {
242242 let amountPaidByCoupons = asInt(invoke(getCouponsAddress(), "useCoupons", [(eggAmount / 2)], nil))
243243 if ((amountPaidByCoupons == amountPaidByCoupons))
244244 then {
245245 let leftToPay = (eggAmount - amountPaidByCoupons)
246246 let topup = invoke(getTurtleStakingAddress(), "topUpReward", nil, [AttachedPayment(getSpiceAssetId(), pmtSpice.amount)])
247247 if ((topup == topup))
248248 then {
249249 let payment = if ((leftToPay != 0))
250250 then {
251251 let feePayment = value(pmtEgg)
252252 if ((feePayment.assetId != getEggAssetId()))
253253 then throw("You need to attach EGG tokens as fee")
254254 else if ((feePayment.amount != leftToPay))
255255 then throw(("You need to attach the following amount of EGG tokens as fee: 0." + toString(leftToPay)))
256256 else {
257257 let refererRewardForPerch = fraction(leftToPay, 5, 100)
258258 let refCall = asBoolean(invoke(getRefContractAddress(), "refPayment", [refererAddress], [AttachedPayment(getEggAssetId(), refererRewardForPerch)]))
259259 if ((refCall == refCall))
260260 then {
261261 let toBurn = if (refCall)
262262 then (leftToPay - refererRewardForPerch)
263263 else leftToPay
264264 let burnCall = invoke(getBurnAddress(), "burnAttachedPayments", nil, [AttachedPayment(getEggAssetId(), toBurn)])
265265 if ((burnCall == burnCall))
266266 then leftToPay
267267 else throw("Strict value is not equal to itself.")
268268 }
269269 else throw("Strict value is not equal to itself.")
270270 }
271271 }
272272 else 0
273273 if ((payment == payment))
274274 then {
275275 let realTurtle = checkRealTurtle(assetId)
276276 if ((realTurtle == realTurtle))
277277 then [IntegerEntry((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"), (height + delayForHatching)), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "open"), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_assetId"), toBase58String(assetId))]
278278 else throw("Strict value is not equal to itself.")
279279 }
280280 else throw("Strict value is not equal to itself.")
281281 }
282282 else throw("Strict value is not equal to itself.")
283283 }
284284 else throw("Strict value is not equal to itself.")
285285 }
286286 }
287287
288288
289289
290290 @Callable(i)
291291 func finishRebirth (initTx) = {
292292 let address = toString(i.caller)
293293 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
294294 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
295295 let validPayment = checkAdditionalPayment(i.payments[0])
296296 if ((validPayment == validPayment))
297297 then if ((status != "open"))
298298 then throw("rebirth is finished or not open")
299299 else if ((finishBlock > height))
300300 then throw("you cannot finish rebirth, yet")
301301 else {
302302 let win = getRandomWin(fromBase58String(initTx), finishBlock)
303- if ((win != initTx))
304- then throw(win)
305- else {
306- let txId = initTx
307- let result = if ((indexOf(win, "perch") != unit))
303+ let txId = initTx
304+ let result = if ((indexOf(win, "perch") != unit))
305+ then {
306+ let color = takeRight(win, 1)
307+ let call = invoke(getDuckStakingAddress(), "addFreePerch", [address, color], nil)
308+ if ((call == call))
309+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
310+ else throw("Strict value is not equal to itself.")
311+ }
312+ else if ((indexOf(win, "beach") != unit))
313+ then {
314+ let color = takeRight(win, 1)
315+ let call = invoke(getTurtleStakingAddress(), "addFreeBeach", [address, color], nil)
316+ if ((call == call))
317+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
318+ else throw("Strict value is not equal to itself.")
319+ }
320+ else if ((win == "incubator"))
308321 then {
309- let color = takeRight(win, 1)
310- let call = invoke(getDuckStakingAddress(), "addFreePerch", [address, color], nil)
322+ let call = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
311323 if ((call == call))
312324 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
313325 else throw("Strict value is not equal to itself.")
314326 }
315- else if ((indexOf(win, "beach") != unit))
327+ else if ((win == "duck_incubator"))
316328 then {
317- let color = takeRight(win, 1)
318- let call = invoke(getTurtleStakingAddress(), "addFreeBeach", [address, color], nil)
329+ let call = invoke(getDuckIncubatorAddress(), "issueFreeDuckDefinedGenes", [address, txId, "ZZZZZZZZ"], nil)
319330 if ((call == call))
320331 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
321332 else throw("Strict value is not equal to itself.")
322333 }
323- else if ((win == "incubator"))
334+ else if ((indexOf(win, "item") != unit))
324335 then {
325- let call = invoke(getTurtleIncubatorAddress(), "issueFreeTurtle", [address, txId], nil)
336+ let itemName = split(win, "!")[1]
337+ let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
326338 if ((call == call))
327339 then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
328340 else throw("Strict value is not equal to itself.")
329341 }
330- else if ((win == "duck_incubator"))
331- then {
332- let call = invoke(getDuckIncubatorAddress(), "issueFreeDuckDefinedGenes", [address, txId, "ZZZZZZZZ"], nil)
333- if ((call == call))
334- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
335- else throw("Strict value is not equal to itself.")
336- }
337- else if ((indexOf(win, "item") != unit))
338- then {
339- let itemName = split(win, "!")[1]
340- let call = invoke(getItemsAddress(), "issueArtefact", [itemName, address], nil)
341- if ((call == call))
342- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), asString(call))]
343- else throw("Strict value is not equal to itself.")
344- }
345- else throw("RFB: Some error occured, please contact the admins!")
346- ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
347- }
342+ else throw("RFB: Some error occured, please contact the admins!")
343+ ((result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")]) ++ validPayment)
348344 }
349345 else throw("Strict value is not equal to itself.")
350346 }
351347
352348

github/deemru/w8io/3ef1775 
49.23 ms