[ARFC] BGD. Aave ClinicSteward

Simple summary

Introducing a new Aave ClinicSteward smart contract, with capabilities to liquidate and repay non-healthy positions with bad debt on Aave v3, using funds of the Aave Collector, this way cleaning up all Aave v3 bad debt before the activation of the upcoming Umbrella.



Context

Since the initial Aave v3 activation three years ago, due to the nature of liquidations, the system has accrued a minimal bad debt of approximately $400’000. This amount is pretty irrelevant in comparison with the ~$12 billion outstanding borrowings, but given the imminent activation of the Umbrella system (to automatically cover bad debt), and the recent upgrade of Aave to v3.3 (formally accounting for deficit/bad-debt post-liquidation), we believe it is appropriate to raise a proposal to clean the “legacy” bad debt, and this way start with clean accounting.

The Aave ClinicSteward is a smart contract that simply facilitates for a permissioned entity to execute the clean-up on behalf of the DAO, by authorizing a constraint budget from the Aave Collector for exclusive usage on liquidations/repayments of unhealthy positions (liquidatable).



Specification

The Aave ClinicSteward is a highly permissioned and constraint steward smart contract, that allows for the following:

  • Batch liquidate. Allows to liquidate positions on the configured Aave Pool, by pulling the asset to repay from the Aave Collector, and transferring the liquidated collateral back to the Collector too.
  • Batch repay. On Aave v3 there are some existing positions pre-Aave v3.3 with “pure” bad debt: they have outstanding borrowings, but exactly zero collateral.
    For those cases, this steward contract allows to just repay and zero that debt, even if no collateral is recovered.

In terms of access control, the system is permissioned in the following way:

  • To be able to access any funds from the Aave Collector, the Aave governance needs to give FUNDS_ADMIN role to each ClinicSteward associated with an Aave v3 pool.

  • There is a strict budget constraint (in USD) for the amount the steward can pull from the Collector (table after).

  • A DEFAULT_ADMIN_ROLE acts as “a super-admin” of the steward, with permissions to enable any other address to call the batch liquidate and batch repay methods. This is designed to be assigned to a multi-sig smart contract, which in our opinion could be one of the denominated currently composed by ACI, TokenLogic and Kpk, with 2-of-3.
    Given that the initial setup via governance will assign one initial CLEANUP_ROLE, we don’t expect this multi-sig to be used.

  • A CLEANUP_ROLE acts as the address that will factually trigger the liquidations/repayments. This is designed to be an EOA, given that its capabilities are limited by:

    • The DEFAULT_ADMIN_ROLE granting permissions.
    • The steward contract has a constraint of maximum budget (in USD) to spend, which only the Aave governance can modify.

    Our recommendation is to use an EOA of the Dolce Vita service by ACI for this role, already in use for multiple other aspects now and in the past (migration of deprecated stable debt positions, accrue of fees to the treasury, etc).

  • The contract is not designed to have any funds at rest, so it has Rescuable capabilities to send any token there to exclusively the Aave Collector.




In terms of budget constraints per network (maximum allowance that the ClinicSteward will be able to use from the Collector), the idea is to be able to cover current levels of bad debt per network, with some extra margin on top.
This allowance can be potentially renewed in the future, but only via another Aave governance proposal.

Network Maximum allowance
Ethereum core $30’000
Ethereum prime $5’000
Polygon $30’000
Avalanche $350’000
Arbitrum $60’000
Optimism $5’000
Base $15’000
Metis $1’000
Gnosis Chain $1’000
BNB Chain $2’000
Scroll $1’000
ZKSync $1’000
Linea $1’000

*Total expenses will potentially be substantially lower than “Maximum allowance”, as in the majority of the cases, some collateral will be sent to the Collector, even if this is lower than the debt of the position.

** v3 Avalanche being substantially higher than in other networks is due to the USDC de-peg event on 11th March 2023


In addition to all its constraints, the ClinicSteward is been audited by Certora, and we will share the report on this forum once completed.



Next steps

  • After some days in this forum, we will create an ARFC Snapshot for the approval of the ClinicSteward.
  • If ARFC Snapshot is approved, an on-chain proposal to the Aave governance to assign the required roles to each ClinicSteward.
7 Likes

This is a great idea and makes sense before Umbrella is fully activated.

Quick question out of curiosity: what is the split in terms of “Batch Liquidate” and “Batch Repay”, i.e., how many of these positions out of the $400K are pure bad debt?

Also great to see that pure bad debt is very low on Aave v3 compared to the amount of borrows and revenue!

1 Like

Starting on a clean slate is an approach that we value, by addressing the old bad debt we can be certain of the effectiveness of Umbrella.

I think it’s remarkable seeing that the protocol accrued such little debt. I think this really proves Aaves resilience and good liquidation mechanism.

And I do also agree like the others that we should start from zero. That way it’s clean and also good to track from the beginning.

The figures reported in the original post refer to the total debt required to be repaid, either through Repay or Liquidate, and the current distribution of “pure Bad Debt” heavily depends on the chain. Where in some cases, such as Avalanche, the collateral left in the bad debt accounts is very minimal and accounts for only 0.2% of the outstanding bad debt, while in instances such as Base, the majority of the accounts eligible are too small for the liquidation to be performed.

The total registered amount of Debt requiring a “Batch Liquidate” transaction is roughly $55,000, compared to $370,000 requiring a “Batch Repay.”

The following chart provides additional information on the distribution of the most relevant asset types required for the liquidation process, with USDt on Avalanche representing a disproportionate share of the value.

2 Likes

LlamaRisk fully support the elimination of legacy bad debt via the Aave Collector. We flagged this back in February and welcome this being tackled proactively. The proposed methodology is straightforward, properly constrained, and introduces no tangible risk, while the budget limits are appropriately aligned with each chain’s bad debt. We also back granting the DEFAULT_ADMIN_ROLE to a 2-of-3 multisig comprised of ACI, TokenLogic, and Kpk.

We have created the ARFC Snapshot vote for the proposal, with voting starting in approximately 24hours.

Participate :ghost:
https://snapshot.box/#/s:aave.eth/proposal/0xee0249fea0fecbeb2d2cab90ae3e6d9c5e21d5456417048c49aea9f48f970afe

1 Like

We have created the on-chain AIP for the Aave governance to vote on the activation of the ClinicStewards across the different Aave v3 instances.

Voting will start in approximately 24 hours, participate :ghost:
https://vote.onaave.com/proposal/?proposalId=270

1 Like