@aave-dao/aave-address-book
v4.71.2
Published
This repository contains an up-to-date registry of all addresses of the Aave ecosystem's smart contracts, for its usage in Solidity codebases.
Readme
Aave Address Book
An up-to-date registry of all Aave ecosystem smart contract addresses for use in Solidity and JavaScript/TypeScript projects or usage via JSON API.
Installation
Foundry
forge install aave-dao/aave-address-bookNode.js
npm install @aave-dao/aave-address-bookUsage
Solidity
import { AaveV3Ethereum } from "aave-address-book/AaveV3Ethereum.sol";
import { AaveV2Avalanche } from "aave-address-book/AaveV2Avalanche.sol";
import { AaveGovernanceV2 } from "aave-address-book/AaveGovernanceV2.sol";
contract Example {
function execute() external {
address pool = AaveV3Ethereum.POOL;
// ...
}
}JavaScript/TypeScript
import { AaveV3Ethereum, AaveV2Avalanche } from "@aave-dao/aave-address-book";
console.log(AaveV3Ethereum.POOL); // "0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2"
console.log(AaveV3Ethereum.CHAIN_ID); // 1JSON API
The latest address book is also published as static JSON alongside the search UI:
manifest.jsondescribes the deployed package version, source commit, aggregate, and available modules.address-book.jsoncontains every exported address-book module.modules/<name>.jsoncontains one module, for examplemodules/AaveV3Ethereum.json.
Manifest paths are relative to the manifest URL and module names are case-sensitive:
const manifestUrl =
"https://aave-dao.github.io/aave-address-book/api/v1/manifest.json";
const manifest = await fetch(manifestUrl).then((response) => response.json());
const ethereum = manifest.modules.find(
(module: { name: string }) => module.name === "AaveV3Ethereum",
);
const addresses = await fetch(new URL(ethereum.path, manifestUrl)).then(
(response) => response.json(),
);The /api/v1 URLs always represent the latest deployment from main. Use the manifest's commit and SHA-256 fields to identify and verify the exact content. A future breaking change to the JSON structure or paths will use a new API version.
Development
Generate addresses
The library uses a collection of scripts to fetch addresses from various on-chain registries.
npm run generate:addressesBuild
npm run build
forge buildTest
The library includes a suite of tests that can be run using the following commands:
npm test
forge testThe node test suite is a collection of sanity tests, that ensure that view functions return the expected values (e.g. the correct pool is being configured in a given factory).
In addition to that there is a verification suite that ensures that all the addresses listed on address book, are verified on our preferred explorers.
Adding a new pool
- Add pool configuration in
scripts/configs/<type>/<network> - Run
npm run generate:addresses - Commit the generated files
Configuration
Create a .env file for reliable RPC connections:
ETHERSCAN_API_KEY=your_key_here
EXPLORER_PROXY=your_proxy
## RPC configuration
# Per default the package uses the public rpcs available via viem
# You can opt in to use private/different rpcs by setting the following environment variables
RPC_<NETWORK>=your_rpc_url
ALCHEMY_API_KEY=your_key_here
QUICKNODE_ENDPOINT_NAME=your_quicknode_endpoint_name
QUICKNODE_TOKEN=your_quicknode_tokenUI
The interactive UI can be found in ui package. The UI is a React application that is compiled as static build, so it can be hosted on github pages. You can fine an instance of the UI at search.onaave.com
Address book API
Each release is published as a static JSON document for programmatic consumption:
https://assets.aave.com/address-book/releases/latest/manifest.json
https://assets.aave.com/address-book/releases/latest/address-book.json
https://assets.aave.com/address-book/releases/latest/modules/AaveV3Ethereum.json
https://assets.aave.com/address-book/releases/v<version>/modules/AaveV3Ethereum.jsonThe API contains an aggregate address book, one file per package module, and a manifest containing
the package version, commit, byte sizes, and SHA-256 hashes. The latest files have a short cache
lifetime, while versioned files are immutable. The deployment bucket is configured through the
STATICS_BUCKET GitHub Actions secret.
Resources
- Raycast Extension - Quick address lookup
- Web Search - Browse all addresses
License
MIT
Maintained by Aave Labs
