Staking RO0T
Deposit RO0T, receive a stream of WHYPE. No minimum, a 24-hour cooldown to leave, nothing to vote on.
What staking means here
Staking is depositing your RO0T into the Ro0tStaking contract so that it counts you as a recipient of fee income. Your tokens stay yours; leaving takes a request and a 24-hour wait (see Unstaking below). While they are deposited, you receive a share of every WHYPE the contract is given, proportional to your share of everything staked.
There is no minimum, no penalty, and no governance; the only friction is the 24-hour unstake cooldown. The contract has no owner and no pause. The only privileged calls are two one-time setup functions used at the RO0T launch.
How to stake
- 1Get RO0T
Buy it on /ro0t (Trade tab) or on HyperSwap. See How to buy RO0T.
- 2Open the Stake tab
On /ro0t, choose Stake. You see the totals for the whole contract (staked, received, claimed, parked) and your own balances (staked, earned WHYPE, earned bonus RO0T).
- 3Stake (two confirmations the first time)
Enter an amount and press Stake. RO0T is a standard ERC-20, so the very first time your wallet asks twice: first to let the staking contract move your RO0T (one time, unlimited, never again), then for the stake itself, which the page sends automatically as soon as the first confirms. From the second stake on it is a single confirmation. A dialog confirms the result.
- 4Stake
Press Stake and sign. Your RO0T moves into the contract and you start earning from the next second.
Where the rewards come from and how they arrive
- Every init trade pays fees into the
FeeSplitter. The staker share (40% of the gateway fee, 35% of HYPE-side pool fees, 60% of guard surcharges, 100% of forfeited escrows) accumulates in a bucket calledstakerPending. - Anyone calls
flushStaking(): the operator console at/opshas a button for it, and any wallet can call it from an explorer. It hands the bucket toRo0tStaking.notifyRewardAmount. Only a FeeSplitter registered in the ro0t registry may call that function, and a flush must be at least 0.05 WHYPE unless an hour has passed since the last one, so nobody can spam tiny notifications. - The staking contract does not pay the amount out at once. It streams it evenly over the next 7 days. Each second, the amount released is divided among stakers in proportion to their stake.
- When a new flush arrives mid-stream, the undistributed remainder of the old stream and the new amount are added together and streamed over a fresh 7 days. Nothing is lost; the payout is just spread a little further. Leftover wei from integer division is carried into the next stream.
- The RO0T/WHYPE pool's own fees follow the same path:
Ro0tLocker.collect()sends the WHYPE side to staking and burns the RO0T side.
pendingPot: when nobody is staked
If the contract receives WHYPE while total staked is zero (for example before the RO0T launch, or if everyone unstakes), it cannot stream to anyone. It parks the amount in pendingPot and stops the clock. The next stake, whoever makes it, starts a 7 day stream of the entire pot. If everyone unstakes in the middle of a stream, the undistributed remainder goes back into the pot the same way. The Stake tab shows the pot as "parked".
Claiming
Press Claim on the Stake tab. One transaction pays out two things: your earned WHYPE and, during the first year, your earned bootstrap RO0T bonus. Both land in the wallet that staked. WHYPE is the wrapped ERC-20 form of HYPE; unwrap it whenever you like.
Rewards do not expire and do not need to be claimed before unstaking. Unclaimed rewards keep sitting in your balance; claiming later pays the same amount.
Unstaking: a 24-hour cooldown
Unstaking takes two steps, the same way HyperSwap's $SWAP staking works.
- 1Request
Enter an amount and press Request unstake. From that moment the amount stops earning rewards and a 24-hour timer starts. Your other staked RO0T keeps earning as before.
- 2Wait 24 hours
The Stake tab shows the pending amount and the exact time it becomes ready. You can still stake more in the meantime; that does not touch the timer. If you request again, the new amount is added to the pending amount and the timer restarts from that moment for the whole pending amount.
- 3Withdraw
After the timer, press Withdraw. The RO0T is transferred back to your wallet. Changed your mind? Press Cancel at any point and the pending amount goes straight back to earning, no transfer, no fee.
Monday 10:00 you request 1,000 RO0T. Your reward share drops to 3,000 immediately. Monday 14:00 you request another 500: pending becomes 1,500 and the timer now ends Tuesday 14:00, not Tuesday 10:00. Tuesday 14:00 you press Withdraw and receive 1,500 RO0T. Rewards earned before each request stay yours; press Claim to collect them whenever you like.
Why a cooldown at all? Not for security: rewards stream evenly over 7 days, so there is no moment worth jumping in and out for. It is there so that staked supply is genuinely out of the market for at least a day, which makes the staking number on the RO0T page mean something and slows a rush for the exit.
The bootstrap bonus stream
For the first 12 months after the RO0T launch, stakers also receive RO0T from the bootstrap allocation. It is released by the rule emitted = min(100M, k × WHYPE streamed to stakers since TGE), so it grows only when fee income grows, and it is streamed over 7 days exactly like WHYPE, with its own parked pot when nobody is staked. The Stake tab shows "bonus" balances separately. Details and the k rule are on RO0T token.
10,000,000 RO0T are staked in total. You stake 1,000,000, which is 10%.
On Monday a flush of 3.5 WHYPE arrives. It streams at 0.5 WHYPE per day for 7 days. Your share is 0.05 WHYPE per day.
On Thursday you claim: about 0.15 WHYPE. That evening another flush of 1.4 WHYPE arrives. The contract adds the remaining 2.0 WHYPE of the first stream to it and streams 3.4 WHYPE over a new 7 days, 0.4857 per day; your share becomes 0.04857 per day.
Saturday you unstake everything. You get 1,000,000 RO0T back immediately and can still claim the roughly 0.097 WHYPE you earned Thursday to Saturday whenever you like.
Numbers on the Stake tab and what they mean
| Label | Contract value | Meaning |
|---|---|---|
| staked | totalStaked | All RO0T deposited by everyone |
| your stake | balanceOf(you) | Your deposited RO0T |
| received · claimed | totalReceived, totalClaimed | Lifetime WHYPE that entered the contract, and lifetime WHYPE paid out |
| parked (pendingPot) | pendingPot | WHYPE waiting for the first staker |
| earned | earned(you) | WHYPE you can claim right now |
| bonus | bonusEarned(you) | Bootstrap RO0T you can claim right now |
| period ends | periodFinish | When the current 7 day stream runs out unless a new flush extends it |
Staked RO0T is still exposed to RO0T's price. Fee income is paid in WHYPE and does not depend on RO0T's price, but the value of what you staked does. Read the risks on RO0T token before staking.
Next: Fees, exactly →