tx · GyaaqetgF6XnsNAow43fASKab58SKajemYtbDYvBiYcC

3N4uWa2T9W2p4WgDwLPo3kWRp8eXRatp4vv:  -0.01400000 Waves

2022.02.06 16:02 [1911778] smart account 3N4uWa2T9W2p4WgDwLPo3kWRp8eXRatp4vv > SELF 0.00000000 Waves

{ "type": 13, "id": "GyaaqetgF6XnsNAow43fASKab58SKajemYtbDYvBiYcC", "fee": 1400000, "feeAssetId": null, "timestamp": 1644152502240, "version": 2, "chainId": 84, "sender": "3N4uWa2T9W2p4WgDwLPo3kWRp8eXRatp4vv", "senderPublicKey": "6pUz5KTgi8pySNF2EuYHUMBkXbTyxL7R7YWGgb2PkhgU", "proofs": [ "3mtYTTptYmb2supzr9qZvMHDeQ917WBKgpW9tnaLiEVhQexQr6U2RdhXFSTNySqCFJ8dpSz9DkjmbSb6JT2XseJb" ], "script": "base64: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cnN0UGF5bWVudAAAAAZhbW91bnQFAAAACmVnZ3NOZWVkZWQFAAAAC2VnZ3NBc3NldElkBQAAAANuaWwAAAABaQEAAAASZmluaXNoRHVja0hhdGNoaW5nAAAAAQAAAAd0eElkU3RyBAAAAAR0eElkCQACWQAAAAEFAAAAB3R4SWRTdHIEAAAAEWhhdGNoaW5nU3RhdHVzS2V5CQEAAAAUZ2V0SGF0Y2hpbmdTdGF0dXNLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAPZmluaXNoSGVpZ2h0S2V5CQEAAAAaZ2V0SGF0Y2hpbmdGaW5pc2hIZWlnaHRLZXkAAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAEdHhJZAQAAAAJZHVja0lkS2V5CQEAAAAMZ2V0RHVja0lkS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQEAAAADGR1Y2tGcm9tQmFieQQAAAAHJG1hdGNoMAkABCAAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAJaGF0Y2hpbmdfBQAAAAd0eElkU3RyAgAAAAlfYmFieUR1Y2sDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAXQFAAAAByRtYXRjaDAFAAAAAXQHBAAAABBoYXRjaGluZ1R4U3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAABFoYXRjaGluZ1N0YXR1c0tleQQAAAAUaGF0Y2hpbmdGaW5pc2hIZWlnaHQJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAD2ZpbmlzaEhlaWdodEtleQMJAAAAAAAAAgUAAAAQaGF0Y2hpbmdUeFN0YXR1cwUAAAAQQWRvcHRpb25GaW5pc2hlZAQAAAAGZHVja0lkCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQEAAAAMZ2V0RHVja0lkS2V5AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAABHR4SWQJAAACAAAAAQkAASwAAAACAgAAAEBUaGUgZHVjayB3YXMgaGF0Y2hlZCBhbmQgY2xhaW1lZCBhbHJl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", "height": 1911778, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6d77RbPSXSqwXUdHk2bKgv6MwHqT8jXEzUYvq5NsFTY9 Next: CrhBvqsRNous5GskzWkxB4W38Lwg9g3f4j421dheyAfY Diff:
OldNewDifferences
4949
5050
5151 func getRandomName (txId,hatchingFinishHeight) = {
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"))
52+ let hatId = toString(getRandomNumber(6, txId, hatchingFinishHeight, 0))
53+ let eyeglassId = toString(getRandomNumber(5, txId, hatchingFinishHeight, 0))
54+ let chainId = toString(getRandomNumber(3, txId, hatchingFinishHeight, 0))
55+ let lefthandId = toString(getRandomNumber(43, txId, hatchingFinishHeight, 0))
56+ let righthandId = toString(getRandomNumber(34, txId, hatchingFinishHeight, 0))
57+ let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
58+ let color = if ((colorRandom == 0))
59+ then "R"
60+ else if ((colorRandom == 1))
61+ then "G"
62+ else if ((colorRandom == 2))
63+ then "B"
64+ else "Y"
65+ $Tuple2((((((("PANDA-" + hatId) + eyeglassId) + chainId) + lefthandId) + righthandId) + "-"), "PANDA")
7866 }
7967
8068
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 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"))
52+ let hatId = toString(getRandomNumber(6, txId, hatchingFinishHeight, 0))
53+ let eyeglassId = toString(getRandomNumber(5, txId, hatchingFinishHeight, 0))
54+ let chainId = toString(getRandomNumber(3, txId, hatchingFinishHeight, 0))
55+ let lefthandId = toString(getRandomNumber(43, txId, hatchingFinishHeight, 0))
56+ let righthandId = toString(getRandomNumber(34, txId, hatchingFinishHeight, 0))
57+ let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
58+ let color = if ((colorRandom == 0))
59+ then "R"
60+ else if ((colorRandom == 1))
61+ then "G"
62+ else if ((colorRandom == 2))
63+ then "B"
64+ else "Y"
65+ $Tuple2((((((("PANDA-" + hatId) + eyeglassId) + chainId) + lefthandId) + righthandId) + "-"), "PANDA")
7866 }
7967
8068
8169 func countEggsNeededAmount (totalDucksAmount) = {
8270 let n = totalDucksAmount
8371 let g = discountCoefficient
8472 let t = typesAmount
8573 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
8674 (price * 1000000)
8775 }
8876
8977
9078 @Callable(i)
9179 func startDuckHatching () = {
9280 let totalDucksAmount = tryGetInteger("ducks_amount")
9381 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
9482 let firstPayment = value(i.payments[0])
9583 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))]
9684 if ((firstPayment.assetId != eggsAssetId))
9785 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
9886 else if ((eggsNeeded > firstPayment.amount))
9987 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
10088 else (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
10189 }
10290
10391
10492
10593 @Callable(i)
10694 func finishDuckHatching (txIdStr) = {
10795 let txId = fromBase58String(txIdStr)
10896 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
10997 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
11098 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
11199 let duckFromBaby = match getBoolean((("hatching_" + txIdStr) + "_babyDuck")) {
112100 case t: Boolean =>
113101 t
114102 case _ =>
115103 false
116104 }
117105 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
118106 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
119107 if ((hatchingTxStatus == AdoptionFinished))
120108 then {
121109 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
122110 throw(("The duck was hatched and claimed already, here is the folowing: " + duckId))
123111 }
124112 else if ((hatchingFinishHeight > height))
125113 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
126114 else {
127115 let nameData = getRandomName(txId, hatchingFinishHeight)
128116 let duckGen = nameData._1
129117 let farmGen = nameData._2
130118 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
131119 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
132120 let assetId = calculateAssetId(asset)
133121 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
134122 [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)]
135123 }
136124 }
137125
138126
139127 @Verifier(tx)
140128 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
141129

github/deemru/w8io/873ac7e 
42.44 ms