tx · BYQ5jKsGLKe7jidnPD8puz9tvozhcNcEMeYHvhUE7MLb

3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM:  -0.01400000 Waves

2021.12.14 01:21 [2898064] smart account 3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM > SELF 0.00000000 Waves

{ "type": 13, "id": "BYQ5jKsGLKe7jidnPD8puz9tvozhcNcEMeYHvhUE7MLb", "fee": 1400000, "feeAssetId": null, "timestamp": 1639434153894, "version": 2, "chainId": 87, "sender": "3P6TwNU39Ykkbeqhn5TE4a2736xsA1vXemM", "senderPublicKey": "2u37SmDDZX3Ry9sDnA1umgjYSVQ51faPMAXtooDpx6yw", "proofs": [ "3bQnzp3kABwWYT6yzjqTSJ4ifBsqYUwdcqNMdbfT4Z6yFUbtTXFTeWQMZ9S9f9TmsNud4mSvx6iqrzZ2T8HM5Uah" ], "script": "base64:AAIFAAAAAAAABMUIAhIDCgEIEgMKAQgSBAoCCAgSBQoDCAgIEgQKAggIGhkKAUESFGhhdGNoaW5nRmluaXNoSGVpZ2h0GgsKAUISBm9mZnNldBoUCgFDEg9yYW5kb21TZWVkQmxvY2saDwoBRBIKcmFuZG9tSGFzaBoSCgFFEg13YXNVbmlxdWVCb3JuGggKAUYSA2dlbhoSCgFHEg1nZXRSYW5kb21OYW1lGhIKAUgSDWphY2twb3RSYW5kb20aDwoBSRIKdHlwZVJhbmRvbRoQCgFKEgtjb2xvclJhbmRvbRoKCgFLEgVjb2xvchoaCgFMEhVjb3VudEVnZ3NOZWVkZWRBbW91bnQaFQoBTRIQdG90YWxEdWNrc0Ftb3VudBoGCgFOEgFuGgYKAU8SAWcaBgoBUBIBdBoKCgFREgVwcmljZRoGCgFSEgFpGhMKAVMSDnJlZmVyZXJBZGRyZXNzGg8KAVQSCmVnZ3NOZWVkZWQaEQoBVRIMZmlyc3RQYXltZW50GhIKAVYSDXJlZmVyZXJSZXdhcmQaDAoBVxIHcmVmQ2FsbBoMCgFYEgd0eElkU3RyGhYKAVkSEWhhdGNoaW5nU3RhdHVzS2V5GhQKAVoSD2ZpbmlzaEhlaWdodEtleRoQCgFhEgtlZ2dzQXNzZXRJZBoPCgJhYRIJZHVja0lkS2V5GhYKAmFiEhBoYXRjaGluZ1R4U3RhdHVzGgwKAmFjEgZkdWNrSWQaEQoCYWQSCyR0MDUxMDI1MTY4Gg0KAmFlEgdkdWNrR2VuGg0KAmFmEgdmYXJtR2VuGhEKAmFnEgtkZXNjcmlwdGlvbhoLCgJhaBIFYXNzZXQaDQoCYWkSB2Fzc2V0SWQaDAoCYWoSBmFtb3VudBoRCgJhaxILJHQwNjM3OTY0NjQaEQoCYWwSCyR0MDc5MTc3OTY5GgoKAmFtEgRmR2VuGgwKAmFuEgZsZXR0ZXIaCAoCYW8SAnR4GgwKAmFwEgZ2ZXJpZnkaFQoBYhIQZGVsYXlGb3JIYXRjaGluZxoYCgFjEhNkaXNjb3VudENvZWZmaWNpZW50GhAKAWQSC3R5cGVzQW1vdW50GhcKAWUSEnJlZkNvbnRyYWN0QWRkcmVzcxoSCgFmEg1SZWZlcmVyUmV3YXJkGhQKAWcSD0hhdGNoaW5nU3RhcnRlZBoVCgFoEhBIYXRj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", "height": 2898064, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GEfBWBEfpLmM7qifeDpN81TD8cQ86YfXMTVU5Abyk1hE Next: 8podFwfqU7uroQxDVeMqeYf8CYpXXExwZnQtWTzdd33w Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+let eggsAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
55
6-let delayForHatching = 0
6+let delayForHatching = 2
77
88 let discountCoefficient = 10
99
10-let typesAmount = 9
10+let typesAmount = 7
1111
12-let refContractAddress = base58'3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX'
12+let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe'
1313
1414 let RefererReward = 5
1515
1717
1818 let HatchingFinished = "HATCHING_FINISHED"
1919
20-let rebirthAddress = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba'
20+let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ'
21+
22+let babyDucksAddress = base58'3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX'
2123
2224 func isLocked () = {
2325 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
137139 else if ((hatchingFinishHeight > height))
138140 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
139141 else {
140- let $t050305096 = getRandomName(txId, hatchingFinishHeight)
141- let duckGen = $t050305096._1
142- let farmGen = $t050305096._2
142+ let $t051025168 = getRandomName(txId, hatchingFinishHeight)
143+ let duckGen = $t051025168._1
144+ let farmGen = $t051025168._2
143145 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
144146 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
145147 let assetId = calculateAssetId(asset)
151153
152154
153155 @Callable(i)
154-func issueFreeDuck (address,txIdStr) = if ((i.caller != Address(rebirthAddress)))
155- then throw("rebirth only")
156+func issueFreeDuck (address,txIdStr) = if (if ((i.caller != Address(rebirthAddress)))
157+ then (i.caller != Address(babyDucksAddress))
158+ else false)
159+ then throw("rebirth or baby ducks only")
156160 else {
157161 let txId = fromBase58String(txIdStr)
158162 let hatchingStatusKey = getHatchingStatusKey(address, txId)
159163 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
160164 let totalDucksAmount = tryGetInteger("ducks_amount")
161165 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
162- let $t062526337 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
163- let duckGen = $t062526337._1
164- let farmGen = $t062526337._2
166+ let $t063796464 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
167+ let duckGen = $t063796464._1
168+ let farmGen = $t063796464._2
165169 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
166170 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
167171 let assetId = calculateAssetId(asset)
183187 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
184188 let totalDucksAmount = tryGetInteger("ducks_amount")
185189 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
186- let $t077907842 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
187- let duckGen = $t077907842._1
188- let farmGen = $t077907842._2
190+ let $t079177969 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
191+ let duckGen = $t079177969._1
192+ let farmGen = $t079177969._2
189193 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
190194 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
191195 let assetId = calculateAssetId(asset)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let eggsAssetId = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
4+let eggsAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF'
55
6-let delayForHatching = 0
6+let delayForHatching = 2
77
88 let discountCoefficient = 10
99
10-let typesAmount = 9
10+let typesAmount = 7
1111
12-let refContractAddress = base58'3PGZyyPg7Mx91yaNT8k3MWxSQzuzusMUyzX'
12+let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe'
1313
1414 let RefererReward = 5
1515
1616 let HatchingStarted = "HATCHING_STARTED"
1717
1818 let HatchingFinished = "HATCHING_FINISHED"
1919
20-let rebirthAddress = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba'
20+let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ'
21+
22+let babyDucksAddress = base58'3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX'
2123
2224 func isLocked () = {
2325 let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU')
2426 match getInteger(masterAddress, "egglock") {
2527 case b: Int =>
2628 b
2729 case _ =>
2830 0
2931 }
3032 }
3133
3234
3335 func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status")
3436
3537
3638 func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh")
3739
3840
3941 func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di")
4042
4143
4244 func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount")
4345
4446
4547 func tryGetInteger (key) = {
4648 let val = match getInteger(this, key) {
4749 case b: Int =>
4850 b
4951 case _ =>
5052 0
5153 }
5254 val
5355 }
5456
5557
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)
6870 if (if ((jackpotRandom == 111))
6971 then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0)
7072 else false)
7173 then $Tuple2("DUCK-WWWWWWWM-JU", "8W-J")
7274 else {
7375 let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0)
7476 let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1)
7577 let color = if ((colorRandom == 0))
7678 then "Y"
7779 else if ((colorRandom == 1))
7880 then "G"
7981 else if ((colorRandom == 2))
8082 then "B"
8183 else "R"
8284 if ((typeRandom == 0))
8385 then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G")
8486 else if ((typeRandom == 1))
8587 then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G")
8688 else if ((typeRandom == 2))
8789 then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G")
8890 else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G")
8991 }
9092 }
9193
9294
9395 func countEggsNeededAmount (totalDucksAmount) = {
9496 let n = totalDucksAmount
9597 let g = discountCoefficient
9698 let t = typesAmount
9799 let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN)
98100 (price * 1000000)
99101 }
100102
101103
102104 @Callable(i)
103105 func startDuckHatching (refererAddress) = if ((isLocked() > 0))
104106 then throw("EGG operations are temporarily locked")
105107 else {
106108 let totalDucksAmount = tryGetInteger("ducks_amount")
107109 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
108110 let firstPayment = value(i.payments[0])
109111 if ((firstPayment.assetId != eggsAssetId))
110112 then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId)))
111113 else if ((eggsNeeded > firstPayment.amount))
112114 then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded)))
113115 else {
114116 let refererReward = fraction(eggsNeeded, RefererReward, 100)
115117 let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)])
116118 if ((refCall == refCall))
117119 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)]
118120 else throw("Strict value is not equal to itself.")
119121 }
120122 }
121123
122124
123125
124126 @Callable(i)
125127 func finishDuckHatching (txIdStr) = {
126128 let txId = fromBase58String(txIdStr)
127129 let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId)
128130 let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId)
129131 let duckIdKey = getDuckIdKey(toString(i.caller), txId)
130132 let hatchingTxStatus = getStringValue(this, hatchingStatusKey)
131133 let hatchingFinishHeight = getIntegerValue(this, finishHeightKey)
132134 if ((hatchingTxStatus == HatchingFinished))
133135 then {
134136 let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId))
135137 throw(("The duck was hatched and claimed already, here is the folowing: " + duckId))
136138 }
137139 else if ((hatchingFinishHeight > height))
138140 then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes"))
139141 else {
140- let $t050305096 = getRandomName(txId, hatchingFinishHeight)
141- let duckGen = $t050305096._1
142- let farmGen = $t050305096._2
142+ let $t051025168 = getRandomName(txId, hatchingFinishHeight)
143+ let duckGen = $t051025168._1
144+ let farmGen = $t051025168._2
143145 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
144146 let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight)
145147 let assetId = calculateAssetId(asset)
146148 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
147149 [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)]
148150 }
149151 }
150152
151153
152154
153155 @Callable(i)
154-func issueFreeDuck (address,txIdStr) = if ((i.caller != Address(rebirthAddress)))
155- then throw("rebirth only")
156+func issueFreeDuck (address,txIdStr) = if (if ((i.caller != Address(rebirthAddress)))
157+ then (i.caller != Address(babyDucksAddress))
158+ else false)
159+ then throw("rebirth or baby ducks only")
156160 else {
157161 let txId = fromBase58String(txIdStr)
158162 let hatchingStatusKey = getHatchingStatusKey(address, txId)
159163 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
160164 let totalDucksAmount = tryGetInteger("ducks_amount")
161165 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
162- let $t062526337 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
163- let duckGen = $t062526337._1
164- let farmGen = $t062526337._2
166+ let $t063796464 = getRandomName(txId, (value(transactionHeightById(txId)) + 1))
167+ let duckGen = $t063796464._1
168+ let farmGen = $t063796464._2
165169 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
166170 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
167171 let assetId = calculateAssetId(asset)
168172 let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1)
169173 let duckIdKey = getDuckIdKey(address, txId)
170174 $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))
171175 }
172176
173177
174178
175179 @Callable(i)
176180 func issueJackpot (address,txIdStr,gen) = if (if ((i.caller != Address(rebirthAddress)))
177181 then (i.caller != this)
178182 else false)
179183 then throw("admin or rebirth only")
180184 else {
181185 let txId = fromBase58String(txIdStr)
182186 let hatchingStatusKey = getHatchingStatusKey(address, txId)
183187 let finishHeightKey = getHatchingFinishHeightKey(address, txId)
184188 let totalDucksAmount = tryGetInteger("ducks_amount")
185189 let eggsNeeded = countEggsNeededAmount(totalDucksAmount)
186- let $t077907842 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
187- let duckGen = $t077907842._1
188- let farmGen = $t077907842._2
190+ let $t079177969 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J")
191+ let duckGen = $t079177969._1
192+ let farmGen = $t079177969._2
189193 let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}")
190194 let asset = Issue(duckGen, description, 1, 0, false, unit, height)
191195 let assetId = calculateAssetId(asset)
192196 let duckIdKey = getDuckIdKey(address, txId)
193197 $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))
194198 }
195199
196200
197201
198202 @Callable(i)
199203 func reduceRarity (assetId,fGen) = {
200204 let asset = fromBase58String(assetId)
201205 if (if ((i.caller != Address(rebirthAddress)))
202206 then (i.caller != this)
203207 else false)
204208 then throw("admin or rebirth only")
205209 else {
206210 let duckGen = value(assetInfo(asset)).name
207211 let letter = takeRight(take(duckGen, 6), 1)
208212 let farmGen = (("8" + letter) + "-G")
209213 [IntegerEntry(getDuckStatsKey(duckGen), (tryGetInteger(getDuckStatsKey(duckGen)) - 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) - 1))]
210214 }
211215 }
212216
213217
214218 @Verifier(tx)
215219 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
216220

github/deemru/w8io/6500d08 
52.07 ms