Taking a look at two oracle projects: Witnet 2.0 versus Chainlink

For the second installment in the series where we compare and contrast various oracle projects we’ve decided to focus on Chainlink.

Rokowski
The Witnet Oracle Blog
8 min readNov 6, 2023

--

Before we get into the meat and potatoes of this article, I should make note of the fact that while Witnet 2.0 is not live yet, we are choosing to compare it to other projects due to the fact that we have a solid foundation for how the network will look when its migrated and data and models based on that understanding.

Take a look at the comparison article about Witnet 2.0 versus Band Protocol.

The layer 1 and the blockchain trilemma

Witnet is a layer 1 blockchain oracle that was custom built in the Rust programming language. It was single-purpose and designed to do one thing very well; fulfill data requests in a fully decentralized way. Every design decision was built around doing one thing incredibly well, similar to how Bitcoin was built to do one thing incredibly well: act as money. Witnet was built with the same ideals and values in mind as Bitcoin; permissionless nature, censorship resistant, immutable, unconfiscatable, unstoppable, decentralized, etc. Witnet is secure and decentralized. This means Witnet was designed for the long term game- if people care about a free and open internet, they’ll care about Witnet.

Chainlink has a different approach to the oracle problem. Chainlink focuses on scalability and loses security and decentralization within blockchain protocol trilemma. This isn’t inherently a problem, it’s just a different way of doing things. As we know, there are always tradeoffs with engineering and one decision you make can greatly affect dozens of other processes. Chainlink is also a set of protocols running atop different blockchain layer 1s and 2s, meaning it first and foremost has to comply with the rules and consensus mechanisms of the protocol it runs atop of. Now, of course it runs on many EVM chains so the rules don’t vary widely from chain to chain, but small differences aren’t always insignificant.

This is different from Witnet because Witnet has its own consensus rules that are built specifically to the oracle problem allowing each blockchain migration to be the same as the last and next without having to change any consensus rules or adapt to the blockchain it’s running on. This means Witnet is ultra secure and decentralized because nodes on the Witnet network are supporting just that; the Witnet network and their job is to secure the Witnet layer 1. Data feeds are a different animal but are supported by the Witnet layer 1.

Coming to consensus

In oracle jargon, consensus is generally referred to agreeing on the state of something at a point in time. It’s no different from consensus on Bitcoin or the consensus layer of Ethereum (account and contract balances). However, for oracles it’s more nuanced because blockchains are specifically built in a way to avoid off-chain information from coming into the closed system.

  1. What nodes do you ask to retrieve the information?
  2. What if the information they retrieve is from different places?
  3. How do you know who is telling the truth and who isn’t?

This is why you need an oracle. All the oracle simply does is agree on a piece of data and stand by it. Oracles DO NOT provide “truth” or “facts”, they are not a truth machine, and they don’t promise the information that has been retrieved to be gospel. Oracles are simply a way that information is collected and brought to a consensus. This means that they simply all agree on the state of something at a point in time. Remember this when someone says that their oracle of choice “tells the truth”; ask them where they got the truth from, because by arguing that it’s truthful, you are appealing to authority and trusting the data which is not the point.

The general architecture of putting together the price feed end result isn’t that different between Witnet and Chainlink. Basically, a set of nodes go out to retrieve a piece of information from different sources (Coinbase, Binance, KuCoin) and aggregate the data retrieved together. Any node that brought back information outside a pre-determined standard deviation is filtered out so their result doesn’t impact the final product.

However, the main differences come from a very different set of fundamentals. Chainlink uses what can be considered a Proof of Authority consensus mechanism where KYC is done on node operators to ensure they can be trusted to provide truthful information (this is why Chainlink is able to retrieve information so fast). This is evident by the fact that there are 31 node operators fulfilling the BTC/USD price feed on Ethereum mainnet, all of which are authorized in a permissioned manner to do so by the Chainlink Labs team.

Chainlink Price Feeds aggregate the responses of numerous security-reviewed node operators.

Source.

A list of all Chainlink nodes on Ethereum mainnet

Witnet, on the other hand, uses a sophisticated algorithm to determine which nodes can provide data in a data request. Take a look at the BTC/USD price feed and check out the “commit” tab to view the various nodes fulfilling the data request. All these nodes are anonymous and have staked a certain amount of $WIT that they could lose for reporting false information.

“But the Chainlink data feed has more reporters, doesn’t that mean it’s more decentralized?” This is an interesting question, and a fundamental one. The answer is very complicated, so let’s try to go over it.

Yes, for a very popular price feed (BTC/USD) on a very popular chain (Ethereum), there might be more data reporters on Chainlink when compared to Witnet. However, we must first note that the creator of the BTC/USD feed on the Witnet side only required a specific amount of reporters, in this case 10 (with an infinite amount possible). Witnet feeds are highly customizable and you can choose the level of security you want (number of reporters, required collateral, rewards, and consensus threshold). This doesn’t change from chain to chain, because after all the Witnet nodes are fulfilling the data fully off chain and are only reporting one final data piece. In other words, chain A can have the same amount of data reporters as chain B for the same price feed (depending on how the feed was created and how many reporters was required). Chainlink, on the other hand, will only be able to have as many data reporters as are available on the chain; for some chains it can be as low as 3 and these three reporters are fully known, permissioned, and have little-to-no “skin in the game”, making it an easy attack vector. To simplify this a little, with Witnet, no matter the chain your requiring a data feed on you can have as many reporters as you want. With Chainlink, you are relegated to the number of permissioned nodes that are live on that chain.

As per Witnet 2.0, this algorithm is defined as a function of total stake of a node times the stake age. This final product is called “Power” and it’s being reset whenever a node has completed a task within the network (validating a block or fulfilling a data request). Age is a big parameter within this function because it ensures there is a constant rotation of new nodes fulfilling tasks so that no one node has too much control over the network. The most important property about this system is that nodes must stake $WIT coin in order to perform a task, and they lose a portion of this stake for malicious behavior. Additionally, because anyone can run a node and participate anonymously, we don’t need to trust them to act honest because they are economically incentivized to do so with some of their own money on the table.

As mentioned earlier, the actual consensus of the data feeds work similarly between the two oracle protocols because the final data feed is aggregated together to have one data point that can be used for a variety of on-chain products. However, it is important to note the commit and reveal scheme of the Witnet oracle compared to others:

After nodes are randomly and anonymously selected to perform a data request, they obviously need to post some collateral. The beauty of this system is the inability for a single party to corrupt a data feed because each node must commit to the data they provide prior to revealing it publicly.

$WIT and $LINK

The $WIT coin is used to pay network fees on the layer 1, stake on a node in order to perform tasks, and is overall the native currency of the Witnet protocol. Nodes that misbehave lose a portion of the amount they staked and it keeps the nodes honest. Witnet is very robust and because of this staking methodology, the network is highly secure. It is estimated that a malicious node would need more than the total supply of $WIT to really break a protocol using Witnet data feeds.

$LINK utilizes a staking method as part of the Chainlink 2.0 whitepaper. It defines tiered watchdogs that look over the oracle reports and raises alerts for data reports with inconsistencies. They define the first tier is the oracle network that reports data back to smart contracts, and the second tier as a watchdog system. While this system has worked so far in practice, the trust still spreads between tiers as there is no actual economic security built in to the protocol other than the fact that a bribe of one of the committees must be higher than the amount they can earn in rewards. Additionally, bribing a tier 2 participant to not raise alerts against faulty data is negligible compared to the potential to exploit a protocol relying on the feed. In other words, an attack is profitable. It wasn’t until version 0.2 of the Chainlink staking model where slashing of node operators (after an alert was raised) was developed.

Other statistics

Some other key metrics that are quite interesting when it comes to oracles are things like total value secured, TVS/Mcap, total staked, etc.

Let’s dive into some of this now.

At the time of this writing, Chainlink is securing 357 protocols totaling around $21 billion dollars. Witnet is securing 12 with a TVS of $55 million. Chainlink’s total value secured to market cap is 0.33 (33%) whereas Witnet’s is 0.10 (10%). This function is a metric used by both investors and developers alike to decide the security of an oracle.

For investors: it showcases the potential growth metric for an oracle. In Chainlink’s case, for every $1 dollar that the oracle is securing, there is $0.33 in market capitalization.

For developers: this metric showcases how functional an oracle might be given it’s current market cap. For Witnet, only about 10% in market cap is proven to be enough to secure $55 million at this moment in time. This number can change, though. For example, in April of this year it was as low as 3.1% when Witnet was securing $350,000,000 via an $11 million dollar market cap.

Connect with Witnet

Website | Twitter | Telegram | Discord | YouTube | Reddit | LinkedIn

--

--