tx · C1UP4geHBowvfoCkeAmAnJTaEvkpMeAECRjTKbKi6YRf

3N9eE86dXUm7rfc2WWCMLHkaEM4Y8yoNj7u:  -0.01440000 Waves

2021.01.26 18:10 [1370637] smart account 3N9eE86dXUm7rfc2WWCMLHkaEM4Y8yoNj7u > SELF 0.00000000 Waves

{ "type": 13, "id": "C1UP4geHBowvfoCkeAmAnJTaEvkpMeAECRjTKbKi6YRf", "fee": 1440000, "feeAssetId": null, "timestamp": 1611673851284, "version": 2, "chainId": 84, "sender": "3N9eE86dXUm7rfc2WWCMLHkaEM4Y8yoNj7u", "senderPublicKey": "FFDorDp8bC9dyUK2w8hYPWPVEcbbk9zYkpHn3gcq9svn", "proofs": [ "2MT6QqPeFzHZQfU1jhTzMDVvKVC4rCS7BtFiEF6Epc7Jcg211MtfQhuN28HxQs2zP5CGgbw2Evd9szoALXJPieww" ], "script": "base64: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Y2UJAAACAAAAAQIAAAA+Tm8gZW5vdWdoIEdvdmVyblRva2VuIEluIENvbnRyYWN0LCBQbGVhc2UgZGVwb3NpdCBHb3Zlcm5Ub2tlbnMEAAAABlJld2FyZAMJAAAAAAAAAgUAAAAMU3Rha2VCYWxhbmNlAAAAAAAAAAAAAAAAAAAAACcQAwkAAGYAAAACBQAAABhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMAAAAAAAAAAAoJAABoAAAAAgkAAGgAAAACAAAAAAAAACcQBQAAABhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAABkAAAAAgAAAAAAAAAAAQkAAGkAAAACBQAAABRuZXdBbW91bnRTdGFrZWRUb2tlbgUAAAAMU3Rha2VCYWxhbmNlCQAAaAAAAAIAAAAAAAAAJxAJAABkAAAAAgAAAAAAAAAAAQkAAGkAAAACBQAAABRuZXdBbW91bnRTdGFrZWRUb2tlbgUAAAAMU3Rha2VCYWxhbmNlBAAAAAxVc2VyQVBZVmFsdWUDCQAAZgAAAAIFAAAAGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgAAAAAAAAAAAAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAGQFAAAABlJld2FyZAUAAAAYY3VycmVudEFtb3VudEdvdmVyblRva2VuAAAAAAAAAAAABAAAABRuZXdBbW91bnRHb3Zlcm5Ub2tlbgkAAGQAAAACBQAAABhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4FAAAABlJld2FyZAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAElVzZXJHb3Zlcm5Ub2tlbktleQUAAAAUbmV3QW1vdW50R292ZXJuVG9rZW4JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAElVzZXJTdGFrZWRUb2tlbktleQUAAAAUbmV3QW1vdW50U3Rha2VkVG9rZW4JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAGFVzZXJTdGFrZVRyYW5zYWN0aW9uc0tleQUAAAAYTmV3VXNlclN0YWtlVHJhbnNhY3Rpb25zCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAxTdGFrZUJhbGFuY2UFAAAAElN0YWtlQmFsYW5jZUFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAHRnVuZEJveAUAAAALUHJpemVBbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAC1ByaXplSGVpZ2h0BQAAABBQcml6ZUhlaWdodFZhbHVlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAdVc2VyQVBZBQAAAAxVc2VyQVBZVmFsdWUFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAABlJld2FyZAUAAAALR292ZXJuVG9rZW4FAAAAA25pbAkAAAIAAAABAgAAABtDYW4gZGVwb3NpdCBvbmx5IFN0YWtlVG9rZW4AAAAAyeX3Xw==", "height": 1370637, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 73tsSUXrnRYEhNp1AykWPefakJWRgkMAWNfTJER5npw3 Next: BZeZuX82Bh9XreMTNYXksN3AW9S5ozLM4Tym3X8Q3h9Z Diff:
OldNewDifferences
44
55
66 @Callable(i)
7-func ReadPoolData () = {
8- let GovernTokenKey = "GovernTokenMaxDeposit"
9- let MaxGovernTokenDepositerKey = "MaxGovernTokenDepositerKey"
10- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
11- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
12- let UserStakedTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(StakedToken))
13- let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
14- let Winner = getStringValue(this, MaxGovernTokenDepositerKey)
15- let MaxGovernTokenDeposit = match getInteger(this, GovernTokenKey) {
16- case a: Int =>
17- a
18- case _ =>
19- 0
20- }
21- let ReadUserGovernTokenKey = getStringValue(this, UserGovernTokenKey)
22- let UserGovernTokenBalance = match getInteger(this, UserGovernTokenKey) {
23- case a: Int =>
24- a
25- case _ =>
26- 0
27- }
28- let ReadUserStakedTokenKey = getStringValue(this, UserStakedTokenKey)
29- let UserStakedTokenBalance = match getInteger(this, UserStakedTokenKey) {
30- case a: Int =>
31- a
32- case _ =>
33- 0
34- }
35- throw(((((((("Winner is.....: " + Winner) + " Balance is: ") + toString(MaxGovernTokenDeposit)) + "
36-Staked Token in your Balance is.....: ") + toString(UserStakedTokenBalance)) + "
37-Govern Token in your Balance is.....: ") + toString(UserGovernTokenBalance)))
38- }
39-
40-
41-
42-@Callable(i)
43-func ResetAccount () = {
44- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
45- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
46- let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
47- let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
48- let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
49- WriteSet([DataEntry(UserGovernTokenKey, 0), DataEntry(UserStakedTokenKey, 0), DataEntry(UserStakeTransactionsKey, 0), DataEntry("DelayCost", 0), DataEntry("Delay", 0), DataEntry("StakeBalance", 0), DataEntry("PrizeHeight", 0), DataEntry("FundBox", 0)])
50- }
51-
52-
53-
54-@Callable(i)
557 func PushReward () = {
568 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
579 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
10+ let minPushBlock = 10
11+ let minStakeBlock = 7
12+ let DelayAfterPush = 20
5813 let pmt = extract(i.payment)
59- let currentKey = (toBase58String(i.caller.bytes) + "_Push")
60- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
61- let StakeBalance = match getInteger(this, "StakeBalance") {
62- case a: Int =>
63- a
64- case _ =>
65- 0
66- }
67- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
68- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
69- case a: Int =>
70- a
71- case _ =>
72- 0
73- }
74- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
75- then (PrizeAmount != 0)
76- else false)
77- then height
78- else if (if ((HeightTransactFundBox != 0))
79- then (PrizeAmount == 0)
80- else false)
81- then 0
82- else HeightTransactFundBox
8314 if (if ((pmt.amount > 0))
8415 then (pmt.assetId == GovernToken)
8516 else false)
8617 then {
87- let GovernTokenKey = "GovernTokenMaxDeposit"
88- let MaxGovernTokenDepositerKey = "MaxGovernTokenDepositerKey"
89- let MaxGovernTokenDeposit = match getInteger(this, GovernTokenKey) {
18+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
19+ let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
20+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
21+ let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
22+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
23+ let StakeBalance = match getInteger(this, "StakeBalance") {
9024 case a: Int =>
9125 a
9226 case _ =>
9327 0
9428 }
95- let currentAmount = match getInteger(this, currentKey) {
29+ let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
30+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
31+ case a: Int =>
32+ a
33+ case _ =>
34+ 0
35+ }
36+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
37+ then (PrizeAmount == 0)
38+ else false)
39+ then 0
40+ else if (if ((HeightTransactFundBox == 0))
41+ then (PrizeAmount != 0)
42+ else false)
43+ then height
44+ else if (if ((HeightTransactFundBox != 0))
45+ then (PrizeAmount != 0)
46+ else false)
47+ then HeightTransactFundBox
48+ else 0
49+ let HighestPushValue = match getInteger(this, "HighestPush") {
50+ case a: Int =>
51+ a
52+ case _ =>
53+ 0
54+ }
55+ let UserLastPushvalue = match getInteger(this, UserPush) {
9656 case a: Int =>
9757 a
9858 case _ =>
10464 case _ =>
10565 0
10666 }
107- let CurrrentGovernTokenDeposit = pmt.amount
108- if (if (if (if ((MaxGovernTokenDepositerKey != ""))
109- then ((HeightTransactFundBox + ActualDelay) > height)
67+ let NewDelay = (ActualDelay + DelayAfterPush)
68+ let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
69+ case a: Int =>
70+ a
71+ case _ =>
72+ 0
73+ }
74+ let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
75+ case a: Int =>
76+ a
77+ case _ =>
78+ 0
79+ }
80+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
81+ case a: Int =>
82+ a
83+ case _ =>
84+ 0
85+ }
86+ let UserStakeValue = match getInteger(this, UserStake) {
87+ case a: Int =>
88+ a
89+ case _ =>
90+ 0
91+ }
92+ let UserPushvalue = (pmt.amount + UserLastPushvalue)
93+ if (if (if (if (if ((UserPushvalue > 0))
94+ then ((height - UserLastStakeBlockValue) > (1440 * minStakeBlock))
11095 else false)
111- then (height > 0)
96+ then ((height - UserLastPushBlockValue) > minPushBlock)
11297 else false)
113- then true
114- else if ((MaxGovernTokenDepositerKey != ""))
115- then (height > ((HeightTransactFundBox + ActualDelay) + 10))
116- else false)
117- then if ((CurrrentGovernTokenDeposit > MaxGovernTokenDeposit))
118- then WriteSet([DataEntry(currentKey, CurrrentGovernTokenDeposit), DataEntry(GovernTokenKey, CurrrentGovernTokenDeposit), DataEntry(MaxGovernTokenDepositerKey, currentKey), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", height), DataEntry("Delay", 5)])
119- else throw((("You have to deposit more than " + toString((MaxGovernTokenDeposit / 100000000))) + " Troika"))
120- else throw("You cannot claim reward, a winner has already been designated")
98+ then (UserPushvalue > HighestPushValue)
99+ else false)
100+ then (UserStakeValue > 0)
101+ else false)
102+ then WriteSet([DataEntry(UserPush, UserPushvalue), DataEntry("HighestPushAddress", toBase58String(i.caller.bytes)), DataEntry("HighestPush", UserPushvalue), DataEntry("PrizeHeight", height), DataEntry("Delay", NewDelay)])
103+ else throw((("Your Push dot not comply one of the following conditions: " + "
104+ 1. Positive Value
105+ 2. Must Staked ASIMI Token for a minimum of week
106+ ") + "3. Should be Higher than last Highest Push
107+ 4. Should wait required time between Pushes"))
121108 }
122109 else throw("Can deposit only StakeToken")
123110 }
202189 }
203190
204191
205-
206-@Callable(i)
207-func WithdrawStakedFunds (amount) = {
208- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
209- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
210- let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
211- let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
212- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
213- let StakeBalance = match getInteger(this, "StakeBalance") {
214- case a: Int =>
215- a
216- case _ =>
217- 0
218- }
219- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
220- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
221- case a: Int =>
222- a
223- case _ =>
224- 0
225- }
226- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
227- then (PrizeAmount != 0)
228- else false)
229- then height
230- else if (if ((HeightTransactFundBox != 0))
231- then (PrizeAmount == 0)
232- else false)
233- then 0
234- else HeightTransactFundBox
235- let currentKey = toBase58String(i.caller.bytes)
236- let currentAmount = match getInteger(this, UserStakedTokenKey) {
237- case a: Int =>
238- a
239- case _ =>
240- 0
241- }
242- let newAmount = (currentAmount - amount)
243- let StakeBalanceAmount = (StakeBalance - amount)
244- if ((0 > amount))
245- then throw("Can't withdraw negative amount")
246- else if ((0 > newAmount))
247- then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
248- else {
249- let GovernTokenAmount = assetBalance(this, GovernToken)
250- if ((1 > GovernTokenAmount))
251- then throw("No enough GovernToken In Contract")
252- else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, 100000000), DataEntry(UserStakedTokenKey, newAmount), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, 100000000, GovernToken), ScriptTransfer(i.caller, amount, StakedToken)]))
253- }
254- }
255-
256-
257-
258-@Callable(i)
259-func HarvestGovernToiken (amount) = {
260- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
261- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
262- let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
263- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
264- let StakeBalance = match getInteger(this, "StakeBalance") {
265- case a: Int =>
266- a
267- case _ =>
268- 0
269- }
270- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
271- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
272- case a: Int =>
273- a
274- case _ =>
275- 0
276- }
277- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
278- then (PrizeAmount != 0)
279- else false)
280- then height
281- else if (if ((HeightTransactFundBox != 0))
282- then (PrizeAmount == 0)
283- else false)
284- then 0
285- else HeightTransactFundBox
286- let currentKey = toBase58String(i.caller.bytes)
287- let currentAmount = match getInteger(this, UserGovernTokenKey) {
288- case a: Int =>
289- a
290- case _ =>
291- 0
292- }
293- let newAmount = (currentAmount - amount)
294- if ((0 > amount))
295- then throw("Can't withdraw negative amount")
296- else if ((0 > newAmount))
297- then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
298- else {
299- let GovernTokenAmount = assetBalance(this, GovernToken)
300- ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, amount, GovernToken)]))
301- }
302- }
303-
304-
305-
306-@Callable(i)
307-func delayprize () = {
308- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
309- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
310- let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
311- let UserWalletSGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
312- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
313- let StakeBalance = match getInteger(this, "StakeBalance") {
314- case a: Int =>
315- a
316- case _ =>
317- 0
318- }
319- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
320- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
321- case a: Int =>
322- a
323- case _ =>
324- 0
325- }
326- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
327- then (PrizeAmount != 0)
328- else false)
329- then height
330- else if (if ((HeightTransactFundBox != 0))
331- then (PrizeAmount == 0)
332- else false)
333- then 0
334- else HeightTransactFundBox
335- let ActualDelay = match getInteger(this, "Delay") {
336- case a: Int =>
337- a
338- case _ =>
339- 0
340- }
341- let ActualDelayCost = match getInteger(this, "DelayCost") {
342- case a: Int =>
343- a
344- case _ =>
345- 10
346- }
347- let pmt = extract(i.payment)
348- if (if (isDefined(pmt.assetId))
349- then (extract(pmt.assetId) == GovernToken)
350- else false)
351- then {
352- let UserGovernTokenAmount = pmt.amount
353- let NewDelayCost = if ((ActualDelayCost == 0))
354- then 1000000000
355- else (2 * ActualDelayCost)
356- if ((UserGovernTokenAmount >= NewDelayCost))
357- then {
358- let NewDelay = (ActualDelay + 10)
359- WriteSet([DataEntry("Delay", NewDelay), DataEntry("DelayCost", NewDelayCost), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", height)])
360- }
361- else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
362- }
363- else throw("Can Use only Govern Token to Delay Reward")
364- }
365-
366-
367-
368-@Callable(i)
369-func ClaimPrize () = {
370- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
371- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
372- let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
373- let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Push")
374- let GovernTokenAmount = assetBalance(this, GovernToken)
375- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
376- let StakeBalance = match getInteger(this, "StakeBalance") {
377- case a: Int =>
378- a
379- case _ =>
380- 0
381- }
382- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
383- let UserGovernTokenAmount = match getInteger(this, UserGovernTokenKey) {
384- case a: Int =>
385- a
386- case _ =>
387- 0
388- }
389- let UserStakedTokenAmount = match getInteger(this, UserStakedTokenKey) {
390- case a: Int =>
391- a
392- case _ =>
393- 0
394- }
395- let ActualDelay = match getInteger(this, "Delay") {
396- case a: Int =>
397- a
398- case _ =>
399- 0
400- }
401- let GovernTokenKey = "GovernTokenMaxDeposit"
402- let MaxGovernTokenDepositerKey = "MaxGovernTokenDepositerKey"
403- let PrizeWinner = getStringValue(this, MaxGovernTokenDepositerKey)
404- let PrizeHeight = match getInteger(this, "PrizeHeight") {
405- case a: Int =>
406- a
407- case _ =>
408- 0
409- }
410- let MaxGovernTokenDeposit = match getInteger(this, GovernTokenKey) {
411- case a: Int =>
412- a
413- case _ =>
414- 0
415- }
416- if (if ((PrizeAmount == 0))
417- then true
418- else (10000000000 > GovernTokenAmount))
419- then throw("No prize to Claim or No enough Govern Token en Contract (Min 100 Troika)")
420- else if ((UserGovernTokenKey != PrizeWinner))
421- then throw("You are not the winner hence cannot claim the reward ")
422- else if ((1 > UserStakedTokenAmount))
423- then throw(("You have to Stake StakedToken to claim reward
424- Your Balance of Staked Tokens is: " + toString(UserStakedTokenAmount)))
425- else if (if (if ((UserGovernTokenAmount >= 10000000000))
426- then (height >= (PrizeHeight + ActualDelay))
427- else false)
428- then (height > 0)
429- else false)
430- then if ((UserGovernTokenAmount >= MaxGovernTokenDeposit))
431- then ScriptResult(WriteSet([DataEntry(PrizeWinner, PrizeAmount), DataEntry("FundBox", 0), DataEntry(GovernTokenKey, 0), DataEntry(UserGovernTokenKey, 0), DataEntry(MaxGovernTokenDepositerKey, ""), DataEntry("PrizeHeight", 0), DataEntry("Delay", 0), DataEntry("DelayCost", 0), DataEntry("LastWinner", PrizeWinner), DataEntry("LastPrize", PrizeAmount)]), TransferSet([ScriptTransfer(i.caller, PrizeAmount, StakedToken), ScriptTransfer(i.caller, 1000000000, GovernToken)]))
432- else throw((("You should deposit at least " + toString(MaxGovernTokenDeposit)) + " to be able to claim reward"))
433- else throw(((((((("You have to deposit 100 GovernToken to claim Reward
434- Your Balance is: " + toString(UserGovernTokenAmount)) + "
435- Deposit done at: ") + toString(PrizeHeight)) + " And wait:") + toString((PrizeHeight + ActualDelay))) + "And Height is:") + toString(height)))
436- }
437-
438-
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(i)
7-func ReadPoolData () = {
8- let GovernTokenKey = "GovernTokenMaxDeposit"
9- let MaxGovernTokenDepositerKey = "MaxGovernTokenDepositerKey"
10- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
11- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
12- let UserStakedTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(StakedToken))
13- let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
14- let Winner = getStringValue(this, MaxGovernTokenDepositerKey)
15- let MaxGovernTokenDeposit = match getInteger(this, GovernTokenKey) {
16- case a: Int =>
17- a
18- case _ =>
19- 0
20- }
21- let ReadUserGovernTokenKey = getStringValue(this, UserGovernTokenKey)
22- let UserGovernTokenBalance = match getInteger(this, UserGovernTokenKey) {
23- case a: Int =>
24- a
25- case _ =>
26- 0
27- }
28- let ReadUserStakedTokenKey = getStringValue(this, UserStakedTokenKey)
29- let UserStakedTokenBalance = match getInteger(this, UserStakedTokenKey) {
30- case a: Int =>
31- a
32- case _ =>
33- 0
34- }
35- throw(((((((("Winner is.....: " + Winner) + " Balance is: ") + toString(MaxGovernTokenDeposit)) + "
36-Staked Token in your Balance is.....: ") + toString(UserStakedTokenBalance)) + "
37-Govern Token in your Balance is.....: ") + toString(UserGovernTokenBalance)))
38- }
39-
40-
41-
42-@Callable(i)
43-func ResetAccount () = {
44- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
45- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
46- let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
47- let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
48- let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
49- WriteSet([DataEntry(UserGovernTokenKey, 0), DataEntry(UserStakedTokenKey, 0), DataEntry(UserStakeTransactionsKey, 0), DataEntry("DelayCost", 0), DataEntry("Delay", 0), DataEntry("StakeBalance", 0), DataEntry("PrizeHeight", 0), DataEntry("FundBox", 0)])
50- }
51-
52-
53-
54-@Callable(i)
557 func PushReward () = {
568 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
579 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
10+ let minPushBlock = 10
11+ let minStakeBlock = 7
12+ let DelayAfterPush = 20
5813 let pmt = extract(i.payment)
59- let currentKey = (toBase58String(i.caller.bytes) + "_Push")
60- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
61- let StakeBalance = match getInteger(this, "StakeBalance") {
62- case a: Int =>
63- a
64- case _ =>
65- 0
66- }
67- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
68- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
69- case a: Int =>
70- a
71- case _ =>
72- 0
73- }
74- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
75- then (PrizeAmount != 0)
76- else false)
77- then height
78- else if (if ((HeightTransactFundBox != 0))
79- then (PrizeAmount == 0)
80- else false)
81- then 0
82- else HeightTransactFundBox
8314 if (if ((pmt.amount > 0))
8415 then (pmt.assetId == GovernToken)
8516 else false)
8617 then {
87- let GovernTokenKey = "GovernTokenMaxDeposit"
88- let MaxGovernTokenDepositerKey = "MaxGovernTokenDepositerKey"
89- let MaxGovernTokenDeposit = match getInteger(this, GovernTokenKey) {
18+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
19+ let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
20+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
21+ let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
22+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
23+ let StakeBalance = match getInteger(this, "StakeBalance") {
9024 case a: Int =>
9125 a
9226 case _ =>
9327 0
9428 }
95- let currentAmount = match getInteger(this, currentKey) {
29+ let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
30+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
31+ case a: Int =>
32+ a
33+ case _ =>
34+ 0
35+ }
36+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
37+ then (PrizeAmount == 0)
38+ else false)
39+ then 0
40+ else if (if ((HeightTransactFundBox == 0))
41+ then (PrizeAmount != 0)
42+ else false)
43+ then height
44+ else if (if ((HeightTransactFundBox != 0))
45+ then (PrizeAmount != 0)
46+ else false)
47+ then HeightTransactFundBox
48+ else 0
49+ let HighestPushValue = match getInteger(this, "HighestPush") {
50+ case a: Int =>
51+ a
52+ case _ =>
53+ 0
54+ }
55+ let UserLastPushvalue = match getInteger(this, UserPush) {
9656 case a: Int =>
9757 a
9858 case _ =>
9959 0
10060 }
10161 let ActualDelay = match getInteger(this, "Delay") {
10262 case a: Int =>
10363 a
10464 case _ =>
10565 0
10666 }
107- let CurrrentGovernTokenDeposit = pmt.amount
108- if (if (if (if ((MaxGovernTokenDepositerKey != ""))
109- then ((HeightTransactFundBox + ActualDelay) > height)
67+ let NewDelay = (ActualDelay + DelayAfterPush)
68+ let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
69+ case a: Int =>
70+ a
71+ case _ =>
72+ 0
73+ }
74+ let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
75+ case a: Int =>
76+ a
77+ case _ =>
78+ 0
79+ }
80+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
81+ case a: Int =>
82+ a
83+ case _ =>
84+ 0
85+ }
86+ let UserStakeValue = match getInteger(this, UserStake) {
87+ case a: Int =>
88+ a
89+ case _ =>
90+ 0
91+ }
92+ let UserPushvalue = (pmt.amount + UserLastPushvalue)
93+ if (if (if (if (if ((UserPushvalue > 0))
94+ then ((height - UserLastStakeBlockValue) > (1440 * minStakeBlock))
11095 else false)
111- then (height > 0)
96+ then ((height - UserLastPushBlockValue) > minPushBlock)
11297 else false)
113- then true
114- else if ((MaxGovernTokenDepositerKey != ""))
115- then (height > ((HeightTransactFundBox + ActualDelay) + 10))
116- else false)
117- then if ((CurrrentGovernTokenDeposit > MaxGovernTokenDeposit))
118- then WriteSet([DataEntry(currentKey, CurrrentGovernTokenDeposit), DataEntry(GovernTokenKey, CurrrentGovernTokenDeposit), DataEntry(MaxGovernTokenDepositerKey, currentKey), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", height), DataEntry("Delay", 5)])
119- else throw((("You have to deposit more than " + toString((MaxGovernTokenDeposit / 100000000))) + " Troika"))
120- else throw("You cannot claim reward, a winner has already been designated")
98+ then (UserPushvalue > HighestPushValue)
99+ else false)
100+ then (UserStakeValue > 0)
101+ else false)
102+ then WriteSet([DataEntry(UserPush, UserPushvalue), DataEntry("HighestPushAddress", toBase58String(i.caller.bytes)), DataEntry("HighestPush", UserPushvalue), DataEntry("PrizeHeight", height), DataEntry("Delay", NewDelay)])
103+ else throw((("Your Push dot not comply one of the following conditions: " + "
104+ 1. Positive Value
105+ 2. Must Staked ASIMI Token for a minimum of week
106+ ") + "3. Should be Higher than last Highest Push
107+ 4. Should wait required time between Pushes"))
121108 }
122109 else throw("Can deposit only StakeToken")
123110 }
124111
125112
126113
127114 @Callable(i)
128115 func Stake () = {
129116 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
130117 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
131118 let GovernTokenSmartContractBalance = assetBalance(this, GovernToken)
132119 let UserAPY = (toBase58String(i.caller.bytes) + "_APY")
133120 let pmt = extract(i.payment)
134121 if (if ((pmt.amount > 0))
135122 then (pmt.assetId == StakedToken)
136123 else false)
137124 then {
138125 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
139126 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
140127 let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
141128 let AddressHeight = (toBase58String(i.caller.bytes) + "_PrizeHeight")
142129 let UserStakeTransactions = match getInteger(this, UserStakeTransactionsKey) {
143130 case a: Int =>
144131 a
145132 case _ =>
146133 0
147134 }
148135 let NewUserStakeTransactions = (UserStakeTransactions + 1)
149136 let currentAmountStakedToken = match getInteger(this, UserStakedTokenKey) {
150137 case a: Int =>
151138 a
152139 case _ =>
153140 0
154141 }
155142 let newAmountStakedToken = (currentAmountStakedToken + pmt.amount)
156143 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
157144 let StakeBalance = match getInteger(this, "StakeBalance") {
158145 case a: Int =>
159146 a
160147 case _ =>
161148 0
162149 }
163150 let StakeBalanceAmount = (StakeBalance + pmt.amount)
164151 let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
165152 let currentAmountGovernToken = match getInteger(this, UserGovernTokenKey) {
166153 case a: Int =>
167154 a
168155 case _ =>
169156 0
170157 }
171158 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
172159 case a: Int =>
173160 a
174161 case _ =>
175162 0
176163 }
177164 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
178165 then (PrizeAmount != 0)
179166 else false)
180167 then height
181168 else if (if ((HeightTransactFundBox != 0))
182169 then (PrizeAmount == 0)
183170 else false)
184171 then 0
185172 else HeightTransactFundBox
186173 if ((100000000 > GovernTokenSmartContractBalance))
187174 then throw("No enough GovernToken In Contract, Please deposit GovernTokens")
188175 else {
189176 let Reward = if ((StakeBalance == 0))
190177 then 10000
191178 else if ((NewUserStakeTransactions > 10))
192179 then ((10000 * NewUserStakeTransactions) * (1 + (newAmountStakedToken / StakeBalance)))
193180 else (10000 * (1 + (newAmountStakedToken / StakeBalance)))
194181 let UserAPYValue = if ((currentAmountGovernToken > 0))
195182 then ((100 * Reward) / currentAmountGovernToken)
196183 else 0
197184 let newAmountGovernToken = (currentAmountGovernToken + Reward)
198185 ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmountGovernToken), DataEntry(UserStakedTokenKey, newAmountStakedToken), DataEntry(UserStakeTransactionsKey, NewUserStakeTransactions), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserAPY, UserAPYValue)]), TransferSet([ScriptTransfer(i.caller, Reward, GovernToken)]))
199186 }
200187 }
201188 else throw("Can deposit only StakeToken")
202189 }
203190
204191
205-
206-@Callable(i)
207-func WithdrawStakedFunds (amount) = {
208- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
209- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
210- let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
211- let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
212- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
213- let StakeBalance = match getInteger(this, "StakeBalance") {
214- case a: Int =>
215- a
216- case _ =>
217- 0
218- }
219- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
220- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
221- case a: Int =>
222- a
223- case _ =>
224- 0
225- }
226- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
227- then (PrizeAmount != 0)
228- else false)
229- then height
230- else if (if ((HeightTransactFundBox != 0))
231- then (PrizeAmount == 0)
232- else false)
233- then 0
234- else HeightTransactFundBox
235- let currentKey = toBase58String(i.caller.bytes)
236- let currentAmount = match getInteger(this, UserStakedTokenKey) {
237- case a: Int =>
238- a
239- case _ =>
240- 0
241- }
242- let newAmount = (currentAmount - amount)
243- let StakeBalanceAmount = (StakeBalance - amount)
244- if ((0 > amount))
245- then throw("Can't withdraw negative amount")
246- else if ((0 > newAmount))
247- then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
248- else {
249- let GovernTokenAmount = assetBalance(this, GovernToken)
250- if ((1 > GovernTokenAmount))
251- then throw("No enough GovernToken In Contract")
252- else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, 100000000), DataEntry(UserStakedTokenKey, newAmount), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, 100000000, GovernToken), ScriptTransfer(i.caller, amount, StakedToken)]))
253- }
254- }
255-
256-
257-
258-@Callable(i)
259-func HarvestGovernToiken (amount) = {
260- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
261- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
262- let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
263- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
264- let StakeBalance = match getInteger(this, "StakeBalance") {
265- case a: Int =>
266- a
267- case _ =>
268- 0
269- }
270- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
271- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
272- case a: Int =>
273- a
274- case _ =>
275- 0
276- }
277- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
278- then (PrizeAmount != 0)
279- else false)
280- then height
281- else if (if ((HeightTransactFundBox != 0))
282- then (PrizeAmount == 0)
283- else false)
284- then 0
285- else HeightTransactFundBox
286- let currentKey = toBase58String(i.caller.bytes)
287- let currentAmount = match getInteger(this, UserGovernTokenKey) {
288- case a: Int =>
289- a
290- case _ =>
291- 0
292- }
293- let newAmount = (currentAmount - amount)
294- if ((0 > amount))
295- then throw("Can't withdraw negative amount")
296- else if ((0 > newAmount))
297- then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
298- else {
299- let GovernTokenAmount = assetBalance(this, GovernToken)
300- ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, amount, GovernToken)]))
301- }
302- }
303-
304-
305-
306-@Callable(i)
307-func delayprize () = {
308- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
309- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
310- let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
311- let UserWalletSGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
312- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
313- let StakeBalance = match getInteger(this, "StakeBalance") {
314- case a: Int =>
315- a
316- case _ =>
317- 0
318- }
319- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
320- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
321- case a: Int =>
322- a
323- case _ =>
324- 0
325- }
326- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
327- then (PrizeAmount != 0)
328- else false)
329- then height
330- else if (if ((HeightTransactFundBox != 0))
331- then (PrizeAmount == 0)
332- else false)
333- then 0
334- else HeightTransactFundBox
335- let ActualDelay = match getInteger(this, "Delay") {
336- case a: Int =>
337- a
338- case _ =>
339- 0
340- }
341- let ActualDelayCost = match getInteger(this, "DelayCost") {
342- case a: Int =>
343- a
344- case _ =>
345- 10
346- }
347- let pmt = extract(i.payment)
348- if (if (isDefined(pmt.assetId))
349- then (extract(pmt.assetId) == GovernToken)
350- else false)
351- then {
352- let UserGovernTokenAmount = pmt.amount
353- let NewDelayCost = if ((ActualDelayCost == 0))
354- then 1000000000
355- else (2 * ActualDelayCost)
356- if ((UserGovernTokenAmount >= NewDelayCost))
357- then {
358- let NewDelay = (ActualDelay + 10)
359- WriteSet([DataEntry("Delay", NewDelay), DataEntry("DelayCost", NewDelayCost), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", height)])
360- }
361- else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
362- }
363- else throw("Can Use only Govern Token to Delay Reward")
364- }
365-
366-
367-
368-@Callable(i)
369-func ClaimPrize () = {
370- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
371- let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
372- let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
373- let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Push")
374- let GovernTokenAmount = assetBalance(this, GovernToken)
375- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
376- let StakeBalance = match getInteger(this, "StakeBalance") {
377- case a: Int =>
378- a
379- case _ =>
380- 0
381- }
382- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
383- let UserGovernTokenAmount = match getInteger(this, UserGovernTokenKey) {
384- case a: Int =>
385- a
386- case _ =>
387- 0
388- }
389- let UserStakedTokenAmount = match getInteger(this, UserStakedTokenKey) {
390- case a: Int =>
391- a
392- case _ =>
393- 0
394- }
395- let ActualDelay = match getInteger(this, "Delay") {
396- case a: Int =>
397- a
398- case _ =>
399- 0
400- }
401- let GovernTokenKey = "GovernTokenMaxDeposit"
402- let MaxGovernTokenDepositerKey = "MaxGovernTokenDepositerKey"
403- let PrizeWinner = getStringValue(this, MaxGovernTokenDepositerKey)
404- let PrizeHeight = match getInteger(this, "PrizeHeight") {
405- case a: Int =>
406- a
407- case _ =>
408- 0
409- }
410- let MaxGovernTokenDeposit = match getInteger(this, GovernTokenKey) {
411- case a: Int =>
412- a
413- case _ =>
414- 0
415- }
416- if (if ((PrizeAmount == 0))
417- then true
418- else (10000000000 > GovernTokenAmount))
419- then throw("No prize to Claim or No enough Govern Token en Contract (Min 100 Troika)")
420- else if ((UserGovernTokenKey != PrizeWinner))
421- then throw("You are not the winner hence cannot claim the reward ")
422- else if ((1 > UserStakedTokenAmount))
423- then throw(("You have to Stake StakedToken to claim reward
424- Your Balance of Staked Tokens is: " + toString(UserStakedTokenAmount)))
425- else if (if (if ((UserGovernTokenAmount >= 10000000000))
426- then (height >= (PrizeHeight + ActualDelay))
427- else false)
428- then (height > 0)
429- else false)
430- then if ((UserGovernTokenAmount >= MaxGovernTokenDeposit))
431- then ScriptResult(WriteSet([DataEntry(PrizeWinner, PrizeAmount), DataEntry("FundBox", 0), DataEntry(GovernTokenKey, 0), DataEntry(UserGovernTokenKey, 0), DataEntry(MaxGovernTokenDepositerKey, ""), DataEntry("PrizeHeight", 0), DataEntry("Delay", 0), DataEntry("DelayCost", 0), DataEntry("LastWinner", PrizeWinner), DataEntry("LastPrize", PrizeAmount)]), TransferSet([ScriptTransfer(i.caller, PrizeAmount, StakedToken), ScriptTransfer(i.caller, 1000000000, GovernToken)]))
432- else throw((("You should deposit at least " + toString(MaxGovernTokenDeposit)) + " to be able to claim reward"))
433- else throw(((((((("You have to deposit 100 GovernToken to claim Reward
434- Your Balance is: " + toString(UserGovernTokenAmount)) + "
435- Deposit done at: ") + toString(PrizeHeight)) + " And wait:") + toString((PrizeHeight + ActualDelay))) + "And Height is:") + toString(height)))
436- }
437-
438-

github/deemru/w8io/873ac7e 
49.24 ms