tx · 4HguWLWWXqu8FLj3BrPRyquLjCwQ6aHsgWdpET9SBHbe

3N9eE86dXUm7rfc2WWCMLHkaEM4Y8yoNj7u:  -0.01440000 Waves

2021.05.29 14:25 [1546895] smart account 3N9eE86dXUm7rfc2WWCMLHkaEM4Y8yoNj7u > SELF 0.00000000 Waves

{ "type": 13, "id": "4HguWLWWXqu8FLj3BrPRyquLjCwQ6aHsgWdpET9SBHbe", "fee": 1440000, "feeAssetId": null, "timestamp": 1622287537760, "version": 2, "chainId": 84, "sender": "3N9eE86dXUm7rfc2WWCMLHkaEM4Y8yoNj7u", "senderPublicKey": "FFDorDp8bC9dyUK2w8hYPWPVEcbbk9zYkpHn3gcq9svn", "proofs": [ "2eQFNYJR9wR5TQnYYKDfKZcnozo7R7J592KFC6swcy6Y2bZQf2dxeiPWSDFhodeYJmwoHMBTjbYWkioARVEKNhDg" ], "script": "base64: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AABnAAAAAgUAAAAQVXNlclJlZnNOdW1WYWx1ZQUAAAAGbWlucmVmCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAhVc2VyUHVzaAUAAAANVXNlclB1c2h2YWx1ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAASSGlnaGVzdFB1c2hBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAC0hpZ2hlc3RQdXNoBQAAAA1Vc2VyUHVzaHZhbHVlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAABFVc2VyTGFzdFB1c2hCbG9jawUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAtQcml6ZUhlaWdodAUAAAATUHJpemVIZWlnaHRWYWx1ZU5ldwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAAFRGVsYXkFAAAACE5ld0RlbGF5CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAZEZXZCb3gFAAAADERldkJveEFtb3VudAUAAAADbmlsCQAAAgAAAAECAAAAT1lvdSBoYXZlIHRvIGhhdmUgMTAgcmVmZXJyYWxzIGFscmVhZHkgc3Rha2luZyBmb3IgYSBtaW5pbXVtIG9mIDEwIGRheXMsIHRvIHB1c2gEAAAAA3R4dAMJAABmAAAAAgUAAAAQSGlnaGVzdFB1c2hWYWx1ZQAAAAAAAAAAAAIAAABPWW91IGNhbm5vdCBQdXNoIGFmdGVyIHJld2FyZGluZyBQcml6ZSBhbmQgYmVmb3JlIE9uZSBkYXkgaGFzIHBhc3NlZCBhZnRlciBhd2FyZAIAAAAQVW5leHBlY3RlZCBlcnJvcgkAAAIAAAABBQAAAAN0eHQJAAACAAAAAQIAAABOWW91IGNhbm5vdCBwdXNoIGJlZm9yZSB0aGUgcmV3YXJkIGlzIHVubG9ja2VkLCBubyByZXdhcmQgaGFzIGJlZW4gZGV0ZWN0ZWQgeWV0CQAAAgAAAAECAAAAQ1lvdXIgcHVzaCBpbiB0cm9pa2FuIHRva2VuLCBzaG91bGQg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AGYAAAACBQAAABhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMAAAAAAAAAAAoJAABoAAAAAgkAAGgAAAACAAAAAAAAACcQBQAAABhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAABkAAAAAgAAAAAAAAAAAQkAAGkAAAACBQAAABRuZXdBbW91bnRTdGFrZWRUb2tlbgUAAAAMU3Rha2VCYWxhbmNlCQAAaAAAAAIAAAAAAAAAJxAJAABkAAAAAgAAAAAAAAAAAQkAAGkAAAACBQAAABRuZXdBbW91bnRTdGFrZWRUb2tlbgUAAAAMU3Rha2VCYWxhbmNlBAAAAAxVc2VyQVBZVmFsdWUDCQAAZgAAAAIFAAAAGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgAAAAAAAAAAAAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAGQFAAAABlJld2FyZAUAAAAYY3VycmVudEFtb3VudEdvdmVyblRva2VuAAAAAAAAAAAABAAAABRuZXdBbW91bnRHb3Zlcm5Ub2tlbgkAAGQAAAACBQAAABhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4FAAAABlJld2FyZAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAElVzZXJHb3Zlcm5Ub2tlbktleQUAAAAUbmV3QW1vdW50R292ZXJuVG9rZW4JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAElVzZXJTdGFrZWRUb2tlbktleQUAAAAUbmV3QW1vdW50U3Rha2VkVG9rZW4JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAGFVzZXJTdGFrZVRyYW5zYWN0aW9uc0tleQUAAAAYTmV3VXNlclN0YWtlVHJhbnNhY3Rpb25zCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACAgAAAAxTdGFrZUJhbGFuY2UFAAAAElN0YWtlQmFsYW5jZUFtb3VudAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgIAAAALUHJpemVIZWlnaHQFAAAAEFByaXplSGVpZ2h0VmFsdWUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAAB1Vz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", "height": 1546895, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9mVaQNWXxjxh9eZZgd89ui1jY63jxmxkvVkbx1KiWhef Next: 7sxo9pNpmtYVDL3BkiXXeK3fLcWMRevQkGoaB7yb8yQf Diff:
OldNewDifferences
44
55
66 @Callable(i)
7-func ResetAccount () = {
8- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
7+func DevWithdraw () = {
8+ let currentKey = toBase58String(i.caller.bytes)
99 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
10- let UserPush = (toBase58String(i.caller.bytes) + "_Push")
11- WriteSet([DataEntry("DelayCost", 0), DataEntry("Delay", 0)])
10+ if ((currentKey == "3P74buHt98BnojFcaREJZtb98KDyUmZGemJ"))
11+ then {
12+ let DevBoxAmount = match getInteger(this, "DevBox") {
13+ case a: Int =>
14+ a
15+ case _ =>
16+ 0
17+ }
18+ if ((0 > DevBoxAmount))
19+ then throw("Not enough balance")
20+ else ScriptResult(WriteSet([DataEntry("DevBox", 0)]), TransferSet([ScriptTransfer(i.caller, DevBoxAmount, GovernToken)]))
21+ }
22+ else throw("You cannot withdraw as your are not the Dev.")
1223 }
1324
1425
1829 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
1930 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
2031 let minPushBlock = 10
21- let minStakeBlock = 0
22- let DelayAfterPush = 20
32+ let minStakeBlock = 7
33+ let DelayAfterPush = 1440
34+ let minref = 0
35+ let userWalletGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
2336 let pmt = extract(i.payment)
24- if (if ((pmt.amount > 0))
25- then (pmt.assetId == GovernToken)
26- else false)
27- then {
28- let UserPush = (toBase58String(i.caller.bytes) + "_Push")
29- let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
30- let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
31- let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
32- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
33- let StakeBalance = match getInteger(this, "StakeBalance") {
34- case a: Int =>
35- a
36- case _ =>
37- 0
38- }
39- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
40- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
41- case a: Int =>
42- a
43- case _ =>
44- 0
45- }
46- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
47- then (PrizeAmount == 0)
48- else false)
49- then 0
50- else if (if ((HeightTransactFundBox == 0))
51- then (PrizeAmount != 0)
37+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
38+ let UserLastPushOldValue = match getInteger(this, UserPush) {
39+ case a: Int =>
40+ a
41+ case _ =>
42+ 0
43+ }
44+ let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
45+ let UserRefsNumValue = match getInteger(this, UserRefsNum) {
46+ case a: Int =>
47+ a
48+ case _ =>
49+ 0
50+ }
51+ let HighestPushValue = match getInteger(this, "HighestPush") {
52+ case a: Int =>
53+ a
54+ case _ =>
55+ 0
56+ }
57+ if ((userWalletGovernBalance > pmt.amount))
58+ then if (if (((pmt.amount + UserLastPushOldValue) > HighestPushValue))
59+ then (pmt.assetId == GovernToken)
60+ else false)
61+ then {
62+ let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
63+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
64+ let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
65+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
66+ let StakeBalance = match getInteger(this, "StakeBalance") {
67+ case a: Int =>
68+ a
69+ case _ =>
70+ 0
71+ }
72+ let PrizeAmount = match getInteger(this, "FundBox") {
73+ case a: Int =>
74+ a
75+ case _ =>
76+ 0
77+ }
78+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
79+ case a: Int =>
80+ a
81+ case _ =>
82+ 0
83+ }
84+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
85+ then (PrizeAmount == 0)
86+ else false)
87+ then 0
88+ else if (if ((HeightTransactFundBox == 0))
89+ then (PrizeAmount != 0)
90+ else false)
91+ then height
92+ else if (if ((HeightTransactFundBox != 0))
93+ then (PrizeAmount != 0)
94+ else false)
95+ then HeightTransactFundBox
96+ else 0
97+ let ActualDelay = match getInteger(this, "Delay") {
98+ case a: Int =>
99+ a
100+ case _ =>
101+ 0
102+ }
103+ let NewDelay = (ActualDelay + DelayAfterPush)
104+ let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
105+ case a: Int =>
106+ a
107+ case _ =>
108+ 0
109+ }
110+ let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
111+ case a: Int =>
112+ a
113+ case _ =>
114+ 0
115+ }
116+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
117+ case a: Int =>
118+ a
119+ case _ =>
120+ 0
121+ }
122+ let UserStakeValue = match getInteger(this, UserStake) {
123+ case a: Int =>
124+ a
125+ case _ =>
126+ 0
127+ }
128+ let DevBoxBalance = match getInteger(this, "DevBox") {
129+ case a: Int =>
130+ a
131+ case _ =>
132+ 0
133+ }
134+ let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
135+ let UserPushvalue = (pmt.amount + UserLastPushOldValue)
136+ let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + NewDelay) + 1440)))
137+ then (HighestPushValue > 0)
52138 else false)
53139 then height
54- else if (if ((HeightTransactFundBox != 0))
55- then (PrizeAmount != 0)
56- else false)
57- then HeightTransactFundBox
58- else 0
59- let HighestPushValue = match getInteger(this, "HighestPush") {
60- case a: Int =>
61- a
62- case _ =>
63- 0
64- }
65- let UserLastPushOldValue = match getInteger(this, UserPush) {
66- case a: Int =>
67- a
68- case _ =>
69- 0
70- }
71- let ActualDelay = match getInteger(this, "Delay") {
72- case a: Int =>
73- a
74- case _ =>
75- 0
76- }
77- let NewDelay = (ActualDelay + DelayAfterPush)
78- let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
79- case a: Int =>
80- a
81- case _ =>
82- 0
83- }
84- let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
85- case a: Int =>
86- a
87- case _ =>
88- 0
89- }
90- let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
91- case a: Int =>
92- a
93- case _ =>
94- 0
95- }
96- let UserStakeValue = match getInteger(this, UserStake) {
97- case a: Int =>
98- a
99- case _ =>
100- 0
101- }
102- let UserPushvalue = (pmt.amount + UserLastPushOldValue)
103- if (if (if (if (if (if ((UserPushvalue > 0))
104- then ((height - UserLastStakeBlockValue) > (1440 * minStakeBlock))
105- else false)
106- then ((height - UserLastPushBlockValue) > minPushBlock)
107- else false)
108- then (UserPushvalue > HighestPushValue)
109- else false)
110- then (UserStakeValue > 0)
111- else false)
112- then if (((PrizeHeightValue + NewDelay) > height))
113- then true
114- else (height > ((PrizeHeightValue + NewDelay) + 1440))
115- else false)
116- then WriteSet([DataEntry(UserPush, UserPushvalue), DataEntry("HighestPushAddress", toBase58String(i.caller.bytes)), DataEntry("HighestPush", UserPushvalue), DataEntry(UserLastStakeBlock, height), DataEntry("PrizeHeight", height), DataEntry("Delay", NewDelay)])
117- else throw("Your Push dot not comply one of the following conditions:
118-1. Positive Value
119-2. Must Staked ASIMI Token for a minimum of week
120-3. Should be Higher than last Highest Push 4. Should wait required time between Pushes
121-")
122- }
123- else throw("Can deposit only positive amounts of ASIMI Token")
140+ else PrizeHeightValue
141+ if (if ((UserPushvalue > 0))
142+ then ((height - UserLastStakeBlockValue) > (1440 * minStakeBlock))
143+ else false)
144+ then if (((height - UserLastPushBlockValue) > minPushBlock))
145+ then if ((UserStakeValue > 0))
146+ then if ((UserPushvalue > HighestPushValue))
147+ then if ((PrizeAmount > 0))
148+ then if (if (if (if (((PrizeHeightValueNew + NewDelay) > height))
149+ then true
150+ else (height > ((PrizeHeightValueNew + NewDelay) + 1440)))
151+ then (HighestPushValue > 0)
152+ else false)
153+ then true
154+ else (HighestPushValue == 0))
155+ then if ((UserRefsNumValue >= minref))
156+ then WriteSet([DataEntry(UserPush, UserPushvalue), DataEntry("HighestPushAddress", toBase58String(i.caller.bytes)), DataEntry("HighestPush", UserPushvalue), DataEntry(UserLastPushBlock, height), DataEntry("PrizeHeight", PrizeHeightValueNew), DataEntry("Delay", NewDelay), DataEntry("DevBox", DevBoxAmount)])
157+ else throw("You have to have 10 referrals already staking for a minimum of 10 days, to push")
158+ else {
159+ let txt = if ((HighestPushValue > 0))
160+ then "You cannot Push after rewarding Prize and before One day has passed after award"
161+ else "Unexpected error"
162+ throw(txt)
163+ }
164+ else throw("You cannot push before the reward is unlocked, no reward has been detected yet")
165+ else throw("Your push in troikan token, should be Higher than last Highest Push")
166+ else throw("To be able to participate in Pushing for the reward you need to Stake ASIMIs in the dApp")
167+ else throw("You have to wait 10min before you can make a new Push")
168+ else throw(("Your Push dot not comply one of the following conditions: " + "1. Positive Value for Push in Troikan Toke
169+ 2. Must Staked ASIMI Token for a minimum of week "))
170+ }
171+ else throw((("Can deposit only positive amounts of Troikan Token, or Check your Wallet balance in Troika, you should have more than " + toString(HighestPushValue)) + " to push"))
172+ else throw("You do not have enough Troikan Tokens in your Wallet Balance, Please Harvest if you have earned Troikan wallet or transfer to your wallet necessary Troikan amount !")
124173 }
125174
126175
136185 then {
137186 let GovernTokenSmartContractBalance = assetBalance(this, GovernToken)
138187 let UserAPY = (toBase58String(i.caller.bytes) + "_APY")
188+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
139189 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
140190 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
141191 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
147197 case _ =>
148198 0
149199 }
200+ let UserPushValue = match getInteger(this, UserPush) {
201+ case a: Int =>
202+ a
203+ case _ =>
204+ 0
205+ }
206+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
207+ case a: Int =>
208+ a
209+ case _ =>
210+ 0
211+ }
212+ let UserLastStakeBlockNewValue = if ((UserLastStakeBlockValue == 0))
213+ then height
214+ else UserLastStakeBlockValue
150215 let NewUserStakeTransactions = (UserStakeTransactions + 1)
151216 let currentAmountStakedToken = match getInteger(this, UserStakedTokenKey) {
152217 case a: Int =>
163228 0
164229 }
165230 let StakeBalanceAmount = (StakeBalance + pmt.amount)
166- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
231+ let PrizeAmount = match getInteger(this, "FundBox") {
232+ case a: Int =>
233+ a
234+ case _ =>
235+ 0
236+ }
167237 let currentAmountGovernToken = match getInteger(this, UserGovernTokenKey) {
168238 case a: Int =>
169239 a
201271 then ((100 * Reward) / currentAmountGovernToken)
202272 else 0
203273 let newAmountGovernToken = (currentAmountGovernToken + Reward)
204- ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmountGovernToken), DataEntry(UserStakedTokenKey, newAmountStakedToken), DataEntry(UserStakeTransactionsKey, NewUserStakeTransactions), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserAPY, UserAPYValue), DataEntry(UserLastStakeBlock, height)]), TransferSet([ScriptTransfer(i.caller, Reward, GovernToken)]))
274+ ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmountGovernToken), DataEntry(UserStakedTokenKey, newAmountStakedToken), DataEntry(UserStakeTransactionsKey, NewUserStakeTransactions), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserAPY, UserAPYValue), DataEntry(UserLastStakeBlock, UserLastStakeBlockNewValue), DataEntry(UserPush, UserPushValue)]), TransferSet([ScriptTransfer(i.caller, Reward, GovernToken)]))
205275 }
206276 }
207277 else throw("Can deposit only StakeToken")
213283 func WithdrawStakedFunds (amount) = {
214284 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
215285 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
286+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
216287 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
217288 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
218289 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
290+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
291+ case a: Int =>
292+ a
293+ case _ =>
294+ 0
295+ }
219296 let StakeBalance = match getInteger(this, "StakeBalance") {
220297 case a: Int =>
221298 a
222299 case _ =>
223300 0
224301 }
225- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
302+ let PrizeAmount = match getInteger(this, "FundBox") {
303+ case a: Int =>
304+ a
305+ case _ =>
306+ 0
307+ }
226308 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
227309 case a: Int =>
228310 a
251333 }
252334 let newAmount = (currentAmount - amount)
253335 let StakeBalanceAmount = (StakeBalance - amount)
336+ let UserLastStakeBlockNewValue = if ((StakeBalanceAmount == 0))
337+ then 0
338+ else UserLastStakeBlockValue
254339 if ((0 > amount))
255340 then throw("Can't withdraw negative amount")
256341 else if ((0 > newAmount))
257342 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
258343 else if ((100000000 > assetBalance(this, GovernToken)))
259344 then throw(("Not enough Troika In Contract: " + toString((assetBalance(this, GovernToken) / 100000000))))
260- 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)]))
345+ else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, 100000000), DataEntry(UserStakedTokenKey, newAmount), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserLastStakeBlock, UserLastStakeBlockNewValue)]), TransferSet([ScriptTransfer(i.caller, 100000000, GovernToken), ScriptTransfer(i.caller, amount, StakedToken)]))
261346 }
262347
263348
274359 case _ =>
275360 0
276361 }
277- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
362+ let PrizeAmount = match getInteger(this, "FundBox") {
363+ case a: Int =>
364+ a
365+ case _ =>
366+ 0
367+ }
278368 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
279369 case a: Int =>
280370 a
306396 then throw("Can't withdraw negative amount")
307397 else if ((0 > newAmount))
308398 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
309- else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, amount, GovernToken)]))
399+ else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, amount, GovernToken)]))
310400 }
311401
312402
325415 case _ =>
326416 0
327417 }
328- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
418+ let PrizeAmount = match getInteger(this, "FundBox") {
419+ case a: Int =>
420+ a
421+ case _ =>
422+ 0
423+ }
329424 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
330425 case a: Int =>
331426 a
358453 10
359454 }
360455 let pmt = extract(i.payment)
456+ let DevBoxBalance = match getInteger(this, "DevBox") {
457+ case a: Int =>
458+ a
459+ case _ =>
460+ 0
461+ }
361462 if (if (isDefined(pmt.assetId))
362463 then (extract(pmt.assetId) == GovernToken)
363464 else false)
364- then {
365- let UserGovernTokenAmount = pmt.amount
366- let NewDelayCost = if ((ActualDelayCost == 0))
367- then 1000000000
368- else (2 * ActualDelayCost)
369- if ((UserGovernTokenAmount >= NewDelayCost))
370- then {
371- let NewDelay = (ActualDelay + (1440 * DelayDays))
372- WriteSet([DataEntry("Delay", NewDelay), DataEntry("DelayCost", NewDelayCost), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", height)])
373- }
374- else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
375- }
465+ then if ((PrizeAmount > 0))
466+ then {
467+ let UserGovernTokenAmount = pmt.amount
468+ let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
469+ let NewDelayCost = if ((ActualDelayCost == 0))
470+ then 1000000000
471+ else (2 * ActualDelayCost)
472+ if ((UserGovernTokenAmount >= NewDelayCost))
473+ then {
474+ let NewDelay = (ActualDelay + (1440 * DelayDays))
475+ WriteSet([DataEntry("Delay", NewDelay), DataEntry("DelayCost", NewDelayCost), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry("DevBox", DevBoxAmount)])
476+ }
477+ else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
478+ }
479+ else throw("You cannot delay the reward before reward is received! Please wait until a reward is available")
376480 else throw("Can Use only Troika Token to Delay Reward")
377481 }
378482
386490 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
387491 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
388492 let minStakeBlock = 7
493+ let minref = 0
389494 let ContractGovTokenBalance = assetBalance(this, GovernToken)
390495 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
391496 let StakeBalance = match getInteger(this, "StakeBalance") {
394499 case _ =>
395500 0
396501 }
397- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
502+ let PrizeAmount = match getInteger(this, "FundBox") {
503+ case a: Int =>
504+ a
505+ case _ =>
506+ 0
507+ }
398508 let UserPushValue = match getInteger(this, UserPush) {
399509 case a: Int =>
400510 a
432542 case _ =>
433543 0
434544 }
545+ let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
546+ let UserRefsNumValue = match getInteger(this, UserRefsNum) {
547+ case a: Int =>
548+ a
549+ case _ =>
550+ 0
551+ }
435552 if (if ((PrizeAmount == 0))
436553 then true
437554 else (10000000000 > ContractGovTokenBalance))
445562 else if (if ((height > (PrizeHeight + ActualDelay)))
446563 then (UserPushValue >= HighestPushValue)
447564 else false)
448- then ScriptResult(WriteSet([DataEntry(PrizeWinner, PrizeAmount), DataEntry("FundBox", 0), DataEntry("HighestPush", 0), DataEntry(UserPush, 0), DataEntry("HighestPushAddress", ""), 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)]))
449- else throw("You have to deposit 100 GovernToken to claim Reward and/or wait till countown is finished")
565+ then if ((UserRefsNumValue >= minref))
566+ then ScriptResult(WriteSet([DataEntry(PrizeWinner, PrizeAmount), DataEntry("FundBox", 0), DataEntry("HighestPush", 0), DataEntry(UserPush, 0), DataEntry("HighestPushAddress", ""), 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)]))
567+ else throw("You have to have 10 referrals already staking for a minimum of 10 days to Claim the prize")
568+ else throw("You have to be the user with the highest Push and wait till countown is finished, to claim Reward")
569+ }
570+
571+
572+
573+@Callable(i)
574+func Addmentor (Mentor) = {
575+ let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
576+ let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
577+ let UserMentorAddress = (toBase58String(i.caller.bytes) + "_Mentor")
578+ if ((Mentor != ""))
579+ then WriteSet([DataEntry(UserMentorAddress, Mentor)])
580+ else throw("Mentor's Address cannot be empty")
450581 }
451582
452583
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(i)
7-func ResetAccount () = {
8- let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
7+func DevWithdraw () = {
8+ let currentKey = toBase58String(i.caller.bytes)
99 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
10- let UserPush = (toBase58String(i.caller.bytes) + "_Push")
11- WriteSet([DataEntry("DelayCost", 0), DataEntry("Delay", 0)])
10+ if ((currentKey == "3P74buHt98BnojFcaREJZtb98KDyUmZGemJ"))
11+ then {
12+ let DevBoxAmount = match getInteger(this, "DevBox") {
13+ case a: Int =>
14+ a
15+ case _ =>
16+ 0
17+ }
18+ if ((0 > DevBoxAmount))
19+ then throw("Not enough balance")
20+ else ScriptResult(WriteSet([DataEntry("DevBox", 0)]), TransferSet([ScriptTransfer(i.caller, DevBoxAmount, GovernToken)]))
21+ }
22+ else throw("You cannot withdraw as your are not the Dev.")
1223 }
1324
1425
1526
1627 @Callable(i)
1728 func PushReward () = {
1829 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
1930 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
2031 let minPushBlock = 10
21- let minStakeBlock = 0
22- let DelayAfterPush = 20
32+ let minStakeBlock = 7
33+ let DelayAfterPush = 1440
34+ let minref = 0
35+ let userWalletGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
2336 let pmt = extract(i.payment)
24- if (if ((pmt.amount > 0))
25- then (pmt.assetId == GovernToken)
26- else false)
27- then {
28- let UserPush = (toBase58String(i.caller.bytes) + "_Push")
29- let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
30- let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
31- let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
32- let ContractWalletStakeBalance = assetBalance(this, StakedToken)
33- let StakeBalance = match getInteger(this, "StakeBalance") {
34- case a: Int =>
35- a
36- case _ =>
37- 0
38- }
39- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
40- let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
41- case a: Int =>
42- a
43- case _ =>
44- 0
45- }
46- let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
47- then (PrizeAmount == 0)
48- else false)
49- then 0
50- else if (if ((HeightTransactFundBox == 0))
51- then (PrizeAmount != 0)
37+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
38+ let UserLastPushOldValue = match getInteger(this, UserPush) {
39+ case a: Int =>
40+ a
41+ case _ =>
42+ 0
43+ }
44+ let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
45+ let UserRefsNumValue = match getInteger(this, UserRefsNum) {
46+ case a: Int =>
47+ a
48+ case _ =>
49+ 0
50+ }
51+ let HighestPushValue = match getInteger(this, "HighestPush") {
52+ case a: Int =>
53+ a
54+ case _ =>
55+ 0
56+ }
57+ if ((userWalletGovernBalance > pmt.amount))
58+ then if (if (((pmt.amount + UserLastPushOldValue) > HighestPushValue))
59+ then (pmt.assetId == GovernToken)
60+ else false)
61+ then {
62+ let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
63+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
64+ let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
65+ let ContractWalletStakeBalance = assetBalance(this, StakedToken)
66+ let StakeBalance = match getInteger(this, "StakeBalance") {
67+ case a: Int =>
68+ a
69+ case _ =>
70+ 0
71+ }
72+ let PrizeAmount = match getInteger(this, "FundBox") {
73+ case a: Int =>
74+ a
75+ case _ =>
76+ 0
77+ }
78+ let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
79+ case a: Int =>
80+ a
81+ case _ =>
82+ 0
83+ }
84+ let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
85+ then (PrizeAmount == 0)
86+ else false)
87+ then 0
88+ else if (if ((HeightTransactFundBox == 0))
89+ then (PrizeAmount != 0)
90+ else false)
91+ then height
92+ else if (if ((HeightTransactFundBox != 0))
93+ then (PrizeAmount != 0)
94+ else false)
95+ then HeightTransactFundBox
96+ else 0
97+ let ActualDelay = match getInteger(this, "Delay") {
98+ case a: Int =>
99+ a
100+ case _ =>
101+ 0
102+ }
103+ let NewDelay = (ActualDelay + DelayAfterPush)
104+ let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
105+ case a: Int =>
106+ a
107+ case _ =>
108+ 0
109+ }
110+ let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
111+ case a: Int =>
112+ a
113+ case _ =>
114+ 0
115+ }
116+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
117+ case a: Int =>
118+ a
119+ case _ =>
120+ 0
121+ }
122+ let UserStakeValue = match getInteger(this, UserStake) {
123+ case a: Int =>
124+ a
125+ case _ =>
126+ 0
127+ }
128+ let DevBoxBalance = match getInteger(this, "DevBox") {
129+ case a: Int =>
130+ a
131+ case _ =>
132+ 0
133+ }
134+ let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
135+ let UserPushvalue = (pmt.amount + UserLastPushOldValue)
136+ let PrizeHeightValueNew = if (if ((height > ((PrizeHeightValue + NewDelay) + 1440)))
137+ then (HighestPushValue > 0)
52138 else false)
53139 then height
54- else if (if ((HeightTransactFundBox != 0))
55- then (PrizeAmount != 0)
56- else false)
57- then HeightTransactFundBox
58- else 0
59- let HighestPushValue = match getInteger(this, "HighestPush") {
60- case a: Int =>
61- a
62- case _ =>
63- 0
64- }
65- let UserLastPushOldValue = match getInteger(this, UserPush) {
66- case a: Int =>
67- a
68- case _ =>
69- 0
70- }
71- let ActualDelay = match getInteger(this, "Delay") {
72- case a: Int =>
73- a
74- case _ =>
75- 0
76- }
77- let NewDelay = (ActualDelay + DelayAfterPush)
78- let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
79- case a: Int =>
80- a
81- case _ =>
82- 0
83- }
84- let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
85- case a: Int =>
86- a
87- case _ =>
88- 0
89- }
90- let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
91- case a: Int =>
92- a
93- case _ =>
94- 0
95- }
96- let UserStakeValue = match getInteger(this, UserStake) {
97- case a: Int =>
98- a
99- case _ =>
100- 0
101- }
102- let UserPushvalue = (pmt.amount + UserLastPushOldValue)
103- if (if (if (if (if (if ((UserPushvalue > 0))
104- then ((height - UserLastStakeBlockValue) > (1440 * minStakeBlock))
105- else false)
106- then ((height - UserLastPushBlockValue) > minPushBlock)
107- else false)
108- then (UserPushvalue > HighestPushValue)
109- else false)
110- then (UserStakeValue > 0)
111- else false)
112- then if (((PrizeHeightValue + NewDelay) > height))
113- then true
114- else (height > ((PrizeHeightValue + NewDelay) + 1440))
115- else false)
116- then WriteSet([DataEntry(UserPush, UserPushvalue), DataEntry("HighestPushAddress", toBase58String(i.caller.bytes)), DataEntry("HighestPush", UserPushvalue), DataEntry(UserLastStakeBlock, height), DataEntry("PrizeHeight", height), DataEntry("Delay", NewDelay)])
117- else throw("Your Push dot not comply one of the following conditions:
118-1. Positive Value
119-2. Must Staked ASIMI Token for a minimum of week
120-3. Should be Higher than last Highest Push 4. Should wait required time between Pushes
121-")
122- }
123- else throw("Can deposit only positive amounts of ASIMI Token")
140+ else PrizeHeightValue
141+ if (if ((UserPushvalue > 0))
142+ then ((height - UserLastStakeBlockValue) > (1440 * minStakeBlock))
143+ else false)
144+ then if (((height - UserLastPushBlockValue) > minPushBlock))
145+ then if ((UserStakeValue > 0))
146+ then if ((UserPushvalue > HighestPushValue))
147+ then if ((PrizeAmount > 0))
148+ then if (if (if (if (((PrizeHeightValueNew + NewDelay) > height))
149+ then true
150+ else (height > ((PrizeHeightValueNew + NewDelay) + 1440)))
151+ then (HighestPushValue > 0)
152+ else false)
153+ then true
154+ else (HighestPushValue == 0))
155+ then if ((UserRefsNumValue >= minref))
156+ then WriteSet([DataEntry(UserPush, UserPushvalue), DataEntry("HighestPushAddress", toBase58String(i.caller.bytes)), DataEntry("HighestPush", UserPushvalue), DataEntry(UserLastPushBlock, height), DataEntry("PrizeHeight", PrizeHeightValueNew), DataEntry("Delay", NewDelay), DataEntry("DevBox", DevBoxAmount)])
157+ else throw("You have to have 10 referrals already staking for a minimum of 10 days, to push")
158+ else {
159+ let txt = if ((HighestPushValue > 0))
160+ then "You cannot Push after rewarding Prize and before One day has passed after award"
161+ else "Unexpected error"
162+ throw(txt)
163+ }
164+ else throw("You cannot push before the reward is unlocked, no reward has been detected yet")
165+ else throw("Your push in troikan token, should be Higher than last Highest Push")
166+ else throw("To be able to participate in Pushing for the reward you need to Stake ASIMIs in the dApp")
167+ else throw("You have to wait 10min before you can make a new Push")
168+ else throw(("Your Push dot not comply one of the following conditions: " + "1. Positive Value for Push in Troikan Toke
169+ 2. Must Staked ASIMI Token for a minimum of week "))
170+ }
171+ else throw((("Can deposit only positive amounts of Troikan Token, or Check your Wallet balance in Troika, you should have more than " + toString(HighestPushValue)) + " to push"))
172+ else throw("You do not have enough Troikan Tokens in your Wallet Balance, Please Harvest if you have earned Troikan wallet or transfer to your wallet necessary Troikan amount !")
124173 }
125174
126175
127176
128177 @Callable(i)
129178 func Stake () = {
130179 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
131180 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
132181 let pmt = extract(i.payment)
133182 if (if ((pmt.amount > 0))
134183 then (pmt.assetId == StakedToken)
135184 else false)
136185 then {
137186 let GovernTokenSmartContractBalance = assetBalance(this, GovernToken)
138187 let UserAPY = (toBase58String(i.caller.bytes) + "_APY")
188+ let UserPush = (toBase58String(i.caller.bytes) + "_Push")
139189 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
140190 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
141191 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
142192 let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
143193 let AddressHeight = (toBase58String(i.caller.bytes) + "_PrizeHeight")
144194 let UserStakeTransactions = match getInteger(this, UserStakeTransactionsKey) {
145195 case a: Int =>
146196 a
147197 case _ =>
148198 0
149199 }
200+ let UserPushValue = match getInteger(this, UserPush) {
201+ case a: Int =>
202+ a
203+ case _ =>
204+ 0
205+ }
206+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
207+ case a: Int =>
208+ a
209+ case _ =>
210+ 0
211+ }
212+ let UserLastStakeBlockNewValue = if ((UserLastStakeBlockValue == 0))
213+ then height
214+ else UserLastStakeBlockValue
150215 let NewUserStakeTransactions = (UserStakeTransactions + 1)
151216 let currentAmountStakedToken = match getInteger(this, UserStakedTokenKey) {
152217 case a: Int =>
153218 a
154219 case _ =>
155220 0
156221 }
157222 let newAmountStakedToken = (currentAmountStakedToken + pmt.amount)
158223 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
159224 let StakeBalance = match getInteger(this, "StakeBalance") {
160225 case a: Int =>
161226 a
162227 case _ =>
163228 0
164229 }
165230 let StakeBalanceAmount = (StakeBalance + pmt.amount)
166- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
231+ let PrizeAmount = match getInteger(this, "FundBox") {
232+ case a: Int =>
233+ a
234+ case _ =>
235+ 0
236+ }
167237 let currentAmountGovernToken = match getInteger(this, UserGovernTokenKey) {
168238 case a: Int =>
169239 a
170240 case _ =>
171241 0
172242 }
173243 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
174244 case a: Int =>
175245 a
176246 case _ =>
177247 0
178248 }
179249 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
180250 then (PrizeAmount == 0)
181251 else false)
182252 then 0
183253 else if (if ((HeightTransactFundBox == 0))
184254 then (PrizeAmount != 0)
185255 else false)
186256 then height
187257 else if (if ((HeightTransactFundBox != 0))
188258 then (PrizeAmount != 0)
189259 else false)
190260 then HeightTransactFundBox
191261 else 0
192262 if ((100000000 > GovernTokenSmartContractBalance))
193263 then throw("No enough GovernToken In Contract, Please deposit GovernTokens")
194264 else {
195265 let Reward = if ((StakeBalance == 0))
196266 then 10000
197267 else if ((NewUserStakeTransactions > 10))
198268 then ((10000 * NewUserStakeTransactions) * (1 + (newAmountStakedToken / StakeBalance)))
199269 else (10000 * (1 + (newAmountStakedToken / StakeBalance)))
200270 let UserAPYValue = if ((currentAmountGovernToken > 0))
201271 then ((100 * Reward) / currentAmountGovernToken)
202272 else 0
203273 let newAmountGovernToken = (currentAmountGovernToken + Reward)
204- ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmountGovernToken), DataEntry(UserStakedTokenKey, newAmountStakedToken), DataEntry(UserStakeTransactionsKey, NewUserStakeTransactions), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserAPY, UserAPYValue), DataEntry(UserLastStakeBlock, height)]), TransferSet([ScriptTransfer(i.caller, Reward, GovernToken)]))
274+ ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmountGovernToken), DataEntry(UserStakedTokenKey, newAmountStakedToken), DataEntry(UserStakeTransactionsKey, NewUserStakeTransactions), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserAPY, UserAPYValue), DataEntry(UserLastStakeBlock, UserLastStakeBlockNewValue), DataEntry(UserPush, UserPushValue)]), TransferSet([ScriptTransfer(i.caller, Reward, GovernToken)]))
205275 }
206276 }
207277 else throw("Can deposit only StakeToken")
208278 }
209279
210280
211281
212282 @Callable(i)
213283 func WithdrawStakedFunds (amount) = {
214284 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
215285 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
286+ let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
216287 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
217288 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
218289 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
290+ let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
291+ case a: Int =>
292+ a
293+ case _ =>
294+ 0
295+ }
219296 let StakeBalance = match getInteger(this, "StakeBalance") {
220297 case a: Int =>
221298 a
222299 case _ =>
223300 0
224301 }
225- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
302+ let PrizeAmount = match getInteger(this, "FundBox") {
303+ case a: Int =>
304+ a
305+ case _ =>
306+ 0
307+ }
226308 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
227309 case a: Int =>
228310 a
229311 case _ =>
230312 0
231313 }
232314 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
233315 then (PrizeAmount == 0)
234316 else false)
235317 then 0
236318 else if (if ((HeightTransactFundBox == 0))
237319 then (PrizeAmount != 0)
238320 else false)
239321 then height
240322 else if (if ((HeightTransactFundBox != 0))
241323 then (PrizeAmount != 0)
242324 else false)
243325 then HeightTransactFundBox
244326 else 0
245327 let currentKey = toBase58String(i.caller.bytes)
246328 let currentAmount = match getInteger(this, UserStakedTokenKey) {
247329 case a: Int =>
248330 a
249331 case _ =>
250332 0
251333 }
252334 let newAmount = (currentAmount - amount)
253335 let StakeBalanceAmount = (StakeBalance - amount)
336+ let UserLastStakeBlockNewValue = if ((StakeBalanceAmount == 0))
337+ then 0
338+ else UserLastStakeBlockValue
254339 if ((0 > amount))
255340 then throw("Can't withdraw negative amount")
256341 else if ((0 > newAmount))
257342 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
258343 else if ((100000000 > assetBalance(this, GovernToken)))
259344 then throw(("Not enough Troika In Contract: " + toString((assetBalance(this, GovernToken) / 100000000))))
260- 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)]))
345+ else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, 100000000), DataEntry(UserStakedTokenKey, newAmount), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserLastStakeBlock, UserLastStakeBlockNewValue)]), TransferSet([ScriptTransfer(i.caller, 100000000, GovernToken), ScriptTransfer(i.caller, amount, StakedToken)]))
261346 }
262347
263348
264349
265350 @Callable(i)
266351 func HarvestGovernToiken (amount) = {
267352 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
268353 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
269354 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
270355 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
271356 let StakeBalance = match getInteger(this, "StakeBalance") {
272357 case a: Int =>
273358 a
274359 case _ =>
275360 0
276361 }
277- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
362+ let PrizeAmount = match getInteger(this, "FundBox") {
363+ case a: Int =>
364+ a
365+ case _ =>
366+ 0
367+ }
278368 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
279369 case a: Int =>
280370 a
281371 case _ =>
282372 0
283373 }
284374 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
285375 then (PrizeAmount == 0)
286376 else false)
287377 then 0
288378 else if (if ((HeightTransactFundBox == 0))
289379 then (PrizeAmount != 0)
290380 else false)
291381 then height
292382 else if (if ((HeightTransactFundBox != 0))
293383 then (PrizeAmount != 0)
294384 else false)
295385 then HeightTransactFundBox
296386 else 0
297387 let currentKey = toBase58String(i.caller.bytes)
298388 let currentAmount = match getInteger(this, UserGovernTokenKey) {
299389 case a: Int =>
300390 a
301391 case _ =>
302392 0
303393 }
304394 let newAmount = (currentAmount - amount)
305395 if ((0 > amount))
306396 then throw("Can't withdraw negative amount")
307397 else if ((0 > newAmount))
308398 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
309- else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, amount, GovernToken)]))
399+ else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, amount, GovernToken)]))
310400 }
311401
312402
313403
314404 @Callable(i)
315405 func delayprize () = {
316406 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
317407 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
318408 let DelayDays = 1
319409 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
320410 let UserWalletSGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
321411 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
322412 let StakeBalance = match getInteger(this, "StakeBalance") {
323413 case a: Int =>
324414 a
325415 case _ =>
326416 0
327417 }
328- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
418+ let PrizeAmount = match getInteger(this, "FundBox") {
419+ case a: Int =>
420+ a
421+ case _ =>
422+ 0
423+ }
329424 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
330425 case a: Int =>
331426 a
332427 case _ =>
333428 0
334429 }
335430 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
336431 then (PrizeAmount == 0)
337432 else false)
338433 then 0
339434 else if (if ((HeightTransactFundBox == 0))
340435 then (PrizeAmount != 0)
341436 else false)
342437 then height
343438 else if (if ((HeightTransactFundBox != 0))
344439 then (PrizeAmount != 0)
345440 else false)
346441 then HeightTransactFundBox
347442 else 0
348443 let ActualDelay = match getInteger(this, "Delay") {
349444 case a: Int =>
350445 a
351446 case _ =>
352447 0
353448 }
354449 let ActualDelayCost = match getInteger(this, "DelayCost") {
355450 case a: Int =>
356451 a
357452 case _ =>
358453 10
359454 }
360455 let pmt = extract(i.payment)
456+ let DevBoxBalance = match getInteger(this, "DevBox") {
457+ case a: Int =>
458+ a
459+ case _ =>
460+ 0
461+ }
361462 if (if (isDefined(pmt.assetId))
362463 then (extract(pmt.assetId) == GovernToken)
363464 else false)
364- then {
365- let UserGovernTokenAmount = pmt.amount
366- let NewDelayCost = if ((ActualDelayCost == 0))
367- then 1000000000
368- else (2 * ActualDelayCost)
369- if ((UserGovernTokenAmount >= NewDelayCost))
370- then {
371- let NewDelay = (ActualDelay + (1440 * DelayDays))
372- WriteSet([DataEntry("Delay", NewDelay), DataEntry("DelayCost", NewDelayCost), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", height)])
373- }
374- else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
375- }
465+ then if ((PrizeAmount > 0))
466+ then {
467+ let UserGovernTokenAmount = pmt.amount
468+ let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
469+ let NewDelayCost = if ((ActualDelayCost == 0))
470+ then 1000000000
471+ else (2 * ActualDelayCost)
472+ if ((UserGovernTokenAmount >= NewDelayCost))
473+ then {
474+ let NewDelay = (ActualDelay + (1440 * DelayDays))
475+ WriteSet([DataEntry("Delay", NewDelay), DataEntry("DelayCost", NewDelayCost), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry("DevBox", DevBoxAmount)])
476+ }
477+ else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
478+ }
479+ else throw("You cannot delay the reward before reward is received! Please wait until a reward is available")
376480 else throw("Can Use only Troika Token to Delay Reward")
377481 }
378482
379483
380484
381485 @Callable(i)
382486 func ClaimPrize () = {
383487 let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
384488 let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
385489 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
386490 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
387491 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
388492 let minStakeBlock = 7
493+ let minref = 0
389494 let ContractGovTokenBalance = assetBalance(this, GovernToken)
390495 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
391496 let StakeBalance = match getInteger(this, "StakeBalance") {
392497 case a: Int =>
393498 a
394499 case _ =>
395500 0
396501 }
397- let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
502+ let PrizeAmount = match getInteger(this, "FundBox") {
503+ case a: Int =>
504+ a
505+ case _ =>
506+ 0
507+ }
398508 let UserPushValue = match getInteger(this, UserPush) {
399509 case a: Int =>
400510 a
401511 case _ =>
402512 0
403513 }
404514 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
405515 case a: Int =>
406516 a
407517 case _ =>
408518 0
409519 }
410520 let UserStakedTokenAmount = match getInteger(this, UserStakedTokenKey) {
411521 case a: Int =>
412522 a
413523 case _ =>
414524 0
415525 }
416526 let ActualDelay = match getInteger(this, "Delay") {
417527 case a: Int =>
418528 a
419529 case _ =>
420530 0
421531 }
422532 let PrizeWinner = getStringValue(this, "HighestPushAddress")
423533 let PrizeHeight = match getInteger(this, "PrizeHeight") {
424534 case a: Int =>
425535 a
426536 case _ =>
427537 0
428538 }
429539 let HighestPushValue = match getInteger(this, "HighestPush") {
430540 case a: Int =>
431541 a
432542 case _ =>
433543 0
434544 }
545+ let UserRefsNum = (toBase58String(i.caller.bytes) + "_refs")
546+ let UserRefsNumValue = match getInteger(this, UserRefsNum) {
547+ case a: Int =>
548+ a
549+ case _ =>
550+ 0
551+ }
435552 if (if ((PrizeAmount == 0))
436553 then true
437554 else (10000000000 > ContractGovTokenBalance))
438555 then throw("No prize to Claim or Not enough Govern Token en Contract (Min 100 Troika)")
439556 else if ((toBase58String(i.caller.bytes) != PrizeWinner))
440557 then throw("You are not the winner hence cannot claim the reward ")
441558 else if (if ((100000000 > UserStakedTokenAmount))
442559 then ((1440 * minStakeBlock) > UserLastStakeBlockValue)
443560 else false)
444561 then throw("You have to Stake ASIMI Token to claim reward ")
445562 else if (if ((height > (PrizeHeight + ActualDelay)))
446563 then (UserPushValue >= HighestPushValue)
447564 else false)
448- then ScriptResult(WriteSet([DataEntry(PrizeWinner, PrizeAmount), DataEntry("FundBox", 0), DataEntry("HighestPush", 0), DataEntry(UserPush, 0), DataEntry("HighestPushAddress", ""), 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)]))
449- else throw("You have to deposit 100 GovernToken to claim Reward and/or wait till countown is finished")
565+ then if ((UserRefsNumValue >= minref))
566+ then ScriptResult(WriteSet([DataEntry(PrizeWinner, PrizeAmount), DataEntry("FundBox", 0), DataEntry("HighestPush", 0), DataEntry(UserPush, 0), DataEntry("HighestPushAddress", ""), 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)]))
567+ else throw("You have to have 10 referrals already staking for a minimum of 10 days to Claim the prize")
568+ else throw("You have to be the user with the highest Push and wait till countown is finished, to claim Reward")
569+ }
570+
571+
572+
573+@Callable(i)
574+func Addmentor (Mentor) = {
575+ let StakedToken = base58'DEjmrvdViZH7trtuAqaKQFjNjfbK6D7yMHm18UQ8Hj21'
576+ let GovernToken = base58'27RauQwTvdbcPqeFkzoTf5WPt3HtEAmRDVxprWUNp6bA'
577+ let UserMentorAddress = (toBase58String(i.caller.bytes) + "_Mentor")
578+ if ((Mentor != ""))
579+ then WriteSet([DataEntry(UserMentorAddress, Mentor)])
580+ else throw("Mentor's Address cannot be empty")
450581 }
451582
452583

github/deemru/w8io/873ac7e 
86.73 ms