When people talk about blockchain, they like to talk about mining, prices going to the moon, exchanges, and of course memes.
I think, though, that there is one immensely important piece of the blockchain ecosystem that doesn’t get enough play - the cryptocurrency node.
In fact, without the lowly node, its blockchain and currency don’t exist at all.
So, what is a node? What does it do? How could it possibly be so important?
I want to help answer these questions and provide some concrete examples that will illustrate how a node is the most critical piece of blockchain infrastructure.
tl;dr
The node is the nervous system of a blockchain.
It is a piece of software that handles communication to the rest of the network. It sends and receives transactions, ensures all activity that takes place is legal and, often, stores the entire history of blockchain activity.
Nodes establish connections to a small number of other nodes, known as peers. These nodes are constantly speaking to one another; sharing information back and forth and making judgments about whether what they’re seeing is valid. The result of that judgement determines if they send that data forward to their connected peers - repeated forever.
If you remove those features from a blockchain, you are left with nothing. No mining, no moon and no memes.
If you are interacting with the blockchain, a node is going to be involved. Your mobile crypto wallet, the web3 enabled website you’re on, and the crypto exchange you're withdrawing funds from¹ all use one - or maybe many - of them.
So, yeah, nodes are pretty important.
You may now be thinking “This software must be seriously complex. Who makes these things?” Excellent question.²
O is for Open Source
With a few exceptions (looking at you Binance Chain), most node software for most blockchains is open source.
The creators of a blockchain publish a specification that describes how nodes should behave and communicate, followed by a reference implementation. They then encourage the community to create additional implementations. These are sometimes called “clients”.
What we end up with is a few heavily used node clients managed by independent groups.
Sometimes these organizations are for-profit. Sometimes they receive funding from the foundation that stewards the blockchain. Occasionally, you’ll have single individuals release a client, though these don’t typically receive much traction.³
All of these groups work closely together to discuss advancements to the blockchain spec and incorporate community accepted updates.⁴
It may seem a bit strange to have all of this software - built differently, but doing the same thing. Well, there is a very good reason for it.
Taking a Lesson from Nature
The goal we’re striving for is to create a robust and diverse blockchain.
In the same way biodiversity in nature and agriculture ensure a blight doesn’t completely devastate an ecosystem or food chain, diversity in node software ensures a vulnerability or bug won’t bring down a blockchain.
That “biodiversity” has shown to be quite important in the past.
For example, in 2016 an exploit was discovered in the Ethereum client Geth (built by the Ethereum Foundation) that was being taken advantage of to drastically slow the rate at which clients could validate the data they were receiving. The other heavily utilized client at the time, Parity (from Parity Technologies), did not suffer from this issue, so chain participants were encouraged to switch until Geth was patched.
If there hadn’t been another option for interacting with Ethereum, things could have been dire for the young blockchain.
Now, if you agree with my premise, that blockchain nodes are the most critical element to a blockchain, perhaps you’re wondering if you should be running one yourself.
Let’s explore that.
Double Speak
This is going to sound hypocritical, but I’d suggest that most individuals have no need to personally manage a cryptocurrency node.
Hear me out.
Managing your own node is a lot of work.
It also takes a considerable amount of time from installation to full functionality. Hours if you’re lucky. Depending on what you’re trying to do, it’s not uncommon to have to wait days or even weeks until your node is fully operational.
Once the node is operational, it’s not uncommon for the application to crash or enter a state in which it stops processing new information.
Not to mention you’re going to be running a moderately intensive application on your computer for the rest of eternity. That can represent a non-negligible electricity cost.
Sure, in most cases, it’s not a full time job to manage node operation, but it’s definitely not nothing. You need a fair amount of technical knowledge and will have to go through some trial and error to get that thing running smoothly.
It’s probably not worth it for you.
Who, then, is going to be doing this oh-so important task?
It Takes All Kinds
The decision to run a node comes down to a question of motivation.
For some, that’s the cost of doing business.
If you need direct and unadulterated access to the blockchain, you’ll want to have your own node(s) to do that with. Miners and blockchain services companies, like custodians and exchanges, are good examples of that.
For others, it is out of necessity.
Maybe you have some Bitcoin Gold from the fork in 2017 and you want to figure out how to ditch that garbage currency.⁵ You need to run a node and import your private keys to send those funds somewhere that will give you real money in exchange.
Developers are the most likely group to spin up nodes - you need to be technically savvy to do so. In this case, however, those individuals will want to move faster, spend no money in fees and have more assurances about when their transaction will be mined.
To accomplish this, they will likely be running a node that is not connected to a testnet. Or maybe the node will be the only participant in a local dev chain. In both cases, the node won’t have to do as much work to be ready to use.
There is one last group of people, though they tend to be few and far between, that like running nodes as a public service.
They recognize it is important to have a decentralized blockchain and want to participate in that. They assume the burden of maintenance and the cost to provide a public good.
Wrapping up
Regardless of who you are, you should now have an idea of what a node is and why it is important.
These low-level pieces of infrastructure are complex and interesting pieces of software that operate as incarnations of the belief system that spawned the blockchain in the first place.
Running your own node, even just briefly, can be an excellent educational experience to help you learn about how blockchains work. Maybe give it a shot?
Notes:
Initiating a withdrawal at an exchange is not the same as sending a transaction to the blockchain. Shortly after that, though, the exchange will send funds to you using their cryptocurrency node.
If you aren’t currently thinking that, please do so now.
The Ethereum clients Geth and Parity were initially created almost entirely by one individual each. Their development has since been open sourced and they are now under the control of larger entities: The Ethereum Foundation and Open-Ethereum, respectively.
There are numerous examples in which blockchain communities can’t reach an agreement about the value of proposed updates. If these disagreements cannot be resolved, a fork occurs, resulting in the creation of at least one new blockchain.
Took you long enough.
Updated: Added additional clarification to some terminology - 2020-08-26