Multiple, independent networks conform to the Ethereum protocol. Each of these networks is essentially its own Ethereum environment, with an underlying infrastructure comprised of interconnected computers. These connected computers are referred to as nodes, and the software application that runs on each computer is referred to as a client. The Ethereum clients running on the nodes help to maintain the protocol’s single canonical state, and hence its inherent security. Running an Ethereum client on a node enables us to use the protocol safely and securely, while also contributing to the Ethereum ecosystem.
In this article, we’ll examine the differences between three types of Ethereum nodes. We’ll also look at the different features, support, programming language, and licenses for various open source Ethereum clients.
What are Ethereum nodes?
Ethereum nodes are computers or servers that store, validate, and exchange data on the Ethereum network. There are three types of nodes that can be run by an Ethereum client:
Full nodes, light nodes, and archive nodes differ based on the amount of blockchain data that they sync and the portion of Ethereum’s up-to-date state information that they store. Each of these three node types takes a different synchronization approach to retrieving and interpreting data. Let’s take a look.
Ethereum full nodes
As their name implies, Ethereum full nodes store a full copy of the blockchain data. They can also contribute to the distribution of the data and the validation of blocks within the Ethereum network. Full nodes continuously sync in order to be up to date with the Ethereum blockchain. Smart contracts running on the Ethereum network can interact with full nodes. Unfortunately, this type of node is very expensive and resource intensive to run.
Ethereum light nodes
Ethereum light nodes go light on the amount of data they store. They only store the header chain data, such as the timestamp and the previous block’s hash. Where there is a need for additional information, a light node will query the blockchain. In this way, less information is stored, and additional information is retrieved upon request as needed. Light nodes can verify the validity of the stored data against the state roots in the block headers. This type of node can be advantageous for low-capacity devices such as embedded tools or smartphones because they do not take on intensive data storage and writing activities.
Ethereum archive nodes
Ethereum archive nodes store all data and build an archive of the historical blockchain states. Aptly named, these nodes serve as a sort of archive for the blockchain data. Archive nodes will save prior data, even after a client has completed synchronization. Full nodes and light nodes, on the other hand, will “prune” historical blockchain data. this means they will be able to reconstruct, but not retain, the historical data. Archive nodes can save gigabytes of historical data, making them less appealing to an average user but valuable for service providers, such as block explorers, wallet suppliers, and chain analytics.
What are Ethereum clients?
A client is any sort of software that is downloaded onto a computer, allowing the user to interact with another type of software or service offered by a server. Ethereum clients are Ethereum implementations that verify all transactions in each block, ensuring that the network is secure and that the data is correct.
Within the Ethereum community, multiple open source execution clients (previously known as Eth1 clients or Ethereum clients) are available, each created by a different team using a different programming language.
Each Ethereum client has a unique set of features and benefits. Because of their diversity, implementations can be adapted to different user groups. When choosing a client, take into account its features, support, programming language, and licenses.
Let’s take a closer look at the following open source Ethereum clients:
Go Ethereum (or Geth) is the official Golang implementation of the Ethereum protocol. Geth is currently the most popular Ethereum client. It has the largest user base and offers a vast range of tools, written in Go, for both consumers and developers. Geth is open source and is licensed under the GNU LGPL v3.
- Use: Geth can be used to create a full node, light node, or archive node
- Installation: Geth can be installed using a preferred package manager targeted towards a local machine, by running it as a Docker container, or by constructing it from scratch. See the official documentation for details on how to install Geth
Nethermind is an Ethereum implementation written in the C# .NET tech stack programming language that runs on all major platforms, including ARM. Nethermind makes it simple to integrate with current infrastructures while maintaining stability, reliability, data integrity, and security. Nethermind offers detailed documentation on how to set up an Ethereum node application.
- Use: The Nethermind client can be used to create private Ethereum networks or decentralized applications. It seamlessly provides the following:
- An optimized virtual machine
- Networking and features like Prometheus/Grafana dashboards, seq enterprise logging support, analytics plugins, and JSON RPC tracing
- State access
- Installation: See the official documentation to learn how to install and launch Nethermind
Erigon is a Go Ethereum fork that focuses on speed and disk space savings. 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. Erigon was developed in order to provide a faster, more modular, and better optimized Ethereum implementation. this client can complete a full archive node sync in under three days with less than 2TB of storage space.
- Use: Erigon offers several features that make it a good option for setting a node application:
- Efficient state storage, through the use of a key-value database
- Fast initial sync by preprocessing data in temporary files before inserting it into the central database for specific tasks. This reduces write amplification and makes database inserts orders of magnitude faster
- Separate JSON-RPC daemon. This daemon can connect to both local and remote databases. For read-only calls, this RPC daemon does not need to be running on the same system as the main Erigon binary, and it can even run from a database snapshot
- Installation: See GitHub for information on how to install and run Erigon
Hyperledger Besu is an open source Ethereum client written in Java and released under the Apache 2.0 license. It supports the Ethereum public network, as well as private and test networks like Rinkeby, Ropsten, and Görli. Besu implements consensus procedures based on proof of work (Ethash) and evidence of authority (IBFT 2.0, Clique, and QBFT).
- Use: For tools like Truffle, Remix, and web3j, the Besu client has good support for smart contract and dApp development, deployment, and operational use cases. Some of the JSON-RPC API methods such as eth, net, web3, debug, and miner are supported by the client. For key management support, you would use EthSigner with Besu to sign transactions and access your key store
- Installation: Besu can be installed using Homebrew or Java JDK, by running it as a Docker container, or by constructing it from scratch. See the official documentation to learn how to install and run Besu
OpenEthereum is a CLI-based, advanced Ethereum client that is fast and feature-rich. It is written in Rust and is GPLv3 licensed. OpenEthereum was designed to provide the necessary infrastructure for quick, dependable services that require fast synchronization and increased uptime. This client provides a clean, modular codebase. Unfortunately, OpenEthereum has been deprecated and is no longer supported. Use it with caution and, if possible, select a different client implementation.
- Use: OpenEthereum is easy to customize for development, and it supports simple integrations into existing services or products. Despite its speed, OpenEthereum takes minimal memory and storage requirements
- Installation: See the official documentation for information on setting up OpenEthereum
In this article, we explored three different types of Ethereum node applications: full, light, and archive. Nodes can take a significant amount of time to sync blockchain data, and they require ongoing maintenance depending on the type of data that you’re seeking. For example, If you need older data from the blockchain, you will need to use an archive node even though it is slower.
We also investigated five Ethereum clients. Each client offers distinct features, so select the one that best suits your needs. Hopefully, you found this information is helpful for the next time you need to spin a node application.
LogRocket is like a DVR for web and mobile apps, recording everything that happens in your web app or site. Instead of guessing why problems happen, you can aggregate and report on key frontend performance metrics, replay user sessions along with application state, log network requests, and automatically surface all errors.
Modernize how you debug web and mobile apps — Start monitoring for free.