A node refers to software that participates in the bitcoin network. Any bitcoin application that wants to show and send transaction data needs a way to connect to a node.
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?
- Does the node have a local hot wallet, or does it simply connect to wallet applications? How exactly does it connect?
- 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 some common node setups.
Hardware node #
Hardware nodes are dedicated devices, usually Raspberry Pi’s, that run a bitcoin node. Hardware nodes can come with local wallet functionality or simply be connected to users external wallets as a source of trusted block data. Several ‘plug-and-play’ hardware node options exist such as Umbrel, MyNode, RoninDojo, and Raspiblitz.
Local node #
A local node runs a node on your local device using software such as Bitcoin Core.
Hosted node #
A hosted node is when a user runs their own node on a trusted third-party server. This puts full trust in the third-party that they will not tamper with your block data. This also exposes your transaction history to them, which is a potential privacy risk.
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 users relying on third-party nodes can lead to network 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 bitcoin blockchain, while others are optimized for efficiency and may accept slight security and privacy tradeoffs.
Full nodes #
A full node is bitcoin software that fully verifies and enforces 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 locally and send historical data to other nodes. These are sometimes referred to as listening nodes.
Pruned full nodes only store a portion of recent block data locally. The amount of recent block data that can be stored can be modified by users depending on their storage capacity.
Light nodes #
A light node is bitcoin software that does not verify or enforce the rules of the bitcoin network. Light nodes trust third parties to receive block data.
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:
Neutrino light nodes use the Neutrino protocol, which uses compact block filters to query and download condensed representations of blocks that contain transaction data relevant to the user.
For more information:
Next, let’s learn about the different bitcoin payment request formats that exist.