Giter Club home page Giter Club logo

aave-address-book's People

Contributors

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

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

aave-address-book's Issues

Request to add 2 additional addresses to Address Book

Context

The Aave Address Book is currently missing these 2 addresses which are used in quite a few Proposal Payloads.

  • #34
  • 2. AAVE Incentives Controller: 0xd784927Ff2f95ba542BfC824c8a8a98F3495f6b5

Would be nice to have them added as well to reduce errors related to Aave addresses.

Add support for Aave v3.0.1

Why

For reference aave/aave-v3-core#701

Soon, all v3 instances will get the 3.0.1 update, and even more important, for testing could be good to have an AaveV3_1.sol on the address book.

Tips

There should not be many changes, mainly the addition of the flashloanable flag on the asset configuration, together with the interface implications of it.
But necessary to check it better

Add Faucet to testnet exports

Would be helpful for integrators to have this address available.

afaik this contract is not linked to the Pool or any periphery contract, so this would need to be hardcoded as it is on the interface.

Code snippets / Usage example

Would be nice if selecting/hovering an item, would show how to actually use it in code via address-book.
This can be useful especially as imports are wildly different on solc vs js:

js: AaveV3Ethereum.ASSETS.FRAX.A_TOKEN
solc: AaveV3EthereumAssets.FRAX_A_TOKEN

ABI exports

Currently we redefine abis where ever we need them, probably it would make sense to ship them as part of the js bundle.

emode library

Would be nice if there was an exposed library with eModeLabel = id mapping

Introduce fee collectors and their controllers, per network

What?

Add to the Address Book the addresses of the contracts accruing the fees of the liquidity pool in the different networks (e.g. https://etherscan.io/address/0x464c71f6c2f760dda6093dcb91c24c39e5d6e18c), together with the controller contracts to be used by the governance Short Executor to transfer/approve/manage-streams on those collectors (e.g. https://etherscan.io/address/0x3d569673daa0575c936c7c67c4e6aeda69cc630c#code)

Why?

As we can see from multiple past governance proposals (BGD <> Aave, Aave Grants DAO, consolidation of v1/v2 RF, ...), it is quite common to interact with the collectors of the protocol. So it is pretty natural to have those addresses in the Address Book

When using address book on Aave governance payloads, flattening for verification generates too big file

Context

When flattening with Foundry a payload like the one HERE, forge flatten contractPath generates a really big Solitidy flattened file, due to the number of interfaces' dependencies of address book, and it even contains clash of dependencies because of duplications.

This is pretty inconvenient because as we know, it is worth it even to use address book in production payloads in some cases. But with this problem of flattening, and consequently not being able to do Etherscan verification, it is not possible to introduce address book.

 Proposal

Needs some research. This would be solved if on flattening only the used interfaces dependencies (and I would say even better only the functions/structs used on those) would be included.

Missing icons

Tracking issue for missing icons (assets that might soon be added to aave).
Non of this is super urgent, so just collecting here and once in a while we can have a pr to batch add them.

Missing icons:

  • osETH
  • stEUR
  • sfrxETH
  • ETHx
  • wbETH
  • BNBx

Add support for empty pools

Currently, we define the the reserve treasury and the rewards controller in the generator script from the reserves data first token here which breaks when the reserve has no assets.

GHO addresses library

@miguelmtzinf noted that for avara it would be nice to have a GHO addresses directly accessible (not via assets library).

Putting them on Misc i was opposed, because:

  1. it's a duplication of what we already have in assets
  2. misc is used in almost every aave proposal and aave related ecosystem project. As solidity currently does not tree-shake interfaces / libraries at verification every addition bloats verification everywhere and creates noise on diffing.

That said, I think as a compromise - especially considering the growing importance of GHO - it could make sense to just create a seperate GHOMainnet, GHOArbitrum, ... and remove things like GHO, GSM, CCIP from Misc.

AAVE Ecosystem Reserve: `0x25F2226B597E8F9514B3F68F00f494cF4f286491`

Add ecosystem reserve & controller to address book as suggested in #32

We already have the controller in the address book here https://github.com/bgd-labs/aave-address-book/blob/main/src/AaveV2Ethereum.sol#L34 but we don't ship any interface for COLLECTOR_CONTROLLER - iirc the reason for that is that the interfaces accross pools are not consistent. Ethereum V2 supports streaming - afaik non of the others do.

There's two questions to answer:

  1. Where to put AAVE_ECOSYSTEM_RESERVE?
    a) we could add it to the AaveV2Ethereum library. It doesn't really belong there though.
    b) we could add a new library especially for AaveEcosystemReserve containing the reserve and controller address
    c) ...

  2. Should we expose the interfaces if yes which ones and where? Is there a chance we could align them throughout pools?

Aggregator/Feeds library

Similar to GHO addresses #482 for aggregators we just dump them in misc.
It might make sense to have a separate library for these sorts of things.

Normalize address vs. interface usage

It can be a confusing developer experience when using a library that references different contracts as interfaces vs. addresses. For example, these are both contracts:

// https://etherscan.io/address/0x5300A1a15135EA4dc7aD5a167152C01EFc9b192A
address internal constant ACL_ADMIN = 0x5300A1a15135EA4dc7aD5a167152C01EFc9b192A;
// https://etherscan.io/address/0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c
ICollector internal constant COLLECTOR = ICollector(0x464C71f6c2F760DdA6093dCB91C24c39e5d6e18c);

This could be a problem when importing a library to use within a contract to reference. For example, this compile would succeed:

import {AaveV3Ethereum} from "aave-address-book/AaveV3Ethereum.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";

contract MyContract is Ownable {
    constructor() Ownable(AaveV3Ethereum.ACL_ADMIN)
    ...
}

But this compile would fail:

import {AaveV3Ethereum} from "aave-address-book/AaveV3Ethereum.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";

contract MyContract is Ownable {
    constructor() Ownable(AaveV3Ethereum.CONTROLLER)
    ...
}

My opinion is to have every contract referenced as an address and provide an additional library variable prepended with I to reference the same contract as an interface. It would add some bloat to the libraries but given they are auto-generated and lightweight I don't see it as an issue.

Clear stand in readme on which networks/testnetworks we intend to support

#112 (comment)

For potential contributors it's not clear if their pr has a chance of acceptance or not as we don't have super clear rules.
I think as a minimum requirement we should have verified contracts, but probably it makes sense to also limit to trusted entities as the deployers of these contracts as the upgradability might be a possible attack vector.

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.