A Comprehensive Bitcoin Node Guide
Part 1: What Is A Node?
The primary function of Bitcoin nodes is to ensure blockchain data is valid, secure, and accessible to virtually anyone. Though many assume running a node is a purely altruistic endeavor to bolster the Bitcoin network, using a node to verify transactions offers users by far the best privacy and security assurance. In this report, the Kraken Intelligence team analyzes what a Bitcoin full node is, why you should consider running one, and how to set one up and use it to verify your transactions.
A node is a device, such as a computer or mobile phone, connected to the Bitcoin network by running Bitcoin’s software, also known as the Bitcoin Client. Nodes connect to other computers running the same software (i.e., peer nodes) to create the peer-to-peer Bitcoin network. Most nodes connect via the Internet, but some connect indirectly via satellite, radio, or mesh networks. Nodes fulfill three prominent roles:
Role 1: Store the blockchain ledger’s transaction history
All nodes contribute to building and maintaining the blockchain, which is a list of all confirmed Bitcoin transactions, by validating transactions confirmed initially by miners. A copy of all historical transactions is recorded on the Bitcoin blockchain via its network of nodes. Every node keeps a copy of the blockchain and continuously appends it with newly confirmed transactions as they come in.
Role 2: Relay information to other nodes to validate new blocks proposed by miners
Nodes communicate with each other to share the latest transaction information for consensus-building. By sharing information amongst each other, nodes allow everyone on the network to stay up-to-date with what’s going on in other parts of the network (e.g., new transactions) — a vital component for overseeing a global digital crypto asset. Nodes share two types of transactions: confirmed and pending transactions. Confirmed transactions have been validated and added to the blockchain by the miner(s). These transactions are batched in blocks of transactions rather than individually. On the other hand, pending transactions that are not yet added to the blockchain sit in Bitcoin’s “mempool” (memory pool). The mempool is effectively a waiting room for pending transactions that are later picked up by miners and included in a block.
Role 3: Follow and enforce the Bitcoin protocol
Each node is programmed to follow the Bitcoin protocol. If a node does not adhere to Bitcoin’s rules and shares an invalid block containing one or more fraudulent transactions (e.g., double-spend), other peer nodes reject the “invalid” node from the network. By broadcasting and relaying transactions to other nodes, they can compare blocks proposed by miners to verify their authenticity and effectively weed out bad actors without the need for a centralized intermediary. For instance, if someone broke the rule of sending more bitcoins than they held, all nodes would not validate the transaction.
Some examples of consensus rules include:
- Bitcoin(s) cannot be double-spent under any circumstances.
- Transactions must be signed by the owner(s) of the bitcoin(s) before being spent.
- The block subsidy cannot exceed a certain amount (₿6.25 at the time of publication).
- Transactions and blocks must be in the appropriate data format.
In sum, Bitcoin nodes maintain the reliability of the data stored on the blockchain. Though only one node is necessary to maintain an entire blockchain’s history, this system reduces the network to a single point of failure. A blockchain without a decentralized network of nodes is less resilient to threats such as system failures, power outages, or network attacks by malicious actors.
Types of Nodes
Not all nodes are created equal. For instance, nodes containing a full copy of the blockchain ledger used to enforce the network’s consensus rules and validate new transactions are full nodes. Most full nodes support the network by validating transactions and blocks before relaying them to more full nodes. Full nodes often serve lightweight nodes, or Simple Payment Verification (SPV) wallets, which only contain a partial copy of the blockchain by allowing them to transmit their transactions to the network through full nodes.
A device running software that independently verifies the state of the Bitcoin blockchain by downloading every block and transaction in Bitcoin’s nearly 13-year history and checking them against Bitcoin’s consensus rules. If a transaction or block violates Bitcoin’s consensus rules, a full node will automatically reject it. Full nodes broadcast, verify, and store transactions, effectively acting both as gateways to the network and an information expressway to share network data amongst all participants. Many full nodes also help lightweight nodes by transmitting transactions from the lightweight node’s wallet to the network and alerting them when a transaction goes in or out. A single full node will typically connect to eight to ten other nodes.
While full nodes are the cornerstone of the Bitcoin network, lightweight nodes provide market participants easier access to the network. Many lightweight nodes use a method called Simple Payment Verification (SPV), which Satoshi defined in the Bitcoin whitepaper, to verify transactions without downloading the entire blockchain. However, SPV clients can’t verify the whole blockchain’s transactions. Instead, they only download the block headers only to validate the authenticity of the transactions.3 These nodes act as intermediaries between the sender and a full node, querying other full nodes when data is required to confirm payment. SPV wallets are significantly cheaper to maintain than full nodes because they don’t process large amounts of data through the network. They were historically used in many mobile Bitcoin wallets, though they have since become rarer. SPV clients (e.g., mobile wallets) trust most miners without checking the validity of the blocks they produce. While it would require a majority of miners to mislead an SPV client, they can theoretically make the SPV client believe anything.
However, malicious acts are difficult to execute because full nodes reject invalid blocks. Lightweight nodes typically connect to four other nodes. Though Satoshi described the design for SPV in the 2008 white paper, it wasn't implemented until two years later when Mike Hearn created BitcoinJ, a Java implementation of the Bitcoin protocol.4 Still, it wasn’t until 18 months later that developers published Bitcoin Improvement Proposal (BIP) 37 on November 30th, 2016, providing a specification for “Bloom filtering” of transactions. Put simply, this allowed SPV clients to rely upon the block header to prove the inclusion of a transaction in a block. This provided significantly reduced bandwidth usage, as Satoshi initially described in the whitepaper.
However, not all lightweight nodes function this way. Some light wallets are built to receive their blockchain data from multiple sources. For example, the service would check several block explorers (e.g., blockchain.com, blockchair, blockcypher, and tokenview) to remove the single point of failure within SPV clients. Though it's more unlikely that many block explorers are colluding to trick users, users still must trust others for this data. Multiple block explorers can still lie, or even the third party sourcing data from these block explorers.
Now that you know a bit about what a Bitcoin Node is, let’s talk about why you might want to consider running a Bitcoin Node.