Add Market: LINK

Chainlink is arguably one of the most reputable, trusted, and valuable blockchain protocols, ranked the 10th largest coin by market cap at nearly $13B.

I am proposing adding a market for $LINK as a collateral asset.

Here are a few reasons why we should do so:

  1. Used as collateral. Ideally, I think anyone should be able to borrow against any of their assets provided there is a market for it. The more assets we support, the greater financial freedom and capital efficiency we offer to DeFi users around the globe. This is especially important for the unbanked.

  2. OTC desks can quickly borrow at market rates to sell large amounts of tokens to their clients without much delay. Borrowing this way is much less risky for them to operate than for them to constantly hold large amounts of various volatile tokens.

  3. Allowing for strategic governance voting using borrowed tokens.

It is true that there is a risk when adding any asset as a collateral asset. While there is a risk, offering more collateralizable markets increases the value of the compound protocol, increases the utility of DeFi and crypto, and provides more financial freedom and capital efficiency to users (especially the unbanked).

To ensure the safety of the Compound protocol, we must carefully manage risk. In this case, we can do this by fine-tuning the collateral factor, reserve factor, and borrowing limits for $LINK.

I’d like to open up a discussion as to what the optimal initial values of these risk-related factors should be.

Once we come to a majority agreement on this, I will deploy the contracts and create an autonomous proposal to be voted on by everyone. $LINK is already in our price feed, so this is fairly simple to do.

So with respect to $LINK, what do you think are optimal initial values for:

  1. Collateral factor
  2. Reserve factor
  3. Borrowing limit

Thanks for reading,
TylerEther / TRiLeZ

6 Likes

Will just link to this related post

3 Likes

Incredibly excited about this. LINK seems like a great asset to add to Compound.

The most recently added markets were cCOMP and cUNI.

  • Collateral Factor for cCOMP and cUNI are both set to 60%.
    • ~35% of LINK (~$11.3billion USD value) is stored in a closed-source contract which is unknown whether there is a malicious distribution risk (see risk notes later in my post here).
    • I think we should consider starting cLINK with a low Collateral Factor to help offset this risk.
  • Reserve Factor for cCOMP and cUNI are both currently at 25% (proposal 31).
  • Borrow Cap appears to be Token-Specific. I’m not sure what this should be or even if it needs to be set for cLINK market? Need feedback from others on this.
    • UNI Borrow Cap is currently set to 11.25 Million UNI
    • COMP Borrow Cap is currently set to 90,750 COMP
    • The Community MultiSig has power to adjust borrow caps
    • From the Crypto Briefing article below it seems that LINK is NOT currently used for Chainlink governance. Maybe the borrow cap is less important if there is no voting-power borrow risk?
  • For the Interest Rate Model, cLINK might want to use the same one used for cCOMP JumpRateModelV2 | 0xd956188795ca6f4a74092ddca33e0ea4ca3a1395 (etherscan.io)
    • 2% APY borrow base rate
    • 20% APY borrow rate at kink
    • Kink at 80% utilization
    • 100% APY borrow rate at 100% utilization
    • No need to deploy a new IRM contract, just point to this one if using exact same rate parameters,

@jmo from Gauntlet has been doing some risk modeling for Compound. I would love to have some input from Gauntlet for ideas on initial values for these market parameters for adding the LINK token.

Here is the ChainLink Token (LINK) Security Audit Report.

Token Security is important when adding asset markets to Compound. Consider the following from OpenZeppelin Compound Audit.

  • “if a malicious or poorly-designed token is added to Compound, it could allow someone to steal all funds entrusted to Compound. For example, if anyone can arbitrarily change the totalSupply or account balances of a listed ERC20 token faster than the price oracle can adjust the price, an attacker could use those newly minted tokens as collateral to borrow all Compound assets.”
  • LINK token audit above shows totalSupply at 1 billion.
    • The LINK contract code is immutable (no upgrades) and the totalSupply is a hard-coded constant.
  • How are LINK tokens distributed to users from the total supply? If LINK tokens can be distributed arbitrarily faster than price oracle can adjust that would be a concern. If the distribution is predictable then this is less of a concern.
    • I do have a security concern about this. ~35% of all LINK (~350million) is owned by a Smart Contract here which does not have its code published on EtherScan!
    • Contract Address 0x98c63b7b319dfbdf3d811530f2ab9dfe4983af9d | Etherscan (closed-source contract holding 35% of all LINK valued today at ~ $11.3 Billion USD)
      • If this was distributed all at once or stolen by a malicious actor, it would be enough to take a large chunk of the liquid non-borrowed assets currently in Compound. Collateral Factor for cLINK could help mitigate this. With a 60% CF, this would pose ~$6.78 Billion USD risk. Starting with lower CF for cLINK might be a good idea due to this closed source LINK contract.
        • See the comment from rleshner in this discussion regarding using Borrow Cap’s on other Compound Markets (WBTC, ETH, etc) to enforce some liquidity safety buffer in each market.
      • Before adding LINK to Compound, I would love for this smart contract code to be published on EtherScan by the contract writer or other person with access to the code. Maybe someone with Chainlink contacts can push to get that contract code posted on Etherscan?
        • I think this may be the Chainlink Node Operators incentive pool which appears to be centrally controlled by the company “SmartContract Chainlink Ltd.” Since the company controls these assets they can distribute in any manner they decide.
    • The LINK token control and distribution is a popular topic of discussion. Here is a recent article from Crypto Briefing.
2 Likes

Great to see the community rallying around the addition of new assets.

This risk (an attack or movement of that contract’s LINK into Compound, in order to borrow Compound assets) could be offset by activating borrowing caps for Ether, WBTC, and the other collateral assets (BAT, ZRX, UNI, COMP).

1 Like

I like the possibility of using Borrow Caps to help ensure some safety liquidity margin in other Compound Markets (ETH, WBTC, etc). I think Gauntlet had suggested something similar maybe in combination with their thoughts on automated governance parameter adjustments.

I think another easy way to offset some of the risk of possible malicious or just unpredictible massive distribution from that 35% LINK holding contract is to start the cLINK market Collateral Factor lower. This is a parameter that is easy to start at zero or low, but difficult to smoothly reduce later (as we saw with WBTC reduction of CF recently).

I think part of my security concern is related to the central control by the Chainlink company of a massive amount of LINK tokens which at one point was ~ 65% of the 1billion tokens (at the time of ICO). They control several contracts and wallets the largest of which is the 35% one mentioned in my earlier post. Any safety decisions we make when adding LINK to Compound can help limit losses if these Chainlink treasury contracts or wallets become vulnerable to exploit or theft.

1 Like

Thanks mistertom for the reply! Non-circulating tokens and the creation of additional tokens were not things I considered before. I’ll think about these sort of attack scenarios and then loop back on this.

I did some investigating into the contract at 0x98c63b7b319dfbdf3d811530f2ab9dfe4983af9d. The bytecodes generated is almost a 100% match to this contract: https://github.com/gnosis/MultiSigWallet/tree/4b9a417b63e433e353527ba73ef687e0eedc0d11.

So it’s safe to classify this contract as an old Gnosis MultiSig wallet.

3 Likes

@mistertom I think adding LINK with a collateralFactor of 0, like USDT is a good path forward. Of course, we’ll want to raise that later. This would:

  1. Punt on any concerns with token centralization
  2. Allow the protocol to test if the interest rate model is a good fit for LINK
  3. Give Gauntlet some time to run stress tests and pick collateral requirements for LINK

We can’t commit to anything right now, but I think it would be great to get LINK on the platform in the meantime and start generating revenue with it to demonstrate the value it provides.

7 Likes

If LINK starts with a collateral factor of zero and reserve factor of 25% I think I would be voting “yes.” That would be a super safe way to introduce it and give some time to deliberate on next value for the Collateral Factor while testing out the new market.

2 Likes

So here’s the current issue with adding new markets as described above.

Some tokens, such as LINK, are highly concentrated in a small number of wallets. These tokens are not in circulation. Price discovery of such token is based upon the circulating supply.

Assuming demand for the token stays the same, a large increase in the circulating supply will likely pull the price of the token down.

Let’s examine the specific case of the Chainlink founders dumping all of their dormant tokens into Compound protocol.

Now, just having LINK sitting in our protocol likely won’t have much of an effect on the price as its still not really circulating. A large amount of LINK would either have to be liquidated or borrowed and then subsequently be sold in exchanges for the price to drop.

Let’s examine large amounts of these dormant tokens being borrowed and sold. This would be a great way to short LINK - borrow a large amount, sell all at market price, then buy back at lower price points. Since Compound requires over-collateralization, this would be costly and risky for a user. We also have a borrowing limit to prevent this. This doesn’t seem like too big of a concern to me.

Now let’s examine a scenario where all of these dormant tokens are used as collateral to borrow WBTC, then eventually all of the LINK tokens are subject to liquidation. Assuming all of the assets are seized, they would then be in the possession of a number of different owners. If these new owners were to sell all of their newly acquired LINK, the price could very well nosedive. This could cause a ripple effect of liquidations where LINK is used as collateral. This is what we want to avoid.

So there’s a clear risk when it comes to the collateralization rate of various tokens.

But this is not just some token, this is a token of one of the largest and most reputable blockchain projects. It’s highly unlikely that the Chainlink founders will perform such an attack. It’s more likely for such an attacker to be someone who’s hacked Chainlink’s Gnosis MultiSig wallet(s). But the risk is still there.

As a solution to this problem in general, we could introduce deposit caps or max collateralizable amounts based on trading volume for a period of time, for each and every market. One of us can make a new proposal for this.

Finally, I’d like to mention this risk isn’t specific to LINK. Such an attack could be performed by whales with any asset.

1 Like

I’m supportive of adding LINK, above were my attempts to investigate into the token and see what market parameters we might set to sell voters (and myself) on passing the proposal to add the new market. We need to sell the COMP voting whales on the initial parameters to reach that 400,000 votes needed for the proposal to pass. jmo from Gauntlet above mentioned there were similar central control concerns with adding USDT which resulted in setting the initial CF to zero. Our voters might be more trusting of Chainlink company than Bitfinex (Tether associated company) in which case they could approve initial Collateral Factor above zero. Choosing that initial CF value is a gamble, too high and the token add might fail to pass a vote. If the CF is set low enough I think we can almost guarantee that the proposal to add LINK market will pass and then future proposal to raise the CF can be voted on later with additional trust as users have seen the LINK market in operation.

2 Likes

Another market parameter that hasn’t been discussed here, COMP distribution rewards for the LINK market. We could start the market out without COMP distributions. I believe when cUNI and cCOMP markets were launched, the COMP distribution was automatically adjusted with the size of each market. Now that COMP distribution rates are set manually, it can cause a mad rush to enter a market which starts empty and receiving a COMP distribution. Take for example the recent “upgrade” of the WBTC market. This created a new empty WBTC market with massive COMP distribution allocated (moved from old WBTC market). Compound users made a mad-rush to enter the new WBTC market to take advantage of the COMP distribution which was very massive for the first few users to enter the market. If we don’t mind this mad-rush then maybe we could set the COMP speed to match cUNI which was set in proposal 35: Comptroller._setCompSpeed("cUNI", 1950000000000000). This distributes ~ 25.62 COMP per day to the UNI market split 50/50 between suppliers and borrowers. LINK would be the first market added since manual COMP speeds were implemented other than the WBTC migration.

2 Likes

I think using the distribution to improve the liqudiity flow into a new contract is great, this helps establish a great liquidity market for borrowers very fast.

2 Likes

That’s a good point, the COMP distribution helps build up the new market with users quickly. I say we copy the COMP speed from cUNI for this new LINK market.

1 Like

we would have to “decrease” some amount from other market and give the decreased amount to the new market, to keep the “same” comp speed in total

I think there’s a buffer because total comp speeds are less than 0.5 COMP per block coming from the Reservoir. But I guess that other COMP is designated for other protocol purposes (grants, etc).
Which market(s) do you think we should reallocate the COMP Distribution from?

  • Comptroller compRate is 0.176 * 2 = 0.352 COMP per block (split 50/50 supply/borrow)
  • Reservoir drip rate is 0.5 COMP per block, the difference is reserved for grants, etc.

Table has been updated with suggested COMP reallocation from rleshner. reallocate from cUNI/cBAT/cZRX to cLINK. My math needs to be double-checked for rounding / floating point errors.

Market compSpeed compSpeed*2 New compSpeed New compSpeed*2
… (supply) /block (supply+borrow) /block
USDC 0.067 0.134 No Change No Change
DAI 0.067 0.134 No Change No Change
WBTC 0.01075 0.0215 No Change No Change
ETH 0.01075 0.0215 No Change No Change
USDT 0.00965 0.0193 No Change No Change
COMP 0.005 0.01 No Change No Change
UNI 0.00195 0.0039 0.0014625 0.002925
ZRX 0.00195 0.0039 0.0014625 0.002925
BAT 0.00195 0.0039 0.0014625 0.002925
LINK N/A N/A 0.0014625 0.002925
Totals … … 0.176 0.352

The following link shows the COMP Distribution APY estimates which take into account market size. This can help us determine which market(s) we can reallocate some COMP distribution from.

1%~ from all market, that would be 0.00352, but also the idea of yours that actually we can afford giving it a comp distribution rate without decreasing any could be a solution too.

1 Like

My table has been updated above with the suggested 1% reallocation to LINK. My math needs a double-check though. I think this works well and then we don’t need to take any COMP from other treasury usage. One disadvantage of reallocating this way is the proposal will have a large number of function calls but that shouldn’t keep us from doing it :slightly_smiling_face:.

Thinking it more deeply this is actually an issue cause the governance contract can handle max 10 operation in one proposal :slight_smile:

1 Like