Aave V3 Integration
What is Aave?
Aave is a decentralized lending and borrowing protocol. Users can:
- Supply assets to earn interest (e.g., deposit USDC and earn ~3-5% APY)
- Borrow against their supplied collateral (e.g., borrow ETH using USDC as collateral)
How NMT Integrates
| Layer | Component |
|---|---|
| Contract | AaveModule.sol โ supply, borrow, repay, withdraw |
| Backend | workers/src/defi/services/aave/ โ indexes reserves and positions |
| Frontend | lib/defi/aave/ โ encodes lending/borrowing transactions |
| Data source | Aave GraphQL API (api.v3.aave.com/graphql) |
Supported Chains
| Chain | PoolAddressesProvider |
|---|---|
| Ethereum | 0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e |
| Base | 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb |
| Arbitrum | 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb |
| Optimism | 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb |
Operations
| Operation | What It Does | Module Function |
|---|---|---|
| Supply | Deposit tokens as collateral | AaveModule.supply() |
| Borrow | Borrow tokens against collateral | AaveModule.borrow() |
| Repay | Repay borrowed amount | AaveModule.repay() |
| Withdraw | Withdraw supplied collateral | AaveModule.withdraw() |
Data Indexed
The backend worker fetches from Aave's GraphQL API:
| Data Point | Purpose |
|---|---|
| Reserve sizes | Total liquidity available |
| Supply APY | Current earning rate |
| Borrow APY | Current borrowing cost |
| Utilization rate | How much of the pool is borrowed |
| User positions | Individual supply/borrow amounts |
Min TVL filter: $0 (all Aave markets are indexed)
Update interval: Every 30 minutes