Over the past months before coming up with the Compound III proposal, the Compound core team has been focused on improving the accessibility of the Compound Treasury to institutional investors
They have been focused on launching and scaling their treasury in order to provide an institutional on-ramp to Compound markets. The Compound Treasury is only accessible to accredited institutions with more than 5M of net assets and a minimum balance of $100K
Also, they have been focused on researching new assets and L2 alternatives. They introduced Gateway for cross-chain interest rate markets.
Gateway is a blockchain built on Substrate that allows Compound to create a single borrow and lending market while including assets from other blockchains. COMP token holders appoint validators and these validators earn rewards paid in the native token CASH.
Here are the reasons that lead to the inception of the Compound Chain:
The main features of the Compound Chain are:
Starport contracts are the connector for the peer chains that live on Gateway. Starport is responsible for locking or unlocking assets on the Compound Chain (once validators have reached consensus that an event has occurred).
Users can interact with the Compound Chain using their existing key pairs (e.g. private and public keys of Ethereum, Solana...) and the balance will be automatically updated. For example, an Ethereum address can send ETH on the Compound Chain to a Tezos address, or a Tezos address can send Compound Chain WBTC to a Solana address.
Compound Chain is capable of creating native assets and making them accessible to peer blockchains, as well as supporting those assets as collateral (ETH, UNI, DOT, DIEM...).
The way users bring assets to the chain is via a Starport contract by calling the smart contract with lock(asset, amount)
. Afterwards, validators will monitor the event log and stream the locking action. Whenever a node mines a block confirming the locking event, the rest of the nodes will validate such block and debit the asset to the user's address. The way to conceptualize this is that the Compound Chain will now keep track that the user's Ethereum address has N tokens of a assets A in it.
The same applies in reverse when a user wants to download an asset from the Compound Chain to the original peer blockchain. One requisite is that the user address and the asset must both exist natively on the same blockchain. On top of that, the asset withdrawal must not violate the user's collateral requirements on the Compound Chain. The process to withdraw is as follows:
Downloading an asset means bringing the asset onto peer blockchains. In this way, any asset on any blockchain can be used on Ethereum or other blockchains.
Risk management is performed with Asset Caps. Asset Caps are a way to limit the market risk of individual assets on the Compound Chain. This is achieved by restricting the maximum quantity of an asset that can be uploaded to the Compound Chain. By default, assets are unsupported and, therefore, have a cap of 0. This is also helps in preventing that users accidentally transfer unusable assets to a Starport.
Borrowing is allowed when an account owns sufficient collateral on the Compound Chain to cover their debt.
The Compound Chain relies on Collateral Factors from 0 to 1 to represent the utility of an asset used to borrow another asset. It is important to note that these assets do not need to be native to the account's chain. This means that, for example, an Ethereum address can hold Compound Chain XTZ as collateral.
Liquidations occur on a first-come first-serve basis, and absorb an account's debt in exchange for the account's collateral plus an incentive (e.g. 5%).
Price Feed Data is used to perform liquidity checks on all operations that might:
Due to the low cost of validating blocks on the Compound Chain, these actions can be performed in near real-time. Thus, no benevolent users or incentives are required. However, there is the possibility that this system might evolve in the future with the creation of decentralized exchanges on the Compound Chain itself.
CASH is the native token and unit of account within the Compound Chain. An analogy to the asset's minting would be DAI, where the asset is created by the protocol through borrowing activity. This means that the amount of CASH held by users and validators is always equal to the amount of CASH debt.
CASH is also used for paying transaction fees on Compound Chain. Just by uploading a supported collateral asset, users are capable of borrowing CASH and paying transaction costs on the network.
The process for downloading CASH is similar to downloading other assets. The only difference is that instead of withdrawing an asset from a Starport, CASH in instead minted by the local token contract while crediting balance on Compound Chain. CASH can still accrue interest on the Compound Chain while being held on peer blockchains. This is possible by synchronizing the Yield interest index with the peer blockchains on a routine basis.
Despite being initially valued at 1 USD, CASH is valued by the protocol via liquidity calculations at an arbitrary price. Furthermore, governance can allow CASH to begin tracking an alternate index such as the CPI in order to protect users against US inflation.
CASH automatically earns compound interest. For example, if the yield is 3%, a user that holds 100,000 CASH will hold 100,008.21 CASH after 24 hours have passed.
The borrowing cost for CASH must be greater or equal than the yield. Otherwise CASH can be held and borrowed unproductively. CASH debt also increases by a borrowing index
$$ Cost_{CASH} = Yield_{CASH} + Spread_{CASH} $$
where Yield and Spread are core parameters controlled by governance.
Compound Governance on Ethereum can be streamlined to perform governance actions on the Ethereum Starport. This allows for updating system parameters such as:
Compound III was publicly announced on June 29, 2022 after releasing their new multi-chain strategy to the public. This strategy is based on the ability for its own Compound Chain to deploy and run the Compound Protocol on all EVM compatible chains.
The deployment strategy is called comet, and it essentially is a money market protocol for Ethereum and compatible chains. The Comet protocol revolves around a set of smart contracts tat implement Comet's core functionality. This is specified by the CometMainInterface.sol
interface. An extra set of functions that do not fit within the main Comet.sol
contract can be found in the CometExt.sol
contract, which Comet.sol
delegates via DELEGATECALL
for unrecognized function signatures. Comet also contains a set of configurator contracts and supplementary contracts that facilitate functions to be called in a single transaction or allow users to claim rewards based on protocol participation.
The contracts are upgradeable via OpenZeppelin third-party proxy contracts: TransparentUpgradeableProxy.sol
, and ProxyAdmin.sol
. ConfiguratorProxy.sol
and CometProxyAdmin.sol
extend the functionality of such contracts respectively. Such extensive functionality overrides the _beforeFallback
function so that the proxy's admin can directly call the implementation, and also introduces a new deployAndUpgradeTo
function to upgrade Comet proxy's implementation, which is needed so that Proxy.upgrade()
can be called in one transaction passing the address of the new Comet
implementation.
On its Forum announcement, Compound claims that Comet is designed "with borrowers in mind, to be capital efficient, gas efficient, safe, and simple to govern". Here are the main changes to the main protocols:
To conclude, as the community finishes auditing the open-source Comet repository, the core team will keep monitoring the current testnet before releasing an initial deployment on Ethereum. This deployment will provide interfaces, liquidation bots, account management tools and advanced tooling to facilitate deployments across other EVM chains.
Compound Protocol whitepaper Compound Markets Maker Protocol Whitepaper Open Price Feed Compound MultiChain strategy Gateway Documentation Compound III
Also published here.