During liquidations, crvUSD tokens sent to the RToken contract become permanently locked due to restrictive withdrawal mechanisms.
RToken holds crvUSD _assetAddress
, and is called by LendingPool to mint or burn RToken to users when they deposit/withdraw crvUSD into the pool.
There is no other way to withdraw crvUSD from RTokens, except when it's dust amount but that does not apply here.
Also, liquidation is only dependent on the RAAC teams and its ability to provide enough crvUSD in StabilityPool
for liquidation. This does not seem sustainable.
During a liquidation, StabilityPool
will trigger it and allow LendingPool
to transfer the userDebt in crvUSD to RToken.
The issue here is that there is no way to recover those crvUSD in RToken.sol
The only way to get back crvUSD from this contract is by calling burn()
, but RToken are needed.
3 others functions in RTokens interact with crvUSD, but are useless for our case :
It's called in LendingPool::borrow(), not usable in our case
This function cannot be used with crvUSD so it does not work either
This functions will only work to retrieve sa mall amount of accruedDust with max poolDustBalance.
Exemple :
userA deposit NFT and borrow 100_000
userA enter liquidation because of a market drop
RAAC funds 100 000 crvUSD in stability pool to cover userDebt
userA is liquidated, 100_000 crvUSD transferred from StabilityPool to RToken
Funds are locked in RToken, as no RToken has been minted for those crvUSD.
All crvUSD provided by StabilityPool
(ie Protocol team) during liquidation will end up lost and locked up in RToken.
It also shows a flaw in design in the liquidation process, as currently, the team needs to input crvUSD to liquidate users in StabilityPool
. How sustainable is that?
Manual
Transfer crvUSD used for liquidation to another address with a different logic than RToken.
A good way will be to have part of fees aggregated from the protocol to accrue there and be used to liquidate the user, instead of having to rely on the protocol team to input enough funds in StabilityPool
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.