Overview
RewardsDistributor handles protocol-wide reward distribution. Stakers who lock ELTA as veELTA or in the StakeVault earn a share of protocol fees proportional to their voting weight.
Key Functions
Read
| Function | Returns | Description |
|---|---|---|
earned(address account) | uint256 | Unclaimed rewards |
rewardRate() | uint256 | Current reward emission rate |
totalWeight() | uint256 | Total voting weight of all stakers |
weightOf(address account) | uint256 | Voting weight for an account |
lastDistribution() | uint256 | Timestamp of last distribution |
Write
| Function | Access | Description |
|---|---|---|
claim() | Staker | Claim accrued rewards |
distribute(uint256 amount) | FeeManager | Push new rewards into the pool |
notifyWeightChange(address account) | VeELTA / StakeVault | Update weight on lock/unlock |
Reward Mechanics
- Fees flow from
FeeManager→RewardsDistributor - Rewards accrue per-second based on each staker’s weight
- Weight comes from
VeELTA(time-locked ELTA) andStakeVault - Stakers call
claim()at any time to collect
Events
| Event | Emitted When |
|---|---|
RewardDistributed(uint256 amount) | New rewards added to pool |
RewardClaimed(address account, uint256 amount) | Staker claims rewards |
WeightUpdated(address account, uint256 newWeight) | Staker weight changed |