Skip to content

The Double-Spend Problem

This is the heart of why digital money was unsolved for decades. Understand this page deeply and most of Bitcoin’s design will feel inevitable.

When I hand you a $10 bill, something subtle and powerful happens: I no longer have it. The transfer and the de-duplication happen automatically, enforced by physics. There is exactly one of that bill, and now it’s in your hand, not mine.

Because of this, I literally cannot spend the same bill twice. The laws of physics are doing the bookkeeping for free.

Digital data has the inverse property: bits are infinitely, perfectly copyable. Copy/paste costs nothing and produces an identical original.

So if a “coin” is just a file — say coin.dat — I can:

  1. Email coin.dat to Alice. She thinks she got paid.
  2. Email the identical coin.dat to Bob. He thinks he got paid too.

Both hold a perfect copy. I just spent the same coin twice. This is the double-spend problem, and it is the reason “just make a digital coin” does not work.

Physical cash: [me] --bill--> [you] (I no longer have it ✔)
Naive digital: [me] --copy--> [Alice]
\--copy--> [Bob] (both have it ✘ double-spent)

Why “just add a serial number” isn’t enough

Section titled “Why “just add a serial number” isn’t enough”

A natural first idea: give each coin a unique serial number so copies are detectable. But that only detects duplicates — it doesn’t decide which spend is the real one. If Alice and Bob both show up with coin #A1B2, who actually owns it now?

To answer that, somebody has to keep an authoritative record of the order of events — “this coin went to Alice first, so Bob’s copy is invalid.” In other words, you need a ledger with an agreed-upon ordering of transactions.

And now we’re back to the lens from the last page: digital money requires a ledger everyone agrees on. The next question is brutal — who keeps that ledger?

  1. What “free service” does physics provide for physical cash that digital data lacks?
  2. Walk through, step by step, how I would double-spend a naive digital coin.
  3. Why does adding a unique serial number to each coin fail to fully solve double-spending?
  4. What does solving double-spend ultimately require you to agree on?
Show answers
  1. De-duplication enforced by physics: when you hand over a $10 bill you no longer have it, so the transfer and the de-dupe happen automatically. Digital data lacks this because bits are infinitely, perfectly copyable.
  2. Treat the coin as a file like coin.dat: (1) email coin.dat to Alice — she thinks she got paid; (2) email the identical coin.dat to Bob — he thinks he got paid too. Both hold a perfect copy, so the same coin was spent twice.
  3. A serial number only detects that two copies exist — it doesn’t decide which spend is the real one. If Alice and Bob both show up with coin #A1B2, the number alone can’t say who owns it now; you still need an authoritative record of the order of events.
  4. A ledger with an agreed-upon ordering of transactions — i.e. everyone agreeing on who got the coin first. Solving double-spend is ultimately a consensus problem: getting untrusting strangers to agree on one ordered ledger.