tx · 8bZ1dh6Ls1XuPeFFJtvrdUNrGNH8R2nMfMDdiQHXx8EP

3PMf35RXPcJWV7uSmaTMHk8PbEaJyBfsaYE:  -0.01440000 Waves

2021.03.27 11:22 [2520546] smart account 3PMf35RXPcJWV7uSmaTMHk8PbEaJyBfsaYE > SELF 0.00000000 Waves

{ "type": 13, "id": "8bZ1dh6Ls1XuPeFFJtvrdUNrGNH8R2nMfMDdiQHXx8EP", "fee": 1440000, "feeAssetId": null, "timestamp": 1616833332623, "version": 2, "chainId": 87, "sender": "3PMf35RXPcJWV7uSmaTMHk8PbEaJyBfsaYE", "senderPublicKey": "FFDorDp8bC9dyUK2w8hYPWPVEcbbk9zYkpHn3gcq9svn", "proofs": [ "2tPovL59vwh3K4dg5QApj9EaRNaA2D43k2qTMvavhf1pc5pHcCFiVhwb1KWRUu53yAs5aHRFCCcxYUYVeXS3HLEp" ], "script": "base64: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aWwEAAAAA3R4dAMJAABmAAAAAgUAAAAQSGlnaGVzdFB1c2hWYWx1ZQAAAAAAAAAAAAIAAABPWW91IGNhbm5vdCBQdXNoIGFmdGVyIHJld2FyZGluZyBQcml6ZSBhbmQgYmVmb3JlIE9uZSBkYXkgaGFzIHBhc3NlZCBhZnRlciBhd2FyZAIAAAAQVW5leHBlY3RlZCBlcnJvcgkAAAIAAAABBQAAAAN0eHQJAAACAAAAAQIAAABOWW91IGNhbm5vdCBwdXNoIGJlZm9yZSB0aGUgcmV3YXJkIGlzIHVubG9ja2VkLCBubyByZXdhcmQgaGFzIGJlZW4gZGV0ZWN0ZWQgeWV0CQAAAgAAAAECAAAAQ1lvdXIgcHVzaCBpbiB0cm9pa2FuIHRva2VuLCBzaG91bGQgYmUgSGlnaGVyIHRoYW4gbGFzdCBIaWdoZXN0IFB1c2gJAAACAAAAAQIAAABYVG8gYmUgYWJsZSB0byBwYXJ0aWNpcGF0ZSBpbiBQdXNoaW5nIGZvciB0aGUgcmV3YXJkIHlvdSBuZWVkIHRvIFN0YWtlIEFTSU1JcyBpbiB0aGUgZEFwcAkAAAIAAAABAgAAADVZb3UgaGF2ZSB0byB3YWl0IDEwbWluIGJlZm9yZSB5b3UgY2FuIG1ha2UgYSBuZXcgUHVzaAkAAAIAAAABCQABLAAAAAICAAAAOllvdXIgUHVzaCBkb3Qgbm90IGNvbXBseSBvbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOiACAAAAXTEuIFBvc2l0aXZlIFZhbHVlIGZvciBQdXNoIGluIFRyb2lrYW4gVG9rZQogMi4gTXVzdCBTdGFrZWQgQVNJTUkgVG9rZW4gZm9yIGEgbWluaW11bSBvZiB3ZWVrIAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAB2Q2FuIGRlcG9zaXQgb25seSBwb3NpdGl2ZSBhbW91bnRzIG9mIFRyb2lrYW4gVG9rZW4sIG9yIENoZWNrIHlvdXIgV2FsbGV0IGJhbGFuY2UgaW4gVHJvaWthLCB5b3Ugc2hvdWxkIGhhdmUgbW9yZSB0aGFuIAkAAaQAAAABBQAAABBIaWdoZXN0UHVzaFZhbHVlAgAAAAggdG8gcHVzaAkAAAIAAAABAgAAAKRZb3UgZG8gbm90IGhhdmUgZW5vdWdoIFRyb2lrYW4gVG9rZW5zIGluIHlvdXIgV2FsbGV0IEJhbGFuY2UsIFBsZWFzZSBIYXJ2ZXN0IGlmIHlvdSBoYXZlIGVhcm5lZCBUcm9pa2FuIHdhbGxldCBvciB0cmFuc2ZlciB0byB5b3VyIHdhbGxldCBuZWNlc3NhcnkgVHJvaWthbiBhbW91bnQgIQAAAAFpAQAAAAVTdGFrZQAAAAAEAAAAC1N0YWtlZFRva2VuAQAAACDJ87corWdBF00yBjV0LGSEbO+I4qSbJ8cU6qkf0I2fVAQAAAALR292ZXJuVG9rZW4BAAAAILaKRSB1rUd8d97dJwjKWv3ewXb6FGo0UDf32gwrBHkwBAAAAANwbXQJAQAAAAdleHRyYWN0AAAAAQgFAAAAAWkAAAAHcGF5bWVudAMDCQAAZgAAAAIIBQAAAANwbXQAAAAGYW1vdW50AAAAAAAAAAAACQAAAAAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAALU3Rha2VkVG9rZW4HBAAAAB9Hb3Zlcm5Ub2tlblNtYXJ0Q29udHJhY3RCYWxhbmNlCQAD6wAAAAIFAAAABHRoaXMFAAAAC0dvdmVyblRva2VuBAAAAAdVc2VyQVBZCQABLAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwIAAAAEX0FQWQQAAAASVXNlclN0YWtlZFRva2VuS2V5CQABLAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwIAAAAIX1N0YWtpbmcEAAAAElVzZXJHb3Zlcm5Ub2tlbktleQkAASwAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMCAAAACV9FYXJuaW5ncwQAAAASVXNlckxhc3RTdGFrZUJsb2NrCQABLAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwIAAAATX1VzZXJMYXN0U3Rha2VCbG9jawQAAAAYVXNlclN0YWtlVHJhbnNhY3Rpb25zS2V5CQABLAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwIAAAATX1N0YWtlZFRyYW5zYWN0aW9ucwQAAAANQWRkcmVzc0hlaWdodAkAASwAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMCAAAADF9Qcml6ZUhlaWdodAQAAAAVVXNlclN0YWtlVHJhbnNhY3Rpb25zBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAGFVzZXJTdGFrZVRyYW5zYWN0aW9uc0tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABdVc2VyTGFzdFN0YWtlQmxvY2tWYWx1ZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAABJVc2VyTGFzdFN0YWtlQmxvY2sDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAaVXNlckxhc3RTdGFrZUJsb2NrTmV3VmFsdWUDCQAAAAAAAAIFAAAAF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlAAAAAAAAAAAABQAAAAZoZWlnaHQFAAAAF1VzZXJMYXN0U3Rha2VCbG9ja1ZhbHVlBAAAABhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAABkAAAAAgUAAAAVVXNlclN0YWtlVHJhbnNhY3Rpb25zAAAAAAAAAAABBAAAABhjdXJyZW50QW1vdW50U3Rha2VkVG9rZW4EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAASVXNlclN0YWtlZFRva2VuS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFG5ld0Ftb3VudFN0YWtlZFRva2VuCQAAZAAAAAIFAAAAGGN1cnJlbnRBbW91bnRTdGFrZWRUb2tlbggFAAAAA3BtdAAAAAZhbW91bnQEAAAAGkNvbnRyYWN0V2FsbGV0U3Rha2VCYWxhbmNlCQAD6wAAAAIFAAAABHRoaXMFAAAAC1N0YWtlZFRva2VuBAAAAAxTdGFrZUJhbGFuY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwIAAAAMU3Rha2VCYWxhbmNlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAElN0YWtlQmFsYW5jZUFtb3VudAkAAGQAAAACBQAAAAxTdGFrZUJhbGFuY2UIBQAAAANwbXQAAAAGYW1vdW50BAAAAAtQcml6ZUFtb3VudAkAAGUAAAACBQAAABpDb250cmFjdFdhbGxldFN0YWtlQmFsYW5jZQUAAAAMU3Rha2VCYWxhbmNlBAAAABhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAASVXNlckdvdmVyblRva2VuS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAFUhlaWdodFRyYW5zYWN0RnVuZEJveAQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzAgAAAAtQcml6ZUhlaWdodAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABBQcml6ZUhlaWdodFZhbHVlAwMJAAAAAAAAAgUAAAAVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAAAAAAAAAACQAAAAAAAAIFAAAAC1ByaXplQW1vdW50AAAAAAAAAAAABwAAAAAAAAAAAAMDCQAAAAAAAAIFAAAAFUhlaWdodFRyYW5zYWN0RnVuZEJveAAAAAAAAAAAAAkBAAAAAiE9AAAAAgUAAAALUHJpemVBbW91bnQAAAAAAAAAAAAHBQAAAAZoZWlnaHQDAwkBAAAAAiE9AAAAAgUAAAAVSGVpZ2h0VHJhbnNhY3RGdW5kQm94AAAAAAAAAAAACQEAAAACIT0AAAACBQAAAAtQcml6ZUFtb3VudAAAAAAAAAAAAAcFAAAAFUhlaWdodFRyYW5zYWN0RnVuZEJveAAAAAAAAAAAAAMJAABmAAAAAgAAAAAABfXhAAUAAAAfR292ZXJuVG9rZW5TbWFydENvbnRyYWN0QmFsYW5jZQkAAAIAAAABAgAAAD5ObyBlbm91Z2ggR292ZXJuVG9rZW4gSW4gQ29udHJhY3QsIFBsZWFzZSBkZXBvc2l0IEdvdmVyblRva2VucwQAAAAGUmV3YXJkAwkAAAAAAAACBQAAAAxTdGFrZUJhbGFuY2UAAAAAAAAAAAAAAAAAAAAAJxADCQAAZgAAAAIFAAAAGE5ld1VzZXJTdGFrZVRyYW5zYWN0aW9ucwAAAAAAAAAACgkAAGgAAAACCQAAaAAAAAIAAAAAAAAAJxAFAAAAGE5ld1VzZXJTdGFrZVRyYW5zYWN0aW9ucwkAAGQAAAACAAAAAAAAAAABCQAAaQAAAAIFAAAAFG5ld0Ftb3VudFN0YWtlZFRva2VuBQAAAAxTdGFrZUJhbGFuY2UJAABoAAAAAgAAAAAAAAAnEAkAAGQAAAACAAAAAAAAAAABCQAAaQAAAAIFAAAAFG5ld0Ftb3VudFN0YWtlZFRva2VuBQAAAAxTdGFrZUJhbGFuY2UEAAAADFVzZXJBUFlWYWx1ZQMJAABmAAAAAgUAAAAYY3VycmVudEFtb3VudEdvdmVyblRva2VuAAAAAAAAAAAACQAAaQAAAAIJAABoAAAAAgAAAAAAAAAAZAUAAAAGUmV3YXJkBQAAABhjdXJyZW50QW1vdW50R292ZXJuVG9rZW4AAAAAAAAAAAAEAAAAFG5ld0Ftb3VudEdvdmVyblRva2VuCQAAZAAAAAIFAAAAGGN1cnJlbnRBbW91bnRHb3Zlcm5Ub2tlbgUAAAAGUmV3YXJkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASVXNlckdvdmVyblRva2VuS2V5BQAAABRuZXdBbW91bnRHb3Zlcm5Ub2tlbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAASVXNlclN0YWtlZFRva2VuS2V5BQAAABRuZXdBbW91bnRTdGFrZWRUb2tlbgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAYVXNlclN0YWtlVHJhbnNhY3Rpb25zS2V5BQAAABhOZXdVc2VyU3Rha2VUcmFuc2FjdGlvbnMJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAADFN0YWtlQmFsYW5jZQUAAAASU3Rha2VCYWxhbmNlQW1vdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkA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", "height": 2520546, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BMw7DTsfCx3ohgN4sDq2BEv2jFWcmrfFTqZqbf67B7YC Next: 4AiRMiSSAh6XsMDEVbHDenGYvmTbMA3MPSEP1o5WQ9ja Diff:
OldNewDifferences
148148 else throw(("Your Push dot not comply one of the following conditions: " + "1. Positive Value for Push in Troikan Toke
149149 2. Must Staked ASIMI Token for a minimum of week "))
150150 }
151- else throw((("Can deposit only positive amounts of Troikan Token, or Check your Wallet balance in Troika, you should have more than " + toString((HighestPushValue / 100000000))) + " to push"))
151+ 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"))
152152 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 !")
153153 }
154154
507507 }
508508
509509
510+
511+@Callable(i)
512+func Addmentor (mentor) = if ((mentor != ""))
513+ then {
514+ let UserPush = (toBase58String(i.caller.bytes) + "_Mentor")
515+ WriteSet([DataEntry(UserPush, mentor)])
516+ }
517+ else throw("Address should not be empty! Please provide a valid Waves address for your mentor Wallet, make sure this is the same your mentor uses for the TroikaNdApp")
518+
519+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44
55
66 @Callable(i)
77 func DevWithdraw () = {
88 let currentKey = toBase58String(i.caller.bytes)
99 let GovernToken = base58'DHZVHe6JzD61zTwH4ZnHnmo3w7oKGABXwgBt4S8KkzUP'
1010 if ((currentKey == "3P74buHt98BnojFcaREJZtb98KDyUmZGemJ"))
1111 then {
1212 let DevBoxAmount = match getInteger(this, "DevBox") {
1313 case a: Int =>
1414 a
1515 case _ =>
1616 0
1717 }
1818 if ((0 > DevBoxAmount))
1919 then throw("Not enough balance")
2020 else ScriptResult(WriteSet([DataEntry("DevBox", 0)]), TransferSet([ScriptTransfer(i.caller, DevBoxAmount, GovernToken)]))
2121 }
2222 else throw("You cannot withdraw as your are not the Dev.")
2323 }
2424
2525
2626
2727 @Callable(i)
2828 func PushReward () = {
2929 let StakedToken = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
3030 let GovernToken = base58'DHZVHe6JzD61zTwH4ZnHnmo3w7oKGABXwgBt4S8KkzUP'
3131 let minPushBlock = 10
3232 let minStakeBlock = 7
3333 let DelayAfterPush = 20
3434 let userWalletGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
3535 let pmt = extract(i.payment)
3636 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
3737 let UserLastPushOldValue = match getInteger(this, UserPush) {
3838 case a: Int =>
3939 a
4040 case _ =>
4141 0
4242 }
4343 let HighestPushValue = match getInteger(this, "HighestPush") {
4444 case a: Int =>
4545 a
4646 case _ =>
4747 0
4848 }
4949 if ((userWalletGovernBalance > pmt.amount))
5050 then if (if (((pmt.amount + UserLastPushOldValue) > HighestPushValue))
5151 then (pmt.assetId == GovernToken)
5252 else false)
5353 then {
5454 let UserLastPushBlock = (toBase58String(i.caller.bytes) + "_UserLastPushBlock")
5555 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
5656 let UserStake = (toBase58String(i.caller.bytes) + "_Staking")
5757 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
5858 let StakeBalance = match getInteger(this, "StakeBalance") {
5959 case a: Int =>
6060 a
6161 case _ =>
6262 0
6363 }
6464 let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
6565 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
6666 case a: Int =>
6767 a
6868 case _ =>
6969 0
7070 }
7171 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
7272 then (PrizeAmount == 0)
7373 else false)
7474 then 0
7575 else if (if ((HeightTransactFundBox == 0))
7676 then (PrizeAmount != 0)
7777 else false)
7878 then height
7979 else if (if ((HeightTransactFundBox != 0))
8080 then (PrizeAmount != 0)
8181 else false)
8282 then HeightTransactFundBox
8383 else 0
8484 let ActualDelay = match getInteger(this, "Delay") {
8585 case a: Int =>
8686 a
8787 case _ =>
8888 0
8989 }
9090 let NewDelay = (ActualDelay + DelayAfterPush)
9191 let HighestPushAddress = match getInteger(this, "HighestPushAddress") {
9292 case a: Int =>
9393 a
9494 case _ =>
9595 0
9696 }
9797 let UserLastPushBlockValue = match getInteger(this, UserLastPushBlock) {
9898 case a: Int =>
9999 a
100100 case _ =>
101101 0
102102 }
103103 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
104104 case a: Int =>
105105 a
106106 case _ =>
107107 0
108108 }
109109 let UserStakeValue = match getInteger(this, UserStake) {
110110 case a: Int =>
111111 a
112112 case _ =>
113113 0
114114 }
115115 let DevBoxBalance = match getInteger(this, "DevBox") {
116116 case a: Int =>
117117 a
118118 case _ =>
119119 0
120120 }
121121 let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
122122 let UserPushvalue = (pmt.amount + UserLastPushOldValue)
123123 if (if ((UserPushvalue > 0))
124124 then ((height - UserLastStakeBlockValue) > (1440 * minStakeBlock))
125125 else false)
126126 then if (((height - UserLastPushBlockValue) > minPushBlock))
127127 then if ((UserStakeValue > 0))
128128 then if ((UserPushvalue > HighestPushValue))
129129 then if ((PrizeAmount > 0))
130130 then if (if (if (if (((PrizeHeightValue + NewDelay) > height))
131131 then true
132132 else (height > ((PrizeHeightValue + NewDelay) + 1440)))
133133 then (HighestPushValue > 0)
134134 else false)
135135 then true
136136 else (HighestPushValue == 0))
137137 then WriteSet([DataEntry(UserPush, UserPushvalue), DataEntry("HighestPushAddress", toBase58String(i.caller.bytes)), DataEntry("HighestPush", UserPushvalue), DataEntry(UserLastPushBlock, height), DataEntry("PrizeHeight", height), DataEntry("Delay", NewDelay), DataEntry("DevBox", DevBoxAmount)])
138138 else {
139139 let txt = if ((HighestPushValue > 0))
140140 then "You cannot Push after rewarding Prize and before One day has passed after award"
141141 else "Unexpected error"
142142 throw(txt)
143143 }
144144 else throw("You cannot push before the reward is unlocked, no reward has been detected yet")
145145 else throw("Your push in troikan token, should be Higher than last Highest Push")
146146 else throw("To be able to participate in Pushing for the reward you need to Stake ASIMIs in the dApp")
147147 else throw("You have to wait 10min before you can make a new Push")
148148 else throw(("Your Push dot not comply one of the following conditions: " + "1. Positive Value for Push in Troikan Toke
149149 2. Must Staked ASIMI Token for a minimum of week "))
150150 }
151- else throw((("Can deposit only positive amounts of Troikan Token, or Check your Wallet balance in Troika, you should have more than " + toString((HighestPushValue / 100000000))) + " to push"))
151+ 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"))
152152 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 !")
153153 }
154154
155155
156156
157157 @Callable(i)
158158 func Stake () = {
159159 let StakedToken = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
160160 let GovernToken = base58'DHZVHe6JzD61zTwH4ZnHnmo3w7oKGABXwgBt4S8KkzUP'
161161 let pmt = extract(i.payment)
162162 if (if ((pmt.amount > 0))
163163 then (pmt.assetId == StakedToken)
164164 else false)
165165 then {
166166 let GovernTokenSmartContractBalance = assetBalance(this, GovernToken)
167167 let UserAPY = (toBase58String(i.caller.bytes) + "_APY")
168168 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
169169 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
170170 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
171171 let UserStakeTransactionsKey = (toBase58String(i.caller.bytes) + "_StakedTransactions")
172172 let AddressHeight = (toBase58String(i.caller.bytes) + "_PrizeHeight")
173173 let UserStakeTransactions = match getInteger(this, UserStakeTransactionsKey) {
174174 case a: Int =>
175175 a
176176 case _ =>
177177 0
178178 }
179179 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
180180 case a: Int =>
181181 a
182182 case _ =>
183183 0
184184 }
185185 let UserLastStakeBlockNewValue = if ((UserLastStakeBlockValue == 0))
186186 then height
187187 else UserLastStakeBlockValue
188188 let NewUserStakeTransactions = (UserStakeTransactions + 1)
189189 let currentAmountStakedToken = match getInteger(this, UserStakedTokenKey) {
190190 case a: Int =>
191191 a
192192 case _ =>
193193 0
194194 }
195195 let newAmountStakedToken = (currentAmountStakedToken + pmt.amount)
196196 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
197197 let StakeBalance = match getInteger(this, "StakeBalance") {
198198 case a: Int =>
199199 a
200200 case _ =>
201201 0
202202 }
203203 let StakeBalanceAmount = (StakeBalance + pmt.amount)
204204 let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
205205 let currentAmountGovernToken = match getInteger(this, UserGovernTokenKey) {
206206 case a: Int =>
207207 a
208208 case _ =>
209209 0
210210 }
211211 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
212212 case a: Int =>
213213 a
214214 case _ =>
215215 0
216216 }
217217 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
218218 then (PrizeAmount == 0)
219219 else false)
220220 then 0
221221 else if (if ((HeightTransactFundBox == 0))
222222 then (PrizeAmount != 0)
223223 else false)
224224 then height
225225 else if (if ((HeightTransactFundBox != 0))
226226 then (PrizeAmount != 0)
227227 else false)
228228 then HeightTransactFundBox
229229 else 0
230230 if ((100000000 > GovernTokenSmartContractBalance))
231231 then throw("No enough GovernToken In Contract, Please deposit GovernTokens")
232232 else {
233233 let Reward = if ((StakeBalance == 0))
234234 then 10000
235235 else if ((NewUserStakeTransactions > 10))
236236 then ((10000 * NewUserStakeTransactions) * (1 + (newAmountStakedToken / StakeBalance)))
237237 else (10000 * (1 + (newAmountStakedToken / StakeBalance)))
238238 let UserAPYValue = if ((currentAmountGovernToken > 0))
239239 then ((100 * Reward) / currentAmountGovernToken)
240240 else 0
241241 let newAmountGovernToken = (currentAmountGovernToken + Reward)
242242 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, UserLastStakeBlockNewValue)]), TransferSet([ScriptTransfer(i.caller, Reward, GovernToken)]))
243243 }
244244 }
245245 else throw("Can deposit only StakeToken")
246246 }
247247
248248
249249
250250 @Callable(i)
251251 func WithdrawStakedFunds (amount) = {
252252 let StakedToken = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
253253 let GovernToken = base58'DHZVHe6JzD61zTwH4ZnHnmo3w7oKGABXwgBt4S8KkzUP'
254254 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
255255 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
256256 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
257257 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
258258 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
259259 case a: Int =>
260260 a
261261 case _ =>
262262 0
263263 }
264264 let StakeBalance = match getInteger(this, "StakeBalance") {
265265 case a: Int =>
266266 a
267267 case _ =>
268268 0
269269 }
270270 let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
271271 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
272272 case a: Int =>
273273 a
274274 case _ =>
275275 0
276276 }
277277 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
278278 then (PrizeAmount == 0)
279279 else false)
280280 then 0
281281 else if (if ((HeightTransactFundBox == 0))
282282 then (PrizeAmount != 0)
283283 else false)
284284 then height
285285 else if (if ((HeightTransactFundBox != 0))
286286 then (PrizeAmount != 0)
287287 else false)
288288 then HeightTransactFundBox
289289 else 0
290290 let currentKey = toBase58String(i.caller.bytes)
291291 let currentAmount = match getInteger(this, UserStakedTokenKey) {
292292 case a: Int =>
293293 a
294294 case _ =>
295295 0
296296 }
297297 let newAmount = (currentAmount - amount)
298298 let StakeBalanceAmount = (StakeBalance - amount)
299299 let UserLastStakeBlockNewValue = if ((StakeBalanceAmount == 0))
300300 then 0
301301 else UserLastStakeBlockValue
302302 if ((0 > amount))
303303 then throw("Can't withdraw negative amount")
304304 else if ((0 > newAmount))
305305 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
306306 else if ((100000000 > assetBalance(this, GovernToken)))
307307 then throw(("Not enough Troika In Contract: " + toString((assetBalance(this, GovernToken) / 100000000))))
308308 else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, 100000000), DataEntry(UserStakedTokenKey, newAmount), DataEntry("StakeBalance", StakeBalanceAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue), DataEntry(UserLastStakeBlock, UserLastStakeBlockNewValue)]), TransferSet([ScriptTransfer(i.caller, 100000000, GovernToken), ScriptTransfer(i.caller, amount, StakedToken)]))
309309 }
310310
311311
312312
313313 @Callable(i)
314314 func HarvestGovernToiken (amount) = {
315315 let StakedToken = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
316316 let GovernToken = base58'DHZVHe6JzD61zTwH4ZnHnmo3w7oKGABXwgBt4S8KkzUP'
317317 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
318318 let UserGovernTokenKey = (toBase58String(i.caller.bytes) + "_Earnings")
319319 let StakeBalance = match getInteger(this, "StakeBalance") {
320320 case a: Int =>
321321 a
322322 case _ =>
323323 0
324324 }
325325 let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
326326 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
327327 case a: Int =>
328328 a
329329 case _ =>
330330 0
331331 }
332332 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
333333 then (PrizeAmount == 0)
334334 else false)
335335 then 0
336336 else if (if ((HeightTransactFundBox == 0))
337337 then (PrizeAmount != 0)
338338 else false)
339339 then height
340340 else if (if ((HeightTransactFundBox != 0))
341341 then (PrizeAmount != 0)
342342 else false)
343343 then HeightTransactFundBox
344344 else 0
345345 let currentKey = toBase58String(i.caller.bytes)
346346 let currentAmount = match getInteger(this, UserGovernTokenKey) {
347347 case a: Int =>
348348 a
349349 case _ =>
350350 0
351351 }
352352 let newAmount = (currentAmount - amount)
353353 if ((0 > amount))
354354 then throw("Can't withdraw negative amount")
355355 else if ((0 > newAmount))
356356 then throw(("User cannot withdraw more than deposited funds, Your deposit is: " + toString((currentAmount / 100000000))))
357357 else ScriptResult(WriteSet([DataEntry(UserGovernTokenKey, newAmount), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", PrizeHeightValue)]), TransferSet([ScriptTransfer(i.caller, amount, GovernToken)]))
358358 }
359359
360360
361361
362362 @Callable(i)
363363 func delayprize () = {
364364 let StakedToken = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
365365 let GovernToken = base58'DHZVHe6JzD61zTwH4ZnHnmo3w7oKGABXwgBt4S8KkzUP'
366366 let DelayDays = 1
367367 let UserGovernTokenKey = ((toBase58String(i.caller.bytes) + "_") + toBase58String(GovernToken))
368368 let UserWalletSGovernBalance = assetBalance(Address(i.caller.bytes), GovernToken)
369369 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
370370 let StakeBalance = match getInteger(this, "StakeBalance") {
371371 case a: Int =>
372372 a
373373 case _ =>
374374 0
375375 }
376376 let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
377377 let HeightTransactFundBox = match getInteger(this, "PrizeHeight") {
378378 case a: Int =>
379379 a
380380 case _ =>
381381 0
382382 }
383383 let PrizeHeightValue = if (if ((HeightTransactFundBox == 0))
384384 then (PrizeAmount == 0)
385385 else false)
386386 then 0
387387 else if (if ((HeightTransactFundBox == 0))
388388 then (PrizeAmount != 0)
389389 else false)
390390 then height
391391 else if (if ((HeightTransactFundBox != 0))
392392 then (PrizeAmount != 0)
393393 else false)
394394 then HeightTransactFundBox
395395 else 0
396396 let ActualDelay = match getInteger(this, "Delay") {
397397 case a: Int =>
398398 a
399399 case _ =>
400400 0
401401 }
402402 let ActualDelayCost = match getInteger(this, "DelayCost") {
403403 case a: Int =>
404404 a
405405 case _ =>
406406 10
407407 }
408408 let pmt = extract(i.payment)
409409 let DevBoxBalance = match getInteger(this, "DevBox") {
410410 case a: Int =>
411411 a
412412 case _ =>
413413 0
414414 }
415415 if (if (isDefined(pmt.assetId))
416416 then (extract(pmt.assetId) == GovernToken)
417417 else false)
418418 then if ((PrizeAmount > 0))
419419 then {
420420 let UserGovernTokenAmount = pmt.amount
421421 let DevBoxAmount = (DevBoxBalance + ((pmt.amount * 5) / 1000))
422422 let NewDelayCost = if ((ActualDelayCost == 0))
423423 then 1000000000
424424 else (2 * ActualDelayCost)
425425 if ((UserGovernTokenAmount >= NewDelayCost))
426426 then {
427427 let NewDelay = (ActualDelay + (1440 * DelayDays))
428428 WriteSet([DataEntry("Delay", NewDelay), DataEntry("DelayCost", NewDelayCost), DataEntry("FundBox", PrizeAmount), DataEntry("PrizeHeight", height), DataEntry("DevBox", DevBoxAmount)])
429429 }
430430 else throw((("To delay the release of the reward ONE DAY later than expected, you need " + toString(NewDelayCost)) + "TROIKAs"))
431431 }
432432 else throw("You cannot delay the reward before reward is received! Please wait until a reward is available")
433433 else throw("Can Use only Troika Token to Delay Reward")
434434 }
435435
436436
437437
438438 @Callable(i)
439439 func ClaimPrize () = {
440440 let StakedToken = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
441441 let GovernToken = base58'DHZVHe6JzD61zTwH4ZnHnmo3w7oKGABXwgBt4S8KkzUP'
442442 let UserStakedTokenKey = (toBase58String(i.caller.bytes) + "_Staking")
443443 let UserPush = (toBase58String(i.caller.bytes) + "_Push")
444444 let UserLastStakeBlock = (toBase58String(i.caller.bytes) + "_UserLastStakeBlock")
445445 let minStakeBlock = 7
446446 let ContractGovTokenBalance = assetBalance(this, GovernToken)
447447 let ContractWalletStakeBalance = assetBalance(this, StakedToken)
448448 let StakeBalance = match getInteger(this, "StakeBalance") {
449449 case a: Int =>
450450 a
451451 case _ =>
452452 0
453453 }
454454 let PrizeAmount = (ContractWalletStakeBalance - StakeBalance)
455455 let UserPushValue = match getInteger(this, UserPush) {
456456 case a: Int =>
457457 a
458458 case _ =>
459459 0
460460 }
461461 let UserLastStakeBlockValue = match getInteger(this, UserLastStakeBlock) {
462462 case a: Int =>
463463 a
464464 case _ =>
465465 0
466466 }
467467 let UserStakedTokenAmount = match getInteger(this, UserStakedTokenKey) {
468468 case a: Int =>
469469 a
470470 case _ =>
471471 0
472472 }
473473 let ActualDelay = match getInteger(this, "Delay") {
474474 case a: Int =>
475475 a
476476 case _ =>
477477 0
478478 }
479479 let PrizeWinner = getStringValue(this, "HighestPushAddress")
480480 let PrizeHeight = match getInteger(this, "PrizeHeight") {
481481 case a: Int =>
482482 a
483483 case _ =>
484484 0
485485 }
486486 let HighestPushValue = match getInteger(this, "HighestPush") {
487487 case a: Int =>
488488 a
489489 case _ =>
490490 0
491491 }
492492 if (if ((PrizeAmount == 0))
493493 then true
494494 else (10000000000 > ContractGovTokenBalance))
495495 then throw("No prize to Claim or Not enough Govern Token en Contract (Min 100 Troika)")
496496 else if ((toBase58String(i.caller.bytes) != PrizeWinner))
497497 then throw("You are not the winner hence cannot claim the reward ")
498498 else if (if ((100000000 > UserStakedTokenAmount))
499499 then ((1440 * minStakeBlock) > UserLastStakeBlockValue)
500500 else false)
501501 then throw("You have to Stake ASIMI Token to claim reward ")
502502 else if (if ((height > (PrizeHeight + ActualDelay)))
503503 then (UserPushValue >= HighestPushValue)
504504 else false)
505505 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)]))
506506 else throw("You have to deposit 100 GovernToken to claim Reward and/or wait till countown is finished")
507507 }
508508
509509
510+
511+@Callable(i)
512+func Addmentor (mentor) = if ((mentor != ""))
513+ then {
514+ let UserPush = (toBase58String(i.caller.bytes) + "_Mentor")
515+ WriteSet([DataEntry(UserPush, mentor)])
516+ }
517+ else throw("Address should not be empty! Please provide a valid Waves address for your mentor Wallet, make sure this is the same your mentor uses for the TroikaNdApp")
518+
519+

github/deemru/w8io/873ac7e 
76.91 ms