repayBorrow with cTokens

Background
USDT, USDC, and WBTC are all pausable tokens*. A single authority can call pause() at any time, halting all transfer of the token. If a token is paused, it’s bad news for Compound users on both sides. Depositors cannot withdraw their underlying and borrowers are unable to repay, leaving their collateral locked.

*TUSD is upgradable, and a pause function could be added.

Idea
Add a new repayBorrow function that allows repayment with the cToken rather than the underlying. Then when a token is paused a market will develop for the cToken (e.g. on Uniswap). Depositors can now exit position by selling their cToken. And borrowers can now exit by buying the cToken and using the new repayBorrow function. An additional benefit is that folks lending/borrowing the same token for COMP farming could more easily exit their position.

This lets users more confidently deposit or borrow pausable tokens–a major improvement to the platform. In fact, many folks who would otherwise hold a pausable token might choose to hold the cToken form instead simply because it’s unpausable.

Request for Feedback
Are you for or against this idea? Are there downsides? Or any benefits not mentioned here?
Any other thoughts on what happens when a token is paused?
Anybody interested in applying for a grant and developing this with me?

1 Like

I like this idea. It’s so natural that had it been included in the protocol at the start we wouldn’t give it another thought.

Back when we were discussing whether to include WBTC as an asset, there was concern about infinite minting and pausing of WBTC. I proposed a wrapped version (wWBTC) as a way to enable a supply cap (by limiting the amount of wWBTC that could be minted) and to insulate against pauses. But that added a undesired layer of complexity. I don’t think it occurred to us that cWBTC could provide the pause protection on its own.

I would extend the current proposal to also add a new liquidateBorrow() method that accepts CTokens as the repaid asset. That would allow liquidations to proceed as designed even if the repaid underlying is paused, so long as there is a liquid market for the CTokens. I expect that anything serious enough to trigger a pause would be accompanied by volatile market conditions, so it’s important that the liquidation system continues to operate in that scenario.

1 Like

Interesting, thanks @pyggie, I think extending it to liquidateBorrow makes a lot of sense. Sorry for the bother but could you please copy-paste your response to this other thread:

I accidentally made duplicate threads. Since the other has more discussion I have asked mods to close this one. Thanks and sorry for the hassle.

Readers: don’t reply here, reply at the thread linked above ^