Some basic definition
A core part of the technology stack in a blockchain network is the nodes and the client that helps humans operate the nodes. Today we will compare and contrast how these elements work in the Ethereum and Cardano networks. Before we dive in, let’s get some basic definitions out of the way.
In computer science, a node is a physical device within a network that is able to send, receive, or forward information. Under the hood, blockchain networks are just a collection of rules about exchanging and storing messages. Nodes on a blockchain network come in different shapes and sizes, but they all do precisely what nodes on a computer network do: they send, receive, or forward information to other nodes. There’s more fluff and complicated stuff around this general idea, but for the purposes of this article, let's go with this basic definition.
A client in computer science loosely refers to something that uses some external or remote resource. For example, your Chrome, Brave, or Safari browsers are HTTP clients that talk to remote web servers to render this article or other web content on your screen. Similarly, blockchain provides different clients to allow you to carry out different interactions. For example, blockchain Wallet clients let you receive or send crypto to others. Node clients help technical people configure computer hardware to send, receive, and forward information on the blockchain network. When you send 2 Ada or 0.1 Eth to your friend or an e-commerce website, that message is typically processed and recorded to the blockchain by a node client.
One small uniqueness of blockchain node clients compared to, for example, our browser client is that blockchain nodes and their clients are typically so attached at the hip that they are sometimes referred to interchangeably. Your browser client lives in your browser, talking to a web server on the other side of the world. Blockchain node and node clients however, are living on the same device more often than not. However, despite their closeness, blockchain nodes and blockchain node clients are two separate things.
Blockchain Nodes receive and validate data, forward messages, or send validated data to other nodes. Blockchain nodes are where the core blockchain rules are stored.
Blockchain node clients are the director of a blockchain node. Blockchain node clients let developers build transactions and perform mining operations. They can come with many extra features tailored to the environment the blockchain node is running in. For example, they might store a copy of the blockchain they get from the node in a way that is optimized for reading by specific software. Some clients provide multiple networking protocols for non-blockchain systems to talk to the blockchain node sitting behind the client. Clients can be specific to a programming language.
Node Clients on Ethereum
The Ethereum node, when it was designed and created, was defined by a formal specification. A formal specification is a nerdy way to say that the instructions for doing or building something are precisely defined using math. Because the Ethereum node is formally specified, it’s possible to build different clients that cater to specific types of users while remaining interoperable with other clients and obeying the ledger rules. As a result of this, and that Ethereum has been around since 2015, it enjoys the richest ecosystem of node clients compared to other blockchain networks.
The Ethereum foundation maintains clients for popular programming language communities, including Go (Geth, Prysm), .Net/C#, Java, and Rust. There is an Ethereum client for quickly reading a node and communicating with the Ethereum blockchain using just a computer command line interface (OpenEthereum).
Node clients on Ethereum can be full-node clients, light clients, or remote clients. Full Node clients hold the entire blockchain history and let you perform all possible actions supported by the blockchain. Light clients typically only hold partial blockchain data and let you do specific (and limited) things. They tend to be faster and require fewer resources to run. Remote clients do not store any data or validate any messages. They instead connect to a full or light client remotely to perform their tasks. These are typically used for building wallet applications. The benefit of a remote client is that you can embed them in places like the browser to allow the user to build, sign transactions, or decode something in the browser using their key phrase. However, anything that needs to be submitted to or verified by the blockchain is then sent to the remote full or light client for processing.
These nodes and node clients are mostly interchangeable. You can connect a light client to a full node or a full node client to an archival node. Typically, a node client gauges what type of node it is connected to and configures itself accordingly.
One trade-off of having so many clients, especially ones close to the core of the blockchain, is coordinating and releasing updates to Ethereum core systems. This can be challenging. Without coordination from the entire community, you can have a situation where a client is not ready to support the update and might create messages on the network that causes issues. In August 2021, one of the popular client node clients, Geth, had many users using outdated versions of the client and this caused the Ethereum network to fork. A fork on the blockchain happens when there’s multiple contending versions of history. Those users were able to update node clients and history was reconciled.
Node Clients on Cardano
When it comes to nodes and clients on Cardano, things are just getting started. As of this writing, there’s just one node and client implementation in production. It is written in Haskell and maintained by IOG, one of the founding entities of Cardano. This means that if you want to build a rich application that closely touches the blockchain layer, it must be written in Haskell if your application wants to build blocks or process blocks from other Cardano nodes. This client also assumes that you are interested in producing or relaying blocks.
IOG’s node and client implementations provide both a CLI, and REST interface for submitting transactions to the node client and asking basic questions.
IOG has another node and client implementation in development called Mithril. It is currently being tested and is expected to be released in the coming months. Mithril allows a full node client to be created and completely synchronized with the blockchain in hours rather than days. In the future, Mithril will also be a key component for developing Ethereum-style light clients.
Via Project Catalyst, the Cardano community is dreaming up alternative node clients to cater to use cases and programming language communities currently not well served by IOG node and client implementations.
The team at Five Binaries wants to develop a client that caters specifically to metadata applications: Metadata oracle node.
TxPipes wants to develop a Rust node client that cares specifically about data and read-heavy applications. It wants to be cloud-native, allowing for storing data efficiently in the cloud rather than on the local server as the current IOG node client does. TxPipe client would also provide HTTP/JSON and gRPC network communication support.
Like Ethereum, Cardano node and client implementation is formally specified, so these and many more node and client software can be written for specific environments while being interoperable with the current IOG’s clients and future ones.
Blockchain networks live and die by how much community and global buy-in they are able to garner after launching. Having a rich ecosystem of node and client implementations is one good sign that a blockchain network has buy-in from the business community.
For Ethereum, chances are you’ve seen it on tv and billboards or some screen or another many times prior to reading this article. It has achieved buy-in from the business community.
It bodes well for Cardano that it’s already near to having more node and client implementations just one year after launching support for smart contract blockchain applications. Its community is rich, and as work continues the future will tell just how much buy-in there will be from the wider business community.