GithubHelp home page GithubHelp logo

akyram / aave-address-book Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bgd-labs/aave-address-book

0.0 0.0 0.0 2.54 MB

Solidity registry for all smart contracts' addresses of the Aave ecosystem

Home Page: https://search.onaave.com

License: MIT License

JavaScript 0.05% TypeScript 56.66% CSS 0.01% Solidity 43.29%

aave-address-book's Introduction

Address book logo

Aave Address Book ๐Ÿ“–

This repository contains an up-to-date registry of all addresses of the Aave ecosystem's smart contracts, for its usage in Solidity codebases.

The goal is for Solidity developers to have the most integrated environment possible when they want to develop on top of Aave, by just importing a package with all the necessary addresses to interact with.

You can find a searchable version of the address book on https://book.onaave.com/.

Usage with foundry

With Foundry installed and being in a Git repository:

forge install bgd-labs/aave-address-book

Import a pool specific collection of addresses & interfaces:

import {AaveV2Ethereum} from "aave-address-book/AaveV2Ethereum.sol";
import {AaveV3Avalanche} from "aave-address-book/AaveV3Avalanche.sol";

Import addresses and interfaces to interact with Governance:

import {AaveGovernanceV2} from "aave-address-book/AaveGovernanceV2.sol";
import {IGovernanceCore} from "aave-address-book/GovernanceV3.sol";

Import miscellaneous network addresses and interfaces relevant to the aave protocol:

import {Misc<Network>} from "aave-address-book/Aave<Network>.sol";

Production Recommendations

While there is a index import available in "aave-address-book/AaveAddressBook.sol", we only recommend using it in tests. Foundry currently does not eliminate unused code for verification. This results in rather gigantic verifications when using the index file import from aave-address-book/AaveAddressBook.sol. For production code we therefore recommend to use pool specific libraries (Aave[Version][Network][?SubPool]) exported from aave-address-book like AaveV2Ethereum for the V2 Ethereum pool.

Usage with node

Install

npm i @bgd-labs/aave-address-book

Usage

import * as pools from "@bgd-labs/aave-address-book"; // wildcard import
import { AaveV2Avalanche } from "@bgd-labs/aave-address-book"; // import specific pool

// all variables available on solidity version are available in javascript as well
console.log(AaveV2Avalanche.POOL_ADDRESSES_PROVIDER);
// "0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb"

// in addition the chainId of the respecitve addresses is exported alongside
console.log(AaveV2Avalanche.CHAIN_ID);
// 43114

Running this repository

Generate files

The library is generated based on the scripts/generateAddresses.ts and scripts/generateABIs.ts scripts. You can regenerate the files by running yarn start.

Dependencies

forge update

Compilation

forge build

Testing

forge test

Adding a new Pool

To list a new pool in the address book, you simply need to add a new pool in the respective pools config and run yarn generate:addresses.

Adding new Addresses

a) Adding an address that can be obtained via onchain calls so it doesn't need to be hardcoded on the configs:

To achieve an addition here you need to add the address to the respective v2 type and/or v3 type and adjust the generator scripts accordingly. New types should be added to the AaveV2 and AaveV3 files.

b) Adding an address that cannot be obtained via onchain calls so it needs to be manually maintained:

To achieve an addition here, you need to alter the additionalAddresses section on the pool type and add your address to the respective pools. Additional addresses will currently be exported as type address. There's currently no possibility to define a custom type.

In any case you need to run yarn generate:addresses afterwards and commit the altered artifacts.

aave-address-book's People

Contributors

sakulstra avatar github-actions[bot] avatar sendra avatar brotherlymite avatar smbdy avatar rustboyar avatar eboadom avatar miguelmtzinf avatar grothem avatar dghelm avatar defispartan avatar kyzia551 avatar foodaka avatar zer0dot avatar defijesus avatar efecarranza avatar eltociear avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.