A node is any computer that is connected to a cryptocurrency network, for example, any computer connected to the Bitcoin network can be regarded as a Bitcoin node. Some nodes on a cryptocurrency network are known as full nodes. They are known as full nodes because these nodes fully validate every block and transaction presented to it, by checking them against the network’s consensus rules. For example, some of Bitcoin’s consensus rules include:
- A transaction output cannot be double-spent.
- Transactions and blocks must be in the correct format.
- Blocks may only release a certain number of bitcoins as a block reward.
If any block or transaction disobeys these consensus rules, then they are rejected by the full node, and not included in the blockchain. Full nodes support the network by accepting blocks and transactions from other full nodes, validating those blocks and transactions, and then relaying them to other full nodes. An important characteristic of full nodes is that they are trustless, they will reject any block or transaction that violates consensus rules, even if every other node on the network thinks that it is valid.
Full nodes must also have a copy of the blockchain, so every transaction and block that has ever taken place on the blockchain must be downloaded. This ensures that the blockchain cannot be controlled by a single entity, and nor can it easily be compromised, as there is not one single point of failure. So, the more full nodes that are operating within the network, the more trustless and decentralized the system becomes.
Some full nodes also serve what are known as lightweight nodes (also known as lightweight clients). Lightweight nodes verify transactions using a method called simplified payment verification (SPV). SPV allows a node to verify if a transaction has been included in a block, without having to download the entire blockchain. With SPV, full nodes serve lightweight nodes by allowing them to connect and transmit their transactions to the network, and will notify them when a transaction affects them. A lightweight node need only download the headers of all blocks on the blockchain, which means that download and storage requirements are significantly less intensive than that of a full node.
The relationship between full nodes and lightweight nodes exists because if it did not, then lightweight nodes would not be able to connect to the cryptocurrency network, which might lead them to use a centralized service instead. It is also important to note that SPV nodes are effectively placing their trust in full nodes in ensuring that blocks and transactions are being correctly validated against consensus rules.