Asset Listing

With Aave V3, the addition of new risk parameters (supply caps, borrow caps, isolation mode) and roles (RISK_ADMIN and ASSET_LISTING_ADMIN) will reduce the friction of onboarding new assets to Aave markets.

This guide details the process of adding a new asset from idea to implementation:

ARC

The ARC (Aave Request for Comment) is

the first step in the proposal process. This is where the idea is proposed and the community can discuss. All ARCs should follow standard requirements. New asset listings should include:

  • Parameters

    • LTV LTV defines the maximum percentage which users can borrow against an assets value. For example, if an asset has an LTV of 80% and an oracle price of $100, then users can borrow up to $80 when supplying this asset as collateral. An LTV of 0% means the asset cannot be used as collateral.

    • Liquidation Threshold Liquidation Threshold defined the maximum collateralization ratio for an asset. If a user exceeds the liquidation threshold, then they are available to be liquidated. Liquidation means anyone can pay back a users debt and claim the corresponding amount of collateral plus a liquidation bonus.

    • Liquidation Bonus If a users borrow position exceeds the liquidation threshold for their collateral asset, anyone can perform a liquidation by paying off the users debt and claiming the corresponding amount of collateral plus a bonus, called the liquidation bonus which is expressed as a percentage of the repaid amount. The liquidation bonus can be a different percentage for each collateral asset in the protocol.

    • Supply Cap Supply caps are a new feature in Aave V3, and define the maximum amount of an asset which can be supplied to the protocol. Supply caps can be used to limit the protocol exposure to riskier asset, and prevent against infinite minting exploits. A supply cap is an optional parameter, and the value will depend on the circulating and maximum supply of the asset.

    • Borrow Cap Borrow caps are a new feature in Aave V3, and define the maximum amount of an asset which can be borrowed. Borrow caps can be used to prevent traditional and flash borrowing of an asset which may experience a price exploit and lead to protocol insolvency. A borrow cap is an optional parameter, and the value will depend on the circulating and maximum supply of the asset.

    • Isolation Mode Isolation mode is a new feature in Aave V3, which can be used to limit the systemic risk of listing riskier assets. Isolation mode limits an asset to only be

    • Borrowing Enabled Borrowing enabled is a boolean flag which defines whether an asset can be borrowed or not. An asset with borrowing disabled will have a supply and borrow APY of 0, but can still be enabled as collateral.

    • Reserve Factor The reserve factor is a percentage of protocol interest which goes to the Aave Ecosystem Reserve. Each Aave market has a collector contract which stores the revenue from the reserve factor. The collector contracts make up the ecosystem reserve which is controlled by Aave Governance, and used to promote ecosystem growth through incentives or other initiatives.

    Checkout some examples from listed assets:

    • DPI - Collateral Asset

    • FRAX - Borrow Only

AIP

The AIP is a document containing the proposal details which is uploaded to IPFS. The hash of this documented is passed as a parameter when the on-chain proposal is submitted. To create an AIP for a new asset listing follow the steps from the AIP repo.

Sample AIPs:

Once the AIP has been reviewed and merged to generate an ipfs hash, and the payload has been created, the proposal can now be submitted on-chain.

Create On-Chain Proposal

To create the governance payload, the Aave Proposals repo can be used as a reference, the function call to initialize a reserve is initReserves on the PoolConfigurator contract.

Add To Aave UI

In order for the token icon to appear on the open source Aave frontend, it will needed to be added by forking the interface repo (https://github.com/aave/interface) and creating a pull request to add the token icon to public/icons/tokens.

Last updated