Initialize Compound III (Native USDC on Arbitrum)

Preamble:
Type: Multichain Deployment
Title: Initialize Compound III (Native USDC on Arbitrum)
Author: Compound Labs

Proposal Introduction

Point of Contact:
@compound.finance (Compound Labs)

Proposal Summary:
Compound Labs proposes the deployment of a native USDC market on Arbitrum for the community and migrate rewards from the USDC.e market to the native USDC market.

Motivation:
On June 8th 2023, Circle announced the launch of native USDC on Arbitrum. As of now, there are two forms of USDC live on Arbitrum: native USDC (USDC) and bridged USDC (USDC.e). Arbitrum and Circle are working to transition USDC.e liquidity into native USDC and, over time, deprecate USDC.e. At the time of writing (07/28/2023), several exchanges (Binance, Coinbase) are now completing USDC withdrawal requests in native USDC instead of bridged USDC.

The USDC.e market has been live on Arbitrum for over 2 months. The market was launched shortly before the advent of native USDC on the chain. The USDC.e market (as of 07/28/2023) currently has $8.4M of collateral assets, $14.95M of USDC.e supplied, and $3.13M of USDC.e borrowed. The supply cap for ARB has been reached but the community has agreed to hold off on any supply cap increases in order to prioritize a native USDC market.

Overview of Proposal:
We plan to deploy a new Compound III on Arbitrum with native USDC as the base asset and will gradually transition liquidity from the USDC.e market to the USDC market.

We will first deploy the contracts to Arbitrum (with supply caps set to 0) and update this thread with the verified contract addresses. We will then initiate a proposal to raise supply caps to be the same as the USDC.e market and seed the market with an initial set of reserves. In the same proposal, we will also deprecate the old USDC.e market by removing rewards from the USDC.e market and migrate all of the rewards to native USDC market. To fully deprecate the USDC.e market over time, we will ask Gauntlet to help turn down the supply caps in future proposals.

Copyright Waiver
Copyright and related rights waived via CC0.

License Exemption
We are requesting an exemption from the community that will allow the Arbitrum One network to obtain a Compound Business Source License (BSL) to use the Licensed Work, update compound-community-licenses.eth, and deploy it on the Arbitrum One network, provided that the deployment is subject to Ethereum Layer 1 Compound Protocol governance and control.

4 Likes

Following the conversations on this thread, a cUSDCv3 (Native USDC on Arbitrum) market has been deployed to Arbitrum from this pull request.

The parameters to enable the market are being finalized on this pull request. The parameters will be identical to our existing USDC.e market:

  • ARB: $4.13M supply cap (4M tokens), 55% CF, 60% LCF, and 7% liquidation fee
  • GMX: $1.95M supply cap (50k tokens), 40% CF, 45% LCF, and 7% liquidation fee
  • WETH: $8.69M supply cap (5k tokens), 78% CF, 85% LCF, and 5% liquidation fee
  • WBTC: $8.38M supply cap (300 tokens), 70% CF, 77% LCF, and 5 % liquidation fee

The interest rate model will be the same as the USDC.e market on Arbitrum. After the launch of the market, Gauntlet will monitor and consider recommendations to the interest rate model based on preliminary utilization & growth.

Finally, see the Initialization Proposal section below for more information about the next steps to enable the deployed market.

Deployed Contracts

cUSDCv3: 0x9c4ec768c28520B50860ea7a15bd7213a9fF58bf

This is the main proxy contract for interacting with the new market. The address should remain fixed and independent from future upgrades to the market. It is an OpenZeppelin TransparentUpgradeableProxy contract.

cUSDCv3 Implementation: 0xF25212E676D1F7F89Cd72fFEe66158f541246445

This is the implementation of the market logic contract, as deployed by the Comet Factory via the Configurator.

cUSDCv3 Ext: 0x27C348936400791b7350d80Fb81Bc61Ad68dF4AE

This is an extension of the market logic contract which supports some auxiliary/independent interfaces for the protocol. This is used to add additional functionality without requiring contract space in the main protocol contract.

Existing Contracts that were deployed with the initial USDC.e market and will be reused in the USDC market

Configurator: 0xb21b06D71c75973babdE35b49fFDAc3F82Ad3775

This is a proxy contract for the ‘configurator’, which is used to set and update parameters of a Comet proxy contract. The configurator deploys implementations of the Comet logic contract according to its configuration. This pattern allows significant gas savings for users of the protocol by ‘constantizing’ the parameters of the protocol.

Configurator Implementation: 0x8495AF03fb797E2965bCB42Cb0693e1c15614798

This is the implementation of the Configurator contract, which can also be upgraded to support unforeseen changes to the protocol.

Proxy Admin: 0xD10b40fF1D92e2267D099Da3509253D9Da4D715e

This is the admin of the Comet and Configurator proxy contracts. It is a ProxyAdmin as recommended/implemented by OpenZeppelin according to their upgradeability pattern.

Comet Factory: 0xe2AA5194E45B043AfdD6E98F467c0B1c13484ae9

This is the factory contract capable of producing instances of the Comet implementation/logic contract, and invoked by the Configurator.

Rewards: 0x88730d254A2f7e6AC8388c3198aFd694bA9f7fae

This is a rewards contract which can hold rewards tokens (e.g. COMP) and allows claiming rewards by users, according to the core protocol tracking indices.

Bridge Receiver: 0x42480C37B249e33aABaf4c22B20235656bd38068

Receives bridged governance messages from the Arbitrum cross domain messenger contract and forwards them to the bridge timelock.

Bridge Timelock: 0x3fB4d38ea7EC20D91917c09591490Eeda38Cf88A

The governor of the Comet deployment, exclusively receiving input from Ethereum mainnet governance through the bridge receiver.

Initialization Proposal

To initialize the market, the deployment process is similar to the initialization of bridged USDC market on Arbitrum, the primary difference being the base asset will be the native USDC instead of bridged USDC.

The initialization proposal will take the following actions:

  1. Set Comet Factory, Comet configuration, deploy new Comet on Arbitrum, set rewards configuration, and also set COMP speed on the old USDC.e market to 0. This sends the encoded setFactory and setConfiguration and deployAndUpgradeTo and setRewardConfig calls across the bridge to the governance receiver on Arbitrum. Rewards will be allocated and migrated from the bridged USDC.e market to the native USDC market with the exact same speeds: 10 COMP/day to the supply side and 0 COMP/day to the borrow side. Then, the speeds on the bridged USDC.e market will be set to 0 COMP/day on both the supply and borrow side. This sends the encoded setBaseTrackingSupplySpeed, setBaseTrackingBorrowSpeed and deployAndUpgradeTo calls across the bridge to the governance receiver on Arbitrum.

  2. Approve Circle’s Cross-Chain Transfer Protocol (CCTP) TokenMessenger to take Timelock’s USDC on Mainnet, in order to seed the market reserves through the CCTP.

  3. Deposit and burn 10K USDC from mainnet via depositForBurn function on CCTP’s TokenMessenger contract to mint native USDC to Comet on Arbitrum.

  4. Write the ENS TXT record v3-official-markets on v3-additional-grants.compound-community-licenses.eth containing the official markets JSON.

The deployment and proposal migrations have been built using the Comet scenario framework and deployed using the Comet deployment manager. The scenario checks can be seen from the proposal branch CI checks.

1 Like

The proposal has been created and will start voting in 1 day.

1 Like

Thanks everyone for voting. The proposal has passed and executed on Arbitrum on September 1st 11:11AM. The cUSDCv3 market is now live!

3 Likes

@Gauntlet will be managing incentives for this market going forward.