Initialize Compound III (USDC on Ethereum)

Compound III

Compound III is a next-generation collateralized borrowing protocol, designed for security, capital efficiency, low gas costs, and streamlined governance.

Each deployment of Compound III features a single borrowable asset. Borrowers supply collateral, which is isolated and remains their property–it is never rehypothecated or withdrawable by other users (except during liquidation).

By removing every unnecessary feature and use-case, upgrading the risk engine (and capital efficiency), and focusing on a single borrowable asset, the protocol has the potential to be the safest & most appealing tool for borrowers ever designed.

Protocol Launch

How the protocol is used is up to Compound Governance, which has control over the protocol license, and all deployments. Eventually, Compound III could have a major footprint across blockchains & assets–but first, the protocol should be tested in a production environment at limited scale.

The first proposed market is USDC on Ethereum; the contracts have been tested, audited, and deployed to production, with help and input from OpenZeppelin, ChainSecurity, Certora, Gauntlet, Chainlink, and many members of the community.

The following initialization proposal creates supply caps for five collateral assets and seeds the market with initial reserves. Upon execution of the proposal, you can begin using the USDC market on Ethereum.

Initialization Proposal

The proposal itself performs 3 basic steps, broken into 7 Timelock actions.

The first 5 actions are to configure the new deployment to allow the market to become active, by raising the supply caps of each of the 5 collateral assets individually. The function called is updateAssetSupplyCap in the Configurator. The supply cap changes are summarized below:

Collateral Asset Current Supply Cap Proposed Supply Cap
WETH 0 27,000
WBTC 0 2,100
LINK 0 1,250,000
UNI 0 1,250,000
COMP 0 200,000

The next (6th) action is to deploy and upgrade to the newly configured implementation for the market. The proposal calls the deployAndUpgradeTo function of the ProxyAdmin contract, which is the only contract capable of changing the implementation of the proxy. This wrapper function also takes care of deploying the new implementation from the factory contract, using the previously set configuration in the Configurator.

The final (7th) action is a simple ERC20 transfer from the Timelock to the new market, adding 500,000 USDC of reserves. Reserves create a liquidity and loss cushion for users, and enable new dynamics introduced by the upgraded interest rate models in Compound III.

Additional resources:

  1. OpenZeppelin audit
  2. Chainsecurity audit
  3. Compound III code repository
23 Likes

Glad to vote Yes on this. Also, :clap: for explicitly describing each function call - this should 100% be the norm.

1 Like

This is a super exciting development, and I plan to vote in favor! Big ups to all contributors involved in shipping v3.

Due to v3’s separation of supply and borrow rate curves, this proposal does have interesting side effect of allowing for negative reserve accruals at certain utilization rates (total funds paid to suppliers could exceed funds earned from borrowers). Based on current parameters, utilization below ~50% or above ~85% would result in slow reduction in market reserves.

image
Source

The magnitude of potential negative accrual is small, and with Compound providing 500k USDC in up front reserves I don’t think this presents any risk to the protocol in the short term. In a way this subsidizes users that help keep utilization within a target range so maybe it will help with bootstrapping the market. However I’m not convinced of the business case for setting rate models that allows for negative reserve accrual over the long term. It may be worth revising the rate models after gaining some empirical data from early market operations.

6 Likes

Congrats Compound Labs on getting the next iteration of Compound to production!

While I have been far too busy to take an in-depth look at the new protocol, at a glance, everything looks great. I’m happy that the tech stack has been upgraded to Hardhat and ethers. Compound can benefit from other organizations building the tooling rather than Labs’ focus being split with the responsibility of maintaining Saddle.

The change to only one asset being borrowable from the pool has been controversial and will change the use case for some, but ultimately, I think this will be a beneficial change for Compound. The protocol can now focus on and optimize for what most users come to Compound to do - borrow stables against their crypto.

I’m very excited for Compound to launch on other chains with this. This is important because not everyone can afford the security that Ethereum offers.

There’s a small but very important caveat that I’d like to help with. Namely, the lack of an anchor in Compound III’s price feeds. As someone who’s worked on token listings to Compound, I know just how annoying and bottlenecking it can be to require sufficient liquidity at a single source (Uniswap v2, and soon Uniswap v3), in addition to having a Chainlink price feed. However, security is of utmost importance, and there’s always a price to pay for security. I have a fully on-chain, audited DEX price aggregator already running production price feeds across multiple chains with an official launch just a few weeks away. I’ll be happy to present this at the September 21 dev call.

2 Likes

After initializing a market, the next major decisions for governance are:

  1. How to include the deployment’s users in the COMP Distribution
  2. How to increase the supply caps for supported collateral assets
  3. How to add additional collateral assets

The latter questions are addressed by OpenZeppelin’s Asset Listing Guide, and Gauntlet’s Market Risk Framework for Asset Listings on Compound, and their experience managing the existing protocol will likely map to Compound III.

But the first question is new, and should be addressed at the outset of a Compound III deployment.

In the week since the USDC market was initialized, preliminary metrics indicate that the deployment and initial parameters are stable:

  • $4.33M is borrowed against $7.88M of collateral, a 55% LTV, significantly above the 28% LTV seen in Compound v2
  • The USDC utilization rate is 70%, compared to 37% in Compound v2
  • Per @monet-supply observations above, the utilization rate is in the reserve-generating section of the curve; reserves have grown by $0.36k
  • There is currently $2.28M of liquidity available to withdraw or borrow (which is insufficient for larger users)
  • There has been one liquidation demonstrating that the liquidation mechanics are functional, and that liquidators are active (albeit completely untested at scale)

With no known issues, the deployment passes its first safety litmus test, which should otherwise prevent a COMP Distribution.

Strategy for discussion

Including the Compound III USDC market in the COMP Distribution serves many purposes; it empowers users of the new deployment, and encourages the migration of usage from Compound v2, which can prevent liquidity issues related to the Merge and serve as an outlet for users impacted by Proposal 117.

Everyone’s comments & thoughts on the following sample proposal are encouraged. If there is broad public support, it should be proposed to take effect shortly after Proposal 119 and before the Merge:

The COMP Distribution would be disabled for ETH, WBTC, LINK, UNI, and COMP in Compound v2, totaling 177.58 COMP/day; these assets are useful collateral in the Compound III USDC market, and are encouraged to migrate.

Compound III USDC borrowers would be allocated 177.58 COMP/day, which represents 15.59% of the COMP Distribution; 84.41% remains with Compound v2 users. The net impact of this proposal is zero; it does not change the total quantity of COMP distributed to users.

Supply caps, and the maximum risk of Compound III USDC, wouldn’t change; but usage of the existing supply caps will probably trend towards full utilization.

Proposal Functions

The proposal itself performs 4 basic steps corresponding to Timelock actions.

The first action removes the COMP distribution using the setCompSpeeds function in the Comptroller (v2).

The next (2nd) action calls setBaseTrackingBorrowSpeed in the Configurator and sets the borrower allocation to 177.58 COMP per day (the amount being shut down in v2 by the first action).

The next (3rd) action is to deploy and upgrade to the newly configured implementation for the market. The proposal calls the deployAndUpgradeTo function of the ProxyAdmin contract, which is the only contract capable of changing the implementation of the proxy. This wrapper function also takes care of deploying the new implementation from the factory contract, using the previously set configuration in the Configurator.

The final (4th) action calls grantCOMP from the Comptroller (v2), transferring 25,000 COMP from the Comptroller to the Compound III Rewards contract. Based on the parameters set earlier, this equals 141 days of distribution before governance would need to replenish or modify the distribution to Compound III users.

This proposal utilizes the Configurator and Factory contract, and introduces no new code. Scenarios have been run that confirms the success of the proposal.

4 Likes

I think these incentive shifts make sense to help boost v3 liquidity. A few comments:

  • It may make sense to leave cETH supply incentives on v2 (but not borrow incentives) unchanged until after the merge, to avoid incentivizing people from withdrawing ETH liquidity when it may be needed to avoid the market reaching 100% utilization
  • Could also remove incentives for ZRX and BAT, and shift them to USDC borrowers on v3; while ZRX and BAT are not currently collateral assets on v3, the current incentives on v2 arguably bring little value to the protocol and could be better spent elsewhere
4 Likes

The decision to shift incentives from V2 to V3 is mainly strategic, but below, we provide some analysis on the market risk side to aid the community in making a decision:

  • It is good to see that the V2 ETH supply incentives will not be removed in light of the upcoming merge.
  • We’d also highlight a risk with respect to “recursive” USDC borrowing. Under high utilization, an arbitrage opportunity would be created for users to recursively borrow USDC and supply it due to how the interest rate curves are configured, as @monet-supply has mentioned. The situation will become amplified if the COMP incentive is turned on. It would be prudent for Compound to avoid negative reserve accrual and draining the reserves. Therefore, the interest rate curve on V3 should be adjusted at some point. At the same time, we’d note that the “money multiplier” of recursive USDC borrowing is lower on V3 because USDC is not a collateral asset (whereas on V2, users can have multiple rounds of re-supply and borrow).

See the charts below of the supply and borrow composition of the top 10 borrowers on Compound as of September 2, 2022 (the ‘Top Borrower Addresses’ on the x-axis refer to the same users in both charts). We’d point out that Borrower #5 supplies $63M of WBTC. This user mostly borrows USDC, so migrating to V3 can be strategic for them.

To view these charts interactively, here is a link to our public beta dashboard for Compound.

2 Likes

I don’t support COMP distribution change proposal. Mainly because of cheapskate approach, which i dislike in general.

While i have no objections on turning on COMP distributions on v3, i see no real reason to turn it off on v2 as of now, especially in such volatile times as we are with upcoming merge.

I think 178 COMP per day and 25000 COMP for 141 days is nothing dramatic, and that should be done without removing distributions on v2, at least for now. During that 140 days we should accumulate enough data on v3 itself and v2 to v3 migration to justify further actions, which might at that point be removal of distributions on v2.

Should i remind everybody, that the whole idea of halving COMP distributions several month ago was to use COMP saved to Kickstart rewards? Of course it was never a truth to begin with, just a cool story to sell to governance, as we can observe by what followed. Here is an opportunity for kikstarting markets, and yet saved COMP are not even on the table. :slight_smile:

Besides, having additional distributions on v3 might attract new users, rather than just encourage existing v2 users to revaluate their positions. And there is no guarantee that those users would choose compound v3, rather than go to something like aave on optimism instead, which might prove to be more economically viable. Users of Compound usually exibit conservative approach, preferring to stay with proved strategy, ignoring slight volatility of rates, but being cornered with sudden change, they might explore alternatives instead.

So i don’t think it’s worth the hassle for just saving on 25000 comp, which by itself have a very relative value, and might have dramatically different monetary value at a later time, thus being quite poor treasury asset. Protocol reserves and/or treasury should primarily consist of harder assets than that. And thus, if there is an opportunity to spend more of it to attract more capital/revenue, using an market opportunity presented, that should be taken rather than passed.

Thus i suggest to leave v2 distributions intact for now, and look at it as initial promo distributions for kickstarting v3. And decide on further actions considering distributions at a later time, having more data at hand.