Voting and Earning Rewards

This guide describes the process of voting for pools and claiming voting rewards

The ve(3,3) model in the Spectra protocol promotes long-term engagement by letting users lock APW for veAPW, which provide governance power over protocol decisions, including voting for liquidity pools.

The voting mechanism enables efficient allocation of liquidity, rewarding both liquidity providers for their contributions and voters with a say in reward distribution. It results in a more stable protocol, motivated participants, and optimized rewards for committed stakeholders.

Step by Step

1. Lock APW for veAPW

Create a veAPW lock for an APW amount of your choice and a duration of up to 2 years. Refer to Locking APW for veAPW guide for more details.

2. Find a pool to vote for

  1. Pools are each identified by a unique ID, that can be obtained from GovernanceRegistry's getPoolId() function.

  2. Get the list of all dentifiers of pools that have associated voting rewards, using Voter's getAllPoolIds().

  3. Verify that voting is not currently banned for a given _poolId using Voter's isVoteAuthorized(_poolId).

  4. Vote for the desired pools, specifying the weights, using Voter's vote().

If the identifier of a pool is not returned by getAllPoolIds(), voting rewards can be deployed for it. See Voter's createVotingRewards().

User voting weights do not automatically update when voting power increases or decays. They can be updated using Voter's poke().

User vote can be reset using Voter's reset().

3. Find out about available rewards tokens for each pool

Fees and Bribes voting rewards can vary among pools.

  1. FeesVotingReward and BribeVotingReward contracts associated with a given pool can be fetched respectively using Voter's poolToFees() and poolToBribe().

  2. The list of all reward tokens for a given FeeVotingReward or BribeVotingReward can be fetched using getAllRewards() getter, which takes an index comprised between 0 and VotingReward's rewardsListLength().

  3. Earned rewards for a given user and a specific reward token can be fetched using VotingReward's earned().

4. Claim voting rewards

Each week, voting rewards for the previous week can be claimed.

Claim voting rewards for a specific list of pools and specific lists of bribes and fees reward token, using Voter's claimPoolsVotingRewards().

Bribes and fees rewards can also be claimed separately using claimBribes() and claimFees().

Last updated