LOGBOOK

HELP

Quiz Entry - updated: 2026.08.01

How can old, spent transactions be discarded without breaking a block's hash?

Transactions are hashed into a Merkle tree and only the root goes into the block header — so pruning old branches never changes the block's hash, letting nodes drop the data they no longer need.

A Merkle tree under a block header's root hash; spent transactions Tx0, Tx1 and Hash2 are pruned to stubs while Tx3 is kept, leaving the root unchanged.

* Only the root hash sits in the block header; spent branches are stubbed off, so pruning old transactions leaves the root — and the block's hash — untouched. *

A Merkle tree hashes transactions in pairs, then hashes those hashes, and so on up to a single root hash. The block header commits only to that root. Once a coin's latest transaction is buried deep enough, the branches for old spent transactions can be stubbed off — interior hashes needn't be stored — and the root is unaffected.

For scale: a block header is only about 80 bytes, so at one block every 10 minutes that's roughly 4.2 MB per year of headers.

Does anyone still keep the whole chain? Yes — pruning is a local, per-node choice, not something that happens to the network. A node that prunes still validated every transaction on the way down; it just stops storing the spent history afterwards, keeping the headers and the current unspent set. Meanwhile archival nodes deliberately retain every block ever mined, so the full history stays available to serve to anyone syncing from scratch. A transaction can't quietly vanish from "every single node": it would have to disappear from all the archival copies at once, and even then the header chain would still commit to its Merkle root — the record that it happened is baked into a hash no one can alter.

Go deeper:

From Quiz: IOTHACK / Bitcoin: A Peer-to-Peer Electronic Cash System | Updated: Aug 01, 2026