Free reading guide

The Bitcoinwhite paper,in plain English.

Satoshi Nakamoto's nine-page paper that started Bitcoin, with the exact original text on the left and a plain-English translation on the right. Every section has cliff notes up top and side notes underneath. Tap any underlined word for a quick definition.

Bitcoin: A Peer-to-Peer Electronic Cash System

Satoshi Nakamoto

Each section below follows the same pattern. Cliff notes give you the short version. Then comes the paper’s exact original text beside a plain-English translation, paragraph by paragraph. Side notes follow with history, context, and what has changed since 2008. Numbered markers in the original text point to those notes.

The whole paper in six lines

  • Bitcoin is digital cash that goes straight from person to person, with no bank in the middle.
  • The hard problem is spending the same coin twice. Bitcoin solves it with a public record everyone keeps.
  • Adding to the record takes real computing work (proof-of-work), so rewriting history is wildly expensive.
  • Everyone follows the longest chain, because it has the most work behind it.
  • Miners are paid in new coins and fees, so playing fair is more profitable than cheating.
  • The longer a payment sits in the chain, the exponentially safer it is.
Show

The original text is from the paper published at bitcoin.org/bitcoin.pdf, released under the MIT license. The plain-English translation, cliff notes and side notes are our own and are for education only, not financial advice. The paper’s diagrams are redrawn here in simplified form.

Abstract

The big idea in one paragraph

Cliff notes

  • Bitcoin is meant to be digital cash that goes straight from one person to another, with no bank in the middle.
  • The hard part is stopping someone from spending the same digital coin twice. Bitcoin solves that with a public, shared record.
  • Each page of the record takes real computing work to create, so rewriting history is very expensive.
  • The longest chain wins, and honest computers stay ahead as long as they hold most of the computing power.

Remember: Bitcoin replaces the trusted middleman with a public record that is too costly to fake.

The original

A purely peer-to-peer version of electronic cash1 would allow online payments to be sent directly from one party to another without going through a financial institution. Digital signatures provide part of the solution, but the main benefits are lost if a is still required to prevent 2. We propose a solution to the double-spending problem using a peer-to-peer network. The network transactions by them into an ongoing chain of hash-based , forming a record that cannot be changed without redoing the proof-of-work. The not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of power3. As long as a majority of CPU power is controlled by that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers. The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.

Plain English

Bitcoin is meant to be digital cash that goes straight from one person to another, with no bank in between.

Digital signatures already prove who sent a payment. But signatures alone cannot stop someone from spending the same digital coin twice, so you would still need a referee. That referee is exactly what Bitcoin is trying to remove.

The fix is a network of computers that stamps each batch of payments with a time and chains the batches together. Each link takes real computing work to create (), so changing any old link means redoing all that work.

The wins. It is both the agreed order of events and proof that the most computing power stands behind it. If most of that power belongs to honest computers, they stay ahead of any attackers.

The network itself is loose and simple. Messages are shared on a best-effort basis, and computers can drop out and rejoin any time, then catch up by taking the longest chain.

Section 1

Introduction: the problem with trusting middlemen

Cliff notes

  • Online payments depend on banks and card companies acting as trusted middlemen.
  • Trust has a price: disputes, reversals, fees that rule out tiny payments, extra personal data, and accepted fraud.
  • Cash avoids this in person, but nothing like cash exists for the internet.
  • Goal: let two willing people pay each other directly, backed by math instead of trust.

Remember: The problem is not money. The problem is needing someone's permission to move it.

The original

Commerce on the Internet has come to rely almost exclusively on financial institutions serving as1 to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non-reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party.

Plain English

Today, online shopping runs on banks and card companies acting as the trusted middleman. It works well enough, but trust has costs. Payments can be disputed and reversed, so the middleman has to referee, and refereeing costs money. That makes tiny payments impractical.

Sellers also have to be suspicious of buyers, so they ask for extra personal information and accept some fraud as normal. Cash avoids all this face to face, but nothing like cash exists for the internet.

The original

What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine 2 mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the problem using a peer-to-peer distributed to generate computational proof of the chronological order of transactions. The system is secure as long as honest collectively control more power than any cooperating group of attacker nodes.

Plain English

What is needed: a system where any two willing people can pay each other directly, with proof from math instead of trust. Payments that are practically impossible to undo protect sellers. Buyers can still be protected with ordinary , where a neutral party holds the funds until a deal is done.

The paper's answer is a peer-to-peer that proves the order of payments. It stays secure as long as honest computers hold more computing power than any group of attackers working together.

Section 2

Transactions: a coin is a chain of signatures

Cliff notes

  • A coin is a chain of signatures: each owner signs it over to the next.
  • Anyone can check the signatures, but cannot tell whether an earlier owner also signed it to someone else.
  • A central mint can solve that, but then everything depends on one company.
  • Without a mint, payments must be announced publicly and everyone must agree on the order.

Remember: To prove a coin was not spent twice, you have to be able to see every payment.

The original

We define an electronic coin as a chain of . Each owner transfers the coin to the next by digitally signing a of the previous transaction and the 1 of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership.

Plain English

A coin here is a trail of signatures. When you pay someone, you sign a message containing a fingerprint of the previous payment plus the next owner's , and attach it to the coin. Whoever receives it can check every signature in the trail to confirm the coin's ownership history.

Transaction 1Owner 1’s public keyHash of previousOwner 0’s signatureTransaction 2Owner 2’s public keyHash of previousOwner 1’s signatureTransaction 3Owner 3’s public keyHash of previousOwner 2’s signatureEach owner signs (with their private key) a hash of the last transaction plus the next owner’s public key.
A coin is a chain of signatures: each transaction points back at the one before it.
The original

The problem of course is the payee can't verify that one of the owners did not the coin. A common solution is to introduce a , or 2, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank.

Plain English

The leftover problem: the receiver cannot tell if an earlier owner already spent the same coin somewhere else. The usual fix is a central . Every payment goes back to the mint, which issues a fresh coin, and only mint-issued coins are trusted. That works, but the whole money system then depends on one company that sees every payment, just like a bank.

The original

We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1]3, and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of agreed it was the first received.

Plain English

So the receiver needs a way to know that no earlier owner signed the coin to someone else first. Only the earliest payment counts. The only way to prove something did not happen is to see everything that did. The mint saw everything.

Without a mint, payments must be announced publicly, and everyone needs to agree on one order. The receiver needs proof that, when the payment happened, most of the network agreed it came first.

Section 3

Timestamp server: locking the order of events

Cliff notes

  • Take a batch of items, make one fingerprint of the batch, and publish it for everyone to see.
  • That proves the batch existed by that time.
  • Each new timestamp includes the one before it, so they link into a chain.
  • Every new link makes all the earlier ones harder to change.

Remember: A chain of timestamps, where each one locks in the one before it.

The original

The solution we propose begins with a . A timestamp server works by taking a of a of items to be timestamped and widely publishing the hash, such as in a newspaper or Usenet post1 [2-5]. The proves that the data must have existed at the time, obviously, in order to get into the hash. Each timestamp includes the previous timestamp in its hash, forming a chain2, with each additional timestamp reinforcing the ones before it.

Plain English

The first building is a . Take a batch of items, make one fingerprint of the whole batch, and publish it widely, for example in a newspaper. That proves the batch existed by then, since you could not have made the fingerprint without it.

Each new also includes the previous timestamp's fingerprint, so they link into a chain, and every new one strengthens all the earlier ones.

Section 4

Proof-of-work: making history expensive to rewrite

Cliff notes

  • Miners solve a guessing puzzle: find a number that makes the block's fingerprint start with a run of zeros.
  • Finding the answer takes huge effort. Checking it takes one step.
  • Changing an old block means redoing its work and the work of every block after it.
  • The longest chain has the most work behind it, so it is the one everyone trusts: roughly one CPU, one vote.
  • The puzzle's difficulty adjusts automatically to keep blocks coming at a steady pace.

Remember: Proof-of-work makes cheating cost real electricity, and checking honesty cost almost nothing.

The original

To implement a distributed on a peer-to-peer basis, we will need to use a system similar to Adam Back's 1 [6], rather than newspaper or Usenet posts. The proof-of-work involves scanning for a value that when , such as with 2, the hash begins with a number of zero bits. The average work required is exponential in the number of zero bits3 required and can be verified by executing a single hash.

Plain English

To run this timestamping with no central party, Bitcoin uses , similar to Adam Back's . The task: find a number that, when run through a function like , produces a fingerprint starting with a certain number of zeros. Needing more zeros means exponentially more guessing. But checking an answer takes just one calculation.

Block 1Prev hashNonceTxTx…Block 2Prev hashNonceTxTx…Miners keep changing the nonce until the block’s hash starts with enough zeros.
Each block holds the hash of the block before it, plus a nonce the miner adjusts.
The original

For our network, we implement the proof-of-work by incrementing a in the until a value is found that gives the block's hash the required zero bits. Once the effort has been expended to make it satisfy the proof-of-work, the block cannot be changed without redoing the work. As later blocks are chained after it, the work to change the block would include redoing all the blocks after it.

Plain English

In Bitcoin, miners keep changing a throwaway number (the ) in the until the fingerprint has enough zeros. Once that effort is spent, the block is locked: changing anything inside means redoing the work. And because later blocks are built on top, changing an old block means redoing the work for every block after it.

The original

The proof-of-work also solves the problem of determining representation in majority decision making. If the majority were based on one--one-vote, it could be subverted by anyone able to allocate many IPs. Proof-of-work is essentially one-CPU-one-vote. The majority decision is represented by the , which has the greatest proof-of-work effort invested in it. If a majority of CPU power is controlled by honest , the honest chain will grow the fastest and outpace any competing chains. To modify a past block, an attacker would have to redo the proof-of-work of the block and all blocks after it and then catch up with and surpass the work of the honest nodes. We will show later that the probability of a slower attacker catching up diminishes exponentially as subsequent blocks are added.

Plain English

Proof-of-work also settles who gets a vote. Voting by would be easy to rig, since anyone can create loads of addresses. Instead it is roughly one , one vote. The majority is whichever chain has the most work behind it: the .

If honest computers hold most of the power, their chain grows fastest and stays ahead. An attacker would have to redo a block and everything after it, and then outrun the honest network as well. Later the paper shows a slower attacker's chances shrink exponentially with each new block.

The original

To compensate for increasing hardware speed and varying interest in running nodes over time, the proof-of-work difficulty is determined by a moving average targeting an average number of blocks per hour4. If they're generated too fast, the difficulty increases.

Plain English

Computers get faster and people come and go, so the puzzle's difficulty adjusts automatically, based on a moving average aimed at a target number of blocks per hour. If blocks come too fast, it gets harder.

Section 5

Network: how everyone stays in sync

Cliff notes

  • Six steps run the network: announce, collect, solve, share, validate, build on top.
  • Everyone follows the longest chain.
  • If two blocks appear at once, the tie breaks when the next block lands on one of them.
  • The network tolerates lost messages, because missed blocks are noticed and requested later.

Remember: No boss, just a routine that every computer follows.

The original

The steps to run the network are as follows:

  1. New transactions are broadcast to all .
  2. Each node collects new transactions into a .
  3. Each node works on finding a difficult for its block.
  4. When a node finds a proof-of-work, it broadcasts the block to all nodes.
  5. Nodes accept the block only if all transactions in it are valid and not already spent.
  6. Nodes express their acceptance of the block by working on creating the next block in the chain, using the of the accepted block as the previous hash.
Plain English

Here is how the network runs, day to day:

  1. Someone announces a new payment to the whole network.
  2. Each computer gathers new payments into a .
  3. Each computer races to solve the hard puzzle for its block.
  4. The first one to solve it shares the block with everyone.
  5. Others accept the block only if every payment in it is valid and not already spent.
  6. They show acceptance by starting on the next block, built on top of the one they accepted.
The original

Nodes always consider the to be the correct one1 and will keep working on extending it. If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first. In that case, they work on the first one they received, but save the other branch2 in case it becomes longer. The tie will be broken when the next proof-of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one.

Plain English

Computers always treat the as the true one and keep extending it. If two computers share different next blocks at the same moment, each computer works on whichever it heard first but keeps the other as a backup. When the next puzzle is solved, one branch becomes longer and everyone on the other branch switches over. Tie broken.

The original

New transaction broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long. Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one.

Plain English

Payments do not need to reach every computer, only many of them, and they will be in a block soon enough. If a computer misses a block, it notices when the next block arrives and asks for the one it missed.

Section 6

Incentive: why anyone plays fair

Cliff notes

  • The first payment in each block creates brand-new coins for the block's builder. This is the reward.
  • That reward is also how coins first enter the world, with no central issuer.
  • Later, transaction fees can replace new coins.
  • Honest work pays better than cheating, even for someone with a lot of computing power.

Remember: Bitcoin pays people to follow the rules, so following the rules is the profitable move.

The original

By convention, the first transaction in a is a special transaction that starts a new coin owned by the creator of the block. This adds an incentive for to support the network, and provides a way to initially distribute coins into circulation, since there is no central authority to issue them. The steady addition of a constant of amount of new coins is analogous to gold miners1 expending resources to add gold to circulation. In our case, it is time and electricity that is expended.

Plain English

By convention, the first payment in each creates brand-new coins for whoever built the block. That gives computers a reason to support the network, and it is how coins first get into circulation, since no central authority hands them out. Adding a steady amount of new coins is compared to gold miners spending resources to add gold to the world. Here, the resources are computing time and electricity.

The original

The incentive can also be funded with 3. If the output value of a transaction is less than its input value, the difference is a transaction fee that is added to the incentive value of the block containing the transaction. Once a predetermined number of coins2 have entered circulation, the incentive can transition entirely to transaction fees and be completely inflation free4.

Plain English

Fees can fund the reward too. If a payment's outputs add up to less than its inputs, the difference is a fee that goes to the builder of the block. After a set number of coins exist, the reward can switch fully to fees, with no new coins created and so no inflation.

The original

The incentive may help encourage nodes to stay honest. If a greedy attacker is able to assemble more CPU power than all the honest nodes, he would have to choose between using it to defraud people by stealing back his payments, or using it to generate new coins. He ought to find it more profitable to play by the rules, such rules that favour him with more new coins than everyone else combined, than to undermine the system and the validity of his own wealth.

Plain English

The reward also nudges people to stay honest. Say a greedy attacker gathered more computing power than all the honest computers combined. He would have to choose: use it to cheat by taking back his own payments, or use it to earn new coins. The paper argues it is more profitable to follow the rules, which already hand him more new coins than anyone else, than to wreck the system and, with it, the value of his own wealth.

Section 7

Reclaiming disk space: keeping the ledger small

Cliff notes

  • Old, fully spent payments can be thrown away to save disk space.
  • A Merkle tree lets the block keep one fingerprint (the root) for all its payments, so pruning does not break anything.
  • Block headers are only about 80 bytes, so even years of headers stay small: around 4.2 MB per year.

Remember: Keep the proof, discard the paperwork.

The original

Once the latest transaction in a coin is buried under enough , the spent transactions before4 it can be discarded to save disk space. To facilitate this without breaking the block's , transactions are hashed in a 1 [7][2][5], with only the root included in the block's hash. Old blocks can then be compacted by stubbing off branches of the tree. The interior hashes do not need to be stored.

Plain English

Once the latest payment involving a coin is buried under enough , the older spent payments before it can be thrown away to save disk space. To do that without breaking the block's fingerprint, payments are fingerprinted in a : pairs are together, then those pairs are hashed, and so on, until only the top (the root) goes into the block's hash.

Old blocks can then be slimmed down by cutting off branches. The in-between fingerprints do not need to be kept.

RootHash01Hash23Hash0Hash1Hash2Hash3Tx0Tx1Tx2Tx3RootHash01Hash23Hash0Hash1Hash2Hash3Tx0Tx1Tx2Tx3Transactions hashed in a Merkle treeAfter pruning Tx0 to Tx2 (faded)
A Merkle tree before and after pruning: the root still proves what was there.
The original

A with no transactions would be about 80 bytes2. If we suppose blocks are generated every 10 minutes, 80 bytes * 6 * 24 * 365 = 4.2MB per year. With computer systems typically selling with 2GB of RAM as of 2008, and 3 predicting current growth of 1.2GB per year, storage should not be a problem even if the block headers must be kept in memory.

Plain English

A with no payments is about 80 bytes. At one block every 10 minutes: 80 bytes x 6 per hour x 24 hours x 365 days is about 4.2 MB per year. Typical computers in 2008 shipped with 2 GB of memory, and predicted about 1.2 GB more per year, so storage should not be a problem, even if all the headers are kept in memory.

Section 8

Simplified payment verification: checking without the full ledger

Cliff notes

  • You can check a payment without running a full node.
  • Keep only the block headers, then ask for a short proof (the Merkle branch) tying your payment to a block.
  • It is reliable while honest computers run the network, weaker if an attacker overpowers it.
  • Businesses handling many payments will probably still run full nodes.

Remember: Light checking trades a little security for a lot of convenience.

The original

It is possible to verify payments without running a full network 1. A user only needs to keep a copy of the of the , which he can get by querying network nodes until he's convinced he has the longest chain, and obtain the Merkle branch linking the transaction to the it's timestamped in. He can't check the transaction for himself, but by linking it to a place in the chain, he can see that a network node has accepted it, and blocks added after it further confirm the network has accepted it.

Plain English

You do not need to run a full to check a payment. Keep a copy of the of the (ask nodes until you are confident you have the longest one), and get the short Merkle branch that links your payment to the it is stamped in.

You cannot check the payment yourself, but tying it to a spot in the chain shows that a network computer accepted it, and the blocks added after it further confirm that.

The original

As such, the verification is reliable as long as honest nodes control the network, but is more vulnerable if the network is overpowered by an attacker. While network nodes can verify transactions for themselves, the simplified method can be fooled by an attacker's fabricated transactions for as long as the attacker can continue to overpower the network. One strategy to protect against this would be to accept alerts from network nodes when they detect an invalid block, prompting the user's software to download the full block and alerted transactions to confirm the inconsistency. Businesses that receive frequent payments will probably still want to run their own nodes2 for more independent security and quicker verification.

Plain English

This is reliable as long as honest computers run the network, but weaker if an attacker overpowers it. Full nodes can check payments themselves, but the shortcut can be fooled by an attacker's made-up payments for as long as he keeps overpowering the network.

One defense: accept alerts from full nodes that spot an invalid block, which prompt your software to download the whole block and check. Businesses taking frequent payments will probably still run their own nodes for independent security and faster checking.

Section 9

Combining and splitting value: how payments really work

Cliff notes

  • A payment can have many inputs and many outputs.
  • That lets value be combined (several small coins in) or split (a payment plus change out).
  • Typically two outputs: the payment, and the change back to the sender.

Remember: Bitcoin works like cash: you hand over a bill that is too big and get change back.

The original

Although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer. To allow value to be split and combined, transactions contain multiple inputs and outputs1. Normally there will be either a single input from a larger previous transaction or multiple inputs combining smaller amounts, and at most two outputs2: one for the payment, and one returning the change, if any, back to the sender.

Plain English

Handling coins one at a time would be clumsy, since you would need a separate payment for every cent. So a payment can have several inputs and outputs, letting value be combined or split. Usually there is one input from a larger earlier payment, or several inputs combining smaller amounts, and at most two outputs: one for the payment and one sending any change back to you.

The original

It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction's history.

Plain English

One worry: a payment depending on several payments, which each depend on many more (fan-out). That is not a problem here, since nobody ever needs to pull out a full standalone copy of a payment's history.

Section 10

Privacy: public records, anonymous owners

Cliff notes

  • Banks protect privacy by keeping records secret. Bitcoin cannot, because payments are public.
  • Instead, it keeps the names out: public keys are anonymous.
  • Use a fresh key pair for each payment.
  • Some linking is unavoidable, and if one key is tied to your identity, others may be exposed.

Remember: Bitcoin is public but pseudonymous, which is not the same as private.

The original

The traditional banking model achieves a level of privacy by limiting access to information to the parties involved and the . The necessity to announce all transactions publicly precludes this method, but privacy can still be maintained by breaking the flow of information in another place: by keeping anonymous1. The public can see that someone is sending an amount to someone else, but without information linking the transaction to anyone. This is similar to the level of information released by stock exchanges, where the time and size of individual trades, the "tape", is made public, but without telling who the parties were.

Plain English

Traditional banks keep things private by limiting who sees the information: you, the other party, and the bank. Bitcoin announces every payment publicly, so that does not work. Privacy is kept by breaking the link in a different place: stay anonymous.

People can see that someone sent an amount to someone else, but not who. That resembles a stock exchange's public tape, which shows each trade's time and size but not who was involved.

The original

As an additional firewall, a new key pair should be used for each transaction2 to keep them from being linked to a common owner. Some linking is still unavoidable with multi-input transactions, which necessarily reveal that their inputs were owned by the same owner. The risk is that if the owner of a key is revealed, linking could reveal other transactions that belonged to the same owner.

Plain English

As an extra barrier, use a new key pair for every payment so they cannot be tied to a single owner. Some linking cannot be avoided with multi-input payments, which necessarily show that the inputs belonged to the same owner. The risk: if the owner of one key is revealed, the links could reveal that owner's other payments.

Section 11

Calculations: the math behind 'attackers lose'

Cliff notes

  • Even a successful attacker cannot create money from nothing or take coins that were never theirs.
  • All an attacker can do is try to undo one of their own recent payments.
  • If honest computers hold most of the power, the attacker's odds fall exponentially with each block that lands on top of the payment.
  • The more power the attacker has, the longer you should wait. The paper's table shows how long.

Remember: More blocks on top of your payment means exponentially safer.

The original

We consider the scenario of an attacker trying to generate an alternate chain faster than the honest chain. Even if this is accomplished, it does not throw the system open to arbitrary changes, such as creating value out of thin air or taking money that never belonged to the attacker. Nodes are not going to accept an invalid transaction as payment, and honest will never accept a containing them. An attacker can only try to change one of his own transactions to take back money he recently spent.

Plain English

Picture an attacker trying to build a rival chain faster than the honest one. Even if he succeeds, he cannot make money from nothing or take what was never his, because honest computers reject invalid payments and any containing them. All he can do is try to change one of his own payments to take back money he recently spent.

The original

The race between the honest chain and an attacker chain can be characterized as a Binomial Random Walk1. The success event is the honest chain being extended by one block, increasing its lead by +1, and the failure event is the attacker's chain being extended by one block, reducing the gap by -1.

Plain English

The race between the honest chain and the attacker's chain is modeled as a random walk, like a tug of war decided by coin flips. Each time the honest chain adds a block, its lead grows by one. Each time the attacker adds a block, the gap shrinks by one.

The original

The probability of an attacker catching up from a given deficit is analogous to a 2 problem. Suppose a gambler with unlimited credit starts at a deficit and plays potentially an infinite number of trials to try to reach breakeven. We can calculate the probability he ever reaches breakeven, or that an attacker ever catches up with the honest chain, as follows [8]:

  • p = probability an honest node finds the next block
  • q = probability the attacker finds the next block
  • qz = probability the attacker will ever catch up from z blocks behind
qz = { 1 if p ≤ q5 ; (q/p)z if p > q }
Plain English

The chance of an attacker catching up from behind is the classic problem: a gambler with unlimited credit starts in a hole and plays endlessly, trying to reach break-even. The formula uses three quantities, shown below.

In words: if the attacker is as strong as the honest network or stronger (p ≤ q), he is certain to catch up eventually (probability 1). If the honest side is stronger, his chance is q/p multiplied by itself z times, which shrinks very quickly.

The original

Given our assumption that p > q, the probability drops exponentially as the number of blocks the attacker has to catch up with increases. With the odds against him, if he doesn't make a lucky lunge forward early on, his chances become vanishingly small as he falls further behind.

Plain English

Assuming honest computers are the stronger side (p > q), the chance falls exponentially with the number of blocks the attacker must make up. Unless he gets lucky early, his odds become vanishingly small the further behind he falls.

The original

We now consider how long the recipient of a new transaction needs to wait before being sufficiently certain the sender can't change the transaction. We assume the sender is an attacker who wants to make the recipient believe he paid him for a while, then switch it to pay back to himself after some time has passed. The receiver will be alerted when that happens, but the sender hopes it will be too late.

Plain English

Next question: how long should a recipient wait before being confident the sender cannot undo a payment? Assume the sender is an attacker who wants the recipient to believe he paid, then switch it to pay himself later. The receiver will be alerted when that happens, but the sender hopes it will be too late.

The original

The receiver generates a new key pair and gives the to the sender shortly before signing. This prevents the sender from preparing a chain of blocks ahead of time by working on it continuously until he is lucky enough to get far enough ahead, then executing the transaction at that moment. Once the transaction is sent, the dishonest sender starts working in secret on a parallel chain containing an alternate version of his transaction.

Plain English

To stop the sender from secretly preparing a chain in advance, the receiver creates a fresh key pair and hands over the just before signing. Once the payment is sent, the dishonest sender starts secretly building a parallel chain containing an alternative version of his payment.

The original

The recipient waits until the transaction has been added to a block and z blocks have been linked after it. He doesn't know the exact amount of progress the attacker has made, but assuming the honest blocks took the average expected time per block, the attacker's potential progress will be a distribution3 with expected value:

To get the probability the attacker could still catch up now, we multiply the Poisson density for each amount of progress he could have made by the probability he could catch up from that point:

λ = z · qp
∑k=0∞ λk e−λk! · { (q/p)(z−k) if k ≤ z ; 1 if k > z }
Plain English

The recipient waits until the payment is in a block and z more blocks are linked after it. He cannot know exactly how far the attacker has got, but if the honest blocks took the average time, the attacker's expected progress follows a distribution with the expected value shown.

To get the chance he could still catch up, multiply the chance of each possible amount of progress by the chance of catching up from that point.

The original

Rearranging to avoid summing the infinite tail of the distribution…

1 − ∑k=0z λk e−λk! (1 − (q/p)(z−k))

Converting to C code…

#include <math.h>
   double AttackerSuccessProbability(double q, int z)
   {
       double p = 1.0 - q;
       double lambda = z * (q / p);
       double sum = 1.0;
       int i, k;
       for (k = 0; k <= z; k++)
       {
           double poisson = exp(-lambda);
           for (i = 1; i <= k; i++)
               poisson *= lambda / i;
           sum -= poisson * (1 - pow(q / p, z - k));
       }
       return sum;
   }
Plain English

This is the same calculation, rearranged so a computer can run it without adding up infinitely many terms, and then written out as a short program in the C language. You do not need to read it. The point is the results that come out of it, just below.

The original

Running some results, we can see the probability drop off exponentially with z.

q=0.1
   z=0     P=1.0000000
   z=1     P=0.2045873
   z=2     P=0.0509779
   z=3     P=0.0131722
   z=4     P=0.0034552
   z=5     P=0.0009137
   z=6     P=0.0002428
   z=7     P=0.0000647
   z=8     P=0.0000173
   z=9     P=0.0000046
   z=10    P=0.0000012

   q=0.3
   z=0     P=1.0000000
   z=5     P=0.1773523
   z=10    P=0.0416605
   z=15    P=0.0101008
   z=20    P=0.0024804
   z=25    P=0.0006132
   z=30    P=0.0001522
   z=35    P=0.0000379
   z=40    P=0.0000095
   z=45    P=0.0000024
   z=50    P=0.0000006

Solving for P less than 0.1%4...

   P < 0.001
   q=0.10    z=5
   q=0.15    z=8
   q=0.20    z=11
   q=0.25    z=15
   q=0.30    z=24
   q=0.35    z=41
   q=0.40    z=89
   q=0.45    z=340
Plain English

Here q is the attacker’s share of all the computing power, and P is his chance of successfully undoing a payment after z blocks have landed on top of it. Even at q = 0.3, waiting 50 blocks makes his chance about six in ten million.

The last list asks the opposite question: how many blocks until the attacker’s chance is below 0.1%?

Attacker’s share of computing power (q)Blocks to wait so success is under 0.1% (z)
10%5
15%8
20%11
25%15
30%24
35%41
40%89
45%340

Section 12

Conclusion: what the paper built

Cliff notes

  • Coins made of signatures, plus a proof-of-work chain, give payments with no trusted middleman.
  • History becomes practically impossible to change once honest computers hold the majority of power.
  • The network is simple: no identities, best-effort messages, and computers can come and go.
  • Computers vote with their computing power, and the rules are enforced by that consensus.

Remember: Signatures prove ownership. Proof-of-work proves order. Together they replace the middleman.

The original

We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from , which provides strong control of ownership, but is incomplete without a way to prevent . To solve this, we proposed a peer-to-peer network using to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest control a majority of power. The network is robust in its unstructured simplicity. Nodes work all at once with little coordination. They do not need to be identified, since messages are not routed to any particular place and only need to be delivered on a best effort basis. Nodes can leave and rejoin the network at will, accepting the proof-of-work chain as proof of what happened while they were gone. They vote with their CPU power1, expressing their acceptance of valid by working on extending them and rejecting invalid blocks by refusing to work on them. Any needed rules and incentives can be enforced with this consensus mechanism.

Plain English

Wrap-up: a system for electronic payments that needs no trust. It starts with coins made of , which give strong control of ownership but cannot stop alone.

The fix is a peer-to-peer network using to record a public history that quickly becomes impractical to change if honest computers hold most of the power. The network is robust because it is simple: computers all work at once with little coordination, do not need identities, deliver messages on a best-effort basis, and can leave and rejoin whenever they like, accepting the as the record of what happened.

They vote with their computing power: accepting valid by building on them, and rejecting invalid ones by refusing to. Any rules and incentives needed can be enforced through this consensus.

References (as listed in the paper)
  • [1] W. Dai, "b-money," http://www.weidai.com/bmoney.txt, 1998.
  • [2] H. Massias, X.S. Avila, and J.-J. Quisquater, "Design of a secure timestamping service with minimal trust requirements," In 20th Symposium on Information Theory in the Benelux, May 1999.
  • [3] S. Haber, W.S. Stornetta, "How to time-stamp a digital document," In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991.
  • [4] D. Bayer, S. Haber, W.S. Stornetta, "Improving the efficiency and reliability of digital time-stamping," In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.
  • [5] S. Haber, W.S. Stornetta, "Secure names for bit-strings," In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.
  • [6] A. Back, "Hashcash - a denial of service counter-measure," http://www.hashcash.org/papers/hashcash.pdf, 2002.
  • [7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980.
  • [8] W. Feller, "An introduction to probability theory and its applications," 1957.

Glossary

Every technical word, in plain English

Block
A page in Bitcoin's ledger. It bundles a batch of recent transactions together with a link to the page before it.
Block header
The small summary at the top of a block (not the full list of transactions). It is enough to identify the block and check its work.
Block reward
The brand-new coins a miner gets for creating a block. This is how coins are first issued. The paper calls it the first transaction in a block.
Blockchain
All the blocks linked in order, each one locked to the one before it by its hash. Changing an old page would break every page after it, which is what makes the record hard to rewrite.
Change
The leftover when you spend more than you owe. Like handing over a $20 for a $12 item, the extra comes back to you as a new output.
Confirmation
Each new block built on top of your transaction. The more blocks on top, the more work an attacker would need to undo it.
CPU
The main processor in a computer. The paper imagined ordinary computer chips, 'one CPU, one vote'. Today specialized machines do most of the work.
Difficulty
How hard the guessing puzzle is. The network adjusts it automatically so a new block arrives about every ten minutes, no matter how many computers join.
Digital signature
A mathematical stamp that proves a message came from you and was not changed. Only the owner of the matching private key can make it, and anyone can check it.
Double-spending
Spending the same digital money twice. A paper bill can only be in one hand at a time, but a computer file can be copied. Stopping the copy trick is the problem Bitcoin was built to solve.
Electronic coin
In the paper, a coin is not a file but a chain of signatures: each owner signs it over to the next.
Escrow
A neutral party holds the money until both sides have kept their promises, then releases it.
Fork / competing blocks
When two miners find a block at nearly the same time, the network briefly has two versions. The next block settles which one wins.
Gambler's ruin
A classic probability puzzle: how likely is it that someone playing a long losing game ever gets back to even? The paper uses it to measure an attacker's odds.
Hash
A fingerprint for data. Feed any file or message into a hash function and out comes a short, scrambled code. Change one letter in the input and the code changes completely, and you cannot work backward from the code to the input.
Hash function
The recipe that turns any data into its fingerprint (hash). Bitcoin uses one called SHA-256.
Hashcash
An earlier idea by Adam Back that fought email spam by making senders do a little computer work per message. Bitcoin borrowed it for proof-of-work.
Incentive
A reward that makes people want to follow the rules. Here, coins and fees paid to honest miners.
Inputs and outputs
Inputs are the coins you are spending. Outputs say who receives them. One payment can have many of each, like paying with several bills and getting change.
IP address
The number that identifies a device on the internet. One person can easily get many of them, which is why they make a poor way to count votes.
Ledger
The master record of who owns what. Banks keep private ones. Bitcoin's is public and copied by thousands of nodes.
Longest chain
If two versions of history appear, nodes follow the one with the most work stacked behind it. That one is treated as the truth.
Majority attack (often called a 51% attack)
If one party controlled most of the computing power, it could rewrite recent history. The paper shows why that is expensive and usually unprofitable.
Merkle tree
A way to fingerprint a big list by hashing items in pairs, then hashing the pairs, until one fingerprint sits at the top. You can prove one item is in the list with just a few hashes.
Miner
A participant who competes to add the next block by doing the proof-of-work, and earns new coins and fees if they win.
Mint
A central issuer of money that checks every payment and creates fresh coins. Bitcoin's whole point is to work without one.
Moore's Law
The observation that computer chips get about twice as powerful every two years or so.
Node
Any computer running Bitcoin's software that keeps a copy of the ledger, passes along news, and checks that everyone follows the rules.
Nonce
A throwaway number the miner keeps changing, like trying keys on a lock, until the block's hash meets the target.
Peer-to-peer (P2P)
A network where everyone talks directly to everyone else, with no central company in the middle. Think passing cash hand to hand, instead of sending it through a bank.
Private key
A secret number that lets you sign and spend your coins. Whoever has it controls the money, so it is never shared.
Probability / Poisson distribution
Math for how likely random events are. Section 11 uses it to calculate the odds an attacker could catch up, and shows the odds shrink fast.
Proof-of-work
Proof that a computer did real, costly work. In Bitcoin, miners burn electricity guessing numbers until one produces a special hash. The answer is hard to find but instant for anyone to check.
Pruning
Deleting old data nobody needs anymore to save disk space, while keeping the fingerprints that prove the history is intact.
Pseudonymous
Known by a code, not a name. Bitcoin shows addresses and amounts publicly, but not who owns them, unless the owner gets linked to an address.
Public key
The shareable half of a key pair. Others use it to check your signature, or to send you coins. Think of it as your account number.
Satoshi Nakamoto
The pseudonym of the person or group who wrote the paper and released Bitcoin in 2008 and 2009. Their real identity is unknown.
SHA-256
The specific fingerprinting recipe (hash function) Bitcoin uses. Feed in anything and out comes a 64-character code, always the same for the same input and totally different if you change one letter.
SPV (simplified payment verification)
Checking that a payment is in the chain without downloading the whole ledger. A phone wallet keeps only block headers and asks for a short proof.
Timestamp
Proof that something existed at a certain time, like a notary stamp on a document.
Timestamp server
In the paper, the idea of publicly posting the fingerprint of a bundle of data so nobody can later claim it did not exist at that moment.
Transaction fee
A small tip you attach to a payment to get miners to include it. The paper expects fees to matter more once all coins have been issued.
Trusted third party
A middleman you have to rely on, like a bank, PayPal, or a card company. They keep the records and can reverse, freeze, or delay your money.

Keep going

New to Bitcoin? Start with the ten-minute guide, or get plain-English crypto news in your inbox.

Message us