To prove a transaction is valid, you must prove that the source address has a balance at least as much as the transaction. How does one prove this in a performant manner? The block chain of bitcoin last I checked is 16G. Surely miners don't scan through 16G of data to check every block to track all transactions that address has ever had.

How do miners and clients speed this up to a fast and cheap operation?

  • In essence, they do scan the whole block chain. But they do most of the work up front, when they initially download the chain. Everything that will be needed for verifying future transactions is indexed or cached at that time. Mar 21, 2014 at 3:57

1 Answer 1


Bitcoin doesn't work on balances, it works on transaction inputs and outputs. A transaction's inputs must specify unspent transaction outputs (UTXO) of previous transactions. And clients maintain an index of UTXO to easily find the referenced outputs.

  • Other than for ease of computation, is there a reason for this? Also, I'm finding this question illuminating
    – Earlz
    Mar 20, 2014 at 0:09
  • @Earlz: I guess it boils down to ease of computation. Mar 20, 2014 at 0:22

Not the answer you're looking for? Browse other questions tagged or ask your own question.