Oracle Infrastructure: Chainlink Proposal

In addition to the medianizer, I have another proposal for the community to consider for improving the oracle infrastructure. While researching various solutions, I talked with Johann at Chainlink to learn more about their system because Aave and other notable protocols utilize them. I thought it would be prudent to get their opinion as well.

The Chainlink team has a proposal for the community to consider. As many of you may know, Chainlink has an existing oracle system that anyone can use. While Chainlink has been considered in the past, I mostly dismissed it because their existing system contains an admin key (multisig), and I did not think it would pass a vote. However, their team is willing to launch oracle contracts, similar to this CRV/ETH oracle, without an admin key or with an admin key that the Compound community controls. As well, their team is willing to launch any oracle the protocol would like and built to the parameters we want as a community.

This was a game-changer to me, so after the call, I started doing due diligence. Here is a quick summary I have gathered from speaking with the Chainlink team on why the community should consider using the Chainlink solution.

  • They are the most experienced team in the space with building secure oracle solutions. They have a 100+ person team, with engineers, researchers, and DevOps solely focused on oracles full time.

  • Their systems have been online for years and are securing significant amounts of onchain value. Aave, Synthetix, dYdX, and a bunch of other DeFi dApps use them.

  • They already have a proven system of reporters, posters, and aggregators in place.

  • Will require minimal technical effort for us to switch over and launch new oracles in the future.

  • They have high standards for data quality. Each oracle node takes a median from multiple data aggregators, and numerous oracle responses are further aggregated. This will give us strong market coverage and redundancy.

  • Their systems are reliable and consistently post price updates during extreme network congestion, such as the recent gas price spike of over 1,400 Gwei, and provide extensive real-time monitoring of all networks.

  • They have built a node network with reputation systems and visualization tools for the community to monitor their onchain performance. We can even select which nodes we want.

  • Shared costs for oracle networks with other ecosystem projects, meaning it’s cheaper than publishing the data ourselves.

After thinking on these points and how they compare to a community built medianizer, I do have some concerns about the medianizer that I would like to share:

  • Using centralized exchange APIs only provides raw, unrefined data. That leaves us vulnerable to price wicks, exchange downtime, AWS/Cloudflare concerns, etc.

  • Using DEX data as a primary source is unideal due to the rapidly changing liquidity landscape.

  • Getting exchanges to join the Open Oracle seems to be harder than anticipated. All exchanges are currently low on resources due to trading volume and general usage being at an all-time high.

  • The economics of posters are incomplete and unrefined.

After weighing the options, I feel Chainlink is worth considering. However, before I and the Chainlink team explore their approach any further, I want to get a temperature check from the community.

If the community is interested in exploring this, here are the rough steps we would take:

  1. Once enough interest is expressed, Chainlink would launch the 10 oracles Compound requires.

  2. Setup a new oracle contract for the comptroller to point to.

  3. Launch everything on a testnet and have the contracts audited.

Costs: Chainlink would like Compound to pay $150 per oracle per month. With 10 markets (pegging USDC to 1), that would be $1500 a month to stream to Chainlink via the set _setContributorCompSpeed.

To learn more about Chainlink, check out these links:

17 Likes

Great idea. I am 100% for this.

2 Likes

The cost of $1,500 for chainlink is very small, but we can effectively improve the quality of oracle.

2 Likes

I’m in full support of this, delegating the operational burden of oracles to a decentralized node network that has proven its resiliency is a strong move for Compound. Let Compound focus on creating the best protocol for open financial markets and let Chainlink do what they do best - provide reliable data.

8 Likes

I support this, at this point it is the best possible solution. I think that the protocol should move over time from any centralized solutions in all segments of functioning.

4 Likes

Thank you @getty for this information and doing the research. Some questions:

  • You mention a price of $150 per oracle, will this stay the same if the gas fees increase?
  • Some of the Chainlink medianizers that are live right now use 21 nodes, some 15 and some 9. Do you have any insight on what amount would be sufficient decentralization to ensure both up-time and security against manipulation?
  • Is it possible to choose which nodes are added to these price feeds? As in, can we choose based on what the reputation.link website says are the best nodes?
1 Like

I am fully in support of utilizing Chainlink. They have the best track record in the space, and leveraging their specialized team to address our oracle concerns will allow us to better focus on our core competencies as a lending protocol.

I agree, removing or giving our community control of the the admin keys is a game-changer. I imagine it will alleviate many people’s concerns with utilizing a 3rd-party solution within our governance framework.

While I admire the initiative to build our own medianizer, I do not think it will match the level of security, data quality, or reliability we will get with Chainlink. Again, this would allow us to focus more of our efforts toward improving the Compound protocol itself, which is invaluable.

I look forward to hearing others’ opinions.

7 Likes
  • Yes

  • We can choose how many we want. The Chainlink guys think 16 would be the standard, but I’ll see if I can find some more info on this.

  • Yes, the community will have the option to chose which nodes are added to the price feed. I think Chainlink will make a recommendation because they know them best, but the community can obsoletely give feedback.

8 Likes

It goes without saying. Thank you for the work you have done.

While I love the idea of set comp contributor speeds to them, I would love to add in the chainlink market as well, and have part of the costs inside the reserve factor.
Obviously this would be after the fact, but maybe if it’s together it could save some time and be more efficient.

If this is not the case, then by all means I support adding this, but maybe down the road we could add link. If you use the api, chainlink is in the prices from the API, so that’s something. https://api.compound.finance/api/v2/prices

1 Like

Hey, I’m just chimming in to say something. While data.chain.link is -indeed- a tool created and updated by ChainlinkLabs, resources like reputation.link and market.link are the initiative of third parties. Personally I think this brings some added value and enrichment in terms of decentralization, which is also extremely positive.

Both the Reputation site and the Marketplace serve as a Hub / Explorer / and meeting place for developers, node operators and users who want to use the Chainlink protocol without the need to interact with ChainlinkLabs, so they allow any developer or community governed effort to pick whatever node they see fit. However it’s worth noting that their approach of using security reviewed nodes operated by independent teams with strong DevOps background has been proven efficient so far.

2 Likes

Bumping this thread and tagging a few members who have weighed in on oracle improvements in the past. I’d love to get your thoughts on this option now that we know we can remove Chainlink admin keys (or have control via governance).

Again, with so many new initiatives being launched I think taking this oracle development/maintenance off our plate will be hugely beneficial.

@cryptix, @tonyotonio, @wario, @Boxcar, @blck, @arr00, @kybx86

3 Likes

Aside from the admin key issue, Chainlink has different security assumptions than the Open Price Feed oracle. Most notably the existence of an additional layer of signing/reporting nodes, which imply an increased attack surface. I think moving to the originally proposed medianizer is a much safer transition, that would not require Compound to follow the security trade-offs of using Chainlink. Incorporating Chainlink price feeds as part of the medianizer, along with Coinbase, Uniswap, and Okex, seems much preferable.

5 Likes

Thanks for weighing in. However, I don’t agree with this line of thinking, especially given we already fell victim to a manipulation attack on single exchange sources ala Coinbase, meanwhile Chainlink nodes performed.

Full market coverage (data from quality aggregators, secured by a network of independent nodes) is the key to reliability/security. Using Chainlink as just another part the medianizer would diminish this value proposition.

That’s the way to go. Compound should focus on building a great lending market and just use a ready and working oracle solution.

3 Likes

I think this proposal is a great idea for Compound protocol. Chainlink is a proven oracle solution and has been securing other money markets like Aave since launch without any pricing issues or false liquidations as far as I am aware. Using Chainlink sovles the main issue I had with the medianzier in regards to inconsistent and insufficent market coverage. Chainlink oracles use multiple data aggregators who generate volume weighted average prices from across the crypto market. Most people here seem to be in favor of this proposal so when can the testnet deployment and contract auditing begin?

4 Likes

Why deal with Coinbase? They did not show the users the data on how the “DAI manipulation” took place. Why are we dealing with something aimed at Wall Street? Why are we on a decentralized protocol?

3 Likes

Hey everyone, Johann here, I’d like to weigh in here and provide my insights. I work as the head of integrations over at Chainlink Labs and I’m quite happy to see this discussion shaping up.

I see Compound as one of the leading protocols within the DeFi space so I’m excited to work with the community and figure out the ways Chainlink oracles can be used to solve some of the oracle related issues the protocol is currently running into.

We want to support this proposal however we can and will begin by taking steps towards what could lead to a vote for a mainnet implementation in the coming weeks. Our price feeds currently cover all the live Compound markets on the Kovan testnet (Ethereum Price Feeds). In the coming days, we will launch a version of the Comptroller which utilises Chainlink price feeds deployed on testnet and get some testing going on there. The community can observe and monitor this process and provide any feedback you have.

Once this is live and operational on testnet, I think we should see the conversation going on by discussing the kind of format the Compound specific feeds we’ll be launching should take. For example, should the Compound community have control over the feed’s Multisig (ability to add and remove oracle nodes), should the multisig be a combination of Compound community members and Chainlink node operators, should it be set to the Compound governance module for COMP holders to vote on, or should we just avoid any Multisig and set it to a burn address (which in my view would be a more risky approach long term as it’s always useful to be able to do changes in the set of node operators such as adding more nodes when more value is at stake etc…).

This is entirely a decision to be determined by the Compound community though and we will follow whatever the community thinks is best and we’ll work at your rhythm. Our main motivation here is to solve problems for you guys, letting you focus on managing Compound markets, as well as put the experience our node operators and network has had providing price feeds for the DeFi ecosystem in the last 2 years at the service of the Compound community and protocol. Lastly, I want to say thank you to Getty for creating this proposal and the Compound community for your support. I will provide an update in this thread as we move closer to something we can showcase on testnet!

12 Likes

@Johann_Eid

Chainlink is a great product!

Thank you guys for your help!

2 Likes

I appreciate the update @Johann_Eid and look forward to seeing the testnet deployment.

2 Likes

Excellent! I’m very much looking forward to seeing this live on the testnet so we can review.

1 Like