Governance
The Aave DAO is a decentralised collective of AAVE token holders and contributors who work together to shape the future of the protocol through a structured governance process. This community-driven model enables participants to propose, discuss, and vote on critical changes, guiding the evolution of the protocol and aligning with the collective goals of its members.
The Aave Protocol is governed by the AAVE token holder community (AAVE, stkAAVE, and aAAVE token holders on Ethereum mainnet) through procedures, voting, and smart contract execution, collectively known as Aave Governance.
Aave Governance V3, developed by BGD Labs, introduces the ability to vote on lower transaction fee networks such as Polygon POS and Avalanche C-Chain while token balances remain on Ethereum mainnet.
Architecture
Aave Governance V3 is designed with a modular architecture to meet the comprehensive needs of an on-chain DAO like Aave. The system is divided into three main components, each corresponding to different stages in the proposal lifecycle:
Core Network: Acts as the settlement and security layer where voting power resides. It handles high-level validations on proposals and manages governance token balances. Ethereum Mainnet serves as the Core Network.
Voting Networks: Environments where voting occurs based on storage proofs. These networks are typically lower-cost environments like Polygon POS and Avalanche C-Chain, enabling users to vote without migrating funds from the Core Network.
Execution Networks: Networks where proposal payloads are registered and executed. They handle the execution of approved proposals across various networks, including all Voting Networks and the Core Network.
Communication between these components is facilitated by the Aave Delivery Infrastructure (a.DI), providing secure and efficient cross-chain interactions. Additionally, the Aave Robot automates permissionless actions in Aave Governance such as queueing and executing proposals.
Processes
Aave's governance process is structured so that the protocol remains decentralised, secure, and adaptable. The lifecycle of a proposal is carefully designed to allow community members to present ideas, vote on them, and execute approved changes through a transparent and structured process.
Proposal Lifecycle
Governance Forum The proposal process begins with an idea introduced to the Aave Governance Forum. This is where initial discussions take place and feedback is gathered. The community helps refine the proposal before moving to the next stage.
Temp Check (Snapshot Voting) After discussion, the proposal proceeds to a TEMP CHECK via the Aave Snapshot Space. This informal vote gauges community sentiment. TEMP CHECK votes are non-binding but help determine if there is sufficient interest in moving forward. Proposals in this stage do not require detailed technical specifics.
ARFC (Aave Request for Final Comments) If the TEMP CHECK passes, the proposal moves to the ARFC stage, where it undergoes more formal scrutiny. Service providers and community members contribute detailed feedback on how the proposal would impact the protocol, preparing it for the AIP stage. ARFC voting also occurs on the Aave Snapshot Space.
AIP (Aave Improvement Proposal) The AIP stage is where the proposal becomes a formal, onchain submission. It includes two parts: metadata (stored on IPFS) and the contract payload. These are submitted through Aave's governance contracts, primarily on the Ethereum Mainnet.
Voting Once submitted, the AIP enters a PENDING status before becoming ACTIVE for voting. Voting is conducted onchain through Aave governance contracts. A proposal succeeds if it meets quorum and vote differential requirements. If these thresholds aren’t met, the proposal fails.
Execution A successful proposal moves to the execution phase, where it is enacted via Aave's governance infrastructure. Depending on the type of proposal, a timelock delay (either one day or 7 days) is imposed before the changes are implemented. Cross-chain proposals are executed using Aave's Delivery Infrastructure (a.DI).
Proposal Frameworks
Aave has predefined frameworks for common types of proposals, simplifying the governance process:
Asset Onboarding Framework: Standardized lifecycle for onboarding new assets to the protocol, providing a structured process for risk assessments, and community discussions.
New Chain Deployment Framework: Guidelines for deploying Aave on new blockchains, covering security audits, liquidity considerations, and governance approval to support safe and effective multi-chain expansion.
Emission Manager Framework: Simplified process for adding emission admins to reserves, improving the management of liquidity incentives.
Caps Update Framework: Direct-to-AIP process for adjusting caps or freezing reserves, allowing quicker governance actions to respond to market risks while maintaining protocol stability and liquidity constraints.
Direct to AIP Framework: Similar to the Caps Update Framework, but broader in scope, allows certain governance actions to bypass TEMP CHECK & ARFC stages, requiring only an ARFC forum post before AIP creation.
These frameworks streamline governance and allow the community to focus on more complex issues while maintaining the protocol's security and adaptability.
Voting
Off-chain Voting (Snapshot)
Off-chain votes are used to measure community sentiment during the early stages of proposal development (Temp Checks and ARFCs). These non-binding votes take place on Snapshot and last for three days, allowing token holders to participate without transaction fees.
Onchain Voting (Governance Interfaces)
Once a proposal reaches the AIP stage, onchain voting is required. Token holders, delegates, or delegators vote on proposals using their AAVE, stkAAVE, or aAAVE tokens. The process is secured through various governance interfaces, including Aave Labs, BGD Labs, and Boardroom.
In Governance V3, each proposal specifies a voting network and all voting for the proposal occurs on this network. The Governance V3 activation enables Polygon POS, Avalanche C-Chain, and Ethereum Mainnet (backup) as initial voting networks. Since voting can occur on multiple networks, this can create limitations for smart contract wallets that only exist on one network. To accommodate this, governance interfaces can be used to setup voting representatives, which allows a separate voting address to be designated for each network.
Voters do not need to migrate funds to the voting network, all governance token balances and delegations are still stored on Ethereum mainnet, and are validated on the voting network using storage proofs.
Voting is performing by calling the submitVote() function on the VotingMachine of the corresponding proposal’s voting network.
An aave-cli has been developed to generate the necessary storage proof parameters, or voting can performed with the GovernanceV3Helpers Foundry script.
Voting Power
AAVE, stkAAVE (AAVE staked in protocol safety module), and aAAVE (aToken representing AAVE supplied to Ethereum V3 market) token holders receive governance powers proportional to the sum of their balances on Ethereum mainnet.
There are two powers associated with each governance token:
The proposal power that gives access to creating a proposal.
The voting power which is used to vote for or against active proposals.
Governance powers can be either jointly or separately delegated to any Ethereum address.
Voting Representatives
Smart contract wallets cannot sign messages for storage proof voting and may not exist on all networks, this creates a challenge to interact with the cross-chain voting contracts.
To accommodate cross-chain voting for smart contract wallets and allow greater flexibility for all governance participants, wallets have the ability to link a representative address on other chains.
To choose a representative, an address in Ethereum should call the updateRepresentativesPerChain() function on the GovernanceCore smart contract.
This representative address is able to vote on the specified network, using the delegators balances and received delegations on Ethereum Mainnet. An address can be the representative of multiple other addresses.
Storage Proofs
Aave Governance V3 uses block hashes on the Core network (Ethereum Mainnet) as the source of information for voting balances, and storage proofs as the core mechanism for validation.
For any proposal, the system takes a “snapshot” (block hash of the block before activateVote method gets called) of voting token balances/delegations on the Core network, forwards it to an Aave Voting Network and sets it as the main source of balances/delegation to validate against whenever an address submits a vote there.
Ethereum block hashes contain the state tree of the network, which in turn contains all the data of all the smart contracts at that exact block. Amongst those contracts: AAVE, stkAAVE, and other voting assets are present, and within them, the balances and delegations of all Ethereum addresses.
Storage proofs are a mechanism allowing to cryptographically prove that a piece of data is contained in a tree. In this case, they allow proving that a specific address has voting balance/delegation on the state tree of an Ethereum block.
What happens in practice when an address votes is that the voter inputs the balance of the voting assets they hold at the proposal's Ethereum block, together with a storage proof over the Ethereum block hash for that proposal. The Voting Network then cryptographically verifies the storage proof against the Ethereum block data, along with all additional validations (e.g., no double-voting), and stores the results accordingly.
Proposal Lifecycle
-
Payload Registration: Proposal payloads containing executable logic are deployed and registered on the PayloadsController of the target Execution Network. This process is permissionless.
-
Proposal Creation: A proposer with sufficient proposal power creates the proposal on the Core Network (Ethereum Mainnet) by interacting with the Governance contract. The proposer specifies the payload IDs and target networks.
-
Proposal Activation: After a cooldown period (coolDownBeforeVotingStart), the proposal is activated. This involves taking a snapshot of the Core Network's state and forwarding it to the specified Voting Network using a.DI.
-
Voting Setup: On the Voting Network, the necessary data (Ethereum block hash, state tree, voting asset roots) is settled in the DataWarehouse contract. This step is permissionless and can be performed by any address.
-
Voting Period: Voting occurs on the Voting Network. Voters submit their votes by calling submitVote() on the VotingMachine, providing their token balances at the snapshot block along with storage proofs.
-
Vote Closure: After the voting duration (votingDuration) elapses, voting is closed. The VotingMachine contract sends the voting results (YES and NO counts) back to the Core Network via a.DI.
-
Result Validation: The Governance contract on the Core Network validates the voting results against success metrics, such as minimum thresholds and vote differentials.
-
Proposal Queuing: If the proposal meets the success criteria, it is forwarded to the PayloadsController on the Execution Network, where it is queued in a timelock mechanism.
-
Proposal Execution: After the timelock expires, any address can execute the proposal by calling executePayload() on the PayloadsController, which forwards it to the appropriate Executor for execution.
Community
Delegates
Delegates are entrusted with voting power by other community members or through self-delegation. They actively participate in governance by voting on proposals on behalf of those who have delegated their voting rights. Some delegates are compensated through the Orbit program for their contributions.
Delegators
Delegators are community members who hold AAVE, stkAAVE, or aAAVE tokens but choose to delegate their voting power to another individual or entity. This allows them to have their interests represented in governance without directly participating in every vote.
Contributors
Contributors dedicate time and resources to the Aave DAO by engaging in working groups, completing bounties, building on the protocol, or working through grants. These efforts help maintain and improve the Aave ecosystem.
Service Providers
Service providers offer essential services to the protocol, such as risk management, financial oversight, security, and development. Examples of service providers include:
Chaos Labs (Risk)
Llamarisk (Risk)
Karpatkey (Finance)
Certora (Security)
Tokenlogic (Finance)
BGD Labs (Development)
ACI (Growth and Business Development)
Aave Labs (Development)
Guardians
The Aave Community Guardians are a group of community-elected signers authorized to execute limited emergency protections.
The Aave Guardians have responsibilities divided between two multi-signature wallets, with roles and signers listed below.
Protocol Emergency Guardian
The Protocol Emergency Guardian is the holder of the EMERGENCY_ADMIN role for Aave protocol markets and failsafe emergency actor for cross-chain messaging in Emergency Mode.
The Protocol Emergency Guardian is a 5 of 9 multi-signature wallet consisting of the following community-elected signers:
Chaos Labs (risk service provider)
Llamarisk (risk service provider)
Karpatkey (finance service provider)
Certora (security service provider)
Tokenlogic (finance service provider)
BGD Labs (development service provider)
ACI (growth and business development service provider)
Ezr3al (Aave DAO delegate)
Stable Labs (Aave DAO delegate)
Governance Emergency Guardian
The Governance Emergency Guardian is tasked to protect the Aave Protocol against potential governance takeovers by having the ability to “veto” an onchain payload if it is deemed malicious.
The Governance Emergency Guardian is a 5 of 9 multi-signature wallet consisting of the following community-elected signers:
Seb (Zapper)
Mounir (Paraswap)
Gavi Galloway (Standard Crypto)
Nenad (Defi Saver)
Fernando (Balancer)
Roger (Chainlink community)
Mariano Conti (DeFi OG)
Marin (Lido)
Certora (security service provider)
Stewards
Stewards have delegated responsibility over specific protocol parameters, allowing the DAO to quickly respond to market changes. Stewards manage areas such as the GHO stablecoin and liquidity parameters. This system streamlines governance by reducing the need for frequent votes on minor adjustments, promoting efficiency. The source code for GHO Steward contracts can be found on GitHub.
GHO Bucket Steward
Parameter | Description | |
---|---|---|
Facilitator Bucket Capacity | Up to 100% increase |
GHO Aave Steward
Parameter | Description | |
---|---|---|
GHO Borrow Cap | Up to 100% increase or decrease | |
GHO Borrow Rate | Up to 5% change to optimalUsageRatio, baseVariableBorrowRate, variableRateSlope1, and variableRateSlope2 with maximum of 25% | |
GHO Supply Cap | Up to 100% increase |
GHO CCIP Steward
Parameter | Description | |
---|---|---|
Bridge Limit | Up to 100% increase or decrease | |
Rate Limit | Up to 100% increase or decrease |
GHO Stablility Module Steward
Parameter | Description | |
---|---|---|
GSM Exposure Cap | Up to 100% increase | |
GSM Buy/Sell Fees | Up to 0.5% increase or decrease |
Risk Steward
Description | Value | |
---|---|---|
Frequency of change | 5 days | |
Maximum supply cap increase | 50% | |
Maximum borrow cap increase | 50% |
Deployed Contracts
Ethereum
Arbitrum
Name | Address | |
---|---|---|
CrossChainController | 0xCbFB78a3Eeaa611b826E37c80E4126c8787D29f0 | |
PayloadsController | 0x89644CA1bB8064760312AE4F03ea41b05dA3637C | |
PayloadDataHelper | 0xE3B770Dc4ae3f8bECaB3Ed12dE692c741603e16A | |
GranularGuardian | 0x4922093c476CfbCF903C7C4082d2D64bAE8A37cE | |
ExecutorLvl1 | 0xFF1137243698CaA18EE364Cc966CF0e02A4e6327 |
Avalanche
Name | Address | |
---|---|---|
CrossChainController | 0x27FC7D54C893dA63C0AE6d57e1B2B13A70690928 | |
EmergencyOracle | 0x41185495Bc8297a65DC46f94001DC7233775EbEe | |
VotingMachine | 0x9b6f5ef589A3DD08670Dd146C11C4Fb33E04494F | |
PayloadsController | 0x1140CB7CAfAcC745771C2Ea31e7B5C653c5d0B80 | |
PayloadDataHelper | 0xE3B770Dc4ae3f8bECaB3Ed12dE692c741603e16A | |
VotngDataHelper | 0x77976B51569896523EE215962Ee91ff236Fa50E8 | |
GranularGuardian | 0xc1162BCb2E5E3ca4725512008c7522dF8C8B7B65 | |
ExecutorLvl1 | 0x3C06dce358add17aAf230f2234bCCC4afd50d090 | |
VotingStrategy | 0x690C218668B440204F369Af1541245d367cc805C | |
DataWarehouse | 0x9626F9d60CC0B7e1c9a0A47b7f0bd618fb6f40ff |
BNB
Name | Address | |
---|---|---|
CrossChainController | 0x9d33ee6543C9b2C8c183b8fb58fB089266cffA19 | |
EmergencyOracle | 0xcabb46FfB38c93348Df16558DF156e9f68F9F7F1 | |
PayloadsController | 0xE5EF2Dd06755A97e975f7E282f828224F2C3e627 | |
PayloadDataHelper | 0xE3B770Dc4ae3f8bECaB3Ed12dE692c741603e16A | |
GranularGuardian | 0xe4FB5e3F506BE0095f38004f993D16fdA8224383 | |
ExecutorLvl1 | 0x9390B1735def18560c509E2d0bc090E9d6BA257a |
Base
Name | Address | |
---|---|---|
CrossChainController | 0x529467C76f234F2bD359d7ecF7c660A2846b04e2 | |
PayloadsController | 0x2DC219E716793fb4b21548C0f009Ba3Af753ab01 | |
PayloadDataHelper | 0xE3B770Dc4ae3f8bECaB3Ed12dE692c741603e16A | |
GranularGuardian | 0xa1c6aF35E0205f42256382C05243C543FEDBf4bB | |
ExecutorLvl1 | 0x9390B1735def18560c509E2d0bc090E9d6BA257a |
Binance
Name | Address | |
---|---|---|
CrossChainController | 0x9d33ee6543C9b2C8c183b8fb58fB089266cffA19 | |
EmergencyOracle | 0xcabb46FfB38c93348Df16558DF156e9f68F9F7F1 | |
PayloadsController | 0xE5EF2Dd06755A97e975f7E282f828224F2C3e627 | |
PayloadDataHelper | 0xE3B770Dc4ae3f8bECaB3Ed12dE692c741603e16A | |
ExecutorLvl1 | 0x9390B1735def18560c509E2d0bc090E9d6BA257a |
Gnosis
Name | Address | |
---|---|---|
CrossChainController | 0x8Dc5310fc9D3D7D1Bb3D1F686899c8F082316c9F | |
EmergencyOracle | 0xF937ffAeA1363e4Fa260760bDFA2aA8Fc911F84D | |
PayloadsController | 0x9A1F491B86D09fC1484b5fab10041B189B60756b | |
PayloadDataHelper | 0xF1c11BE0b4466728DDb7991A0Ac5265646ec9672 | |
GranularGuardian | 0x4A9F571E3C1f2F13567bb59e38988e74d7d72602 | |
ExecutorLvl1 | 0x1dF462e2712496373A347f8ad10802a5E95f053D |
Metis
Name | Address | |
---|---|---|
CrossChainController | 0x6fDaFb26915ABD6065a1E1501a37Ac438D877f70 | |
PayloadsController | 0x2233F8A66A728FBa6E1dC95570B25360D07D5524 | |
PayloadDataHelper | 0x81d32B36380e6266e1BDd490eAC56cdB300afBe0 | |
GranularGuardian | 0x61BE97d3a0550549f67CA7421725fA73Fa2036B5 | |
ExecutorLvl1 | 0x6fD45D32375d5aDB8D76275A3932c740F03a8718 |
Optimism
Name | Address | |
---|---|---|
CrossChainController | 0x48A9FE90bce5EEd790f3F4Ce192d1C0B351fd4Ca | |
PayloadsController | 0x0E1a3Af1f9cC76A62eD31eDedca291E63632e7c4 | |
PayloadDataHelper | 0xE3B770Dc4ae3f8bECaB3Ed12dE692c741603e16A | |
GranularGuardian | 0x6c5264C380C7022e54f585c4E354ffb6f221a03b | |
ExecutorLvl1 | 0x746c675dAB49Bcd5BB9Dc85161f2d7Eb435009bf |
Polygon
Name | Address | |
---|---|---|
CrossChainController | 0xF6B99959F0b5e79E1CC7062E12aF632CEb18eF0d | |
EmergencyOracle | 0xDAFA1989A504c48Ee20a582f2891eeB25E2fA23F | |
VotingMachine | 0xc8a2ADC4261c6b669CdFf69E717E77C9cFeB420d | |
PayloadsController | 0x401B5D0294E23637c18fcc38b1Bca814CDa2637C | |
PayloadDataHelper | 0xE3B770Dc4ae3f8bECaB3Ed12dE692c741603e16A | |
VotingDataHelper | 0x77976B51569896523EE215962Ee91ff236Fa50E8 | |
GranularGuardian | 0x0D2CccD3dD420dC6DE2f24DB44aA22fADE290a02 | |
ExecutorLvl1 | 0xDf7d0e6454DB638881302729F5ba99936EaAB233 | |
VotingStrategy | 0x59e6CAD5d7E7b9A26a45a1d1E74C7aF008170042 | |
DataWarehouse | 0xf41193E25408F652AF878c47E4401A01B5E4B682 |
Scroll
Name | Address | |
---|---|---|
CrossChainController | 0x03073D3F4769f6b6604d616238fD6c636C99AD0A | |
PayloadsController | 0x6b6B41c0f8C223715f712BE83ceC3c37bbfDC3fE | |
PayloadDataHelper | 0xf438e33dCCEE260ee4371F9dceF408b0d7DBe424 | |
GranularGuardian | 0xa835707d28e6C37C49d661742f2Fb5987367cEd4 | |
ExecutorLvl1 | 0xc1ABF87FfAdf4908f4eC8dc54A25DCFEabAE4A24 |
ZkSync
Name | Address | |
---|---|---|
CrossChainController | 0x800813f4714BC7A0a95310e3fB9e4f18872CA92C | |
PayloadsController | 0x2E79349c3F5e4751E87b966812C9E65E805996F1 | |
PayloadDataHelper | 0xe28A3235DCF1Acb8397B546bd588bAAFD7081505 | |
GranularGuardian | 0xe0e23196D42b54F262a3DE952e6B34B197D1A228 | |
GovernanceGuardian | 0x4257bf0746D783f0D962913d7d8AFA408B62547E | |
ExecutorLvl1 | 0x04cE39789e11a49595cD0ECEf6f4Bd54ABF4d020 |
Linea
Name | Address | |
---|---|---|
CrossChainController | 0x0D3f821e9741C8a8Bcac231162320251Db0cdf52 | |
PayloadsController | 0x3BcE23a1363728091bc57A58a226CF2940C2e074 | |
PayloadDataHelper | 0x6d4F341d8Bb3Dc5ABe822Aa940F1884508C13f99 | |
GranularGuardian | 0xc1cd6faF6e9138b4e6C21d438f9ebF2bd6F6cA16 | |
GovernanceGuardian | 0x056E4C4E80D1D14a637ccbD0412CDAAEc5B51F4E | |
ExecutorLvl1 | 0x8c2d95FE7aeB57b86961F3abB296A54f0ADb7F88 |