I am trying to understand how double spending can be prevented if mining nodes do not keep a current "balance" of BTC associated with an account?

If they do keep the current balance isn't this a problem as the number of potential accounts is very, very large? That is, if each account balance takes up space in memory, and more accounts are created then the only way nodes can keep up is when the rate of growth of accounts is less than the rate of growth of available memory per node?

Am I missing something?

1 Answer 1


The notion of accounts is for human convenience. The system doesn't care that you think of all the coins accessible by the same private key as a single account.

Instead, miners keep an efficiently organized database of all UTXOs (unspent transaction outputs). When a miner validates a transaction, it checks that each input corresponds to a valid UTXO.

There's no need to keep the UTXO database in memory. Storing it on disk is fine as long as it is efficiently indexed. Since it's kept for precisely for this purpose, it is efficiently indexed for this purpose.

  • So the UTXO is updated after every new block, is that correct?
    – Greg
    Jan 29, 2018 at 0:37
  • 1
    The UTXO set is updated any time a new block is accepted or the blockchain is reorganized. Jan 29, 2018 at 0:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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