Yes, this is an excellent question. AWS Amazon Web Services – is one of the biggest or the biggest cloud providers, and you have other cloud providers like IBM, Microsoft Azure, Google Cloud, Alibaba Cloud, Rackspace and a few others. Still, these are the big ones, and they control basically a big percentage of the internet. Probably more than ninety per cent of the internet that you use daily is hosted on one of these big cloud providers. Most people and companies don’t have any more on-premise servers because they are expensive, so most of the internet is hosted on the cloud. When you use Netflix, Google, Amazon, or any other website or use a mobile app, most of these applications are hosted on the cloud.
Now the question is, if you deploy your blockchain nodes on the clouds are you creating some degree of centralization or not?
The answer is not easy. It’s a yes and no.
Let’s say you want to deploy a node in the public blockchain. Public blockchains are by nature decentralized. Bitcoin, Ethereum, Dogecoin and many others are decentralized, meaning that when you deploy additional nodes, you are increasing the decentralization, and decentralization is one of the main benefits of public blockchains is that there is no single point of failure no single point of control.
Deploying a Node on Ethereum
When you deploy a node, let’s say, an Ethereum node on a public cloud like AWS, what you are doing with the node is that you are downloading the entire blockchain, the entire ledger, and validating the transactions. Your node will we will also be a relay node to broadcast transactions, so every time there is a new transaction or every time a miner is mining a new transaction/block, this transaction is going through all the nodes are going to validate the transactions, and they are going to broadcast the transaction to their peer nodes. The blockchain inside this huge network of nodes with thousands of them relay the messages between them and validate the transactions.
When you deploy one of these nodes on the cloud instead of deploying on your own machine, I would say that it’s not good or bad from the decentralization perspective. You deploy one more node; even if it is on an AWS or a centralized cloud provider, you are still contributing with the node to the network, and it will be one more node validating transactions.
The second part of the question is what could happen if these large cloud providers could eventually shut down that node? If you want to be accurate, yeah, AWS could suddenly shut down. However, historically, these cloud providers are very, very reliable, and I don’t think they will shut down anything unless they have some requests from the authorities or the government. For example, imagine you are if you decide to host an illegal website on AWS, either website selling drugs or something illegal. They will get an order from the court, from the police or the authorities to shut down that website because it’s like illegal activity. I don’t think it’s going to happen anytime in the future for blockchain nodes. Blockchains are distributed databases. To run an Ethereum node or Bitcoin node is not illegal, and you can use the cloud as they have excellent SLAs — Service Level Agreements — that say like basically, that 99.9% of the time, that server will be up and running. So cloud is usually very reliable.
I also understand that there is some counterargument to deploying a blockchain node on the cloud because if everyone only deploys the blockchain nodes on the cloud, you can get a bit centralized.
Well… For example, AWS has many different regions with data centres in Australia, Hong Kong, Japan, Singapore, India, Bahrein, Europe, UK, the US, and Brazil. Although they have many different locations, it wouldn’t be enough to totally decentralise a blockchain. Still, I believe that probably most of the corporates that need a full node like crypto exchange do it on the cloud because it’s just much faster and easier and reliable. I would agree, however, that it doesn’t contribute much to decentralization.
If you want a fully decentralized blockchain, the blockchain needs to allow any person to run the nodes in, and you don’t need to have a cloud provider with a huge computing capacity. That’s why in most blockchains, including the Ethereum blockchain, Bitcoin, Dogecoin and others, you can run full nodes from your computer as it doesn’t;t require much space. If I’m not wrong in the bitcoin case, maybe around 300 gigabytes of space and Dogecoin require merely 70 gigabytes of storage, meaning that anyone can run a node!
I run a dogecoin node full node on my computer because I want to contribute to the network and when more people contribute to the network, the more decentralized it gets.
We want to have blockchains that allow us to run the full nodes on a normal computer to make sure that we can have more decentralization. That’s why it’s so important to have well-architected blockchains with small block sizes. Block size should not increase too much to allow precisely the decentralization feature. Bitcoin, for example, has a 1-megabyte block while Bitcoin Cash is an 8-megabyte block. Most of the Bitcoin maximalists didn’t accept increasing the Bitcoin block from 1megabyte to 8megabytes because this potentially would increase the requirement for space to run a full node. If you produce 8 megabytes per minute, this will increase the size of the blockchain exponentially, and it will make it have much more requirements in terms of storage, and maybe later it wouldn’t be possible anymore to run a node on a normal computer. On the other hand, on Bitcoin, you can still run a full node on your laptop, which is very important for decentralization.
I hope people continue to run their own nodes in any laptop so that they continue to have a very high degree of decentralization.
Finally, I agree that deploying a node on AWS and other cloud providers don’t increase much the decentralization, but it does contribute to the nodes to validate transactions. More nodes we have on the blockchain, the more resiliency that blockchain has, and you are always contributing to the blockchain even if you run the nodes in a more centralized manner. The network effects are always present. You are still giving some contribution on the cloud because your nodes are validating transactions and helping to broadcast transactions.
What about private blockchains?
What about if you are running a node for a permissioned/private blockchain? Well, I would say that according to my work experience, most of the time, when an organization or company wants to deploy a node for one of their private blockchain, they use the cloud indeed. Again, this is because the cloud makes it much easier to deploy anything, and you don’t have any upfront costs, unlike on-pre servers.
These private blockchains may have many different uses. For example, The Walmart/IBM Food Trust is a very successful use case that aims to track the supply chain of leafy green goods, tracing the goods from the farmer to the consumer. This is very helpful to track if there is, for example, a product contaminated with salmonella or some disease. It makes it very easy to track and remove the batch that the product contaminated.
IMB partnered with Walmart, and currently, all the Walmart suppliers need to be on this blockchain. To connect to this blockchain, these farmers can easily deploy a node on the IBM cloud as they offer it as a BaaS — blockchain as a service.
What happens is if suddenly IBM shuts down? What happens if all their data centres explode? This blockchain will also be shut down because of the centralization issue. However, in these private promotional blockchains, the objective is not really to have a huge decentralization. Their value comes more from the transparency across all their peers, and in the end, they are private blockchains, and they have a legal entity behind them.