In order to participate in the Bitcoin network, users download the software and run it on their computer. Computers running Bitcoin software connect to form a peer-to-peer network. Each computer independently calculates and stores three data structures – the blockchain, UTXO set and mempool.
Once the software is installed and running, the computer becomes a full node and seeks out connections to other computers, or peers, who are also running Bitcoin. As a full node, the computer then ‘asks around’ for the Bitcoin blockchain, always accepting the chain with the most accumulated Proof-of-Work as the correct chain.
Once the blockchain is downloaded, the full node will re-verify both the transactions and the Proofs-of-Work in the blockchain to ensure none of the protocol rules have been violated. While the chain is being verified, the full node uses the blockchain to construct the database of current bitcoin balances – the Unspent Transaction Output, or UTXO, set.
The full node will request from its connections the ‘waiting list’ of known signed transactions that have not yet been added to the blockchain. It then re-verifies these transactions to ensure no rules have been broken, before adding them to its own waiting list. This waiting list is called the mempool. After assembling its own mempool, the full node will constantly receive transactions from its network peers, verify them, and relay them to its other peers, ensuring that valid signed transactions are propagated across the network.