tx · 8Soj76UavzfKk18ouZzdoYRJyok6VxcYCVW8ECvAZofP

3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv:  -0.01400000 Waves

2021.12.17 00:01 [2902300] smart account 3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv > SELF 0.00000000 Waves

{ "type": 13, "id": "8Soj76UavzfKk18ouZzdoYRJyok6VxcYCVW8ECvAZofP", "fee": 1400000, "feeAssetId": null, "timestamp": 1639688595570, "version": 2, "chainId": 87, "sender": "3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv", "senderPublicKey": "EBHsV7TQYm4qS2V7iZXEXwcbUdEYQyCSLEdY2AMvLPns", "proofs": [ "4c7isSttzXWjvtcjXTH9wqvjpEc6DH8Rqy3YHGJJRQ7k8kwqmfjs15ietN6DyLyTWF2fTSQUjDeT7cwKnD6YGUwN" ], "script": "base64:AAIFAAAAAAAABQUIAhIDCgEIEgMKAQgSAwoBCBIECgIICBIFCgMICAgSBAoCCAgaDQoBQRIIdmFyaWFudHMaGQoBQhIUaGF0Y2hpbmdGaW5pc2hIZWlnaHQaCwoBQxIGb2Zmc2V0GhQKAUQSD3JhbmRvbVNlZWRCbG9jaxoPCgFFEgpyYW5kb21IYXNoGhIKAUYSDXdhc1VuaXF1ZUJvcm4aCAoBRxIDZ2VuGhIKAUgSDWdldFJhbmRvbU5hbWUaEgoBSRINamFja3BvdFJhbmRvbRoPCgFKEgp0eXBlUmFuZG9tGhAKAUsSC2NvbG9yUmFuZG9tGgoKAUwSBWNvbG9yGhoKAU0SFWNvdW50RWdnc05lZWRlZEFtb3VudBoVCgFOEhB0b3RhbER1Y2tzQW1vdW50GgYKAU8SAW4aBgoBUBIBZxoGCgFREgF0GgoKAVISBXByaWNlGgYKAVMSAWkaEwoBVBIOcmVmZXJlckFkZHJlc3MaDwoBVRIKZWdnc05lZWRlZBoRCgFWEgxmaXJzdFBheW1lbnQaDAoBVxIHcmVzdWx0cxoSCgFYEg1yZWZlcmVyUmV3YXJkGgwKAVkSB3JlZkNhbGwaDAoBWhIHdHhJZFN0choQCgFhEgtlZ2dzQXNzZXRJZBoXCgJhYRIRaGF0Y2hpbmdTdGF0dXNLZXkaFQoCYWISD2ZpbmlzaEhlaWdodEtleRoPCgJhYxIJZHVja0lkS2V5GhIKAmFkEgxkdWNrRnJvbUJhYnkaFgoCYWUSEGhhdGNoaW5nVHhTdGF0dXMaDAoCYWYSBmR1Y2tJZBoRCgJhZxILJHQwNjMxNDYzODAaDQoCYWgSB2R1Y2tHZW4aDQoCYWkSB2Zhcm1HZW4aEQoCYWoSC2Rlc2NyaXB0aW9uGgsKAmFrEgVhc3NldBoNCgJhbBIHYXNzZXRJZBoMCgJhbRIGYW1vdW50GhEKAmFuEgskdDA3NjMzNzcxOBoRCgJhbxILJHQwOTE3MTkyMjMaCgoCYXASBGZHZW4aDAoCYXESBmxldHRlchoICgJhchICdHgaDAoCYXMSBnZlcmlmeRoVCgFiEhBkZWxheUZvckhhdGNoaW5nGhgKAWMSE2Rpc2NvdW50Q29lZmZpY2llbnQaEAoBZBILdHlwZXNBbW91bnQaFwoBZRIScmVmQ29udHJhY3RBZGRy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", "height": 2902300, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: P1mg9iU18PQsWQo9jedBhmeK3kw52X5oPGb8uyKnhW3 Next: AkbQo786kiEv9eqipUWfJ5z53JFWMvasfNT8xYwwQ4Re Diff:
OldNewDifferences
113113 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))]
114114 if ((i.caller == Address(babyDucksAddress)))
115115 then (results ++ [BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_babyDuck"), true)])
116- else if ((i.caller == Address(swopPromoAddress)))
117- then (results ++ [BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_promo"), true)])
118- else if ((firstPayment.assetId != eggsAssetId))
119- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
120- else if ((eggsNeeded > firstPayment.amount))
121- then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
122- else {
123- let refererReward = fraction(eggsNeeded, RefererReward, 100)
124- let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
125- if ((refCall == refCall))
126- then (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
127- else throw("Strict value is not equal to itself.")
128- }
116+ else if ((firstPayment.assetId != eggsAssetId))
117+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
118+ else if ((eggsNeeded > firstPayment.amount))
119+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
120+ else {
121+ let refererReward = fraction(eggsNeeded, RefererReward, 100)
122+ let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
123+ if ((refCall == refCall))
124+ then (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
125+ else throw("Strict value is not equal to itself.")
126+ }
129127 }
128+
129+
130+
131+@Callable(i)
132+func startDuckHatchingForUser (address) = if ((isLocked() > 0))
133+ then throw("EGG operations are temporarily locked")
134+ else if ((i.caller != Address(swopPromoAddress)))
135+ then throw("Can be called only by promo address")
136+ else {
137+ let totalDucksAmount = tryGetInteger("ducks_amount")
138+ let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
139+[StringEntry(getHatchingStatusKey(address, i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(address, i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_promo"), true)]
140+ }
130141
131142
132143
152163 else if ((hatchingFinishHeight > height))
153164 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
154165 else {
155- let $t056955761 = getRandomName(txId, hatchingFinishHeight)
156- let duckGen = $t056955761._1
157- let farmGen = $t056955761._2
166+ let $t063146380 = getRandomName(txId, hatchingFinishHeight)
167+ let duckGen = $t063146380._1
168+ let farmGen = $t063146380._2
158169 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
159170 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
160171 let assetId = calculateAssetId(asset)
174185 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
175186 let totalDucksAmount = tryGetInteger("ducks_amount")
176187 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
177- let $t070147099 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
178- let duckGen = $t070147099._1
179- let farmGen = $t070147099._2
188+ let $t076337718 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
189+ let duckGen = $t076337718._1
190+ let farmGen = $t076337718._2
180191 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
181192 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
182193 let assetId = calculateAssetId(asset)
198209 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
199210 let totalDucksAmount = tryGetInteger("ducks_amount")
200211 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
201- let $t085528604 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
202- let duckGen = $t085528604._1
203- let farmGen = $t085528604._2
212+ let $t091719223 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
213+ let duckGen = $t091719223._1
214+ let farmGen = $t091719223._2
204215 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
205216 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
206217 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
88 let discountCoefficient = 10
99
1010 let typesAmount = 9
1111
1212 let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe'
1313
1414 let RefererReward = 5
1515
1616 let HatchingStarted = "HATCHING_STARTED"
1717
1818 let HatchingFinished = "HATCHING_FINISHED"
1919
2020 let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ'
2121
2222 let babyDucksAddress = base58'3PKmLiGEfqLWMC1H9xhzqvAZKUXfFm8uoeg'
2323
2424 let swopPromoAddress = base58'3P6s9C39Ak5FAQ3F5VapYJ3ULxgbsAReXWD'
2525
2626 func isLocked () = {
2727 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
2828 match getInteger(masterAddress, "egglock") {
2929 case b: Int =>
3030 b
3131 case _ =>
3232 0
3333 }
3434 }
3535
3636
3737 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
3838
3939
4040 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
4141
4242
4343 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
4444
4545
4646 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
4747
4848
4949 func tryGetInteger (key) = {
5050 let val = match getInteger(this, key) {
5151 case b: Int =>
5252 b
5353 case _ =>
5454 0
5555 }
5656 val
5757 }
5858
5959
6060 func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = {
6161 let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1)))
6262 let randomHash = sha256((txId + value(randomSeedBlock.vrf)))
6363 (toInt(randomHash, (offset * 8)) % variants)
6464 }
6565
6666
6767 func wasUniqueBorn (gen) = tryGetInteger(getDuckStatsKey(gen))
6868
6969
7070 func getRandomName (txId,hatchingFinishHeight) = {
7171 let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0)
7272 if (if ((jackpotRandom == 111))
7373 then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0)
7474 else false)
7575 then $Tuple2("DUCK-WWWWWWWM-JU", "8W-J")
7676 else {
7777 let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
7878 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
7979 let color = if ((colorRandom == 0))
8080 then "Y"
8181 else if ((colorRandom == 1))
8282 then "G"
8383 else if ((colorRandom == 2))
8484 then "B"
8585 else "R"
8686 if ((typeRandom == 0))
8787 then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
8888 else if ((typeRandom == 1))
8989 then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
9090 else if ((typeRandom == 2))
9191 then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
9292 else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
9393 }
9494 }
9595
9696
9797 func countEggsNeededAmount (totalDucksAmount) = {
9898 let n = totalDucksAmount
9999 let g = discountCoefficient
100100 let t = typesAmount
101101 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
102102 (price * 1000000)
103103 }
104104
105105
106106 @Callable(i)
107107 func startDuckHatching (refererAddress) = if ((isLocked() > 0))
108108 then throw("EGG operations are temporarily locked")
109109 else {
110110 let totalDucksAmount = tryGetInteger("ducks_amount")
111111 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
112112 let firstPayment = value(i.payments[0])
113113 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))]
114114 if ((i.caller == Address(babyDucksAddress)))
115115 then (results ++ [BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_babyDuck"), true)])
116- else if ((i.caller == Address(swopPromoAddress)))
117- then (results ++ [BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_promo"), true)])
118- else if ((firstPayment.assetId != eggsAssetId))
119- then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
120- else if ((eggsNeeded > firstPayment.amount))
121- then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
122- else {
123- let refererReward = fraction(eggsNeeded, RefererReward, 100)
124- let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
125- if ((refCall == refCall))
126- then (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
127- else throw("Strict value is not equal to itself.")
128- }
116+ else if ((firstPayment.assetId != eggsAssetId))
117+ then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
118+ else if ((eggsNeeded > firstPayment.amount))
119+ then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
120+ else {
121+ let refererReward = fraction(eggsNeeded, RefererReward, 100)
122+ let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
123+ if ((refCall == refCall))
124+ then (results ++ [ScriptTransfer(i.caller, (firstPayment.amount - eggsNeeded), eggsAssetId)])
125+ else throw("Strict value is not equal to itself.")
126+ }
129127 }
128+
129+
130+
131+@Callable(i)
132+func startDuckHatchingForUser (address) = if ((isLocked() > 0))
133+ then throw("EGG operations are temporarily locked")
134+ else if ((i.caller != Address(swopPromoAddress)))
135+ then throw("Can be called only by promo address")
136+ else {
137+ let totalDucksAmount = tryGetInteger("ducks_amount")
138+ let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
139+[StringEntry(getHatchingStatusKey(address, i.transactionId), HatchingStarted), IntegerEntry(getHatchingFinishHeightKey(address, i.transactionId), (height + delayForHatching)), IntegerEntry("ducks_amount", (totalDucksAmount + 1)), IntegerEntry("ducks_last_price", (eggsNeeded / 1000000)), BooleanEntry((("hatching_" + toBase58String(i.transactionId)) + "_promo"), true)]
140+ }
130141
131142
132143
133144 @Callable(i)
134145 func finishDuckHatching (txIdStr) = {
135146 let txId = fromBase58String(txIdStr)
136147 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
137148 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
138149 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
139150 let duckFromBaby = match getBoolean((("hatching_" + txIdStr) + "_babyDuck")) {
140151 case t: Boolean =>
141152 t
142153 case _ =>
143154 false
144155 }
145156 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
146157 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
147158 if ((hatchingTxStatus == HatchingFinished))
148159 then {
149160 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
150161 throw(("The duck was hatched and claimed already, here is the folowing: " + duckId))
151162 }
152163 else if ((hatchingFinishHeight > height))
153164 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
154165 else {
155- let $t056955761 = getRandomName(txId, hatchingFinishHeight)
156- let duckGen = $t056955761._1
157- let farmGen = $t056955761._2
166+ let $t063146380 = getRandomName(txId, hatchingFinishHeight)
167+ let duckGen = $t063146380._1
168+ let farmGen = $t063146380._2
158169 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
159170 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
160171 let assetId = calculateAssetId(asset)
161172 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
162173 [StringEntry(hatchingStatusKey, HatchingFinished), 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)]
163174 }
164175 }
165176
166177
167178
168179 @Callable(i)
169180 func issueFreeDuck (address,txIdStr) = if ((i.caller != Address(rebirthAddress)))
170181 then throw("rebirth or baby ducks only")
171182 else {
172183 let txId = fromBase58String(txIdStr)
173184 let hatchingStatusKey = getHatchingStatusKey(address, txId)
174185 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
175186 let totalDucksAmount = tryGetInteger("ducks_amount")
176187 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
177- let $t070147099 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
178- let duckGen = $t070147099._1
179- let farmGen = $t070147099._2
188+ let $t076337718 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
189+ let duckGen = $t076337718._1
190+ let farmGen = $t076337718._2
180191 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
181192 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
182193 let assetId = calculateAssetId(asset)
183194 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
184195 let duckIdKey = getDuckIdKey(address, txId)
185196 $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))
186197 }
187198
188199
189200
190201 @Callable(i)
191202 func issueJackpot (address,txIdStr,gen) = if (if ((i.caller != Address(rebirthAddress)))
192203 then (i.caller != this)
193204 else false)
194205 then throw("admin or rebirth only")
195206 else {
196207 let txId = fromBase58String(txIdStr)
197208 let hatchingStatusKey = getHatchingStatusKey(address, txId)
198209 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
199210 let totalDucksAmount = tryGetInteger("ducks_amount")
200211 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
201- let $t085528604 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
202- let duckGen = $t085528604._1
203- let farmGen = $t085528604._2
212+ let $t091719223 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
213+ let duckGen = $t091719223._1
214+ let farmGen = $t091719223._2
204215 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
205216 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
206217 let assetId = calculateAssetId(asset)
207218 let duckIdKey = getDuckIdKey(address, txId)
208219 $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))
209220 }
210221
211222
212223
213224 @Callable(i)
214225 func reduceRarity (assetId,fGen) = {
215226 let asset = fromBase58String(assetId)
216227 if (if ((i.caller != Address(rebirthAddress)))
217228 then (i.caller != this)
218229 else false)
219230 then throw("admin or rebirth only")
220231 else {
221232 let duckGen = value(assetInfo(asset)).name
222233 let letter = takeRight(take(duckGen, 6), 1)
223234 let farmGen = (("8" + letter) + "-G")
224235 [IntegerEntry(getDuckStatsKey(duckGen), (tryGetInteger(getDuckStatsKey(duckGen)) - 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) - 1))]
225236 }
226237 }
227238
228239
229240 @Verifier(tx)
230241 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
231242

github/deemru/w8io/3ef1775 
43.56 ms