tx · CSXRdRX1rhq669GKAGiKy8fXTU5sbrXUgJaBQDztCMLT

3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv:  -0.01400000 Waves

2021.12.15 17:41 [2900492] smart account 3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv > SELF 0.00000000 Waves

{ "type": 13, "id": "CSXRdRX1rhq669GKAGiKy8fXTU5sbrXUgJaBQDztCMLT", "fee": 1400000, "feeAssetId": null, "timestamp": 1639579337886, "version": 2, "chainId": 87, "sender": "3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv", "senderPublicKey": "EBHsV7TQYm4qS2V7iZXEXwcbUdEYQyCSLEdY2AMvLPns", "proofs": [ "2dvGnrRcfXuAGSY5UpahqSHn1nDrN3ZbMrqY2FampS3mguPhbBDXEPQbJoGtWnw9EtD5e7BpiWgkXBBNJSmz9xrh" ], "script": "base64:AAIFAAAAAAAABO0IAhIDCgEIEgMKAQgSBAoCCAgSBQoDCAgIEgQKAggIGhkKAUESFGhhdGNoaW5nRmluaXNoSGVpZ2h0GgsKAUISBm9mZnNldBoUCgFDEg9yYW5kb21TZWVkQmxvY2saDwoBRBIKcmFuZG9tSGFzaBoSCgFFEg13YXNVbmlxdWVCb3JuGggKAUYSA2dlbhoSCgFHEg1nZXRSYW5kb21OYW1lGhIKAUgSDWphY2twb3RSYW5kb20aDwoBSRIKdHlwZVJhbmRvbRoQCgFKEgtjb2xvclJhbmRvbRoKCgFLEgVjb2xvchoaCgFMEhVjb3VudEVnZ3NOZWVkZWRBbW91bnQaFQoBTRIQdG90YWxEdWNrc0Ftb3VudBoGCgFOEgFuGgYKAU8SAWcaBgoBUBIBdBoKCgFREgVwcmljZRoGCgFSEgFpGhMKAVMSDnJlZmVyZXJBZGRyZXNzGhYKAVQSEWNhbGxlZEJ5QmFieUR1Y2tzGg8KAVUSCmVnZ3NOZWVkZWQaEQoBVhIMZmlyc3RQYXltZW50GgwKAVcSB3Jlc3VsdHMaEgoBWBINcmVmZXJlclJld2FyZBoMCgFZEgdyZWZDYWxsGgwKAVoSB3R4SWRTdHIaEAoBYRILZWdnc0Fzc2V0SWQaFwoCYWESEWhhdGNoaW5nU3RhdHVzS2V5GhUKAmFiEg9maW5pc2hIZWlnaHRLZXkaDwoCYWMSCWR1Y2tJZEtleRoWCgJhZBIQaGF0Y2hpbmdUeFN0YXR1cxoMCgJhZRIGZHVja0lkGhEKAmFmEgskdDA1Mjg4NTM1NBoNCgJhZxIHZHVja0dlbhoNCgJhaBIHZmFybUdlbhoRCgJhaRILZGVzY3JpcHRpb24aCwoCYWoSBWFzc2V0Gg0KAmFrEgdhc3NldElkGgwKAmFsEgZhbW91bnQaEQoCYW0SCyR0MDY1MjQ2NjA5GhEKAmFuEgskdDA4MDYyODExNBoKCgJhbxIEZkdlbhoMCgJhcBIGbGV0dGVyGggKAmFxEgJ0eBoMCgJhchIGdmVyaWZ5GhUKAWISEGRlbGF5Rm9ySGF0Y2hpbmcaGAoBYxITZGlzY291bnRDb2VmZmljaWVudBoQCgFkEgt0eXBlc0Ftb3VudBoXCgFlEhJyZWZDb250cmFjdEFkZHJlc3MaEgoBZhINUmVmZXJl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", "height": 2900492, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6Hds66BLupA7ce6tf8QcMKM4nh8sQaoMUgy9EWLejLNT Next: 4P72PbGEekYMwb3gQwf8vZHNCGmfJw5xYTThvXE6XE41 Diff:
OldNewDifferences
55
66 let delayForHatching = 2
77
8-let typesAmount = 9
8+let discountCoefficient = 10
9+
10+let typesAmount = 7
911
1012 let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe'
1113
1618 let HatchingFinished = "HATCHING_FINISHED"
1719
1820 let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ'
21+
22+let babyDucksAddress = base58'3PKmLiGEfqLWMC1H9xhzqvAZKUXfFm8uoeg'
1923
2024 func isLocked () = {
2125 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
5155 }
5256
5357
54-let discountCoefficient = tryGetInteger("discountCoefficient")
55-
5658 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
5759 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
5860 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
6567
6668 func getRandomName (txId,hatchingFinishHeight) = {
6769 let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
68- if (if ((jackpotRandom == 112))
69- then (wasUniqueBorn("DUCK-WWWWWWWF-JU") == 0)
70+ if (if ((jackpotRandom == 111))
71+ then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0)
7072 else false)
71- then $Tuple2("DUCK-WWWWWWWF-JU", "8W-J")
72- else if (if ((jackpotRandom == 128))
73- then (wasUniqueBorn("DUCK-WWWWWSX2-JU") == 0)
74- else false)
75- then $Tuple2("DUCK-WWWWWSX2-JU", "8W-J")
76- else if (if (if (if (if (if (if (if (if (if (if ((jackpotRandom == 154))
77- then true
78- else (jackpotRandom == 155))
79- then true
80- else (jackpotRandom == 156))
81- then true
82- else (jackpotRandom == 157))
83- then true
84- else (jackpotRandom == 158))
85- then true
86- else (jackpotRandom == 159))
87- then true
88- else (jackpotRandom == 160))
89- then true
90- else (jackpotRandom == 161))
91- then true
92- else (jackpotRandom == 162))
93- then true
94- else (jackpotRandom == 163))
95- then (wasUniqueBorn("DUCK-WWWWHELL-JU") == 0)
96- else false)
97- then $Tuple2("DUCK-WWWWHELL-JU", "8W-J")
98- else if (if ((jackpotRandom == 401))
99- then (wasUniqueBorn("DUCK-WWWWWSX4-JU") == 0)
100- else false)
101- then $Tuple2("DUCK-WWWWWSX4-JU", "8W-J")
102- else if (if ((jackpotRandom == 402))
103- then (wasUniqueBorn("DUCK-WWWSQUID-JU") == 0)
104- else false)
105- then $Tuple2("DUCK-WWWSQUID-JU", "8W-J")
106- else {
107- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
108- let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
109- let color = if ((colorRandom == 0))
110- then "Y"
111- else if ((colorRandom == 1))
112- then "G"
113- else if ((colorRandom == 2))
114- then "B"
115- else "R"
116- if ((typeRandom == 0))
117- then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
118- else if ((typeRandom == 1))
119- then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
120- else if ((typeRandom == 2))
121- then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
122- else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
123- }
73+ then $Tuple2("DUCK-WWWWWWWM-JU", "8W-J")
74+ else {
75+ let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
76+ let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
77+ let color = if ((colorRandom == 0))
78+ then "Y"
79+ else if ((colorRandom == 1))
80+ then "G"
81+ else if ((colorRandom == 2))
82+ then "B"
83+ else "R"
84+ if ((typeRandom == 0))
85+ then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
86+ else if ((typeRandom == 1))
87+ then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
88+ else if ((typeRandom == 2))
89+ then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
90+ else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
91+ }
12492 }
12593
12694
134102
135103
136104 @Callable(i)
137-func setDiscount (val) = if ((i.caller != this))
138- then throw("admin_only")
139- else [IntegerEntry("discountCoefficient", val)]
140-
141-
142-
143-@Callable(i)
144105 func startDuckHatching (refererAddress) = if ((isLocked() > 0))
145106 then throw("EGG operations are temporarily locked")
146107 else {
108+ let calledByBabyDucks = if ((i.caller == Address(babyDucksAddress)))
109+ then true
110+ else false
147111 let totalDucksAmount = tryGetInteger("ducks_amount")
148112 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
149113 let firstPayment = value(i.payments[0])
150- if ((firstPayment.assetId != eggsAssetId))
151- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
152- else if ((eggsNeeded > firstPayment.amount))
153- then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
154- else {
155- let refererReward = fraction(eggsNeeded, RefererReward, 100)
156- let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
157- if ((refCall == refCall))
158- then [StringEntry(getHatchingStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)]
159- else throw("Strict value is not equal to itself.")
160- }
114+ let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000))]
115+ if (calledByBabyDucks)
116+ then results
117+ else if ((firstPayment.assetId != eggsAssetId))
118+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
119+ else if ((eggsNeeded > firstPayment.amount))
120+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
121+ else {
122+ let refererReward = fraction(eggsNeeded, RefererReward, 100)
123+ let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
124+ if ((refCall == refCall))
125+ then (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
126+ else throw("Strict value is not equal to itself.")
127+ }
161128 }
162129
163130
178145 else if ((hatchingFinishHeight > height))
179146 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
180147 else {
181- let $t059135979 = getRandomName(txId, hatchingFinishHeight)
182- let duckGen = $t059135979._1
183- let farmGen = $t059135979._2
148+ let $t052885354 = getRandomName(txId, hatchingFinishHeight)
149+ let duckGen = $t052885354._1
150+ let farmGen = $t052885354._2
184151 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
185152 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
186153 let assetId = calculateAssetId(asset)
193160
194161 @Callable(i)
195162 func issueFreeDuck (address,txIdStr) = if ((i.caller != Address(rebirthAddress)))
196- then throw("rebirth only")
163+ then throw("rebirth or baby ducks only")
197164 else {
198165 let txId = fromBase58String(txIdStr)
199166 let hatchingStatusKey = getHatchingStatusKey(address, txId)
200167 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
201168 let totalDucksAmount = tryGetInteger("ducks_amount")
202169 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
203- let $t071357220 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
204- let duckGen = $t071357220._1
205- let farmGen = $t071357220._2
170+ let $t065246609 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
171+ let duckGen = $t065246609._1
172+ let farmGen = $t065246609._2
206173 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
207174 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
208175 let assetId = calculateAssetId(asset)
224191 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
225192 let totalDucksAmount = tryGetInteger("ducks_amount")
226193 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
227- let $t086738725 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
228- let duckGen = $t086738725._1
229- let farmGen = $t086738725._2
194+ let $t080628114 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
195+ let duckGen = $t080628114._1
196+ let farmGen = $t080628114._2
230197 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
231198 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
232199 let assetId = calculateAssetId(asset)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let eggsAssetId = base58'C1iWsKGqLwjHUndiQ7iXpdmPum9PeCDFfyXBdJJosDRS'
55
66 let delayForHatching = 2
77
8-let typesAmount = 9
8+let discountCoefficient = 10
9+
10+let typesAmount = 7
911
1012 let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe'
1113
1214 let RefererReward = 5
1315
1416 let HatchingStarted = "HATCHING_STARTED"
1517
1618 let HatchingFinished = "HATCHING_FINISHED"
1719
1820 let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ'
21+
22+let babyDucksAddress = base58'3PKmLiGEfqLWMC1H9xhzqvAZKUXfFm8uoeg'
1923
2024 func isLocked () = {
2125 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
2226 match getInteger(masterAddress, "egglock") {
2327 case b: Int =>
2428 b
2529 case _ =>
2630 0
2731 }
2832 }
2933
3034
3135 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
3236
3337
3438 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
3539
3640
3741 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
3842
3943
4044 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
4145
4246
4347 func tryGetInteger (key) = {
4448 let val = match getInteger(this, key) {
4549 case b: Int =>
4650 b
4751 case _ =>
4852 0
4953 }
5054 val
5155 }
5256
5357
54-let discountCoefficient = tryGetInteger("discountCoefficient")
55-
5658 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
5759 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
5860 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
5961 (toInt(randomHash, (offset * 8)) % variants)
6062 }
6163
6264
6365 func wasUniqueBorn (gen) = tryGetInteger(getDuckStatsKey(gen))
6466
6567
6668 func getRandomName (txId,hatchingFinishHeight) = {
6769 let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
68- if (if ((jackpotRandom == 112))
69- then (wasUniqueBorn("DUCK-WWWWWWWF-JU") == 0)
70+ if (if ((jackpotRandom == 111))
71+ then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0)
7072 else false)
71- then $Tuple2("DUCK-WWWWWWWF-JU", "8W-J")
72- else if (if ((jackpotRandom == 128))
73- then (wasUniqueBorn("DUCK-WWWWWSX2-JU") == 0)
74- else false)
75- then $Tuple2("DUCK-WWWWWSX2-JU", "8W-J")
76- else if (if (if (if (if (if (if (if (if (if (if ((jackpotRandom == 154))
77- then true
78- else (jackpotRandom == 155))
79- then true
80- else (jackpotRandom == 156))
81- then true
82- else (jackpotRandom == 157))
83- then true
84- else (jackpotRandom == 158))
85- then true
86- else (jackpotRandom == 159))
87- then true
88- else (jackpotRandom == 160))
89- then true
90- else (jackpotRandom == 161))
91- then true
92- else (jackpotRandom == 162))
93- then true
94- else (jackpotRandom == 163))
95- then (wasUniqueBorn("DUCK-WWWWHELL-JU") == 0)
96- else false)
97- then $Tuple2("DUCK-WWWWHELL-JU", "8W-J")
98- else if (if ((jackpotRandom == 401))
99- then (wasUniqueBorn("DUCK-WWWWWSX4-JU") == 0)
100- else false)
101- then $Tuple2("DUCK-WWWWWSX4-JU", "8W-J")
102- else if (if ((jackpotRandom == 402))
103- then (wasUniqueBorn("DUCK-WWWSQUID-JU") == 0)
104- else false)
105- then $Tuple2("DUCK-WWWSQUID-JU", "8W-J")
106- else {
107- let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
108- let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
109- let color = if ((colorRandom == 0))
110- then "Y"
111- else if ((colorRandom == 1))
112- then "G"
113- else if ((colorRandom == 2))
114- then "B"
115- else "R"
116- if ((typeRandom == 0))
117- then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
118- else if ((typeRandom == 1))
119- then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
120- else if ((typeRandom == 2))
121- then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
122- else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
123- }
73+ then $Tuple2("DUCK-WWWWWWWM-JU", "8W-J")
74+ else {
75+ let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
76+ let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
77+ let color = if ((colorRandom == 0))
78+ then "Y"
79+ else if ((colorRandom == 1))
80+ then "G"
81+ else if ((colorRandom == 2))
82+ then "B"
83+ else "R"
84+ if ((typeRandom == 0))
85+ then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
86+ else if ((typeRandom == 1))
87+ then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
88+ else if ((typeRandom == 2))
89+ then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
90+ else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
91+ }
12492 }
12593
12694
12795 func countEggsNeededAmount (totalDucksAmount) = {
12896 let n = totalDucksAmount
12997 let g = discountCoefficient
13098 let t = typesAmount
13199 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
132100 (price * 1000000)
133101 }
134102
135103
136104 @Callable(i)
137-func setDiscount (val) = if ((i.caller != this))
138- then throw("admin_only")
139- else [IntegerEntry("discountCoefficient", val)]
140-
141-
142-
143-@Callable(i)
144105 func startDuckHatching (refererAddress) = if ((isLocked() > 0))
145106 then throw("EGG operations are temporarily locked")
146107 else {
108+ let calledByBabyDucks = if ((i.caller == Address(babyDucksAddress)))
109+ then true
110+ else false
147111 let totalDucksAmount = tryGetInteger("ducks_amount")
148112 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
149113 let firstPayment = value(i.payments[0])
150- if ((firstPayment.assetId != eggsAssetId))
151- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
152- else if ((eggsNeeded > firstPayment.amount))
153- then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
154- else {
155- let refererReward = fraction(eggsNeeded, RefererReward, 100)
156- let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
157- if ((refCall == refCall))
158- then [StringEntry(getHatchingStatusKey(toString(i.caller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.caller), i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)]
159- else throw("Strict value is not equal to itself.")
160- }
114+ let results = [StringEntry(getHatchingStatusKey(toString(i.originCaller), i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(toString(i.originCaller), i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000))]
115+ if (calledByBabyDucks)
116+ then results
117+ else if ((firstPayment.assetId != eggsAssetId))
118+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
119+ else if ((eggsNeeded > firstPayment.amount))
120+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
121+ else {
122+ let refererReward = fraction(eggsNeeded, RefererReward, 100)
123+ let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
124+ if ((refCall == refCall))
125+ then (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
126+ else throw("Strict value is not equal to itself.")
127+ }
161128 }
162129
163130
164131
165132 @Callable(i)
166133 func finishDuckHatching (txIdStr) = {
167134 let txId = fromBase58String(txIdStr)
168135 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
169136 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
170137 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
171138 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
172139 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
173140 if ((hatchingTxStatus == HatchingFinished))
174141 then {
175142 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
176143 throw(("The duck was hatched and claimed already, here is the folowing: " + duckId))
177144 }
178145 else if ((hatchingFinishHeight > height))
179146 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
180147 else {
181- let $t059135979 = getRandomName(txId, hatchingFinishHeight)
182- let duckGen = $t059135979._1
183- let farmGen = $t059135979._2
148+ let $t052885354 = getRandomName(txId, hatchingFinishHeight)
149+ let duckGen = $t052885354._1
150+ let farmGen = $t052885354._2
184151 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
185152 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
186153 let assetId = calculateAssetId(asset)
187154 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
188155 [StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(i.caller, 1, assetId)]
189156 }
190157 }
191158
192159
193160
194161 @Callable(i)
195162 func issueFreeDuck (address,txIdStr) = if ((i.caller != Address(rebirthAddress)))
196- then throw("rebirth only")
163+ then throw("rebirth or baby ducks only")
197164 else {
198165 let txId = fromBase58String(txIdStr)
199166 let hatchingStatusKey = getHatchingStatusKey(address, txId)
200167 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
201168 let totalDucksAmount = tryGetInteger("ducks_amount")
202169 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
203- let $t071357220 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
204- let duckGen = $t071357220._1
205- let farmGen = $t071357220._2
170+ let $t065246609 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
171+ let duckGen = $t065246609._1
172+ let farmGen = $t065246609._2
206173 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
207174 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
208175 let assetId = calculateAssetId(asset)
209176 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
210177 let duckIdKey = getDuckIdKey(address, txId)
211178 $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), amount), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
212179 }
213180
214181
215182
216183 @Callable(i)
217184 func issueJackpot (address,txIdStr,gen) = if (if ((i.caller != Address(rebirthAddress)))
218185 then (i.caller != this)
219186 else false)
220187 then throw("admin or rebirth only")
221188 else {
222189 let txId = fromBase58String(txIdStr)
223190 let hatchingStatusKey = getHatchingStatusKey(address, txId)
224191 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
225192 let totalDucksAmount = tryGetInteger("ducks_amount")
226193 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
227- let $t086738725 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
228- let duckGen = $t086738725._1
229- let farmGen = $t086738725._2
194+ let $t080628114 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
195+ let duckGen = $t080628114._1
196+ let farmGen = $t080628114._2
230197 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
231198 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
232199 let assetId = calculateAssetId(asset)
233200 let duckIdKey = getDuckIdKey(address, txId)
234201 $Tuple2([IntegerEntry(getHatchingFinishHeightKey(address, txId), height), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), StringEntry(hatchingStatusKey, HatchingFinished), StringEntry(duckIdKey, toBase58String(assetId)), StringEntry(toBase58String(assetId), duckIdKey), IntegerEntry(getDuckStatsKey(duckGen), (tryGetInteger(getDuckStatsKey(duckGen)) + 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) + 1)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
235202 }
236203
237204
238205
239206 @Callable(i)
240207 func reduceRarity (assetId,fGen) = {
241208 let asset = fromBase58String(assetId)
242209 if (if ((i.caller != Address(rebirthAddress)))
243210 then (i.caller != this)
244211 else false)
245212 then throw("admin or rebirth only")
246213 else {
247214 let duckGen = value(assetInfo(asset)).name
248215 let letter = takeRight(take(duckGen, 6), 1)
249216 let farmGen = (("8" + letter) + "-G")
250217 [IntegerEntry(getDuckStatsKey(duckGen), (tryGetInteger(getDuckStatsKey(duckGen)) - 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) - 1))]
251218 }
252219 }
253220
254221
255222 @Verifier(tx)
256223 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
257224

github/deemru/w8io/6500d08 
50.51 ms