Nodes and Clients: How Trees Make a Forest

Nodes and Clients: How Trees Make a Forest

Blockchains are networks that emerge from nodes operating software. Nodes in large numbers provide the security blockchains depend on, but their software also has implications for the success of the network. Today’s write-up explains the types of nodes and why the software they operate matters. Enjoy.

What are Blockchain Nodes?

Blockchains are networks made up of nodes that work together to add new blocks to the chain. When you broadcast a transaction, it gets added to a block by going through a node first. That node receives the transaction and broadcasts it to the others, eventually resulting in it being included in a block. Services like Infura and Alchemy have nodes they provide for this purpose.

These block-adding participants are called full nodes, and they do most of the work that allows blockchains to exist. They execute and broadcast transactions and agree on blocks.

However, since block producers only store the blockchain’s most recent state (as of the last block), we depend on archival nodes to store blockchain data to retrieve information about something that happened in the past (this is how Etherscan works). Archival nodes don’t receive any extra rewards, they simply process blocks the way full nodes do while maintaining copies of previous blocks and their states.

Finally, light nodes don’t download any historical data, or even the latest state. They only listen to small pieces of information that can determine if a block is valid or not. Their jobs are to hold full nodes accountable by checking their work.

What about Bitcoin Nodes?

The Bitcoin network is home to all 3 types of nodes. One small difference is that light nodes are instead called “SPV (Simplified Payment Verification) Nodes.” The much bigger difference from other cryptocurrencies is in the software that full and archive nodes must run: there’s only a single version of it!

Bitcoin Core is the software nodes run (that actually makes them nodes). On Bitcoin, the Core client is the only option available. While this simplifies development, it also creates a large point of centralization. If an issue ever arose with the Core client, it could impact the entire blockchain since all nodes participating are running that software. Bitcoin has had such issues in the past, and they’ve been messy.

In August 2010, a bug in the Core client allowed billions and billions of Bitcoin to be printed, obviously far greater than the protocol’s 21 million limit. The blockchain had to fork and nullify all blocks processed after the issue was discovered.

In September of 2018, a double-spending exploit was discovered that was possible because of the Core client. With double-spending, it would again become possible to inflate the supply far past the protocol’s 21 million limit. The Core client released an update before the exploit could be used, resulting in no forks being necessary.

How are Ethereum's Nodes Different?

The Ethereum network also hosts all 3 flavors of node. The big difference to Bitcoin is that there are many clients nodes can choose to use. This keeps the network secure from similar vulnerabilities Bitcoin has faced: having multiple clients means that if a single client faces an issue, it doesn’t introduce a systematic risk to the blockchain itself.

Ethereum’s client software are split into two categories: execution and consensus. Each full or archival node on Ethereum has to run one of each type of client; i.e. each node runs both an execution client as well as a consensus client.

The execution client is responsible for actually executing the transactions in a block and computing the changes to Ethereum’s state. The consensus client, on the other hand, is responsible for agreeing with other nodes that execution is happening correctly. Node operators can choose which of each type of client they want to use.

Read more about nodes and client diversity in today's write-up on my free newsletter!

No ads, shills, or affiliations.

Stay kind. Stay curious. 😶‍🌫️