[COMP] MIP6 Collateral Onboarding - Compound

  1. Who is the interested party for this collateral application?

    ParaFi Capital

  2. Provide a brief high-level overview of the project, with a focus on the applying collateral token.

    Compound is an algorithmic, autonomous interest rate protocol enabling users to lend and borrow cryptocurrencies.

    COMP is Compound’s governance token. COMP is an ERC-20 token used to propose and vote on
    changes to the Compound protocol. Token holders can also delegate COMP to any address. Anybody with 1% of COMP delegated to their address can propose a governance action.

  3. Provide a brief history of the project.

    Compound was first announced in January 2018. v1 launched in September 2018, and v2 launched in May 2019.

    Since launching v2, Compound has become the largest DeFi platform in terms of Total Value Locked
    (TVL), standing at ~$600MM. The protocol currently supports nine assets: BAT, ETH, USDC, USDT, DAI, ZRX, WBTC, REP, and SAI.

    In February 2020, the Compound team announced the release of the COMP token and the path to
    handing over the governance of Compound to COMP holders. COMP holders officially took control of Compound in April 2020, replacing the team as the administrator of the protocol.

  4. Link the whitepaper, documentation portals, and source code for the system(s) that interact with the proposed collateral, and all relevant Ethereum addresses. If the system is complex, schematic(s) are especially appreciated.

  1. Link any available audits of the project. Both procedural and smart contract focused audits.
  1. Link to any active communities relating to your project.
  1. How is the applying collateral type currently used?

    COMP is a governance token. COMP token holders propose and vote on changes to the Compound
    protocol. Holders can also delegate their COMP to any address.

    The Compound governance dashboard displays ongoing governance proposals and a leaderboard of voting weight.

    COMP Distribution Schedule

  • 2,396,307 COMP have been distributed to shareholders of Compound Labs, Inc., which created the protocol

  • 2,226,037 COMP are allocated to founders & team and subject to 4-year vesting

  • 372,707 COMP are allocated to future team members

  • 4,229,949 COMP are reserved for users of the protocol

  • 775,000 COMP are reserved for the community to advance governance through other means — which will be announced at a future date

  • 0 COMP will be sold or retained by Compound Labs, Inc.

    4,229,949 COMP will be distributed to borrowers and lenders on Compound over approximately 4 years.

    Initially, the distribution was allocated to each market (ETH, USDC, DAI…) proportional to the interest being accrued in the market. However, with the passing of proposal 011, each market is allocated COMP relative to borrowing demand.

  1. Does one organization bear legal responsibility for the collateral? What jurisdiction does that organization reside in?

    N/A

  2. Where does exchange for the asset occur?

    COMP trades on multiple centralized exchanges including Coinbase, Binance, and FTX. COMP also trades on decentralized exchanges including Uniswap and Balancer.

  3. (Optional) Has your project obtained any legal opinions or memoranda regarding the regulatory standing of the token or an explanation of the same from the perspective of any jurisdiction? If so, those materials should be provided for community review.

    N/A

  4. (Optional) List any possible oracle data sources for the proposed Collateral type.

    N/A

  5. (Optional) List any parties interested in taking part in liquidations for the proposed Collateral type.

    N/A

5 Likes

If we onboard COMP in the near future we should use a high CR due to the current farming hype and therefore the expectation that the price of COMP is going to steadily decline(or rapidly decline) in the future.

In fact, I don’t really understand who’d want to leverage COMP.

6 Likes

It’s hard to include it as a collateral because it’s in a price discovery fase and most importantly there is no cash flow to estimate, how can you value it? it’s purely governance for what I can see, how much value does the governance imply? Who knows.

2 Likes

I agree its hard to know what COMP is worth, but DAI survived ETH from $1000 to $90. Maybe require a little extra collateral ratio for the newness of it. I don’t think volatility should exclude it

3 Likes

I don’t have a problem with volatility, in fact it’s a good thing provided good liquidity IMO. I do have a conflict regarding fundamentals, perhaps there is information I’m not taking into account but I ponder more fundamentals (in basis of my current limited knowledge) rather than hype.

2 Likes

It will be interesting to see how the Maker Community feels about onboarding a protocol that is currently getting everyone’s attention and has folks like InstaDapp (Owner of 50,000 COMP tokens) tweeting and pushing for irresponsible bahaviour IMO:

https://twitter.com/Instadapp/status/1278800384249802755

So where as a Community do we stand? Where do we draw the line? Do we align ourselves with Paraficapital (KKR owned), Coinbase, and the rest of the folks that are benefiting from COMP–which most would agree has misaligned incentives? What is the protocol doing to help the overall Ethereum ecosystem? Has your next door neighbor who’s tech averse ever heard of Compound, or Ethereum? What as a Community (Compound, Ethereum, Maker) are we doing by bragging about “Yield Farming”–besides the negative Media/Press coverage that’s about to follow?

I’m a Capitalist as much as Henri Kravis, Brian Armstrong, etc., but where do we draw the line and protect MakerDAO & most importantly DAI?

7 Likes

I support the use of COMP tokens as collateral, just need to give reasonable parameter settings. I also support MKR tokens as collateral, as MKR holders have no reason not to support themselves, just give reasonable parameter settings.

2 Likes

We have seen COMP’s liquidity profile improve over the past 2 months. Additionally, MKR holders voted strongly in favor of adding COMP as collateral (41,448 MKR in favor, 0 against) in the July MIPs poll.

Given COMP’s ability to drive immediate DAI generation (tied to yield farming and liquidity), we believe COMP is well suited as a collateral type. Does the community have any objections to adding COMP as collateral in the next MIPs process?

What timeline do the domain teams have in mind for evaluating COMP? @NikKunkel @Mariano_Conti @cyrus

Thank you.

3 Likes

@paraficapital The Oracle Team has already finished the technical requirements needed to onboard COMP as a collateral type, though the formal Oracle analysis still hasn’t been presented to the community. There is additional work still needed from the Risk and Smart Contracts Team with respect to evaluating COMP as well formal submission of a MIP12 that needs to precede collateral onboarding.

4 Likes

Would it be possible for vaults to delegate their COMP voting power to to enable continued participation in governance while borrowing?

1 Like

If a user has previously declared a delegate, when they transfer their tokens, their delegate votes get transferred to the delegate of the person they’re sending to (if the receiver has declared a delegate).

Since the join adapter will not have any delegates declared (as it stands), the delegation will be removed from the user and not transferred anywhere. This can be seen in the _moveDelegates function, where dstRep will be address(0) in the case of the join adapter.

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "Comp::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Comp::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Comp::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Comp::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "Comp::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "Comp::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }