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:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let eggsAssetId = base58' | |
4 | + | let eggsAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF' | |
5 | 5 | ||
6 | - | let delayForHatching = | |
6 | + | let delayForHatching = 2 | |
7 | 7 | ||
8 | 8 | let discountCoefficient = 10 | |
9 | 9 | ||
10 | - | let typesAmount = | |
10 | + | let typesAmount = 7 | |
11 | 11 | ||
12 | - | let refContractAddress = base58' | |
12 | + | let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe' | |
13 | 13 | ||
14 | 14 | let RefererReward = 5 | |
15 | 15 | ||
17 | 17 | ||
18 | 18 | let HatchingFinished = "HATCHING_FINISHED" | |
19 | 19 | ||
20 | - | let rebirthAddress = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba' | |
20 | + | let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ' | |
21 | + | ||
22 | + | let babyDucksAddress = base58'3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX' | |
21 | 23 | ||
22 | 24 | func isLocked () = { | |
23 | 25 | let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
137 | 139 | else if ((hatchingFinishHeight > height)) | |
138 | 140 | then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes")) | |
139 | 141 | else { | |
140 | - | let $ | |
141 | - | let duckGen = $ | |
142 | - | let farmGen = $ | |
142 | + | let $t051025168 = getRandomName(txId, hatchingFinishHeight) | |
143 | + | let duckGen = $t051025168._1 | |
144 | + | let farmGen = $t051025168._2 | |
143 | 145 | let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}") | |
144 | 146 | let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight) | |
145 | 147 | let assetId = calculateAssetId(asset) | |
151 | 153 | ||
152 | 154 | ||
153 | 155 | @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") | |
156 | 160 | else { | |
157 | 161 | let txId = fromBase58String(txIdStr) | |
158 | 162 | let hatchingStatusKey = getHatchingStatusKey(address, txId) | |
159 | 163 | let finishHeightKey = getHatchingFinishHeightKey(address, txId) | |
160 | 164 | let totalDucksAmount = tryGetInteger("ducks_amount") | |
161 | 165 | let eggsNeeded = countEggsNeededAmount(totalDucksAmount) | |
162 | - | let $ | |
163 | - | let duckGen = $ | |
164 | - | let farmGen = $ | |
166 | + | let $t063796464 = getRandomName(txId, (value(transactionHeightById(txId)) + 1)) | |
167 | + | let duckGen = $t063796464._1 | |
168 | + | let farmGen = $t063796464._2 | |
165 | 169 | let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}") | |
166 | 170 | let asset = Issue(duckGen, description, 1, 0, false, unit, height) | |
167 | 171 | let assetId = calculateAssetId(asset) | |
183 | 187 | let finishHeightKey = getHatchingFinishHeightKey(address, txId) | |
184 | 188 | let totalDucksAmount = tryGetInteger("ducks_amount") | |
185 | 189 | let eggsNeeded = countEggsNeededAmount(totalDucksAmount) | |
186 | - | let $ | |
187 | - | let duckGen = $ | |
188 | - | let farmGen = $ | |
190 | + | let $t079177969 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J") | |
191 | + | let duckGen = $t079177969._1 | |
192 | + | let farmGen = $t079177969._2 | |
189 | 193 | let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}") | |
190 | 194 | let asset = Issue(duckGen, description, 1, 0, false, unit, height) | |
191 | 195 | let assetId = calculateAssetId(asset) |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let eggsAssetId = base58' | |
4 | + | let eggsAssetId = base58'JCGDtrVy64cCJ1wCKfCaiNQMnyYwii71TbE5QeAHfxgF' | |
5 | 5 | ||
6 | - | let delayForHatching = | |
6 | + | let delayForHatching = 2 | |
7 | 7 | ||
8 | 8 | let discountCoefficient = 10 | |
9 | 9 | ||
10 | - | let typesAmount = | |
10 | + | let typesAmount = 7 | |
11 | 11 | ||
12 | - | let refContractAddress = base58' | |
12 | + | let refContractAddress = base58'3P8ejTkfRpz9WqCwCuihesNXU5k3zmFFfVe' | |
13 | 13 | ||
14 | 14 | let RefererReward = 5 | |
15 | 15 | ||
16 | 16 | let HatchingStarted = "HATCHING_STARTED" | |
17 | 17 | ||
18 | 18 | let HatchingFinished = "HATCHING_FINISHED" | |
19 | 19 | ||
20 | - | let rebirthAddress = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba' | |
20 | + | let rebirthAddress = base58'3PCC6fVHNa6289DTDmcUo3RuLaFmteZZsmQ' | |
21 | + | ||
22 | + | let babyDucksAddress = base58'3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX' | |
21 | 23 | ||
22 | 24 | func isLocked () = { | |
23 | 25 | let masterAddress = Address(base58'3PEPftf2kWZDmAaWBjs6BUJa9957kiA2PkU') | |
24 | 26 | match getInteger(masterAddress, "egglock") { | |
25 | 27 | case b: Int => | |
26 | 28 | b | |
27 | 29 | case _ => | |
28 | 30 | 0 | |
29 | 31 | } | |
30 | 32 | } | |
31 | 33 | ||
32 | 34 | ||
33 | 35 | func getHatchingStatusKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_status") | |
34 | 36 | ||
35 | 37 | ||
36 | 38 | func getHatchingFinishHeightKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_fh") | |
37 | 39 | ||
38 | 40 | ||
39 | 41 | func getDuckIdKey (address,txId) = (((address + "_") + toBase58String(txId)) + "_di") | |
40 | 42 | ||
41 | 43 | ||
42 | 44 | func getDuckStatsKey (genString) = (("stats_" + genString) + "_amount") | |
43 | 45 | ||
44 | 46 | ||
45 | 47 | func tryGetInteger (key) = { | |
46 | 48 | let val = match getInteger(this, key) { | |
47 | 49 | case b: Int => | |
48 | 50 | b | |
49 | 51 | case _ => | |
50 | 52 | 0 | |
51 | 53 | } | |
52 | 54 | val | |
53 | 55 | } | |
54 | 56 | ||
55 | 57 | ||
56 | 58 | func getRandomNumber (variants,txId,hatchingFinishHeight,offset) = { | |
57 | 59 | let randomSeedBlock = value(blockInfoByHeight((hatchingFinishHeight - 1))) | |
58 | 60 | let randomHash = sha256((txId + value(randomSeedBlock.vrf))) | |
59 | 61 | (toInt(randomHash, (offset * 8)) % variants) | |
60 | 62 | } | |
61 | 63 | ||
62 | 64 | ||
63 | 65 | func wasUniqueBorn (gen) = tryGetInteger(getDuckStatsKey(gen)) | |
64 | 66 | ||
65 | 67 | ||
66 | 68 | func getRandomName (txId,hatchingFinishHeight) = { | |
67 | 69 | let jackpotRandom = getRandomNumber(500, txId, hatchingFinishHeight, 0) | |
68 | 70 | if (if ((jackpotRandom == 111)) | |
69 | 71 | then (wasUniqueBorn("DUCK-WWWWWWWM-JU") == 0) | |
70 | 72 | else false) | |
71 | 73 | then $Tuple2("DUCK-WWWWWWWM-JU", "8W-J") | |
72 | 74 | else { | |
73 | 75 | let typeRandom = getRandomNumber(4, txId, hatchingFinishHeight, 0) | |
74 | 76 | let colorRandom = getRandomNumber(4, txId, hatchingFinishHeight, 1) | |
75 | 77 | let color = if ((colorRandom == 0)) | |
76 | 78 | then "Y" | |
77 | 79 | else if ((colorRandom == 1)) | |
78 | 80 | then "G" | |
79 | 81 | else if ((colorRandom == 2)) | |
80 | 82 | then "B" | |
81 | 83 | else "R" | |
82 | 84 | if ((typeRandom == 0)) | |
83 | 85 | then $Tuple2(("DUCK-FFFFFFFF-G" + color), "8F-G") | |
84 | 86 | else if ((typeRandom == 1)) | |
85 | 87 | then $Tuple2(("DUCK-HHHHHHHH-G" + color), "8H-G") | |
86 | 88 | else if ((typeRandom == 2)) | |
87 | 89 | then $Tuple2(("DUCK-GGGGGGGG-G" + color), "8G-G") | |
88 | 90 | else $Tuple2(("DUCK-IIIIIIII-G" + color), "8I-G") | |
89 | 91 | } | |
90 | 92 | } | |
91 | 93 | ||
92 | 94 | ||
93 | 95 | func countEggsNeededAmount (totalDucksAmount) = { | |
94 | 96 | let n = totalDucksAmount | |
95 | 97 | let g = discountCoefficient | |
96 | 98 | let t = typesAmount | |
97 | 99 | let price = pow((100 + ((n * g) / (10 * t))), 2, 5, 1, 2, DOWN) | |
98 | 100 | (price * 1000000) | |
99 | 101 | } | |
100 | 102 | ||
101 | 103 | ||
102 | 104 | @Callable(i) | |
103 | 105 | func startDuckHatching (refererAddress) = if ((isLocked() > 0)) | |
104 | 106 | then throw("EGG operations are temporarily locked") | |
105 | 107 | else { | |
106 | 108 | let totalDucksAmount = tryGetInteger("ducks_amount") | |
107 | 109 | let eggsNeeded = countEggsNeededAmount(totalDucksAmount) | |
108 | 110 | let firstPayment = value(i.payments[0]) | |
109 | 111 | if ((firstPayment.assetId != eggsAssetId)) | |
110 | 112 | then throw(("You can attach only EGG tokens with the following asset id: " + toBase58String(eggsAssetId))) | |
111 | 113 | else if ((eggsNeeded > firstPayment.amount)) | |
112 | 114 | then throw(("To hatch a duck you currently need the following amount of EGGlets: " + toString(eggsNeeded))) | |
113 | 115 | else { | |
114 | 116 | let refererReward = fraction(eggsNeeded, RefererReward, 100) | |
115 | 117 | let refCall = invoke(Address(refContractAddress), "refPayment", [refererAddress], [AttachedPayment(eggsAssetId, refererReward)]) | |
116 | 118 | if ((refCall == refCall)) | |
117 | 119 | 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)] | |
118 | 120 | else throw("Strict value is not equal to itself.") | |
119 | 121 | } | |
120 | 122 | } | |
121 | 123 | ||
122 | 124 | ||
123 | 125 | ||
124 | 126 | @Callable(i) | |
125 | 127 | func finishDuckHatching (txIdStr) = { | |
126 | 128 | let txId = fromBase58String(txIdStr) | |
127 | 129 | let hatchingStatusKey = getHatchingStatusKey(toString(i.caller), txId) | |
128 | 130 | let finishHeightKey = getHatchingFinishHeightKey(toString(i.caller), txId) | |
129 | 131 | let duckIdKey = getDuckIdKey(toString(i.caller), txId) | |
130 | 132 | let hatchingTxStatus = getStringValue(this, hatchingStatusKey) | |
131 | 133 | let hatchingFinishHeight = getIntegerValue(this, finishHeightKey) | |
132 | 134 | if ((hatchingTxStatus == HatchingFinished)) | |
133 | 135 | then { | |
134 | 136 | let duckId = getStringValue(this, getDuckIdKey(toString(i.caller), txId)) | |
135 | 137 | throw(("The duck was hatched and claimed already, here is the folowing: " + duckId)) | |
136 | 138 | } | |
137 | 139 | else if ((hatchingFinishHeight > height)) | |
138 | 140 | then throw((((("Hatching is not finished yet " + toString((hatchingFinishHeight - height))) + " blocks remaining, it will take around ") + toString((hatchingFinishHeight - height))) + " minutes")) | |
139 | 141 | else { | |
140 | - | let $ | |
141 | - | let duckGen = $ | |
142 | - | let farmGen = $ | |
142 | + | let $t051025168 = getRandomName(txId, hatchingFinishHeight) | |
143 | + | let duckGen = $t051025168._1 | |
144 | + | let farmGen = $t051025168._2 | |
143 | 145 | let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}") | |
144 | 146 | let asset = Issue(duckGen, description, 1, 0, false, unit, hatchingFinishHeight) | |
145 | 147 | let assetId = calculateAssetId(asset) | |
146 | 148 | let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1) | |
147 | 149 | [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)] | |
148 | 150 | } | |
149 | 151 | } | |
150 | 152 | ||
151 | 153 | ||
152 | 154 | ||
153 | 155 | @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") | |
156 | 160 | else { | |
157 | 161 | let txId = fromBase58String(txIdStr) | |
158 | 162 | let hatchingStatusKey = getHatchingStatusKey(address, txId) | |
159 | 163 | let finishHeightKey = getHatchingFinishHeightKey(address, txId) | |
160 | 164 | let totalDucksAmount = tryGetInteger("ducks_amount") | |
161 | 165 | let eggsNeeded = countEggsNeededAmount(totalDucksAmount) | |
162 | - | let $ | |
163 | - | let duckGen = $ | |
164 | - | let farmGen = $ | |
166 | + | let $t063796464 = getRandomName(txId, (value(transactionHeightById(txId)) + 1)) | |
167 | + | let duckGen = $t063796464._1 | |
168 | + | let farmGen = $t063796464._2 | |
165 | 169 | let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}") | |
166 | 170 | let asset = Issue(duckGen, description, 1, 0, false, unit, height) | |
167 | 171 | let assetId = calculateAssetId(asset) | |
168 | 172 | let amount = (tryGetInteger(getDuckStatsKey(duckGen)) + 1) | |
169 | 173 | let duckIdKey = getDuckIdKey(address, txId) | |
170 | 174 | $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)) | |
171 | 175 | } | |
172 | 176 | ||
173 | 177 | ||
174 | 178 | ||
175 | 179 | @Callable(i) | |
176 | 180 | func issueJackpot (address,txIdStr,gen) = if (if ((i.caller != Address(rebirthAddress))) | |
177 | 181 | then (i.caller != this) | |
178 | 182 | else false) | |
179 | 183 | then throw("admin or rebirth only") | |
180 | 184 | else { | |
181 | 185 | let txId = fromBase58String(txIdStr) | |
182 | 186 | let hatchingStatusKey = getHatchingStatusKey(address, txId) | |
183 | 187 | let finishHeightKey = getHatchingFinishHeightKey(address, txId) | |
184 | 188 | let totalDucksAmount = tryGetInteger("ducks_amount") | |
185 | 189 | let eggsNeeded = countEggsNeededAmount(totalDucksAmount) | |
186 | - | let $ | |
187 | - | let duckGen = $ | |
188 | - | let farmGen = $ | |
190 | + | let $t079177969 = $Tuple2((("DUCK-" + gen) + "-JU"), "8W-J") | |
191 | + | let duckGen = $t079177969._1 | |
192 | + | let farmGen = $t079177969._2 | |
189 | 193 | let description = (("{\"genotype\": \"" + duckGen) + "\", \"crossbreeding\": true}") | |
190 | 194 | let asset = Issue(duckGen, description, 1, 0, false, unit, height) | |
191 | 195 | let assetId = calculateAssetId(asset) | |
192 | 196 | let duckIdKey = getDuckIdKey(address, txId) | |
193 | 197 | $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)) | |
194 | 198 | } | |
195 | 199 | ||
196 | 200 | ||
197 | 201 | ||
198 | 202 | @Callable(i) | |
199 | 203 | func reduceRarity (assetId,fGen) = { | |
200 | 204 | let asset = fromBase58String(assetId) | |
201 | 205 | if (if ((i.caller != Address(rebirthAddress))) | |
202 | 206 | then (i.caller != this) | |
203 | 207 | else false) | |
204 | 208 | then throw("admin or rebirth only") | |
205 | 209 | else { | |
206 | 210 | let duckGen = value(assetInfo(asset)).name | |
207 | 211 | let letter = takeRight(take(duckGen, 6), 1) | |
208 | 212 | let farmGen = (("8" + letter) + "-G") | |
209 | 213 | [IntegerEntry(getDuckStatsKey(duckGen), (tryGetInteger(getDuckStatsKey(duckGen)) - 1)), IntegerEntry((("stats_" + farmGen) + "_quantity"), (tryGetInteger((("stats_" + farmGen) + "_quantity")) - 1))] | |
210 | 214 | } | |
211 | 215 | } | |
212 | 216 | ||
213 | 217 | ||
214 | 218 | @Verifier(tx) | |
215 | 219 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
216 | 220 |
github/deemru/w8io/6500d08 52.07 ms ◑