Powering DeFi: (De)centralized Sources of Truth

Ugur Mersinlioglu
3 min readFeb 8, 2022

--

In my previous article, I went into how bizarre it is that a community that stands for terms like decentralization and trustlessness, preaching ‘don’t trust, verify’, actually goes above and beyond to promote price feeds that are as intransparent as they come. It might come as a shock, but with this article I’m here to tell you that on top of that your decentralized oracle project is not really that decentralized either.

No matter which oracle project you look at, you won’t have to search long before stumbling upon the infamous word — decentralized. But what does it actually mean and where does this claim stem from?

Chainlink and Band Protocol Product Descriptions

In blockchain, decentralization refers to the transfer of control and decision-making from a centralized entity (individual, organization, or group thereof) to a distributed network.

Following the above definition for decentralization in a blockchain context, we can have a closer look at how decentralized some of these oracle projects actually are. Chainlink and Band provide price feeds for the vast majority of DeFi projects out there. They mostly do so, relying on aggregations of answers provided by third-party nodes. In simple terms, this means that they ask a bunch of nodes (that are not the data source) what a price of an asset is. Each of these nodes provides a price. They take all of these answers, aggregate them into a single value and just like that your feed is decentralized.

Band Protocol OXT/USD Price Feeds from https://data.bandprotocol.com/ representing 16 validators ‘validating’ a single data source

In my previous article, I also went into how absurd it is that Band built a price feed with 16 nodes calling a single data source. But it doesn’t really matter where all of these nodes got their prices from in the context of decentralization on a node level. What matters is that a bunch of them got asked, which earns you the right to slap the term decentralized onto your project. We call that decentralization by all means. A distributed network collectively checked the price of an asset using a single data source and reported that price on-chain. So that’s it. Case closed. Chainlink and Band are decentralized.

Well, not quite. While decentralized on a node level, there is another aspect to consider: The Aggregator.

As mentioned above, both Chainlink and Band are aggregating between mutliple third-party nodes to report prices on-chain, but which nodes do they use in these aggregations? All nodes that want to? A select few? Can anybody be included or do they need to seek permission? And here lies the crux of it all: Centralized Governance.

Theoretically, you could have over 100 independent nodes willing to serve data to build a decentralized price feed, but ultimately some entity makes a call which of these are used in an aggregation. Do you use all 100? Do you take only 20? If 20, which 20? What happens if one of these nodes misreports? Does it get removed from the aggregation? Does it get another chance? Who is it being replaced with? But most importantly: Who makes all of these decisions?

So far, most oracle projects have managed to sell you on the idea that you’re getting decentralized pricing data, when in fact it is their teams alone deciding the hows and whys of what it is you are consuming.

Centralized data feeds served ‘decentrally’.

--

--