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

27,200ARK base reward budget
52,800ARK locked reward budget
200 daysgenesis stream duration

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
          
Production parameters: locks last 40 days and use a one-block maturity epoch, so mature locks stop earning without a long rounding window.

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.