- Can swap tokens through the Protocol DEX.
- Can provide liquidity.
- Can create a Normal veNFT.
- Can deposit AERO into an existing Normal veNFT.
- Can poke the balance of an existing veNFT to sync the balance.
- Can bribe a liquidity pool through its' linked BribeVotingRewards contract.
- Can skim a stable or volatile liquidity pool to rebalance the reserves.
- Can sync a liquidity pool to record historical price
- Can trigger the emission of AERO at the start of an epoch
- Can create a liquidity pool with two different ERC20 tokens if the pool is not already created
- Can create a gauge for the liquidity pool if the gauge is not already created and the tokens are whitelisted
- Can deposit their LP token into the Protocol gauge linked to the liquidity pool
- Earns AERO emissions
- For a detailed breakdown refer to VOTINGESCROW.md
- Can approve/revoke an address to modify the veNFT
- Can transfer ownership of the veNFT
- Can increase amount locked
- Can vote weekly on pool(s)
- Earns bribes and trading fees
- Earns weekly distribution of AERO rebases
- Can vote on ProtocolGovernor proposals
- Can vote on EpochGovernor proposals
- Can withdraw the normal veNFT
- Can convert to/from Permanent state
- Can increase the lock time
- Can split the veNFT
- Can merge the veNFT
- Can delegate voting power
- Can only withdraw their Locked veNFT from a Managed veNFT
Multisig at 0xE6A41fE61E7a1996B59d508661e3f524d6A32075
Multisig at 0x99249b10593fCa1Ae9DAE6D4819F1A6dae5C013D
Protocol team at deployment of ProtocolGovernor. At a later date, this role will be renounced.
At first deployment, team. At a later date, this will be set to a lightly modified Governor contract from OpenZeppelin, ProtocolGovernor.
At first deployment, team. Before the tail rate of emissions is reached, this will be set to EpochGovernor.
At first deployment, team. This role will likely be given to a contract so that it can create managed nfts (e.g. for autocompounders etc)
Protocol team
Protocol team
Protocol team
This is an exhaustive list of all admin permissions in the protocol, sorted by the contract they are stored in.
- Pauser
- Controls pause state of swaps on UniswapV2 pools created by this factory. Users are still freely able to add/remove liquidity
- Can set Pauser role
- FeeManager
- Controls default and custom fees for stable / volatile pools.
- Owner
- Can approve / unapprove new pool / gauge / reward factory combinations.
- This is used to add new pools, gauges or reward factory combinations. These new pools / gauges / rewards factories may have different code to existing implementations.
- Team
- Can set PendingTeam in Minter
- Can accept itself as team in Minter (requires being set as pendingTeam by previous team)
- Can set team rate in Minter
- EpochGovernor
- Can nudge the Minter to adjust the AERO emissions rate.
- Vetoer
- Can set vetoer in ProtocolGovernor.
- Can veto proposals.
- Can renounce vetoer role.
- Governor
- Can set governor in Voter.
- Can set epochGovernor in Voter.
- Can create a gauge for an address that is not a pool.
- Can set the maximum number of pools that one can vote on.
- Can whitelist a token to be used as a reward token in voting rewards or in managed free rewards.
- Can whitelist an NFT to vote during the privileged epoch window.
- Can create managed NFTs in VotingEscrow.
- Can set allowedManager in VotingEscrow.
- Can activate or deactivate managed NFTs in VotingEscrow.
- EpochGovernor
- Can execute one proposal per epoch to adjust the AERO emission rate after the tail emission rate has been reached in Minter.
- EmergencyCouncil
- Can set emergencyCouncil in Voter.
- Can kill a gauge.
- Can revive a gauge.
- Can set a custom name or symbol for a Uniswap V2 pool.
- Can activate or deactivate managed NFTs in VotingEscrow.
- Team
- Can set team in VotingEscrow
- Can set artProxy in VotingEscrow.
- Can enable split functionality for a single address.
- Can enable split functionality for all addresses.
- Can set proposalNumerator in ProtocolGovernor.
- AllowedManager
- Can create managed NFTs in VotingEscrow.
In addition to defined admin roles, various contracts within the protocol have unique permissions in calling other contracts. These permissions are immutable.
- Can mint AERO and distribute to Voter for gauge emissions and RewardsDistributor for claimable rebases
Minter.updatePeriod()
- Can distribute AERO emissions to gauges
Voter.distribute()
- Can claim fees and rewards earned by Normal veNFTs
Voter.claimFees()
Voter.claimBribes()
- Can deposit a Normal veNFT into a Managed veNFT
Voter.depositManaged()
- Can withdraw a Locked veNFT from a Managed veNFT
Voter.withdrawManaged()
- Can set voting status of a veNFT
Voter.vote()
Voter.reset()
- Can deposit and withdraw balances from
BribeVotingReward
andFeesVotingReward
Voter.vote()
Voter.reset()
- Can deposit balances into
LockedManagedReward
VotingEscrow.depositManaged()
- Can deposit balances into
FreeManagedReward
VotingEscrow.depositManaged()
- Can withdraw balances from
LockedManagedReward
andFreeManagedReward
, and rewards earned fromLockedManagedReward
VotingEscrow.withdrawManaged()
- Can notify rewards to
LockedManagedReward
. These rewards are always in AERO.VotingEscrow.increaseAmount()
VotingEscrow.depositFor()
- Can claim the fees accrued from trades
Pool.claimFees()