tx · 9NvQUNr7JXtcjJ8YMXtG1TPK9JiJgq6YhLnmbEj5fKna

3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX:  -0.01400000 Waves

2021.11.06 01:24 [2843313] smart account 3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX > SELF 0.00000000 Waves

{ "type": 13, "id": "9NvQUNr7JXtcjJ8YMXtG1TPK9JiJgq6YhLnmbEj5fKna", "fee": 1400000, "feeAssetId": null, "timestamp": 1636151114699, "version": 2, "chainId": 87, "sender": "3PKwLVb8jYk58oYbfXxs2dUjD3YEKeqGWrX", "senderPublicKey": "27DK15MykfnsVojpifD1gbr8kRr8rpY5mw6EH4zL8R25", "proofs": [ "5ix7jSayCCQ1jAzumidrCchpHcd5j59UsHvRfaygVyEqc7LEtPc4NLJj63rUAaejuGP3AH7f7dVUipWddyUs59Kx" ], "script": "base64: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BGxhcHMEAAAACmludFJld2FyZHMJAQAAABNzdHJpbmdMaXN0VG9JbnRMaXN0AAAAAQUAAAAHcmV3YXJkcwQAAAANbWF4RmVlZEFtb3VudAkBAAAAEGdldE1heEZlZWRBbW91bnQAAAADBQAAAAdpbnRMYXBzBQAAAAppbnRSZXdhcmRzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPa0R1Y2tsaW5nRmVkTGFwCQEAAAARa2V5RHVja2xpbmdGZWRMYXAAAAABBQAAAA5yZWFsRHVja2xpbmdJZAQAAAAKbGFzdEZlZExhcAkBAAAADXRyeUdldEludGVnZXIAAAABBQAAAA9rRHVja2xpbmdGZWRMYXAEAAAADmN1cnJlbnRQYXltZW50CAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQEAAAACWtOZXdMZXZlbAkBAAAAEGtleUR1Y2tsaW5nTGV2ZWwAAAABBQAAAA5yZWFsRHVja2xpbmdJZAQAAAAKa1RvdGFsRmVlZAkBAAAADGtleVRvdGFsRmVlZAAAAAEFAAAADnJlYWxEdWNrbGluZ0lkBAAAAAl0b3RhbEZlZWQJAQAAAA10cnlHZXRJbnRlZ2VyAAAAAQUAAAAKa1RvdGFsRmVlZAQAAAALZmVlZFR4U3RhdHMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWR1Y2tsaW5nXwUAAAAOcmVhbER1Y2tsaW5nSWQCAAAABl9zdGF0XwkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAMJAABmAAAAAgUAAAAOY3VycmVudFBheW1lbnQFAAAADW1heEZlZWRBbW91bnQJAAACAAAAAQkAASwAAAACAgAAADpDYW5ub3QgZmVlZCBkdWNrbGluZyBmb3Igc3VjaCBhbW91bnQsIG1heCBmZWVkIGFtb3VudCBpczogCQABpAAAAAEFAAAADW1heEZlZWRBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tEdWNrbGluZ0ZlZExhcAkBAAAADWdldEN1cnJlbnRMYXAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkA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", "height": 2843313, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H57GaSdSYQtgn64xyBhhs2oJDQzACib3h3sMaYLRJkr7 Next: 2JxanPcVehFRgfXpuZhXaUzNsPBR78MHyHRknBN9NtLL Diff:
OldNewDifferences
7171 let kFedLap = keyDucklingFedLap(ducklingId)
7272 let lastFedLapNumber = tryGetInteger(kFedLap)
7373 let currentlap = getCurrentLap()
74- let penalty = if ((lastFedLapNumber == 0))
74+ let lapFedDiff = (currentlap - (lastFedLapNumber - 1))
75+ let penalty = if (if ((lastFedLapNumber == 0))
76+ then true
77+ else (4 >= lapFedDiff))
7578 then toBigInt(0)
76- else (toBigInt((((currentlap - lastFedLapNumber) - 1) / 4)) * toBigInt(existingDuckPrecision))
79+ else (toBigInt((lapFedDiff / 4)) * toBigInt(existingDuckPrecision))
7780 let growth = fraction(toBigInt(paymentAmount), toBigInt(percentGrowthPrecision), toBigInt(DUCKLINGPRICE))
7881 if ((true == true))
7982 then throw(((((((((("Current: " + toString(getCurrentLevelBigInt(ducklingId))) + " Pen: ") + toString(penalty)) + ", growth: ") + toString(growth)) + ", currentlap: ") + toString(currentlap)) + " lastFedLapNumber: ") + toString(lastFedLapNumber)))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let rebirthAddress = base58'3PKL9tfUmNciXvbSA3zpXr6PnDNnhn936ba'
55
66 let backendPubKey = base58'BnKJTqkWD69SotKhJXdKu76NRtkdQJEpThqGGeFwF9EL'
77
88 let STARTTIMESTAMP = 1632474000000
99
1010 let LAPLENGTH = 21600000
1111
1212 let EGGASSETID = base58'3v7zGkeHS6KrsvmTRzEzvCxm5cdzkCtM7z5cM6efcjCB'
1313
1414 let DUCKLINGPRICE = 80000000
1515
1616 let percentGrowthPrecision = 10000000000000000
1717
1818 let existingDuckPrecision = 100000000000000
1919
2020 func keyTotalFeed (ducklingId) = (("duckling_" + ducklingId) + "_feed")
2121
2222
2323 func keyDucklingFedLap (ducklingId) = (("duckling_" + ducklingId) + "_fedLap")
2424
2525
2626 func keyDucklingLevel (ducklingId) = (("duckling_" + ducklingId) + "_level")
2727
2828
2929 func keyFeedForLap (address,lap) = (((("address_" + address) + "_lap_") + toString(lap)) + "_feed")
3030
3131
3232 func tryGetInteger (key) = {
3333 let val = match getInteger(this, key) {
3434 case b: Int =>
3535 b
3636 case _ =>
3737 0
3838 }
3939 val
4040 }
4141
4242
4343 func getBool (key) = match getBoolean(this, key) {
4444 case b: Boolean =>
4545 b
4646 case _ =>
4747 unit
4848 }
4949
5050
5151 func getCurrentLevelBigInt (ducklingId) = {
5252 let kDuckLevel = keyDucklingLevel(ducklingId)
5353 match getString(kDuckLevel) {
5454 case s: String =>
5555 parseBigIntValue(s)
5656 case _ =>
5757 match getBoolean((("duckling_" + ducklingId) + "_issuedByFeedCall")) {
5858 case b: Boolean =>
5959 toBigInt(0)
6060 case _ =>
6161 toBigInt((20 * existingDuckPrecision))
6262 }
6363 }
6464 }
6565
6666
6767 func getCurrentLap () = (((lastBlock.timestamp - STARTTIMESTAMP) / LAPLENGTH) + 1)
6868
6969
7070 func calculateNewDucklingLevel (ducklingId,paymentAmount) = {
7171 let kFedLap = keyDucklingFedLap(ducklingId)
7272 let lastFedLapNumber = tryGetInteger(kFedLap)
7373 let currentlap = getCurrentLap()
74- let penalty = if ((lastFedLapNumber == 0))
74+ let lapFedDiff = (currentlap - (lastFedLapNumber - 1))
75+ let penalty = if (if ((lastFedLapNumber == 0))
76+ then true
77+ else (4 >= lapFedDiff))
7578 then toBigInt(0)
76- else (toBigInt((((currentlap - lastFedLapNumber) - 1) / 4)) * toBigInt(existingDuckPrecision))
79+ else (toBigInt((lapFedDiff / 4)) * toBigInt(existingDuckPrecision))
7780 let growth = fraction(toBigInt(paymentAmount), toBigInt(percentGrowthPrecision), toBigInt(DUCKLINGPRICE))
7881 if ((true == true))
7982 then throw(((((((((("Current: " + toString(getCurrentLevelBigInt(ducklingId))) + " Pen: ") + toString(penalty)) + ", growth: ") + toString(growth)) + ", currentlap: ") + toString(currentlap)) + " lastFedLapNumber: ") + toString(lastFedLapNumber)))
8083 else {
8184 let newLevel = ((getCurrentLevelBigInt(ducklingId) - penalty) + growth)
8285 if ((toBigInt(0) > newLevel))
8386 then toString(growth)
8487 else toString(newLevel)
8588 }
8689 }
8790
8891
8992 func getFeedByLap (address,lap) = {
9093 let kFeedForLap = keyFeedForLap(address, lap)
9194 tryGetInteger(kFeedForLap)
9295 }
9396
9497
9598 func stringListToIntList (list) = {
9699 func parser (acc,val) = (acc ++ [value(parseInt(val))])
97100
98101 let $l = list
99102 let $s = size($l)
100103 let $acc0 = nil
101104 func 1 ($a,$i) = if (($i >= $s))
102105 then $a
103106 else parser($a, $l[$i])
104107
105108 func 2 ($a,$i) = if (($i >= $s))
106109 then $a
107110 else throw("List size exceeds 10")
108111
109112 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
110113 }
111114
112115
113116 func getMaxFeedAmount (laps,rewards,address) = {
114117 let currentLap = getCurrentLap()
115118 if (if (if (if ((laps[3] != (currentLap - 1)))
116119 then true
117120 else (laps[2] != (currentLap - 2)))
118121 then true
119122 else (laps[1] != (currentLap - 3)))
120123 then true
121124 else (laps[0] != (currentLap - 4)))
122125 then throw("Outdated data for laps")
123126 else {
124127 func getFeedForLap (acc,lap) = (acc :+ getFeedByLap(address, lap))
125128
126129 func sum (acc,reward) = (acc + reward)
127130
128131 let feedLastLaps = {
129132 let $l = laps
130133 let $s = size($l)
131134 let $acc0 = nil
132135 func 1 ($a,$i) = if (($i >= $s))
133136 then $a
134137 else getFeedForLap($a, $l[$i])
135138
136139 func 2 ($a,$i) = if (($i >= $s))
137140 then $a
138141 else throw("List size exceeds 4")
139142
140143 2(1(1(1(1($acc0, 0), 1), 2), 3), 4)
141144 }
142145 let maxFeed = max(feedLastLaps)
143146 let totalReward = {
144147 let $l = rewards
145148 let $s = size($l)
146149 let $acc0 = 0
147150 func 1 ($a,$i) = if (($i >= $s))
148151 then $a
149152 else sum($a, $l[$i])
150153
151154 func 2 ($a,$i) = if (($i >= $s))
152155 then $a
153156 else throw("List size exceeds 4")
154157
155158 2(1(1(1(1($acc0, 0), 1), 2), 3), 4)
156159 }
157160 (totalReward - maxFeed)
158161 }
159162 }
160163
161164
162165 func getBackendProof (laps,rewards,address) = {
163166 func IntListToByteVector (acc,item) = (acc + item)
164167
165168 let lapsStringPart = {
166169 let $l = laps
167170 let $s = size($l)
168171 let $acc0 = ""
169172 func 1 ($a,$i) = if (($i >= $s))
170173 then $a
171174 else IntListToByteVector($a, $l[$i])
172175
173176 func 2 ($a,$i) = if (($i >= $s))
174177 then $a
175178 else throw("List size exceeds 10")
176179
177180 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
178181 }
179182 let rewardsStringPart = {
180183 let $l = rewards
181184 let $s = size($l)
182185 let $acc0 = ""
183186 func 1 ($a,$i) = if (($i >= $s))
184187 then $a
185188 else IntListToByteVector($a, $l[$i])
186189
187190 func 2 ($a,$i) = if (($i >= $s))
188191 then $a
189192 else throw("List size exceeds 10")
190193
191194 2(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
192195 }
193196 ((lapsStringPart + rewardsStringPart) + address)
194197 }
195198
196199
197200 @Callable(i)
198201 func issueFreeDuckling (address,txIdStr) = {
199202 let asset = Issue("BABY-11111111-GZ", "", 1, 0, false, unit, height)
200203 let assetId = calculateAssetId(asset)
201204 $Tuple2([StringEntry((((address + "_") + txIdStr) + "_di"), toBase58String(assetId)), IntegerEntry("stats_amount", (tryGetInteger("stats_amount") + 1)), BooleanEntry((("duckling_" + toBase58String(assetId)) + "_issuedByFeedCall"), (i.caller == this)), asset, ScriptTransfer(value(addressFromString(address)), 1, assetId)], toBase58String(assetId))
202205 }
203206
204207
205208
206209 @Callable(i)
207210 func feedDuckling (ducklingId,backendSignature,lapsList,rewardsList) = {
208211 let addressString = toString(i.caller)
209212 let laps = value(split(lapsList, ","))
210213 let rewards = value(split(rewardsList, ","))
211214 let backendProof = getBackendProof(laps, rewards, addressString)
212215 let realDucklingId = if (!(sigVerify_8Kb(toBytes(backendProof), fromBase58String(backendSignature), backendPubKey)))
213216 then throw("Invalid proof from backend")
214217 else if (if ((size(i.payments) != 1))
215218 then true
216219 else (value(i.payments[0]).assetId != EGGASSETID))
217220 then throw("Bad payment attached (asset[s] or amount)")
218221 else if ((ducklingId == ""))
219222 then {
220223 let ducklingAssetId = invoke(this, "issueFreeDuckling", [toString(i.originCaller), toBase58String(i.transactionId)], nil)
221224 if ((ducklingAssetId == ducklingAssetId))
222225 then {
223226 let id = match ducklingAssetId {
224227 case v: String =>
225228 v
226229 case _ =>
227230 throw("Can't generate NFT")
228231 }
229232 id
230233 }
231234 else throw("Strict value is not equal to itself.")
232235 }
233236 else {
234237 let ducklingIdCheck = value(assetInfo(fromBase58String(ducklingId)))
235238 if ((assetBalance(i.caller, ducklingIdCheck.id) != 1))
236239 then throw("You're not the owner of the duckling")
237240 else if ((ducklingIdCheck.issuer != this))
238241 then throw("Cant find duckling with such id")
239242 else {
240243 let ducklingIdString = toBase58String(ducklingIdCheck.id)
241244 ducklingIdString
242245 }
243246 }
244247 let intLaps = stringListToIntList(laps)
245248 let intRewards = stringListToIntList(rewards)
246249 let maxFeedAmount = getMaxFeedAmount(intLaps, intRewards, toString(i.caller))
247250 let kDucklingFedLap = keyDucklingFedLap(realDucklingId)
248251 let lastFedLap = tryGetInteger(kDucklingFedLap)
249252 let currentPayment = value(i.payments[0]).amount
250253 let kNewLevel = keyDucklingLevel(realDucklingId)
251254 let kTotalFeed = keyTotalFeed(realDucklingId)
252255 let totalFeed = tryGetInteger(kTotalFeed)
253256 let feedTxStats = ((("duckling_" + realDucklingId) + "_stat_") + toString(lastBlock.timestamp))
254257 if ((currentPayment > maxFeedAmount))
255258 then throw(("Cannot feed duckling for such amount, max feed amount is: " + toString(maxFeedAmount)))
256259 else [IntegerEntry(kDucklingFedLap, getCurrentLap()), IntegerEntry(keyFeedForLap(addressString, intLaps[0]), (getFeedByLap(addressString, intLaps[0]) + currentPayment)), IntegerEntry(keyFeedForLap(addressString, intLaps[1]), (getFeedByLap(addressString, intLaps[1]) + currentPayment)), IntegerEntry(keyFeedForLap(addressString, intLaps[2]), (getFeedByLap(addressString, intLaps[2]) + currentPayment)), IntegerEntry(keyFeedForLap(addressString, intLaps[3]), (getFeedByLap(addressString, intLaps[3]) + currentPayment)), IntegerEntry(kTotalFeed, (totalFeed + currentPayment)), IntegerEntry(feedTxStats, currentPayment), StringEntry(kNewLevel, calculateNewDucklingLevel(realDucklingId, currentPayment))]
257260 }
258261
259262
260263
261264 @Callable(i)
262265 func fixLevels (ducklingIds) = if ((i.callerPublicKey != base58'GDxBbsDRmeY39quNrDsTXKJzFWbQVtjxHseF4ikxZ7n9'))
263266 then throw("")
264267 else {
265268 let ducklingIdsList = value(split(ducklingIds, ","))
266269 func handleId (acc,id) = {
267270 let kTotalFeed = keyTotalFeed(id)
268271 let totalFeed = tryGetInteger(kTotalFeed)
269272 let kNewLevel = keyDucklingLevel(id)
270273 let startingLevel = match getBoolean((("duckling_" + id) + "_issuedByFeedCall")) {
271274 case b: Boolean =>
272275 toBigInt(0)
273276 case _ =>
274277 toBigInt((20 * existingDuckPrecision))
275278 }
276279 let growth = fraction(toBigInt(totalFeed), toBigInt(percentGrowthPrecision), toBigInt(DUCKLINGPRICE))
277280 (acc ++ [StringEntry(kNewLevel, toString((startingLevel + growth)))])
278281 }
279282
280283 let $l = ducklingIdsList
281284 let $s = size($l)
282285 let $acc0 = nil
283286 func 1 ($a,$i) = if (($i >= $s))
284287 then $a
285288 else handleId($a, $l[$i])
286289
287290 func 2 ($a,$i) = if (($i >= $s))
288291 then $a
289292 else throw("List size exceeds 20")
290293
291294 2(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1(1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20)
292295 }
293296
294297
295298
296299 @Callable(i)
297300 func turnDucklingIntoDuck () = throw("Not implemented yet")
298301
299302
300303 @Verifier(tx)
301304 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
302305

github/deemru/w8io/873ac7e 
54.81 ms