A “node” is the term used to designate a participant on a peer-to-peer network. Unlike the usual “client-server” applications that prevail on the internet today, where servers do the heavy lifting and clients usually only display the results, a peer-to-peer network is an application design that distributes tasks and workloads between all the peers.
A Bitcoin node is a computer participating in the Bitcoin network via a peer-to-peer protocol. Bitcoin nodes can validate, send and receive transactions. They can also validate blocks and participate in the network as miners to find a valid proof-of-work for a block candidate.
Usually, a Bitcoin node will not do all of the described above. It’ll depend on the use case and hardware requirements. These are some possible variations:
- Full node: it stores a copy of the blockchain and validates blocks and third-party transactions. It can send, receive and validate transactions. It can be run on an old computer.
- Pruned node: similar to full nodes but stores only a portion of the blockchain. Meant to be run on computers with low storage space.
- SPV node: a “simple payment verification” node. It does not store nor validate blocks and transactions. It simply consults other nodes in the network to verify transactions. It can be run on a smartphone.
- Mining node: usually a full node competing to find a valid proof-of-work for a block candidate. Although it can also run on an old computer, it doesn’t make economic sense to do so, as it’ll have a hard time competing with state-of-the-art hardware specialized in mining.
Lightning Network Node
A Lightning Node is a computer participating in the Lightning Network via the peer-to-peer protocol. They can open and close channels with other nodes, send and receive off-chain payments, and route off-chain payments from other users.
Since a Lightning node requires interaction with Bitcoin’s base layer when opening and closing channels, it’s common that Lightning node runners also run a Bitcoin node in the same computer. The Bitcoin node acts as a backend for the Lightning node. It’s also possible to use other backends such as Neutrino, a light Bitcoin node similar to an SPV node, which only stores the essentials for operating a Lightning node.
Voltage Nodes, for instance, offer both options for the backend to your Lightning node, and you can choose what best fits your requirements.
Reference Implementation vs. Specification Documents
Besides running completely different software, there’s also a design difference between Bitcoin nodes and Lightning nodes. Even before publishing Bitcoin’s whitepaper, Satoshi had already designed a reference implementation for Bitcoin. The implementation evolved into what we know now as “Bitcoin Core.” This means that developers that want to write software for a Bitcoin node need to use the code in Bitcoin Core as a reference.
The Lightning Network, on the other hand, has a different approach. Instead of describing the protocol using the software directly, it uses a series of specification documents known as BOLTs (Basis of Lightning Technology) to describe the protocol. Therefore, when people want to develop a Lightning node, they must implement what is described on the BOLTs.Ultimately, this means that the “source of truth” is Bitcoin Core’s code for Bitcoin and BOLTs for Lightning. Due to this design decision, Lightning has a wider variety of node implementations maintained by different companies, while Bitcoin has a less diverse ecosystem.
Get started on Voltage today. Spin up your node, and get instant liquidity with our LSP, Flow.