AAVE Request for Comments (ARC) to add stETH support on AAVE has been published a few days ago. Based on positive community feedback a similar proposal has received earlier this year, we assume it is safe to go ahead and discuss technical implementation options of this listing.
Unlike most other assets listed on AAVE, stETH is a rebaseable token, meaning the token balance updates on a daily basis. Although there’re other rebaseable tokens on AAVE (e.g. AMPL), we want to explore options available to Lido rather than just following in their footsteps.
AAVE’s aToken and debtToken
AAVE is a decentralized non-custodial liquidity protocol where users can participate as depositors or borrowers. Depositors provide liquidity to the market to earn a passive income, while borrowers are able to borrow in an overcollateralized (perpetually) or undercollateralized (one-block liquidity) fashion.
aTokens are interest-bearing tokens that are minted and burned upon deposit and withdraw. The aTokens’ value is pegged to the value of the corresponding deposited asset at a 1:1 ratio, and can be safely stored, transferred or traded. All interest collected by the aTokens reserves are distributed to aTokens holders directly by continuously increasing their wallet balance.
debtTokens are interest-accruing tokens that are minted and burned on borrow and repay, representing the debt owed by the token holder.
Possible astETH mechanics
stETH being a rebaseable token prevents us from using generic aToken as provided by AAVE. Including Lido rebasing mechanics is critical to preserve stETH’s productivity within AAVE protocol. We can see two options, each of them involves meaningful changes to how stETH and astETH would behave.
Option 1. Rebase astETH but keep debtToken balance stable.
- At any time, user can deposit x stETH to mint x astETH.
Total astETH supply increases by x. - At any time, user can burn x astETH for x stETH.
Total astETH supply decreases by x. - At any time, userA can transfer x astETH to userB.
userA’s astETH balance reduces by x.
userB’s astETH balance increases by x.
Total astETH supply remains the same. - When stETH’s supply rebases, astETH rebases, while debtToken doesn’t. The astETH rebase only mirrors the rewards of ‘unborrowed’ stETH in the lending pool.
In this case, the borrower holds the debtToken representing exactly the same amount of stETH they have initially borrowed and keeps the staking rewards. At lower interest rates, this would work as a self-paying loan, and draw part of staking rewards from stETH liquidity providers towards the borrowers.
Option 2. Rebase astETH and debtToken.
- At any time, user can deposit x stETH to mint x astETH.
Total astETH supply increases by x. - At any time, user can burn x astETH for x stETH.
Total astETH supply decreases by x. - At any time, userA can transfer x astETH to userB.
userA’s astETH balance reduces by x.
userB’s astETH balance increases by x.
Total astETH supply remains the same. - When stETH’s supply rebases, both astETH and debtToken rebase as well.
In this case, the borrower holds the debtToken representing the same amount of stETH they have borrowed plus staking rewards accrued. In terms of borrowing, it completely removes potential safe profit from borrowing stETH but creates better opportunities for stETH liquidity providers.
What option is preferable?
We propose implementing option 2.
Better APR for depositors encourages using stETH as collateral, rather than borrowing it. With stETH’s tight peg and passive yield, we expect stETH to be a perfect collateral asset.
Besides, rebasing the whole stETH lending pool appears to be a more clear behavior from the users’ standpoint.
However, there could be more factors to consider. This post is an invitation to discuss the proposed approach, please, share your thoughts and concerns.