tx · 6d77RbPSXSqwXUdHk2bKgv6MwHqT8jXEzUYvq5NsFTY9

3N4uWa2T9W2p4WgDwLPo3kWRp8eXRatp4vv:  -0.01400000 Waves

2021.12.28 13:28 [1853971] smart account 3N4uWa2T9W2p4WgDwLPo3kWRp8eXRatp4vv > SELF 0.00000000 Waves

{ "type": 13, "id": "6d77RbPSXSqwXUdHk2bKgv6MwHqT8jXEzUYvq5NsFTY9", "fee": 1400000, "feeAssetId": null, "timestamp": 1640687374875, "version": 2, "chainId": 84, "sender": "3N4uWa2T9W2p4WgDwLPo3kWRp8eXRatp4vv", "senderPublicKey": "6pUz5KTgi8pySNF2EuYHUMBkXbTyxL7R7YWGgb2PkhgU", "proofs": [ "4BXmeWzvup4XoMssBbGejb2BnhZBQVtes4CdKCLZLekunxrJpyx7ZyTjaFTpKb76FomTqten2JTod8ap7aipRsz5" ], "script": "base64:AAIFAAAAAAAAA88IAhIAEgMKAQgaCAoBQRIDZ2VuGhIKAUISDWdldFJhbmRvbU5hbWUaDQoBQxIIcmFuZG9tTm8aCQoBRBIEdHlwZRoPCgFFEgpnZW5lcmF0aW9uGhoKAUYSFWNvdW50RWdnc05lZWRlZEFtb3VudBoVCgFHEhB0b3RhbER1Y2tzQW1vdW50GgYKAUgSAW4aBgoBSRIBZxoGCgFKEgF0GgoKAUsSBXByaWNlGgYKAUwSAWkaDwoBTRIKZWdnc05lZWRlZBoRCgFOEgxmaXJzdFBheW1lbnQaDAoBTxIHcmVzdWx0cxoMCgFQEgd0eElkU3RyGhYKAVESEWhhdGNoaW5nU3RhdHVzS2V5GhQKAVISD2ZpbmlzaEhlaWdodEtleRoOCgFTEglkdWNrSWRLZXkaEQoBVBIMZHVja0Zyb21CYWJ5GhUKAVUSEGhhdGNoaW5nVHhTdGF0dXMaCwoBVhIGZHVja0lkGg0KAVcSCG5hbWVEYXRhGgwKAVgSB2R1Y2tHZW4aDAoBWRIHZmFybUdlbhoQCgFaEgtkZXNjcmlwdGlvbhoQCgFhEgtlZ2dzQXNzZXRJZBoLCgJhYRIFYXNzZXQaDQoCYWISB2Fzc2V0SWQaDAoCYWMSBmFtb3VudBoICgJhZBICdHgaDAoCYWUSBnZlcmlmeRoVCgFiEhBkZWxheUZvckhhdGNoaW5nGhgKAWMSE2Rpc2NvdW50Q29lZmZpY2llbnQaEAoBZBILdHlwZXNBbW91bnQaEgoBZRINUmVmZXJlclJld2FyZBoUCgFmEg9BZG9wdGlvblN0YXJ0ZWQaFQoBZxIQQWRvcHRpb25GaW5pc2hlZBoZCgFoEhRnZXRIYXRjaGluZ1N0YXR1c0tleRoMCgFpEgdhZGRyZXNzGgkKAWoSBHR4SWQaHwoBaxIaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkaEQoBbBIMZ2V0RHVja0lkS2V5GhQKAW0SD2dldER1Y2tTdGF0c0tleRoOCgFuEglnZW5TdHJpbmcaEgoBbxINdHJ5R2V0SW50ZWdlchoICgFwEgNrZXkaCAoBcRIDdmFsGgwKAXISByRtYXRjaDAaBgoBcxIBYhoUCgF0Eg9nZXRSYW5kb21OdW1iZXIaDQoBdRIIdmFyaWFudHMaGQoBdhIUaGF0Y2hp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", "height": 1853971, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3NHwcZZ1t57S5W2ZdovYAvqq8z4AeiPKZVjJ6L1PWw7S Next: GyaaqetgF6XnsNAow43fASKab58SKajemYtbDYvBiYcC Diff:
OldNewDifferences
4949
5050
5151 func getRandomName (txId,hatchingFinishHeight) = {
52- let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
53- if (if ((jackpotRandom == 111))
54- then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0)
55- else false)
56- then $Tuple2("DUCK-WWWWWWWM-JU", "8W-J")
57- else {
58- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
59- let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
60- let color = if ((colorRandom == 0))
61- then "Y"
62- else if ((colorRandom == 1))
63- then "G"
64- else if ((colorRandom == 2))
65- then "B"
66- else "R"
67- if ((typeRandom == 0))
68- then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
69- else if ((typeRandom == 1))
70- then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
71- else if ((typeRandom == 2))
72- then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
73- else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
74- }
52+ let randomNo = getRandomNumber(4000, txId, hatchingFinishHeight, 0)
53+ let type = if ((randomNo > 2000))
54+ then "DOG"
55+ else "DRAGON"
56+ let generation = (randomNo % 2000)
57+ if ((generation > 1800))
58+ then $Tuple2(((type + "-WW-") + toString(randomNo)), (type + "-WW"))
59+ else if ((generation > 1600))
60+ then $Tuple2(((type + "-TG-") + toString(randomNo)), (type + "-TG"))
61+ else if ((generation > 1400))
62+ then $Tuple2(((type + "-T-") + toString(randomNo)), (type + "-T"))
63+ else if ((generation > 1200))
64+ then $Tuple2(((type + "-ST-") + toString(randomNo)), (type + "-ST"))
65+ else if ((generation > 1000))
66+ then $Tuple2(((type + "-SD-") + toString(randomNo)), (type + "-SD"))
67+ else if ((generation > 800))
68+ then $Tuple2(((type + "-SG-") + toString(randomNo)), (type + "-SG"))
69+ else if ((generation > 600))
70+ then $Tuple2(((type + "-PE-") + toString(randomNo)), (type + "-PE"))
71+ else if ((generation > 400))
72+ then $Tuple2(((type + "-M-") + toString(randomNo)), (type + "-M"))
73+ else if ((generation > 200))
74+ then $Tuple2(((type + "-LOG-") + toString(randomNo)), (type + "-LOG"))
75+ else if ((generation > 0))
76+ then $Tuple2(((type + "-D-") + toString(randomNo)), (type + "-D"))
77+ else $Tuple2((type + "-D-1"), (type + "-D"))
7578 }
7679
7780
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'2cf6jyVG19oHU79R8iHfqFEesjstr3e7nSYEUhb2WagB'
55
66 let delayForHatching = 2
77
88 let discountCoefficient = 10
99
1010 let typesAmount = 9
1111
1212 let RefererReward = 5
1313
1414 let AdoptionStarted = "ADOPTION_STARTED"
1515
1616 let AdoptionFinished = "ADOPTION_FINISHED"
1717
1818 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
1919
2020
2121 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
2222
2323
2424 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
2525
2626
2727 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
2828
2929
3030 func tryGetInteger (key) = {
3131 let val = match getInteger(this, key) {
3232 case b: Int =>
3333 b
3434 case _ =>
3535 0
3636 }
3737 val
3838 }
3939
4040
4141 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
4242 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
4343 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
4444 (toInt(randomHash, (offset * 8)) % variants)
4545 }
4646
4747
4848 func wasUniqueBorn (gen) = tryGetInteger(getDuckStatsKey(gen))
4949
5050
5151 func getRandomName (txId,hatchingFinishHeight) = {
52- let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
53- if (if ((jackpotRandom == 111))
54- then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0)
55- else false)
56- then $Tuple2("DUCK-WWWWWWWM-JU", "8W-J")
57- else {
58- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
59- let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
60- let color = if ((colorRandom == 0))
61- then "Y"
62- else if ((colorRandom == 1))
63- then "G"
64- else if ((colorRandom == 2))
65- then "B"
66- else "R"
67- if ((typeRandom == 0))
68- then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
69- else if ((typeRandom == 1))
70- then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
71- else if ((typeRandom == 2))
72- then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
73- else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
74- }
52+ let randomNo = getRandomNumber(4000, txId, hatchingFinishHeight, 0)
53+ let type = if ((randomNo > 2000))
54+ then "DOG"
55+ else "DRAGON"
56+ let generation = (randomNo % 2000)
57+ if ((generation > 1800))
58+ then $Tuple2(((type + "-WW-") + toString(randomNo)), (type + "-WW"))
59+ else if ((generation > 1600))
60+ then $Tuple2(((type + "-TG-") + toString(randomNo)), (type + "-TG"))
61+ else if ((generation > 1400))
62+ then $Tuple2(((type + "-T-") + toString(randomNo)), (type + "-T"))
63+ else if ((generation > 1200))
64+ then $Tuple2(((type + "-ST-") + toString(randomNo)), (type + "-ST"))
65+ else if ((generation > 1000))
66+ then $Tuple2(((type + "-SD-") + toString(randomNo)), (type + "-SD"))
67+ else if ((generation > 800))
68+ then $Tuple2(((type + "-SG-") + toString(randomNo)), (type + "-SG"))
69+ else if ((generation > 600))
70+ then $Tuple2(((type + "-PE-") + toString(randomNo)), (type + "-PE"))
71+ else if ((generation > 400))
72+ then $Tuple2(((type + "-M-") + toString(randomNo)), (type + "-M"))
73+ else if ((generation > 200))
74+ then $Tuple2(((type + "-LOG-") + toString(randomNo)), (type + "-LOG"))
75+ else if ((generation > 0))
76+ then $Tuple2(((type + "-D-") + toString(randomNo)), (type + "-D"))
77+ else $Tuple2((type + "-D-1"), (type + "-D"))
7578 }
7679
7780
7881 func countEggsNeededAmount (totalDucksAmount) = {
7982 let n = totalDucksAmount
8083 let g = discountCoefficient
8184 let t = typesAmount
8285 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
8386 (price * 1000000)
8487 }
8588
8689
8790 @Callable(i)
8891 func startDuckHatching () = {
8992 let totalDucksAmount = tryGetInteger("ducks_amount")
9093 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
9194 let firstPayment = value(i.payments[0])
9295 let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), AdoptionStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000))]
9396 if ((firstPayment.assetId != eggsAssetId))
9497 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
9598 else if ((eggsNeeded > firstPayment.amount))
9699 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
97100 else (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
98101 }
99102
100103
101104
102105 @Callable(i)
103106 func finishDuckHatching (txIdStr) = {
104107 let txId = fromBase58String(txIdStr)
105108 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
106109 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
107110 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
108111 let duckFromBaby = match getBoolean((("hatching_" + txIdStr) + "_babyDuck")) {
109112 case t: Boolean =>
110113 t
111114 case _ =>
112115 false
113116 }
114117 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
115118 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
116119 if ((hatchingTxStatus == AdoptionFinished))
117120 then {
118121 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
119122 throw(("The duck was hatched and claimed already, here is the folowing: " + duckId))
120123 }
121124 else if ((hatchingFinishHeight > height))
122125 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
123126 else {
124127 let nameData = getRandomName(txId, hatchingFinishHeight)
125128 let duckGen = nameData._1
126129 let farmGen = nameData._2
127130 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
128131 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
129132 let assetId = calculateAssetId(asset)
130133 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
131134 [StringEntry(hatchingStatusKey, AdoptionFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), BooleanEntry((("duck_" + toBase58String(assetId)) + "_grown"), duckFromBaby), IntegerEntry(getDuckStatsKey(duckGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)]
132135 }
133136 }
134137
135138
136139 @Verifier(tx)
137140 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
138141

github/deemru/w8io/873ac7e 
30.68 ms