tx · HbiHUske5tU1k2Lvr3hBomZ8JYodoipHFJEb42EN2j9G

3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh:  -0.01400000 Waves

2021.05.06 13:04 [2578327] smart account 3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh > SELF 0.00000000 Waves

{ "type": 13, "id": "HbiHUske5tU1k2Lvr3hBomZ8JYodoipHFJEb42EN2j9G", "fee": 1400000, "feeAssetId": null, "timestamp": 1620295519943, "version": 2, "chainId": 87, "sender": "3PACKMArmh4BAEawStYmpcU62aiNTBJKvNh", "senderPublicKey": "2y6AczxE1vbz7NGP9N4eeTMDqhDgXT8Tc3xhM792K3GP", "proofs": [ "48xgfSHprBj3fNHwcp3qyJfBmKykEyBLEA8QWj3afBVMdUU3oLXYZakTHUWoU4Etwt3pGd8wxZDQEBbAPPQJ91L" ], "script": "base64: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RW50cnkAAAACCQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcggFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAGQAAAACBQAAAAZoZWlnaHQFAAAAEGRlbGF5Rm9ySGF0Y2hpbmcFAAAAA25pbAAAAAFpAQAAABJmaW5pc2hEdWNrSGF0Y2hpbmcAAAABAAAAB3R4SWRTdHIEAAAABHR4SWQJAAJZAAAAAQUAAAAHdHhJZFN0cgQAAAARaGF0Y2hpbmdTdGF0dXNLZXkJAQAAABRnZXRIYXRjaGluZ1N0YXR1c0tleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAA9maW5pc2hIZWlnaHRLZXkJAQAAABpnZXRIYXRjaGluZ0ZpbmlzaEhlaWdodEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkBAAAAAlkdWNrSWRLZXkJAQAAAAxnZXREdWNrSWRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAQaGF0Y2hpbmdUeFN0YXR1cwkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAARaGF0Y2hpbmdTdGF0dXNLZXkEAAAAFGhhdGNoaW5nRmluaXNoSGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9maW5pc2hIZWlnaHRLZXkDCQAAAAAAAAIFAAAAEGhhdGNoaW5nVHhTdGF0dXMFAAAAEEhhdGNoaW5nRmluaXNoZWQEAAAABmR1Y2tJZAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAADGdldER1Y2tJZEtleQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAAAR0eElkCQAAAgAAAAEJAAEsAAAAAgIAAABAVGhlIGR1Y2sgd2FzIGhhdGNoZWQgYW5kIGNsYWltZWQgYWxyZWFkeSwgaGVyZSBpcyB0aGUgZm9sb3dpbmc6IAUAAAAGZHVja0lkAwkAAGYAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdSGF0Y2hpbmcgaXMgbm90IGZpbmlzaGVkIHlldCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAACcgYmxvY2tzIHJlbWFpbmluZywgaXQgd2lsbCB0YWtlIGFyb3VuZCAJAAGkAAAAAQkAAGUAAAACBQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0AgAAAAggbWludXRlcwQAAAAIZHVja05hbWUJAQAAAA1nZXRSYW5kb21OYW1lAAAAAgUAAAAEdHhJZAUAAAAUaGF0Y2hpbmdGaW5pc2hIZWlnaHQEAAAAC2Rlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgIAAAAOeyJnZW5vdHlwZSI6ICIFAAAACGR1Y2tOYW1lAgAAABkiLCAiY3Jvc3NicmVlZGluZyI6IHRydWV9BAAAAAVhc3NldAkABEMAAAAHBQAAAAhkdWNrTmFtZQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAAEAAAAAAAAAAAAHBQAAAAR1bml0BQAAABRoYXRjaGluZ0ZpbmlzaEhlaWdodAQAAAAHYXNzZXRJZAkABDgAAAABBQAAAAVhc3NldAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFoYXRjaGluZ1N0YXR1c0tleQUAAAAQSGF0Y2hpbmdGaW5pc2hlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlkdWNrSWRLZXkJAAJYAAAAAQUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQACWAAAAAEFAAAAB2Fzc2V0SWQFAAAACWR1Y2tJZEtleQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEFAAAAB2Fzc2V0SWQFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5msYoSw==", "height": 2578327, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HLr2MQEaKAgAagddwYBWcqsLWCtmodNjzp2Yum6LYaRS Next: 9VnH59yztc9D9enk7TvrXiggNHhBkk65FtzoJ2XL8FNh Diff:
OldNewDifferences
5555
5656
5757 @Callable(i)
58-func finishDuckHatching (txId) = {
58+func finishDuckHatching (txIdStr) = {
59+ let txId = fromBase58String(txIdStr)
5960 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
6061 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
6162 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
7374 let description = (("{\"genotype\": \"" + duckName) + "\", \"crossbreeding\": true}")
7475 let asset = Issue(duckName, description, 1, 0, false, unit, hatchingFinishHeight)
7576 let assetId = calculateAssetId(asset)
76-[StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey)]
77+[StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), ScriptTransfer(i.caller, 1, assetId)]
7778 }
7879 }
7980
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'53bLXGQhnMxAoiWnza2SJQRp7hNQZVHnyrRziLmwdVjb'
55
66 let eggsNeededAmount = 1000
77
88 let delayForHatching = 0
99
1010 let HatchingStarted = "HATCHING_STARTED"
1111
1212 let HatchingFinished = "HATCHING_FINISHED"
1313
1414 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
1515
1616
1717 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
1818
1919
2020 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
2121
2222
2323 func getRandomNumber (variants,txId,hatchingFinishHeight) = {
2424 let randomSeedBlock = value(blockInfoByHeight(hatchingFinishHeight))
2525 (toInt((value(randomSeedBlock.vrf) + txId), 10) % variants)
2626 }
2727
2828
2929 func getRandomName (txId,hatchingFinishHeight) = {
3030 let typeRandom = getRandomNumber(2, txId, hatchingFinishHeight)
3131 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight)
3232 let color = if ((colorRandom == 0))
3333 then "Y"
3434 else if ((colorRandom == 1))
3535 then "G"
3636 else if ((colorRandom == 2))
3737 then "B"
3838 else "R"
3939 if ((typeRandom == 0))
4040 then ("DUCK-AAAAAAAA-G" + color)
4141 else ("DUCK-BBBBBBBB-G" + color)
4242 }
4343
4444
4545 @Callable(i)
4646 func startDuckHatching () = {
4747 let firstPayment = value(i.payments[0])
4848 if ((firstPayment.assetId != eggsAssetId))
4949 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
5050 else if ((firstPayment.amount != eggsNeededAmount))
5151 then throw("You can attach only EXACTLY 10 EGG tokens ")
5252 else [StringEntry(getHatchingStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching))]
5353 }
5454
5555
5656
5757 @Callable(i)
58-func finishDuckHatching (txId) = {
58+func finishDuckHatching (txIdStr) = {
59+ let txId = fromBase58String(txIdStr)
5960 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
6061 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
6162 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
6263 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
6364 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
6465 if ((hatchingTxStatus == HatchingFinished))
6566 then {
6667 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
6768 throw(("The duck was hatched and claimed already, here is the folowing: " + duckId))
6869 }
6970 else if ((hatchingFinishHeight > height))
7071 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
7172 else {
7273 let duckName = getRandomName(txId, hatchingFinishHeight)
7374 let description = (("{\"genotype\": \"" + duckName) + "\", \"crossbreeding\": true}")
7475 let asset = Issue(duckName, description, 1, 0, false, unit, hatchingFinishHeight)
7576 let assetId = calculateAssetId(asset)
76-[StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey)]
77+[StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), ScriptTransfer(i.caller, 1, assetId)]
7778 }
7879 }
7980
8081
8182 @Verifier(tx)
8283 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
8384

github/deemru/w8io/3ef1775 
39.71 ms