tx · E129PHSMGtUq66C4uqeHJiRqaZhGbb9p8b5reWJMSQCc

3N8gEc989iZmA2jZLRgEQ8HzA3A9BryiQvJ:  -0.01000000 Waves

2021.07.24 17:29 [1627837] smart account 3N8gEc989iZmA2jZLRgEQ8HzA3A9BryiQvJ > SELF 0.00000000 Waves

{ "type": 13, "id": "E129PHSMGtUq66C4uqeHJiRqaZhGbb9p8b5reWJMSQCc", "fee": 1000000, "feeAssetId": null, "timestamp": 1627137027231, "version": 2, "chainId": 84, "sender": "3N8gEc989iZmA2jZLRgEQ8HzA3A9BryiQvJ", "senderPublicKey": "ZHwM7imQbFoER7AuZRsxCR9GKpiCjatB9v4Yf6vMnM8", "proofs": [ "3vtmnDoA8gbkmU3FKasome4ZvhA1W7Ppeu6HD7NZS55G13p3tYVuyYDaCPtvKKKgT8wW9fvYNbVyZ9dHa1bqBmzR" ], "script": "base64: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", "height": 1627837, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DTbbd3ixtQrSpwL3xat5YNpSQTfw4Sd4mzvEdzyscLit Next: none Diff:
OldNewDifferences
5656 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
5757 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
5858 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
59- if ((status != "open"))
60- then throw("rebirth is finished or not open")
61- else if ((finishBlock > height))
62- then throw("you cannot finish rebirth, yet")
63- else {
64- let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
65- let txId = toBase58String(i.transactionId)
66- let result = if ((indexOf(win, "perch") != unit))
67- then {
68- let color = takeRight(win, 1)
59+ let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
60+ let txId = toBase58String(i.transactionId)
61+ let result = if ((indexOf(win, "perch") != unit))
62+ then {
63+ let color = takeRight(win, 1)
6964 [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "perch")]
70- }
71- else if ((win == "incubator"))
72- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "incubator genesis")]
73- else if ((win == "phoenix"))
74- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "phoenix")]
75- else if ((win == "duckling"))
76- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "dukling")]
77- else [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "gone")]
78- (result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")])
79- }
65+ }
66+ else if ((win == "incubator"))
67+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "incubator genesis")]
68+ else if ((win == "phoenix"))
69+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "phoenix")]
70+ else if ((win == "duckling"))
71+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "dukling")]
72+ else [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "gone")]
73+ (result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")])
8074 }
8175
8276
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let PHOENIXBASEOPTIONS = 1000
55
66 func tryGetInteger (key) = match getInteger(this, key) {
77 case b: Int =>
88 b
99 case _ =>
1010 0
1111 }
1212
1313
1414 func getRandomNumber (options,txId,hatchingFinishHeight,offset) = {
1515 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
1616 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
1717 (toInt(randomHash, (offset * 8)) % options)
1818 }
1919
2020
2121 func getRandomWin (tx,finishHeight,assetRarity) = {
2222 let phoenixOptions = (PHOENIXBASEOPTIONS - fraction((PHOENIXBASEOPTIONS / 2), assetRarity, 100))
2323 let phoenixRandom = getRandomNumber(phoenixOptions, tx, finishHeight, 1)
2424 if ((phoenixRandom == 1))
2525 then "phoenix"
2626 else {
2727 let n = getRandomNumber(10, tx, finishHeight, 0)
2828 if ((3 > n))
2929 then "gone"
3030 else if ((5 > n))
3131 then "duckling"
3232 else if ((n == 5))
3333 then "perch_Y"
3434 else if ((n == 6))
3535 then "perch_G"
3636 else if ((n == 7))
3737 then "perch_B"
3838 else if ((n == 8))
3939 then "perch_R"
4040 else "incubator"
4141 }
4242 }
4343
4444
4545 func tryGetString (key) = match getString(this, key) {
4646 case a: String =>
4747 a
4848 case _ =>
4949 ""
5050 }
5151
5252
5353 @Callable(i)
5454 func finishRebirth (initTx) = {
5555 let address = toString(i.caller)
5656 let finishBlock = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_finishBlock"))
5757 let assetRarity = tryGetInteger((((("address_" + address) + "_initTx_") + initTx) + "_assetRarity"))
5858 let status = tryGetString((((("address_" + address) + "_initTx_") + initTx) + "_status"))
59- if ((status != "open"))
60- then throw("rebirth is finished or not open")
61- else if ((finishBlock > height))
62- then throw("you cannot finish rebirth, yet")
63- else {
64- let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
65- let txId = toBase58String(i.transactionId)
66- let result = if ((indexOf(win, "perch") != unit))
67- then {
68- let color = takeRight(win, 1)
59+ let win = getRandomWin(fromBase58String(initTx), finishBlock, assetRarity)
60+ let txId = toBase58String(i.transactionId)
61+ let result = if ((indexOf(win, "perch") != unit))
62+ then {
63+ let color = takeRight(win, 1)
6964 [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "perch")]
70- }
71- else if ((win == "incubator"))
72- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "incubator genesis")]
73- else if ((win == "phoenix"))
74- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "phoenix")]
75- else if ((win == "duckling"))
76- then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "dukling")]
77- else [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "gone")]
78- (result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")])
79- }
65+ }
66+ else if ((win == "incubator"))
67+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "incubator genesis")]
68+ else if ((win == "phoenix"))
69+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "phoenix")]
70+ else if ((win == "duckling"))
71+ then [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "dukling")]
72+ else [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_result"), "gone")]
73+ (result ++ [StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_win"), win), StringEntry((((("address_" + address) + "_initTx_") + initTx) + "_status"), "finish")])
8074 }
8175
8276

github/deemru/w8io/169f3d6 
49.79 ms