Source: AdobeStock / phive2015
When we talk about crypto and blockchain, one of the first things that come to mind is decentralization. We love the idea of a system that works without any central authority or a single point of failure. But as it turns out, most crypto apps and wallets you know and use rely on centralized providers for their backend stack.
While blockchains themselves are praised for the decentralization they created, and many protocols are rated by how decentralized they are, most crypto apps you know and use actually have to rely on centralized providers. These services run their own nodes to connect to the blockchain and in turn provide an API (application programming interface) to their customers.
The thing is, there aren't really any good reasons for this other than wallet apps. As crypto is getting closer than ever to consumers and finally expands into even ecommerce companies realize their backend stack now needs to work closely with the blockchain. Need to track the number of wallets in Ethereum? Need to know what happened with a specific transaction? Want to know which addresses have received money from a certain address? All of these activities might be important whether you have an online store or running an investment fund.
Why do we need centralized providers?
The only way you can directly connect to the blockchain is by running a node. A node is essentially a program running on a computer that connects to other nodes in order to send information back and forth, verify the validity of transactions sent between people, and store important information about the state of the blockchain.
Nodes are the backbone of a blockchain. They’re what connects you to the network and provide you with all the data you need to make informed decisions. But there are also many other uses for nodes than just mining and validating transactions. Nodes are basically like servers that run cryptocurrency software and store a copy of the blockchain. They’re like your own personal copy of all the information on the blockchain, and they allow you to interact with it by sending or receiving transactions and interacting with smart contracts or decentralized applications (dapps).
You can also use a node as a personal wallet if you want more control over your funds; this is known as ‘full node’ because it stores all transactions from all accounts on its hard drive – but this means it needs more storage space than regular wallets.
You don’t need to run a node yourself if you want to use one of these apps – they run their own nodes and connect through them to send transactions (or get information). However, it’s possible (and sometimes preferable) for users to run their own nodes so they can interact directly with the network instead of through an app or website.
But it must be understood that you’d never be able to run a node on your phone for multiple reasons, but one of the key ones is that blockchains are just too big – Ethereum alone takes up 746,19Gb. If you wanted to run a node yourself, you’d have to dedicate your computer, and there’s no way you’d be able to do so via a browser extension or a mobile app. But you need a node in order to get reliable real-time data from the blockchain. The alternative option is to simply use someone else’s node.
How to trust that data
The blockchain is all about trustlessness. That’s why it’s so appealing. And why you can be confident that your data is being stored on a public ledger, and anyone can have a look at it without needing to trust any entity.
But let’s be clear: while blockchains are trustless, they’re not completely immutable. They still rely on companies and individuals to provide access to the ledger, which means that if someone wants to tamper with your data, there could be ways for them to do so. That said, there are some natural deterrents against tampering with the data – and those deterrents come from other companies who want their clients to continue using their services. Any company trying to tamper with data will likely be dropped by all of their clients very quickly – so that’s one of the main reasons why we don’t need to worry about our data being tampered with too much.
How to run your own node
You can indeed run your own node, like a lot of developers and applications actually do. While it might be difficult, it’s certainly doable.
When it comes to the Ethereum network, there are three types of nodes: full nodes, light nodes, and archive nodes. Full nodes store the entire blockchain in order to interpret data and offer fast synchronization capabilities. Light nodes only keep track of commonly accessed parts of the blockchain; they are useful for wallets but not dapps. Archive nodes don't even bother keeping a copy of the blockchain; they're useful for archiving information but not much else.
Let's take a closer look at the types of nodes:
- A Full node is a computer that performs a certain function on the Ethereum network and runs client software in order to do so. Full nodes download all blocks from the blockchain and store them on their hard drive. This allows users to verify transactions on their own without having to trust other parties involved in confirming transactions. It also prevents miners from altering existing blocks as they are downloaded directly from other miners who have already downloaded them themselves. Full nodes are also able to directly interact with smart contracts on the public blockchain, which allows them to deploy smart contracts into the public blockchain. Running a full node is an important way to help strengthen the Ethereum network. However, this comes at a cost. Full nodes can be taxing on your computer’s hardware and bandwidth resources. Retrieving full data can also be very time-consuming, sometimes taking multiple days to sync your data when the node is first deployed. Then, you must maintain, upgrade and keep your node online in order not to have to repeat the full synchronization process each time software updates are released.
- Light nodes are a type of Ethereum client that does not download all blocks from the blockchain. Instead, they only download those pertaining to their own account balance. This means that light clients do not need much disk space or bandwidth as they only need to keep track of recent transactions affecting their own account balance rather than everything that has ever happened on the blockchain. The most important thing to understand about light clients is that they are not completely trustless. They still use a full node as a gateway to the network and, therefore, must trust it not to lie or cheat them in any way. This can be a problem for some people who want absolute privacy, but for most users it's fine because they don't need absolute privacy when using an Ethereum wallet anyway.
- Archive nodes are another type of node that stores all data from every block ever created and builds an archive of historical blockchain states. Archive nodes will retain historical data even after a client has finished synchronization, making them useful for applications like block explorers or chain analytics services. In the case of Ethereum, these nodes can be run on any machine but are generally run on servers with lots of disk space. The more storage you have, the longer your archive will remain accessible!
Apps that can help you run your own node
The Ethereum Foundation maintains several different clients for different programming languages. These clients can be useful for developers because they let them interact with the network and other network nodes using various programming languages. The Foundation's most common clients include Go, Rust, Java, and C#. Various third-party developers have also created Ethereum clients for further language support. The most common uses for Ethereum clients include transaction and mining interfaces, but its use cases can go far beyond basic blockchain interactions.
You can choose from a few different apps if you want to run your own node. The list includes Geth, Nethermind, Besu, Erigon, and OpenEthereum (which is actually deprecated).
- Geth is the official Go implementation of the Ethereum protocol, making it the most popular client on the market. It has a large user base and offers tools for both consumers and developers.
- Nethermind is an Ethereum implementation written in C# .NET tech stack programming language that runs on all major platforms, including ARM. The Nethermind client can be used to create private Ethereum networks or decentralized applications
- Erigon is an entirely re-architected Ethereum implementation that is written in Go. However, future plans call for it to be ported to other languages. This client can complete a full archive node sync in under three days with less than 2TB of storage space, making it extremely efficient. Erigon offers several features that make it a good option for setting a node application. It is easy to install, configure, and run, it has an active development community with frequent updates and bug fixes, and it supports multiple operating systems, including Windows, Linux, and MacOS.
- Besu is a Java-based Ethereum client that supports the smart contract and dapp development, deployment, and operational use cases. It's also open-source, so you can use it for your own projects without any restrictions or fees.
- The OpenEthereum client is written in Rust and is GPLv3 licensed. While it's not actively supported anymore, it still has a lot of features and can be useful to developers who want to customize their own products or services with Ethereum support.
Developers who use Ethereum have options for implementing their projects. If your preferred language isn’t supported by the Ethereum Foundation, you can use one of the third-party clients available to provide additional language support. With any of these clients, you still have to regularly update the binaries and think about scaling in case of complex requests. But you will get all the benefits and confidence in your own solution.
If you’re a researcher or just a person interested in blockchain, we recommend you to try setting up and running your own node. That way you will learn more about it and can be directly involved in it.
Building applications on top
Building an application on top of a blockchain can be a great way to add value to the network, but it's not always the best choice. If you're building an app that needs to be publicly available, it makes more sense to rely on a structured API provided by a third party which can handle the heavy lifting.
Most crypto-focused apps out there are built on the API provided by centralized operators. Instead of working as a system administrator, you can focus on building high-level applications leveraging the data from the blockchain. It can be a simple bot that sends you notifications about transactions and as complex as a payment system that will be able to receive lightning-fast data from the blockchain and notify its customers of completed transactions. Practically all analytical services and hedge funds use third-party nodes to take out gigabytes of data and build investment strategies, and study blockchain behavior, various fluctuations, and anomalies. Even in crypto compliance and AML (anti-money laundering) procedures become necessary and even expected by most customers and government agencies
Blockchain technology is still in its infancy, and the industry is just beginning to explore its potential. But one thing is certain: data on blockchains is going to be big business. We've seen how quickly a few of the largest blockchains have grown, and similar to Web 2.0, we need centralized services to provide seamless customer experiences for enterprise businesses that are just starting to dip their toes into crypto. In the end, anyone interested will still be able to connect directly with the blockchain – but we as an industry need to offer centralized services that help these traditional enterprises deliver data to their customers – developers building dapps on top of these blockchains.
In other words, we're not just talking about building applications on top of blockchains; we're talking about building applications that can easily interact with existing systems so that there are no barriers preventing businesses from adopting blockchain technologies while still being able to provide their customers with the same reliable data they've come to expect from traditional enterprise software solutions today.