Staking & discounts
GenesisStaking is one stake pool for the whole network. It accepts HYPE, and GENESIS after launch.
What stake does
| Purpose | HYPE stake | GENESIS stake |
|---|---|---|
| Keeper eligibility | Counts toward the HYPE minimum | Counts toward the (lower) GENESIS minimum |
| VRF operator eligibility | Counts toward the HYPE minimum | Counts toward the (lower) GENESIS minimum |
| Fee discounts | No | Yes |
Stake is slashable while it's active and while it's unbonding.
Discount tiers
| Staked GENESIS | Discount |
|---|---|
| 75,000 | 10% |
| 500,000 | 25% |
| 1,700,000 | 40% |
These are the defaults. The owner can change thresholds and discounts at any time, up to a maximum of 90% off:
TIER_STAKES=75000,500000,1700000 TIER_DISCOUNTS_BPS=1000,2500,4000 npm run pricing:elysiumThe same script changes how much cheaper GENESIS is than HYPE (GENESIS_PAYMENT_DISCOUNT_BPS, default 1000 = 10%). The discount applies to:
- VRF and Fair Selection fees, in either token
- The keeper premium on upkeeps you administer
Discounts are based on stake, not wallet balance, so they can't be borrowed with a flash loan.
Staking
await client.stake(genesisToken, parseEther("1000")); // approves first if needed
await client.staking.requestUnbond(genesisToken, parseEther("1000"));
// after the unbonding period (7 days by default on Elysium):
await client.staking.withdraw(genesisToken);staking.stake{value: 1 ether}(address(0), 1 ether); // HYPE
staking.stake(genesisToken, 1000e18); // GENESIS, approve firstUnbonding stake stops counting immediately.
Sharing your tier
A staker can sponsor up to 10 other accounts, typically bots or contracts they run, so those accounts get the same tier:
feeManager.sponsor(myBot);
feeManager.unsponsor(myBot);Slashing
The staking owner, or an approved slasher contract, can slash slash(account, token, amount, recipient). Active stake is taken first, then unbonding stake.