An SVG of an eye

Proposal overview

Adding AMPL on AAVE

Executed

Executed on 

Jul 24, 2021

AIP rationale

Ample is the first rebasing currency of DeFi. It is an uncollateralized financial primitive with an elastic supply that adjusts each day according to demand in the marketplace. Like Bitcoin, Ample is non-dilutive but it has a long-term unit of account that unlocks safe denomination of debt.

References

Paragraph Summary

Ample is the first rebasing currency of DeFi. It is an uncollateralized financial primitive with an elastic supply that adjusts each day according to demand in the marketplace. Ample targets the 2019 USD. Like Bitcoin, Ample is non-dilutive but it has a long-term unit of account that unlocks safe denomination of debt. The goal of Ampleforth is to create a building block for a safer, more resilient financial ecosystem.

Being able to borrow and lend AMPL would enable holders to:

  • Utilize a new, low-correlated collateral asset which could reduce risk
  • Decrease exposure to rebases in exchange for income from interest
  • Use a non-collateralized asset that “borrows like a stablecoin"
  • Create leveraged AMPL trades and unlock derivatives
  • Create interest bearing AMPL that can be staked in other protocols
  • Increase exposure to AMPL & farming

Motivation

AMPL total supply and balances change once every 24 hours (at 2am UTC) based on market price. The supply change factor is the same for all holders. Because of that, lending and borrowing AMPL behaves differently from fixed supply tokens.

The desired behavior is for the borrow amount (loan) to stay the same after a rebase. The unborrowed tokens deposited in the Aave protocol still get exposed to rebase just like any other contract wallet. This means aAMPLs "partially rebase", in accordance with the utilization ratio.

The AMPL AToken functionally behaves similarly to every other AToken. It maintains a 1:1 peg with the underlying AMPL.

Specifications

  1. What is the link between the author of the AIP and the Asset?

Co-founder, developer

  1. Provide a brief high-level overview of the project and the collateral token See Summary

  2. Explain positioning of token in the AAVE ecosystem: which market?

The asset will be listed in the current AAVE V2 market.

  1. Provide a brief history of the project and how it overcame stressed conditions

Ampleforth launched in July, 2019. Since then, Ample has executed over 550 days of rebases. The network was subject to extreme growth and volatility following the launch of the Geyser liquidity mining program in July 2020. It has shown resilience with a lifetime median price of $1.00 and average price of $1.02 (vs target price of $1.02). There are currently over 22K holders and is a top 100 currency by Market Cap.

Onchain network history viewable on Dashboard.

  1. How is the asset currently used?

Ample aims to be a financial building block that supports a robust and stable financial ecosystem. Borrowing and lending is a critical layer of this stack. Current roadmap.

  1. Market data (Market Cap, 24h Volume, Volatility, Exchanges, Maturity)

Ample has developed deep liquidity on AMMs like Uniswap, SushiSwap, Mooniswap, and a Smart Pool on Balancer through its liquidity mining program.

https://www.coingecko.com/en/coins/ampleforth#markets

  1. Social channels data (Size of communities, activity on Github)

Links above

  1. Risk Assessment and Parameter suggestions

AMPL has been evaluated as low technical risk because it doesn't have any potential of infinite or uncontrolled minting.

Given the novel mechanism of rebasing, it will only be used as a borrowing currency for the time being. An evalution of whether to give it collateral status will be performed afterward.

A 3rd party Audit report from Peckshield can be found here.

After some recommendations from Aave devs, we made small updates to the implementation. This included no behavioral changes but included using a different math library and method of initializating configuration. We then ran a second round of audits with Peckshield that raised no new issues.

Internal testing was performed with a mainnet fork.

We launched an Immunefi Bug Bounty for the aToken with a competitive $100K reward for critical vulnerabilities. This has also raised no issues.

Technical Specifications

We implement a custom AToken, StableDebtToken and VariableDebtToken for AMPL. The StableDebtToken and VariableDebtToken implementations make no functional changes to the generic implementation. When the debt tokens are minted and burned, it performs some additional book-keeping to keep track of the totalScaledAMPL (fixed AMPL denomination, ie Gons) borrowed at any-time. The new getAMPLBorrowData method returns the totalScaledAMPL and totalScaledSupply which are used for AAmplToken math.

Generic AToken has a private balance and public balance. The public balance returned by balanceOf is multiplied by an interest rate factor. The aAMPL works the same way but the AAmplInternal balance is multiplied by another factor, which accounts for the underlying AMPL rebasing and the amount of AMPL unborrowed.

Code

AAMPL token address: 0x6fBC3BE5ee5273598d1491D41bB45F6d05a7541A Code verified here

Steps the proposal will execute:

  1. Start a vote to add aAMPL as a new asset.

Test Cases

  • Colab Notebook of test cases
  • Unit tests included with code change provide full coverage for all borrow, repay, and rebase flows.

Security Considerations

  • Standard technical risks of smart contracts apply to the AToken implementation.
  • Market risk resulting from first borrow/lending market for a rebasing currency.

Your voting info

Voting results

YAE

400.45K

81.29%

NAY

92,161.26

18.71%

State
Executed

Executed on 

Jul 24, 2021
Quorum
Reached
Current votes

Required

400.45K

320.00K

Differential
Reached
Current differential

Required

308.29K

80,000.00

Total voting power

16,000,000

Proposal details

Created

Block

~ 20 Jul 2021, 12:07 am

12860165

Started

Block

~ 20 Jul 2021, 12:07 am

12860165

Executed

24 Jul 2021, 03:08 pm

Author

Ahmed Naguib Aly (@ahnaguib), Nithin Ottilingam (@nithinkrishna), Brandon Iles (@brandoniles)