A node refers to a Bitcoin client that participates in the Bitcoin network. Any Bitcoin application that wants to show and send transactions needs a way to connect to a node and manage block data and there are many ways to make this work.
There are multiple aspects that differentiate nodes:
- Is it controlled by you or someone else? How much trust is involved?
- Does it verify the data it receives?
- Does it store all transaction data or only data relevant to you?
- Security considerations, such as the risk of receiving manipulated data
- Privacy considerations, such as tracing your transaction behavior
Common node setups #
From complete control to fully trusting a single third party, there are a variety of node setups. Below are examples of common ones.
Local node #
A very simple setup is to use an application like Bitcoin Core that combines node and wallet functionality.
Hardware node #
Separating node and wallet functionality, many users rely on a dedicated computer like a Raspberry Pi running software like Umbrel, MyNode, and Raspiblitz. Wallet applications can connect to the node which allows them to be more lightweight.
Self-hosted node #
While it possible to run a node on a rented server, this partially places the node in the control of a third party and introduces privacy risks.
Multiple third-party nodes #
Connecting to multiple untrusted third-parties can be a good idea if compact block filters are used. This prevents third parties from analyzing which data belongs to the user, an important privacy benefit. It also reduces the risk of receiving manipulated data from a single third-party node, as data from multiple sources can be compared.
Third-party node #
Connecting to a single node controlled by a third-party is a convenient setup for starters, or when the economic cost of running a node is too high. This should only be used if there is a good trust relationship or potential loss is minimal. Too many user relying on third-party nodes can lead to centralization, so it is generally discouraged.
Third-party API #
Third-party APIs should be avoided. These are custom connection mechanisms built on top of block data, and there is no way to validate the authenticity of the data.
Block data management #
Based on use case and context, some nodes are very thorough and store and verify the complete blockchain, while others are optimized for efficiency and may accept slight security and privacy tradeoffs.
Full nodes #
Full nodes are Bitcoin clients that fully verify and enforce the rules of the Bitcoin network. An example of a rule is that there will never be more than 21 million bitcoin.
Archival full nodes store the entire Bitcoin blockchain, and send historical data to other nodes.
Pruned full nodes use much lower storage capacity as they only store a portion of recent blocks.
Light nodes #
Light nodes are Bitcoin clients that do not verify or enforce the rules of the Bitcoin network.
Simplified payment verification (SPV) light nodes query and download block headers from full nodes making it possible for users to verify transactions without running a full node.
For more information: