tx · DmZvrG8P7EtV86Zp1KSdmSWY9hgz8oL7KUTcM7zfXEW9

3PMWRYm3Ew5hx1ziWeC5WEr8axJKzSjTHt1:  -0.01000000 Waves

2021.11.02 21:39 [2838761] smart account 3PMWRYm3Ew5hx1ziWeC5WEr8axJKzSjTHt1 > SELF 0.00000000 Waves

{ "type": 13, "id": "DmZvrG8P7EtV86Zp1KSdmSWY9hgz8oL7KUTcM7zfXEW9", "fee": 1000000, "feeAssetId": null, "timestamp": 1635878390986, "version": 2, "chainId": 87, "sender": "3PMWRYm3Ew5hx1ziWeC5WEr8axJKzSjTHt1", "senderPublicKey": "6EJEf333tNAn98EXisctfhp2PRKwd6aZtvnFBWGb4vtD", "proofs": [ "3PEvoYfh6Q76XX1JNFER3TKvUtuzoVkf2Qovo3PWB45W2nNr1iLMpT1TVEJi3JM9PgYZWDtvc4YjdgBfE52r3qpf" ], "script": "base64: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AA9EVUNLLUdHR0dHR0dHLUcFAAAABWNvbG9yCQABLAAAAAICAAAAD0RVQ0stRUVFRUVFRUUtRwUAAAAFY29sb3IAAAABAAAAAWkBAAAAEmZpbmlzaER1Y2tIYXRjaGluZwAAAAIAAAAHdHhJZFN0cgAAAAdhZGRyZXNzBAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAEWhhdGNoaW5nU3RhdHVzS2V5CQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACBQAAAAdhZGRyZXNzBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIFAAAAB2FkZHJlc3MFAAAABHR4SWQEAAAAEGhhdGNoaW5nVHhTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAAEGluY3ViYXRvckFkZHJlc3MFAAAAEWhhdGNoaW5nU3RhdHVzS2V5BAAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAQaW5jdWJhdG9yQWRkcmVzcwUAAAAPZmluaXNoSGVpZ2h0S2V5BAAAAAZjaGVja3MJAARMAAAAAgMJAAAAAAAAAgUAAAAQaGF0Y2hpbmdUeFN0YXR1cwUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkAAAIAAAABAgAAAChUaGUgZHVjayB3YXMgaGF0Y2hlZCBhbmQgY2xhaW1lZCBhbHJlYWR5BgkABEwAAAACAwkAAGYAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAB1IYXRjaGluZyBpcyBub3QgZmluaXNoZWQgeWV0IAkAAaQAAAABCQAAZQAAAAIFAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0BQAAAAZoZWlnaHQCAAAAESBibG9ja3MgcmVtYWluaW5nBgUAAAADbmlsAwkAAAAAAAACBQAAAAZjaGVja3MFAAAABmNoZWNrcwQAAAAHZHVja0dlbgkBAAAADWdldFJhbmRvbU5hbWUAAAACBQAAAAR0eElkBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAkABRQAAAACBQAAAANuaWwFAAAAB2R1Y2tHZW4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAOXeyy4=", "height": 2838761, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EuusyD6c7qbzCHNKbx1z5SJ4HQHAN4uGykEf33zn4SzC Next: none Diff:
OldNewDifferences
6969 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
7070 let hatchingTxStatus = getStringValue(incubatorAddress, hatchingStatusKey)
7171 let hatchingFinishHeight = getIntegerValue(incubatorAddress, finishHeightKey)
72- if ((hatchingTxStatus == HatchingFinished))
72+ let checks = [if ((hatchingTxStatus == HatchingFinished))
7373 then throw("The duck was hatched and claimed already")
74- else if ((hatchingFinishHeight > height))
75- then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
76- else {
77- let duckGen = getRandomName(txId, hatchingFinishHeight)
78- throw(((((((((txIdStr + "_") + "_") + address) + duckGen) + "_") + hatchingTxStatus) + "_") + toString(hatchingFinishHeight)))
79- }
74+ else true, if ((hatchingFinishHeight > height))
75+ then throw((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining"))
76+ else true]
77+ if ((checks == checks))
78+ then {
79+ let duckGen = getRandomName(txId, hatchingFinishHeight)
80+ $Tuple2(nil, duckGen)
81+ }
82+ else throw("Strict value is not equal to itself.")
8083 }
8184
8285
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let incubatorAddress = Address(base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv')
55
66 let HatchingFinished = "HATCHING_FINISHED"
77
88 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
99
1010
1111 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
1212
1313
1414 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
1515
1616
1717 func tryGetInteger (key) = {
1818 let val = match getInteger(incubatorAddress, key) {
1919 case b: Int =>
2020 b
2121 case _ =>
2222 0
2323 }
2424 val
2525 }
2626
2727
2828 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
2929 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
3030 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
3131 (toInt(randomHash, (offset * 8)) % variants)
3232 }
3333
3434
3535 func wasUniqueBorn (gen) = tryGetInteger(getDuckStatsKey(gen))
3636
3737
3838 func getRandomName (txId,hatchingFinishHeight) = {
3939 let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
4040 if (if ((jackpotRandom == 111))
4141 then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0)
4242 else false)
4343 then "DUCK-WWWWWWWM-JU"
4444 else {
4545 let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
4646 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
4747 let color = if ((colorRandom == 0))
4848 then "Y"
4949 else if ((colorRandom == 1))
5050 then "G"
5151 else if ((colorRandom == 2))
5252 then "B"
5353 else "R"
5454 if ((typeRandom == 0))
5555 then ("DUCK-FFFFFFFF-G" + color)
5656 else if ((typeRandom == 1))
5757 then ("DUCK-HHHHHHHH-G" + color)
5858 else if ((typeRandom == 2))
5959 then ("DUCK-GGGGGGGG-G" + color)
6060 else ("DUCK-EEEEEEEE-G" + color)
6161 }
6262 }
6363
6464
6565 @Callable(i)
6666 func finishDuckHatching (txIdStr,address) = {
6767 let txId = fromBase58String(txIdStr)
6868 let hatchingStatusKey = getHatchingStatusKey(address, txId)
6969 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
7070 let hatchingTxStatus = getStringValue(incubatorAddress, hatchingStatusKey)
7171 let hatchingFinishHeight = getIntegerValue(incubatorAddress, finishHeightKey)
72- if ((hatchingTxStatus == HatchingFinished))
72+ let checks = [if ((hatchingTxStatus == HatchingFinished))
7373 then throw("The duck was hatched and claimed already")
74- else if ((hatchingFinishHeight > height))
75- then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
76- else {
77- let duckGen = getRandomName(txId, hatchingFinishHeight)
78- throw(((((((((txIdStr + "_") + "_") + address) + duckGen) + "_") + hatchingTxStatus) + "_") + toString(hatchingFinishHeight)))
79- }
74+ else true, if ((hatchingFinishHeight > height))
75+ then throw((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining"))
76+ else true]
77+ if ((checks == checks))
78+ then {
79+ let duckGen = getRandomName(txId, hatchingFinishHeight)
80+ $Tuple2(nil, duckGen)
81+ }
82+ else throw("Strict value is not equal to itself.")
8083 }
8184
8285

github/deemru/w8io/3ef1775 
35.25 ms