A full node is a node that maintains a complete copy of the blockchain, including all transaction data. More precisely, it should be called a full blockchain node. In the early days of Bitcoin, all nodes were full nodes, and the current Bitcoin Core client is still an example of a full blockchain node. However, in recent years, many new types of clients have emerged that no longer need to store the entire blockchain and instead function as lightweight clients. These lightweight clients will be discussed in more detail in the following sections.
A full blockchain node keeps a complete and up-to-date copy of the Bitcoin blockchain, including all transaction information. It is able to independently build and verify the blockchain from the very first block, known as the genesis block, all the way to the latest block on the network. A full blockchain node can also independently verify any transaction without relying on any other node or external source of information. When it receives a new block containing transaction data through the Bitcoin network, it first verifies the block and then adds it to its local copy of the blockchain.
Running a full blockchain node provides the purest Bitcoin experience, because it allows you to verify all transaction data on your own, without depending on or trusting any third-party system. It is easy to tell whether you are running a full node: simply check whether your permanent storage device, such as a hard drive, has more than 20GB of space available for storing the full blockchain. If your node requires a large amount of disk space and takes two to three days to synchronize with the Bitcoin network, then you are most likely running a full node. This is the cost of achieving complete independence from centralized control.
Although there are several other full blockchain clients built with different programming languages and software architectures, the most widely used one is Bitcoin Core, also known as the Satoshi client. More than 90% of the nodes on the Bitcoin network run different versions of Bitcoin Core. As mentioned earlier, these nodes can be identified through the version messages exchanged between peers, or by the subversion string “Satoshi” returned by the getpeerinfo command, for example: /Satoshi:0.8.6/.
