Bitcoin’s Solution To The Double Spend Problem
February 18, 2019 | By Lacey Shrum
My first recommendation for anyone wanting to learn blockchain is to read the Bitcoin whitepaper. This is essential for anyone interested in digital currency and is also a lovely primer into the nuts and bolts of blockchain.
Within nine seemingly short and simple pages, the anonymous writer, Satoshi Nakamoto, says a lot in few words. I will attempt to break it down, starting with his/her solution to the “double-spend” problem.
If we want to participate in commerce on the internet, cash or a form of payment with similar non-reversible qualities is not available. Most transactions currently rely on financial institutions (banks, credit cards, Venmo) to provide trust between the buyer and seller. This intermediary helps us facilitate this transaction between two parties unknown (and untrusted) to each other and mediate disputes between the buyer and seller that may come up.
Completely non-reversible “cash-like” transactions are not available online – someone is always left holding the bag and it is usually the financial institution. This leads to inefficiencies for the original parties, including:
- Increased costs
- Limited transaction size, and
- Collection of customer data to mitigate risk
Until blockchain technology, an electronic currency was a dream beyond reality because no system could prevent a holder from spending her coin twice. Nakamoto theorizes that we need a digital currency based on cryptographic proof instead of trust.
The first step – we must prevent the double-spend problem. In the past, we’ve prevented the coin from being double spent by having a central authority (a bank) verify that I had the coin and I had not already spent it. And if I do double spend, this requires a lot of work for the bank, which means increased costs for all of us, and in the end the recipients may or may not get paid.
The Bitcoin whitepaper proposes “a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions.”
Basically, we are going to produce a ledger that is repeated over and over recording all changes, connect it in chronological order, and have thousands of “nodes” (computers) to maintain that chain of ledgers. Let’s call it “blockchain.”
Each node maintains the entire ledger because Nakamoto tells us, “the only way to confirm the absence of a transaction is to be aware of all transactions.” How do we know that I have the coin to send to the recipient? By confirming through all transactions ever available that
- I received my coin from someone who legitimately had that coin to give and
- I have not sent that coin to anyone and still have it to give.
Very simply, this is what the network does when I send 1 bitcoin. It ensures that my ownership of the coin is legitimate and that I still maintain the ability to transfer that ownership. If both answers are “yes,” then my bitcoin is free to send and the network documents that change on the ledger.
The network, with all of its cryptography, hashing, encryption, and a lot of fancy math replaces the bank as a “trust agent.” This ideally produces decreased costs of transactions, an unlimited size of transactions, and immediately verifiable transactions. But it also gives up reversible transactions – once you send your bitcoin, it is gone.