Download App
iOS & Android

The Untold Story of ditto-b

From Jameson Lopp

The fourth Bitcoin halving just triggered a few hours ago, ushering in the 5th mining epoch. As such, this seems like a good time to tell the tale of a little-known Bitcoin contributor who had a massive effect upon the halving algorithm.

The story takes place 10 years ago when an anonymous developer with no reputation managed to make a significant change to the Bitcoin consensus rules.

The Timeline

A user by the handle "ditto-b" joined GitHub on April 8, 2011.

In 2013 they forked OpenTransactions but didn't seem to do anything with it.

Ditto-b was a fan of Runescape as we can see from this table of Experience Point Levels.

Ditto-b also built a basic funds sending script for interacting witih Bitcoin compatible RPC nodes.

On March 10, 2014 they created a pull request to change 4 lines of code in the Bitcoin repository.

These four lines of code are consensus critical and are not to be trifled with!

Long story short: ditto-b discovered a common type of software flaw known as a value overflow bug. No one in Bitcoin's first 5 years of existence had thought through how this function would operate when the blockchain was at a height of 13,440,000 after 64 halvings.

A few weeks later, Pieter Wuille used the timing of the pull request to publish BIP-42 as an April Fool's Day joke that was simultaneously satirical and dead serious.

Ditto Who?

Does "ditto-b" mean anything? The first hit I could come up with is a particular Windows virus dating back to 2007 called Ditto.B.

Then I discovered that "Ditto" is a Pokemon character, and Ditto's attributes are... interesting.

Ditto - Pokedex Guide - IGNDitto is the most flexible Pokémon in the entire universe. It's mainly used for breeding, seeing as how it can mate with almost any Pokémon.

IGNJSnakeC, das6486, Jim McQ, +787 moreupdatedFeb 13, 2013

To use Ditto you have to know a weakness when you see a Pokémon, so you can choose the best possible move at all times. Ditto can only run one set usefully.

It's just interesting, and perhaps coincidental, that this character is related to knowing / exploiting weaknesses. Who knows if the username was chosen with the intention of conveying any meaning; it seems unlikely since the account was created 3 years before the pull request was made.

My Speculative Take

The history on ditto-b's account is suspiciously sparse. It's uncharacteristic, to say the least, for a developer with practically no real contribution activity to simply appear and propose a patch for such a niche edge case in an extremely complex software project.

It's incredibly unlikely that ditto-b was just a random person with no history of contributing to Bitcoin who happened to run across these crazy edge case. Ditto-b is most like a well-known "Bitcoin wizard" who, upon noticing this edge case, decided that it was too sensitive an issue to want to have their reputation linked to the proposed change. As such, they chose to report the issue via an alternate pseudonymous account.

We only ever got 2 sentences out of ditto-b, so there's no point attempting any sort of stylometric analysis, but this snarky comment certainly lends credence to my claim that it was a seasoned Bitcoin developer who was very familiar with the wider ecosystem.

Lessons Learned

In one respect, it's interesting that there were no activation parameters suggested for this consensus change. A soft fork will be executed at block height 13,440,000 without any signaling whatsoever. This leads me to conclude that:

  • Consensus changes that are considered "bug fixes" are assumed to have such strong consensus that the effort to write and test signaling activation logic is considered wasteful.
  • Uncontroversial consensus changes that don't activate for an extremely long period of time are similarly considered not worth the effort for activation logic, as it's assumed that everyone will have updated their code long before the soft fork activates.

Pieter phrased it a bit more humorously in BIP-42:

Given the moderate time frame over which this change is to be implemented, we expect all miners to choose to screw themselves and deploy this change before 2214.If they don't, and a minority remains on the old code base, a fork may occur. Essentially, they'll be mining fool's gold after that time.

This has some tie-ins to my previous analysis of non-backwards compatible changes to Bitcoin client code:


All Comments

Recommended for you

  • Qian Zhimin, the main culprit in the 60,000 Bitcoin money laundering case, was sentenced to 6 years in prison in the first instance

    On May 24th, the Southwark Crown Court in London ruled in the second trial that 42-year-old Chinese national Qian Zhimin was guilty of money laundering and will serve six years and eight months in prison. Previously, Qian Zhimin had attempted to purchase multiple luxury homes in London, including a 23.5 million pound seven-bedroom mansion in Hampstead and a 12.5 million pound mansion with a private cinema and gym, which caught the attention of the police. An investigation found over 61,000 bitcoins worth more than 3 billion pounds in a digital wallet, setting a record for the highest amount of cryptocurrency seized in the UK. Currently, 23,300 bitcoins worth over 1 billion pounds are still in circulation. It is said that these bitcoins came from a 5 billion pound investment fraud case in China between 2014 and 2017, where the funds were transferred overseas and used to purchase cryptocurrency. Qian Zhimin did not directly participate in the fraud, but played a "front desk" role in helping to disguise the source of the laundered funds.

  • Plume Network Raises $10M Seed Funding to Bring Real-World Assets on-Chain

    San Francisco-based Plume Network has secured $10m in seed funding to expand its operations and development efforts. The funding round was led by Haun Ventures, with participation from Galaxy Ventures, Superscrypt, A Capital, SV Angel, Portal Ventures, Reciprocal Ventures and others. Plume provides a modular EVM L2 blockchain for real-world assets, integrating asset tokenisation and compliance providers directly into the chain.

  • A certain address destroyed 11.51 million DOGE 16 minutes ago, worth $1.86 million

    According to on-chain data, an address transferred 11.51 million DOGE, worth $1.86 million, to a black hole address (zero address) 16 minutes ago.

  • Vitalik unlocked 845,205 STRK from the Locked Token Grant contract 50 minutes ago

    According to on-chain analyst Yu Jin's monitoring, V God unlocked and received 845,205 STRK tokens worth $1.07 million from the Starknet Locked Token Grant contract 50 minutes ago.

  • Fidelity FBTC holdings exceed 150,000 Bitcoins, with a market value of over $10 billion

    The net inflow of the Fidelity Bitcoin exchange-traded fund (ETF) FBTC was $19.1224 million yesterday. The total historical net inflow of FBTC has now reached $8.67 billion. According to the latest data from Dune Analytics, FBTC's holdings have exceeded 150,000 Bitcoins, currently reaching 151,797 Bitcoins, and the market value of holdings has also exceeded $10 billion, reaching $10.3 billion. So far, Fidelity is the third-largest holder of spot Bitcoin ETFs, second only to Grayscale (287,701 Bitcoins) and BlackRock (275,756 Bitcoins).

  • xAI to complete new round of financing at a valuation of $24 billion

    According to sources cited by Bloomberg, Elon Musk's artificial intelligence company xAI will complete a round of financing in June, with a valuation of over $24 billion after financing. The company originally planned to raise $6 billion this month. It is said that xAI's goal is to raise as much as $6.5 billion and is expected to achieve this goal in the coming weeks.

  • Bitcoin spot ETFs had a total net inflow of $108 million yesterday, continuing a net inflow for 9 consecutive days

    On May 24th, according to SoSoValue data, the net inflow of Bitcoin spot ETF on May 23rd was $108 million. Yesterday, Grayscale's (Grayscale) GBTC had a net outflow of $13.7209 million, and the historical net outflow of GBTC is currently $17.641 billion. The Bitcoin spot ETF with the highest net inflow in a single day is BlackRock's IBIT, with a net inflow of $88.9516 million in a single day, and the total historical net inflow of IBIT has reached $16.171 billion. The second is Fidelity's FBTC, with a net inflow of $19.1224 million in a single day, and the total historical net inflow of FBTC has reached $8.67 billion.

  • An address mistakenly transferred about $7,000 in BTC to Satoshi Nakamoto’s wallet

    According to Arkham monitoring, someone accidentally sent 90% of their BTC assets to Satoshi Nakamoto's wallet address last night. They were trying to swap Ordinal for PupsToken, but ended up sending almost their entire wallet balance - about $7,000 worth of BTC.

  • Cointime May 12 News Express

    1.The number of Bittensor subnets for the AI ​​project will increase to 64, and 1024 subnets will be achieved this year2.Trader predicts Bitcoin price will reach $350,0003.vladilena.eth redeemed 1930 weETH from Zircult, suspected of selling4.Solana’s on-chain DEX transaction volume yesterday exceeded the sum of five chains including Ethereum, BSC, and Arbitrum5.RSS3 VSL locked-in amount surged in the past two days and is close to 200 million US dollars 6.The transaction volume of Club Key on platform exceeded 1 million7.Lido has paid out more than 516,000 ETH in staking rewards, equivalent to approximately $1.51 billion8.1,000 BTC transferred from TronDAO to an unknown new wallet9.Report: Justin Sun deposited 120,000 eETH into Swell L2, worth $376 million10.1707.36 BTC have flowed out of Binance in the past 7 days

  • Bitcoin opens $63K futures gap as thin liquidity threatens BTC price

    Bitcoin market participants are doubting the staying power of the ongoing BTC price relief bounce.