This repository contains various proposals targeting the Aave governance. In addition to the actual proposals this repository also contains tooling to standardize certain protocol tasks. The tooling documentation is co-located with the relevant smart contracts.
Governance Process:
- Forum Discussion (ARFC) → Community feedback
- Snapshot Vote → Off-chain temperature check
This repository:
- Proposal Generation → Generate proposal files (
npm run generate) - Payload Deployment → Deploy to target chain (e.g., Arbitrum)
- AIP Creation → Create on-chain proposal
On-chain Governance:
- Voting & Execution → Community vote and on-chain execution
aave-proposals-v3/
├── docs/ # Documentation
├── src/ # Proposal payloads (Solidity)
│ └── YYYYMMDD_*/ # Individual proposals (date-based)
├── zksync/ # zkSync-specific code
│ └── src/ # zkSync proposal payloads
├── generator/ # TypeScript CLI tool
├── diffs/ # Protocol state diffs (before/after)
└── lib/ # Foundry dependencies
Smart contracts that execute protocol changes on specific chains. Payloads inherit from base classes like AaveV3PayloadEthereum, AaveV3PayloadArbitrum, etc. Each proposal is stored in a date-based directory (YYYYMMDD_<Chain>_<Title>/).
Interactive CLI tool to bootstrap proposal files. Runs npm run generate to create .sol (payload), .t.sol (tests), .s.sol (deployment scripts), .md (AIP documentation), and config.ts (reproducibility config) files based on interactive prompts for chains, features, and parameters.
See Generator Guide for detailed usage.
The AaveV3ConfigEngine (Docs) is a helper smart contract to abstract good practices when doing "admin" interactions with the Aave v3 protocol, but built on top, without touching the core contracts.
A less comprehensive version of the engine also exists for protocol v2.
Foundry (Forge) with fork testing, snapshot diffing, and comprehensive validation suite. See Testing Guide for details.
cp .env.example .env
forge install
npm i# You can use vanilla forge to customize your test
# https://book.getfoundry.sh/reference/forge/forge-test
forge test
make test-contract filter=ProposalNameSee Testing Guide for more detailed information.
Generate required files:
npm run generateSee Generator Guide for detailed usage.
To create a proposal you have to do three things:
- deploy the payload & register it on the payloadsController
- create an AIP
- create the mainnet proposal
While the first two steps can be performed in parallel, the final proposal creation relies on (1) and (2). Every step can in theory be performed by a different entity.
The address creating the mainnet proposal(3) requires 80k AAVE of proposition power.
The payload is always deployed on the chain it affects. Deployment uses Foundry Forge with Ledger support and automatic Etherscan verification.
Commands:
# Deploy with Ledger
make deploy-ledger contract=<path/to/Script.s.sol:ScriptName> chain=<chainAlias>
# Dry run (simulation)
make deploy-ledger contract=<path/to/Script.s.sol:ScriptName> chain=<chainAlias> dry=trueGenerated .s.sol files contain deployment commands in comments. Chain aliases defined in foundry.toml [rpc_endpoints] section.
The aip can be co-located with the proposal code as a markdown file.
This repository will manage the upload to IPFS automatically via GitHub Actions once a PR is merged to main.
Write the AIP documentation (analysis, rationale, specification) in the generated .md file.
The proposal requires at least one payload and the encodedHash.
Requires 80k AAVE proposition power. Command from command: comment in .s.sol file:
make deploy-ledger contract=<path/to/Script.s.sol:ScriptName> chain=mainnetIf Etherscan verification fails:
- Copy
verify.example.jsontoverify.json - Add
ETHERSCAN_API_KEYto.env - Replace
chainwith appropriate chainId - Replace
hashwith deployment transaction hash - Run
FOUNDRY_PROFILE=<chainAlias> forge build --force - Run
FOUNDRY_PROFILE=<chainAlias> npx catapulta-verify -b verify.json
- Generator Guide - Creating proposals step-by-step
- Testing Guide - Testing proposals
- Glossary - Repository-specific terminology
- GHO Launch Guide - Helper contracts for GHO cross-chain deployment
MIT - see LICENSE
