Overview
VeELTA is the vote-escrowed staking contract. Users lock ELTA for a chosen duration to receive veELTA, which grants governance voting power and a share of protocol rewards. Longer locks yield more weight.
Key Functions
Read
| Function | Returns | Description |
|---|---|---|
balanceOf(address account) | uint256 | Current veELTA balance (decays over time) |
locked(address account) | LockedBalance | Lock amount and unlock timestamp |
totalSupply() | uint256 | Total veELTA supply |
getVotes(address account) | uint256 | Governance voting power |
getPastVotes(address account, uint256 timepoint) | uint256 | Historical voting power |
Write
| Function | Access | Description |
|---|---|---|
lock(uint256 amount, uint256 unlockTime) | User | Lock ELTA to mint veELTA |
increaseAmount(uint256 amount) | User | Add more ELTA to existing lock |
increaseUnlockTime(uint256 newUnlockTime) | User | Extend lock duration |
withdraw() | User | Withdraw ELTA after lock expires |
delegate(address delegatee) | User | Delegate voting power |
LockedBalance Struct
Weight Decay
veELTA balance decays linearly from lock time to unlock time: Maximum lock duration is 4 years, yielding 1:1 veELTA per ELTA.Events
| Event | Emitted When |
|---|---|
Locked(address account, uint256 amount, uint256 unlockTime) | New lock created |
AmountIncreased(address account, uint256 amount) | Lock amount increased |
UnlockTimeExtended(address account, uint256 newUnlockTime) | Lock extended |
Withdrawn(address account, uint256 amount) | ELTA withdrawn after expiry |
DelegateChanged(address delegator, address delegatee) | Voting power delegated |