We define a full Bitcoin node as a node that (1) maintains the full copy of the blockchain, (2) validates all incoming transactions and blocks, and (3) forwards transactions and blocks to its peers. In addition to providing validation services to the Bitcoin network, a full node might provide an open TCP port (Bitcoin uses the TCP port 8333) to where other Bitcoin peers connect. Throughout the rest of this book, we use the terms “full node” and “regular node” interchangeably.
Lightweight clients are clients that do not store, nor maintain the full Bitcoin blockchain, but follow a simple payment verification (SPV) scheme. This latter scheme allows the lightweight client to verify that a transaction has been included in the blockchain by receiving and verifying only the block headers. In addition, lightweight clients receive only transactions that are relevant to their wallets and do not need to perform transaction or block validation. As a result, lightweight clients require significantly less resources to operate than full nodes or miners. In Chapter 6, we discuss the operation of lightweight clients and detail the SPV mode.