1315 August 2010

The Day 184 Billion Bitcoins Were Created

One transaction bypassed amount checks and created a number many times larger than the planned Bitcoin supply. The fix came within hours, but showed that monetary rules are only as strong as the code that enforces them.

On Sunday, 15 August 2010, Jeff Garzik drew attention to the newly mined block 74,638 and an amount that should not have existed. A single transaction had created two outputs, each exceeding 92 billion BTC. Together they amounted to almost nine thousand times Bitcoin’s planned supply. At 18:08:49 UTC, Garzik opened a forum thread titled “Strange block 74638” and posted the block data. Within minutes, it became clear that this was neither an explorer bug nor a misplaced decimal point. The network had accepted a block that violated its own economic rule. If users were to keep trusting that coins could not be created at will, they first had to find the flaw, repair the software and persuade enough participants to continue along a different branch of history.

01

The Strange Block 74,638

Garzik’s post was brief and factual. It showed the transaction hash and two enormous outputs. A subsequent printblock listing in the same discussion gave their exact value: each contained 92,233,720,368.54275808 BTC. The block also included a separate coinbase transaction paying the miner 50.51 BTC. Against the normal base reward of fifty bitcoins, those two outputs looked absurd: someone had just created more than 184 billion units.

No name or public explanation was attached to the transaction. The surviving chain records what happened, but not who exploited the bug or why. Naming a particular hacker would add a claim the sources do not support. What is clear is that the transaction was constructed to exploit a weakness in validation.

The network accepted it because the old code checked individual outputs and then their sum. Each of the gigantic outputs fit within the used numeric type, but when added together, they exceeded its upper limit. The number wrapped around into the negative area, and the subsequent check incorrectly concluded that no unauthorized positive value was being created.

It wasn't a case of forging a signature, altering an older transaction, or taking over the majority of the hashrate. The attacker exploited the way a specific implementation handled whole numbers. The mathematical rule "don't issue more than you take in" was correct; the program just didn't enforce it due to the overflow.

The block was already part of the best chain. Every node using the faulty version considered it valid, and other miners could build upon it. Merely publicizing the issue wasn't enough. The community had to react faster than the flawed history could spread and the gigantic outputs could propagate.

02

The Bug Between the Rule and the Machine

The 21 million limit is often described as an unchanging law of Bitcoin. The incident showed a more accurate picture. The limit is a set of consensus rules that individual programs and every full node must execute flawlessly. If all widespread nodes share the same faulty implementation, they can temporarily accept a state that contradicts the intention.

Integer overflow is a long-standing programming problem. A computer register has a finite range; cross its limit and arithmetic can produce a result at the other end of the number line. For an accounting system, that detail matters enormously. The sum needs checking throughout the calculation, not just at the end, and every amount must stay within the allowed range.

Today's Bitcoin Core therefore performs several separate checks. An output cannot be negative, cannot exceed the maximum money supply, and the running sum is re-verified after each addition. These lines didn't arise as abstract caution. They carry the memory of the event in which one missing protection allowed the network to record an economically impossible transaction.

The bug also shows the difference between specification and social expectation. No one in the forum seriously claimed that the gigantic coins were legitimate just because the old software accepted them. Participants agreed that it was a violation of the intended rule. This agreement, however, needed a technical means: a new version that would reject the faulty block.

It's exactly here that code and people meet. Code decides deterministically which block a node accepts. People decide which code to install when they discover a discrepancy with the intended rules. The incident wasn't a vote on issuing more coins; it was a race to restore the rule that the community already considered the basis of the system.

Overflow is treacherous precisely because the machine does not see the absurdity that a human would recognize instantly. A processor works with a number stored in a limited space; if a computation exceeds its boundary, the result can wrap around to another part of the range. The old code checked individual outputs, but during addition it did not keep the running sum within safe bounds. The transaction therefore passed through several locally reasonable conditions, and yet violated their overall meaning. The fix had to be concrete: it was not enough to write in a comment that there would never be more than 21 million. Every node needed a rule that could actually enforce this statement in every computation.

03

Repair Under Pressure

After the announcement, a recommendation to stop accepting transactions and temporarily not mine appeared on the forum. Each new block above the faulty transaction would increase the amount of work that would have to be abandoned. In a network without a central kill switch, Satoshi couldn't stop mining. He could only release a fix and convince operators to run it.

Version 0.3.10 introduced correct amount checks and rejected block 74,638. The fixed nodes returned to the last common valid point, and miners began building an alternative branch without the inflationary transaction. The two histories competed for a while according to their accumulated work.

Satoshi then announced that the good chain had outpaced the bad one. The updated software performed a chain reorganization and the faulty block disappeared from the active history. Transactions from the abandoned branch that weren't invalid themselves could return to the queue and be included again later; the gigantic outputs, however, couldn't exist according to the new checks.

This correction had a price. Miners on the abandoned branch lost their rewards, and users had to accept that several hours of history wouldn't continue. In 2010, the network was small, and coordination was quick. The same intervention in a much larger ecosystem would mean more economic participants, software variants, and disputes over exactly where the repair boundary lies.

The speed of the response is often presented as a miraculous intervention by Satoshi. In reality, it consisted of observable steps: Garzik made the problem public, others analysed the overflow, developers prepared the change, operators installed a new version of the Bitcoin client, and miners supplied work to the correct branch. The author could propose a fix, but the network had to adopt it in practice.

04

The Hardest Rule Needs the Most Humble Development

After the fix, the number of valid bitcoins returned to the intended framework, and the faulty billions couldn't be spent in the continuing chain. The incident therefore didn't end in permanent inflation. Yet, it's not just a curiosity from the beta version. It's a reminder that monetary certainty doesn't come from a slogan but from a repeatedly verified program.

Bitcoin is often set against systems where a central authority changes the supply by decision. Here, however, people didn't disappear. Developers write implementations, reviewers look for bugs, operators choose versions, and miners create the block order. The difference is that the intervention is public, and every node can reject rules it disagrees with.

The event also explains the caution with which consensus code is changed today. A small arithmetic optimization can have monetary consequences. Tests, more implementation checks, and slow review aren't additional bureaucracy; they're a defense against repeating the moment when a few bits turned billions from an inadmissible number into a seemingly valid one.

Jeff Garzik didn't make the network safe with a single forum post, but he showed the advantage of a public ledger. Everyone could see the strange block, recalculate its outputs, and verify the fix. The bug wasn't hidden in an operator's internal database. It lay before the entire community, along with proof that old nodes had accepted it.

The supply limit thus survived the incident in a way that the word "unchanging" doesn't suggest. Not because the software couldn't fail, but because the failure was visible, there was a shared rule to return to, and enough participants performed the fix. The story of 184 billion bitcoins isn't a denial of a fixed supply. It's a history of what maintaining it truly requires.

The incident also reminds us that the public nature of the code does not in itself eliminate a bug. Open source allowed people to track down, compare, and fix the problem without waiting on a single vendor, but what was decisive was the attention of specific participants. Someone had to notice the impossible numbers, someone had to find the faulty condition, and operators had to adopt the update. Transparency created the possibility of verification; only action turned it into a defense of the network. That is why the story remains important even after all these years: Bitcoin's security does not lie in the notion of a perfect original program, but in the combination of precise rules, independent verification, and the ability to respond to a bug without concealing it.

Atlas

People and concepts in the Atlas

OVFLValue Overflow IncidentGARZIKJeff GarzikTXTransactionRULESConsensus RulesCOREBitcoin CoreNODEFull NodeREORGReorg
  1. 01
    BitcoinTalk — Strange block 74638

    Jeff Garzik's original warning, exact outputs, analysis of the overflow, and timeline of the reaction.

  2. 02
    BitcoinTalk — overflow bug SERIOUS

    Contemporary developer coordination, fix of the validation bug, and transition to the corrected chain.

  3. 03
    Bitcoin Core — transaction consensus checks

    Current implementation of individual output range checks and their sum.

Next story · 14Slush Pool: A Prague Idea Against Mining Lottery