Staking and Rewards
IOTA uses a Delegated Proof-of-Stake (DPoS) system, where validators get their voting power from IOTA token holders who delegate their stakes to them. When rewards are distributed at the end of each epoch, validators receive their rewards based on their performance and commission rate. The rewards automatically increase as validators' staking pools receive new delegated stakes.
Staking on IOTA vs. Other Blockchains
The IOTA staking mechanism has some unique features compared to other blockchains:
Self-custodial Staking
Stakers keep their staked IOTA tokens in their own account.
Auto-compounding Rewards
Rewards automatically reinvest due to a liquidity-pool-inspired design.
Staking Timing
When a user stakes with a validator, their stake counts towards the validator's voting power starting from the next epoch. Similarly, when a user withdraws their stake, it stops counting from the next epoch.
Validator staking pool requirements
There are minimum staking requirements a validator must satisfy to become active and to stay in the active validator set.
More precisely:
- A validator candidate must accrue at least 2M IOTA of stake before they can request to join the validator set.
- If an active validator’s stake falls below 1.5M IOTA, they have seven epochs of grace period to gain back the stake before being removed from the validator set.
- If an active validator’s stake falls below 1M IOTA, they are removed from the validator set at the end of the current epoch boundary. IOTA uses 24-hour epochs.
Rewards Distribution
At the end of each epoch, newly minted IOTA tokens are distributed as rewards among validators and stakers. Within each validator staking pool, stakers receive rewards proportionally through the appreciation of the pool's exchange rate. Validators also earn additional rewards, represented as StakedIOTA objects, which they receive at the end of each epoch in proportion to the commissions generated by their staking pool.
Each epoch's rewards are funded by newly minted IOTA tokens, totaling 767k IOTA per epoch. This amount is distributed across staking pools based on their voting power and the specified tallying rule. The amount of rewards a validator gets depends on:
Performance
If a validator underperforms, other validators can report them, causing the reported validator to lose all their rewards for that epoch.
Commission Rate
This is the percentage a validator takes from their stakers' rewards. For example, if a validator's commission rate is 10%, they take 10% of the rewards each epoch as new stake objects.
Rewards Withdrawal
Validators receive rewards as regular stake objects, so they withdraw their staking rewards the same way as stakers.
Validators can call
the 0x3::iota_system::request_withdraw_stake
function to withdraw their stake and receive their rewards.