Is Decentralization Possible?

Furkan KAMACI
5 min readJul 13, 2018
Photo by Nadine Shaabana on Unsplash

If one part of a whole system is different from the other, can we define the whole system with any part? If one part of a decentralized system is not decentralized, can we still name such a system as decentralized?

We have a trust, safety and security problem. Blockchain seems to be a solution for it as a decentralized system. However, is decentralization possible?

Satoshi Nakamoto whether it is a group of people, he or she, is created fundamentally a new and different way of organizing humans merit-based in an open way [1]. Today, there are many applications which try to be a trustless and secure platform on top of Blockchain. There are many companies which have launched or plan to launch an ICO for such a purpose. However, are they really decentralized?

Here is the quote of Vitalik Buterin, inventor of Ethereum about which problem Blockchain solves [2]:

Blockchain solves the problem of manipulation. When I speak about it in the West, people say they trust Google, Facebook, or their banks. But the rest of the world doesn’t trust organizations and corporations that much — I mean Africa, India, the Eastern Europe, or Russia. It’s not about the places where people are really rich. Blockchain’s opportunities are the highest in the countries that haven’t reached that level yet.

So, we do not trust the companies like Google, Facebook or any others from the perspective of manipulation. We do not want any entity as a man in the middle. How about the current situation at today?

Ethereum is the leading platform for decentralized applications by usage [3]. Smart contracts are the code pieces which directly interact with Blockchain. However, dApps built on Ethereum contains a very little percentage of smart contract codes:

In the case of Storj, the smart contracts, which are just 9% of the overall codebase, only exist to provide logic for transactions. There is no code for the storage and encryption of shared files, broadcasting a node, or disc usage rules. The functional codebase that handles the above components is located in a separate repository written in NodeJS. Similarly, in the case of Golem, the smart contracts comprise of only 3% of the codebase, and the codebase that does all of the heavy-lifting is written in Python [4].

If a dApp which connects to the backend first and then accesses Blockchain, then this dApp may not be described as trustless or secure. When we talk about Ethereum, running a smart contract and accessing it directly from a dApp should be the best choice. One can still provide solutions while communicating with off-chain for others, but how can we trust a black box system that we are not sure about what it is doing even it connects to Blockchain eventually.

We do not see a decentralized environment when we check how the mining occurs too. Mining pools are the common way for it. Here is the latest mining distribution by miners [5]:

As it can be seen from the chart, top 3 mining pools have a total hash rate of more than %60 percent of all. This makes impossible solo mining [6] and makes current system centralized. Not minors totally, but mining pools are not decentralized [7]. This is a problem to be solved. A possible solution could be Vitalik’s suggestion [8]:

1. Reward all miners constantly instead of just a random miner each block

2. Create a scheme where trusting your mining to someone else inherently gives them the ability to destroy your entire investment in mining instantly.

How about running a trustless world-machine on entities as like Amazon or Microsoft?

On the other hand, this ecosystem has exchanges which are not decentralized. Most of the world’s cryptocurrency trading is done through centralized exchanges such as Coinbase/GDax, Binance, Bittrex, etc [9]. One can touch an exchange at any time. There are also wallet services which are not decentralized. So, can we define the whole system as decentralized without getting rid of them? We should move to Decentralized Exchanges (DEXs) i.e. Waves instead of centralized ones.

We design decentralized infrastructures for a new world. However, we live in a centralized world. Whole data resides on centralized data sources. We cannot regret previous data when we create a new application. So, how we can design a decentralized system which touches to a centralized source? Assume that you are connecting to Facebook to fetch data of a user into a platform on Blockchain. Even you design a perfect system on Blockchain, you can’t provide a fully decentralized one if you connect to Facebook. You can’t guarantee immutability if you cannot trust Facebook. You can’t own your data if you fetch it from a data source which is under someone else’s control.

We have many technical obstacles at Blockchain i.e. computing cost, speed efficiency, providing light clients for different platforms. We need to wait for technology to evolve. Many developers use Infura for such reasons. Infura is a great tool but doesn’t it clash with the term of decentralization?

Also, it doesn’t mean that just because an application is built on top of Blockchain, i.e. Ethereum and only works on it is decentralized. One can write a smart contract which gives whole control to the owner of the contract and which is eventually not decentralized!

We should not compare Blockchain with a utopia but first steps of a transformation of the current system. We have a new form of decentralization. Here is a quote from World Bank [10]:

But decentralization is not a panacea, and it does have potential disadvantages. Decentralization may not always be efficient, especially for standardized, routine, network-based services. It can result in the loss of economies of scale and control over scarce financial resources by the central government.

I totally disagree with it. Yes, decentralization is not a panacea, but it does not result in loss of economies of scale. On the other hand, why should central governments control our financial resources?

All in all, other questions arise at this point. Should everything be decentralized and what if something goes wrong on Blockchain platforms? We should aware that decentralization is not the silver bullet for everything. Everything should not necessarily be decentralized. These are the first steps of a transformation. We may fail but should keep to try it.

There are good efforts for decentralized applications and some of them are really decentralized but not all of them even they are on Blockchain. The solution for a decentralized infrastructure is to transform whole parts of the current entities into a decentralized one. One day, we may have much more fully decentralized platforms. Before the day of decentralization, we should migrate from such platforms day by day. Be the owner of your data, control your own data, believe in the power of participation.

--

--

Furkan KAMACI

Software engineer who works on AI and distributed systems and a member of the Apache Software Foundation.