Audio by @DelioPera
Let me explain quickly that a Bitcoin Node is a piece of software (Bitcoin Core) that has some important jobs…
1. Keep a copy of the blockchain (one of many copies out there)
2. Connect with other Nodes, forming a network of communication, which propagates transactions (transactions are kept in a “mempool”, the queue of transactions waiting to be included in the blockchain)
3. Check that all additions to the blockchain are valid, and reject those that are not valid.
4. Provide details about the blockchain (such as balances) to other types of software that ask (eg wallets)
5. Provide a copy of the blockchain to any new Node that wants to join. The new node then independently checks that every transaction in the copy it receives is valid. It does not actually “trust” the connected node.
To run a node, you download Bitcoin Core software, and then let it copy the blockchain from another node, and your node verifies each block itself. You then leave it on, and new blocks are received roughly every 10 minutes (containing transactions), and your node will check if the block is valid, and if so, add it to its copy of the blockchain.
A dodgy block gets rejected, not because everyone else rejects it, and not because everyone copies their neighbour, but because the block is invalid according to the rules contained in the Bitcoin Core software, and everyone else that is running the same software will also reject that dodgy block.
Your Bitcoin Wallet does not keep a copy of the blockchain, and is usually separate from Bitcoin Core (although Bitcoin Core does have a wallet feature). Your wallet just holds your keys. It has to ask a Bitcoin Node, “Hey Mr Node, this address of mine, does it have any bitcoin in it?” — technically that’s not quite accurate, but this is sufficient for now.
Running your own node means you don’t ask other people what their copy of Bitcoin Core is doing. It’s your own copy of Bitcoin Core, and you don’t need to trust other people. Your wallet can ask YOUR copy of the Bitcoin Blockchain (Making the digital connection between your wallet and node is the technically challenging and critical part, not just running the node; an article for another day).
So with the preamble done, let me next explain why it is important to run your own node:
When your wallet tells you your balance, it asks a RANDOM public Bitcoin Node what balance each of your addresses contains, and gives you the results, and you see your total bitcoin in that wallet. Even empty addresses you haven’t used get queried. Surveillance companies run some of these nodes. “What the Hell?” — Yes, it’s true.
You are telling a random entity, possibly a surveillance company, your IP address (which can be used to identify you), and that you have a Bitcoin wallet, and ALL your current and future addresses, and all the balances of all those addresses, now and later. Providing this information to surveillance companies is dangerous for many reasons.
When you sell something, the buyer (a technically sophisticated one) can potentially manipulate which node your wallet connects to. They can send you counterfeit bitcoin, and your wallet will think it’s received real bitcoin because the malicious node lied to your wallet. Granted, this is very unlikely, but the fact that you can prevent it by running a node makes the development of this kind of attack not interesting or fruitful. What actually happens with this attack? The scammer somehow gets your Bitcoin Wallet to read the wrong blockchain from a malicious node. He moves supposed bitcoin on THAT blockchain, not the real one, and your wallet thinks you’ve been paid.
If you get scammed in this way, you may accept this counterfeit as final payment, and may send goods in exchange for these fake bitcoin. One day, when you connect to a genuine Bitcoin Node, your wallet will show that you never in fact received bitcoin; Your balance will be lower than what you thought it should be, because the fake transfer never existed on the real Bitcoin Blockchain.
You can prevent this by connecting your wallet to a node you trust, but even better is to connect to your own node. Don’t trust, verify. That’s the Bitcoiner’s mantra.
Not doing this is kind of like accepting gold as payment, and asking a random person to use their XRF Analyser to check the gold you received is real. You don’t know if that random person is on the side of the buyer or honest.
You might ask, “No trust? Wait, aren’t I trusting Bitcoin Core when I download it? How do I know THAT’s not fake?” — Yes and no. There are ways to verify that the software you downloaded is genuine, but that’s not for this article.
You might then ask, “Aren’t I trusting the developers that the genuine copy is behaving as I expect?” — Actually yes, unless you write the software yourself, or read the code, there has to be some level of trust, but the idea is to keep it to a minimum (just saying that might get me in trouble by the Bitcoin mob, shhh). Most people (me included), can’t and won’t read the code, so there is some element of trust. The trust is that hundreds, maybe thousands of developers’ eyes are going over the code looking for errors and problems before it is released. It’s not easy to make changes to Bitcoin Core, and this is a feature, not a bug. Using the gold XRF Analyser analogy, you are probably not going to build one from scratch to check your gold is real, and that’s OK.
If a group of people banded together, as they did in 2017, and decided to try and change the rules of how Bitcoin works, for example increasing the block size (or worse increasing the supply — just an example, supply change wasn’t the issue in 2017), you can choose to not upgrade your node to the new system and keep your current node. If you are more than the minority, there will be a pool of people running the unchanged Bitcoin Core and a pool of people running the changed version — a fork. This is how Bitcoin Cash was born. The new version was unanimously rejected, but those that lost the war kept running their nodes and mining bitcoin cash as well. Those who owned bitcoin then also owned bitcoin cash. For a given address, there was one balance on the Bitcoin Blockchain, one balance on the Bitcoin Cash Blockchain.
If you didn’t run your own node, you had no say in this war, and your wallet might have connected to a Bitcoin Cash Node and someone might have paid you in Bitcoin Cash instead of Bitcoin. You then might have given up your goods in exchange for coins that didn’t meet the monetary policy you preferred.
If you run a node, and leave it on 24 hours a day, this helps the network. The more nodes that are running, the faster transactions can propagate for everyone, and the harder it is to shut down Bitcoin — To kill Bitcoin, every single copy of the blockchain must be destroyed.
If you learn to run your own node, then YOU also become a kind of human node, because you could one day help someone else to run and use their own node.
In the future, it may be too challenging for EVERYONE to run their own node. We don’t want people trusting random nodes. I imagine there will be a technical person in every social “circle of trust” for people to connect their wallets to. This tiny trade off is far better than connecting to random public Bitcoin Nodes.
Running your own node is super cool, and gives you a great appreciation of the power of Bitcoin. You’ll probably end up buying more.
Hopefully, it is clear now you should run a node. There are various ways.
If you want individual help, see here. If you can manage on your own, here are some options and guides I wrote to assist:
Static Lightning Address: email@example.com