Proposal: Allow repay() with aTokens

Problem
Aave lists some pausable tokens, including USDT, USDC, WBTC, GUSD*, BUSD* and TUSD*. This means a central admin can pause them at any time, halting all transfers. When a token is paused, it will be bad news for Aave users on both sides. Depositors will be unable to withdraw their underlying token, and borrowers will be stuck with their collateral locked, since they cannot repay their loan.

*Could be paused with an implementation upgrade.

Idea
Let’s add a new repay() function that allows repayment with the correct amount of aToken rather than the underlying. With this in place, when a token is paused we can expect a market to develop for the aToken (e.g. on Uniswap). Depositors will now be able to exit their position by simply selling their aToken. And borrowers will be able to exit theirs by buying the aTokens and using the new repay() function.

Another minor benefit: stkAAVE farmers who borrow and lend the same token will be able to exit their positions more easily.

This would be a major improvement to the platform, giving users much more confidence in using a pausable token on Aave. In fact, this change will create an entirely new reason to hold aTokens: they’ll be transferable and there’ll be a market for them even when the underlying token is paused! This could be a major draw for folks who otherwise hold large balances of a pausable token.

Feedback
Any other thoughts on what happens if a token calls pause()?
Any downsides to implementing this? Or upsides not mentioned here?
Anybody want to apply for a grant and work on this with me?

1 Like