Rewards and epochs
Rewards accrue continuously, but lock eligibility is organized by epochs.
Ark uses lazy accounting. The frontend can show pending rewards at any time, but the chain only updates stored balances when someone interacts.
Reward Lanes
The genesis reward pool is 80,000 ARK. It is streamed over 200 days, with 34% assigned to boarded positions and 66% assigned to locks. Fee routes can also add more rewards.
Base Rewards For Boarded Positions
Boarded positions earn ARK through a global reward-per-boarded-token index:
rewardPerActiveBoarded. Each position stores the index it has already been
paid against.
pending = accrued[position]
+ activeBoardedAmount[position]
* (rewardPerActiveBoarded - paid[position])
/ 1e18
Before boarding, exiting, claiming, or compounding changes a position, the Vault syncs the global index and settles the affected position. This prevents a new boarder from receiving rewards that accrued before they boarded.
Locked Rewards
Locks can earn two assets: ARK and WETH-accounted rewards. WETH-accounted rewards are normally paid as native ETH. If the receiver rejects native ETH, the Vault falls back to WETH.
ARK rewards
The locked ARK stream and ARK-denominated fee routes update rewardPerLocked.
ETH rewards
WETH hook-fee routes update rewardPerLockedWeth, then pay as native ETH
by default.
A lock is active for rewards only between its scheduled start epoch and its maturity epoch. Once it matures, rewards are capped at the maturity snapshot and no longer increase.
What Epochs Do
An epoch is not a once-per-day reward payment. Rewards stream through indexes over time. Epochs are used by the lock system to group activation and maturity boundaries so the contract can account for locks without looping over every lock on every block.
timeline
title Lock reward timeline
Lock created : amount enters activeTotalLocked
Next epoch : amount enters rewardActiveTotalLocked
During lock : ARK and WETH indexes accrue
Maturity epoch : reward indexes are snapshotted
Unlock : principal plus settled rewards return
Claim, Compound, Or Unlock
Claiming is useful before a position or lock is finished. It harvests pending rewards while leaving principal in place. For a fully mature lock, unlocking already pays the principal and any remaining rewards, so a separate claim is usually unnecessary.
Locked compounding is intentionally limited to immature locks. compoundLocked
creates a new lock from pending ARK rewards. After maturity, the lock has stopped
earning, so the protocol expects the user to unlock instead.
Clear Examples
Boarded Position
A user boards 100 ARK. Later the position shows 100 ARK boarded and 4 ARK pending. Claim sends the 4 ARK to the wallet. Compound adds the 4 ARK into the same boarded position. Exit handles the 100 ARK principal, net of any active exit fee, and also pays any settled pending rewards.
Lock
A user locks 100 ARK. The lock receives lARK and an lARK Pass. It earns from the locked reward lane until maturity. Before maturity, the user can claim or compound ARK rewards. At maturity, unlock returns principal plus remaining ARK and ETH/WETH rewards.