@daily_btc_lore | Daily Bitcoin History Threads
July 19, 2017 | 9 years ago today
"Leeroy Jenkins!!!!" in #bitcoin-wizards"Leeroy Jenkins!!!!" in #bitcoin-wizards
In the small hours of July 19, 2017, with Bitcoin two days away from the most closely watched miner vote of the scaling era, the #bitcoin-wizards IRC channel produced one of the great one-line exchanges in the channel's history. A developer asked, in earnest technical language, why nearly half of Bitcoin's miners appeared to be lining up to orphan their own blocks. The complete answer he received, from one of the most rigorous protocol engineers in the room, was a battle cry from a 2005 World of Warcraft video. To see why the joke was not just funny but precise, you need both halves: the strange corner Bitcoin's miner signaling had backed itself into that week, and what actually happens in that video.
The Standoff, and a Clever ShortcutThe Standoff, and a Clever Shortcut
By mid-2017, Bitcoin had spent roughly two years locked in the block size war, the long fight over how the network should scale. SegWit (BIP141) was the proposed fix, but activating it required 95 percent of miner hashpower to signal support by setting "bit 1" in the blocks they mined, and miners were stalling. Some of that was genuine technical and economic disagreement. Some of it, many suspected at the time, was that SegWit closed a loophole called AsicBoost that gave certain miners a covert efficiency edge, and that congested blocks meant richer fee revenue besides.
The stall provoked a grassroots counterattack: the UASF movement (BIP148), under which ordinary economic nodes would simply start rejecting any block that failed to signal SegWit on August 1, 2017, ready or not. Miners answered with a compromise authored by James Hilliard called BIP91. Instead of needing 95 percent on bit 1 directly, BIP91 needed only 80 percent of hashpower signaling a different bit, bit 4. Once that locked in and enforcement began, every block would be required to signal bit 1 or be orphaned, meaning rejected by the network with its block reward gone. It was a lower-threshold, faster path to the same destination, with one safety feature that matters to this story: unlike an earlier version that enforced instantly, the deployed BIP91 had what gmaxwell called a "quieting period," roughly two and a half days for miners to actually turn bit 1 on before the orphaning rule went live.
Idiots, or Lulz?Idiots, or Lulz?
That is the state of play at 03:07 UTC on July 19, when the developer oleganza put the uncomfortable arithmetic to the channel, verbatim:
Seems like BIP91 is very close to be activated (bit 4), but still 45% of blocks signal segwit (bit 1). Does this mean, BIP91-signalling miners are idiots ready to orphan half of their own blocks, or does it mean, they don't run btc1, but only signal BIP91 for lulz?
Bit 4 was about to lock in, yet 45 percent of blocks were still not signaling actual SegWit. Nearly half the network's hashpower was voting to switch on a rule that, as things stood, would throw out its own blocks. One minute later came the entirety of gmaxwell's first response:
gmaxwell: oleganza: leeroy jenkins!!!!
And sixty seconds after that, midnightmagic added the deadpan capstone:
midnightmagic: least i have chicken
At Least I Have ChickenAt Least I Have Chicken
For anyone who missed the mid-2000s internet: on May 11, 2005, a World of Warcraft guild called Pals for Life, led by a player named Ben Schulz, uploaded a video titled "Leeroy!!" to the fan site Warcraftmovies. In it, the raid group spends a long stretch meticulously planning a dangerous dungeon room in Upper Blackrock Spire, computing survival probabilities and assigning roles. Schulz's character, Leeroy Jenkins, is away from his keyboard the entire time, preparing a plate of chicken. When he returns, he ignores the plan the group just spent minutes building, charges alone into the room screaming his own name as a battle cry, and the encounter collapses. The whole raid dies. When his furious guildmates blame him, Leeroy's only defense is: "At least I have chicken!"
(link for those who are unfamiliar: https://www.youtube.com/watch?v=mLyOj_QD4a4)
It became one of the internet's first defining viral memes, shorthand for reckless, uncoordinated action that ignores a careful plan and dooms the whole group, and Blizzard eventually wrote Leeroy Jenkins into the game itself as an NPC and a card. (A footnote for completists: whether the original video was spontaneous was debated for over a decade, and in December 2017 Schulz and the video's recorder released a "dry run" take suggesting it was a rehearsed bit. That changes nothing about what the meme has always meant, or how it was used here.)
The Serious Version of the JokeThe Serious Version of the Joke
gmaxwell's two-word answer, unpacked: the miners signaling bit 4 without bit 1 were Leeroy. They were charging toward switching on an enforcement rule without doing the coordination work the plan actually depended on, apparently oblivious that this could blow up the very outcome everyone was working toward. And midnightmagic's follow-up quotes Leeroy's own post-disaster excuse, implying the miners' position was exactly as self-defeating: if this went wrong, their defense would amount to a plate of chicken.
What makes the exchange more than a meme drop is that gmaxwell immediately laid out, in sober detail, why the Leeroy scenario was live. The chronic problem was "fake signaling": miners setting version bits they did not actually enforce. As he put it, "because of the high incidence of fake versionbit signaling, all of this is fairly risky for miners and the network," and "it's perfectly plausible that the enforcement point is reached but a supermajority of the hashpower doesn't actually enforce because its been fake signaling and spy mining." The thresholds could pass on paper while much of the real hashpower had never upgraded, and "there is a very limited window where that can be fixed without creating large funds loss risk if that starts happening."
At 03:33 he shared the contingency planning he had been giving privately: "Advice I gave to some is that they need to have a BIP-91 and a non-BIP91 node and be ready to switch if fake signaling resulted in a submajority enforcing." He punctuated it with "(fking fake signaling)". A few minutes later he talked himself from "I think it's unlikely that we don't get some damaging reorgs out of this, but possible" to the blunter "I think it's likely that there will be damaging reorgs; though I wouldn't place a big bet on it." A reorg here would mean chains of already-accepted blocks getting overwritten, with real transactions, and real money, caught in the churn.
The Raid That Didn't WipeThe Raid That Didn't Wipe
This time, the raid held formation. BIP91 locked in on July 21, 2017 at block 477,120 and activated on July 22 at roughly 04:46 UTC, and within twenty-four hours 88.2 percent of the network was signaling SegWit, comfortably above what was needed. The damaging reorgs never came. Miners had done what gmaxwell speculated at 03:09 they might: turned bit 1 on at the last minute, inside that two-and-a-half-day quieting window. SegWit itself locked in on August 9 and activated August 24, while the broader blocksize conflict rolled on separately into the August 1 Bitcoin Cash fork, which is another and much larger story.
The whole exchange is preserved in the gnusha #bitcoin-wizards log for July 19, 2017, a small time capsule from the week Bitcoin's most consequential upgrade fight got resolved by, of all things, an at-the-last-minute raid plan actually coming together. Least they had chicken.
Part of an ongoing series on Bitcoin history. This event falls on July 19, 2017.
I remember Leeroy. That was funny shit the first time I saw that and was playing WoW at the time too.