Merely a possibility a few months ago, hard forks now show every indication of playing a central role in future Bitcoin updates. Hard forks can be difficult to understand because they weave many technical strands together. The following story attempts to explain the causes and implications of hard forks using the imperfect technique of analogy.
Once upon a time, a group of people created a new system of money, Gizmocoin, governed by a gremlin named Gizmo. Gizmocoin’s users exchanged value by sending Gizmo specially-formatted messages called transactions. Gizmo inspected each one, saving those that passed and ignoring the rest. Every hour, Gizmo updated a spreadsheet by transcribing each pending transaction into a new row. To the last column of each row Gizmo appended a signature as proof of authenticity.
Gizmo was stubborn about almost everything. He ignored any transaction using the wrong format. A transaction requiring another user’s signature needed to be signed. Transactions could spend only unspent coins that actually existed. There were limits on the number of coins that could be spent at one time, and limits on how quickly brand new coins could be minted. A three-volume set of books laid out the rules, and Gizmo followed every one to a tee.
One of Gizmo’s rules was more controversial than all the rest: no more than 2,000 pending transactions were to be added to the spreadsheet at a time. When Gizmo got more than 2,000 transactions in an hour, he sorted them in reverse order of fee, chose the top 2,000, and added them to the spreadsheet. The remainder were carried over into the next hour’s batch of pending transactions. Gizmo had reasons for working this way, and users debated them in increasingly angry voices.
One day, a faction of users decided that enough was enough. They were fed up with Gizmo’s rudeness, his inflexible attitude toward spreadsheet growth, and his indifference to complaints about high fees. They wanted to fire Gizmo and install a replacement, Stripe, who promised to allow up to 4,000 transactions each hour.
For a time, Gizmocoin users attempted to persuade each other to follow one gremlin or the other. There’s strength in numbers, and many hoped that compromise could keep the community unified behind one gremlin. Eventually, though, the two camps discovered that their differences ran too deep and agreed to disagree. Gizmo wouldn’t step down, nor would Stripe back down. There would be two gremlins and two spreadsheets.
Stripe declared that his new 4,000 transaction per hour rule would go live at midnight on Flag Day. Until then, Stripe simply copied Gizmo’s spreadsheet. Every time Gizmo added a new batch of transactions to his spreadsheet, Stripe copied the same rows in the same order. The two spreadsheets are were in perfect agreement.
At midnight on Flag Day, Stripe began applying his new rule. As promised, he updated his spreadsheet at a rate of 4,000 rows per hour when he had enough pending transactions. Up to the last entry on Flag Day, the two spreadsheets were identical. Starting with the first entry on Flag Day, the two spreadsheets began to look different.
Gizmocoin users quickly realized that they’d been given a new kind of money (stripecoin), even though they didn’t ask for it. Stripecoin users realized that Gizmo’s continued operation allowed them to keep their legacy stripecoin. A market for trading each kind of coin sprang up.
A few users noticed something strange: Gizmo and Stripe accepted the same transaction format. This meant that neither gremlin could know which one of them the user intended to employ. The two gremlins could not have cared less. From Gizmo’s perspective, Stripe was a usurper and had no claim to process any transactions at all. From Stripe’s perspective, Gizmo had served his purpose and was now obsolete.
Due to this ambiguity, each group of users involuntarily spent both coins whenever making a purchase. Although steps could be taken to avoid doing so, they were difficult to perform and error-prone.
Followers of both Gizmo and Stripe were very unhappy about this situation. Nobody likes to lose free money, even if it’s inferior.
Two additional problems emerged. First, many Gizmocoin users could be tricked into following Stripe’s spreadsheet without knowing it, and vice versa. Second, a few Gizmocoin service providers made announcements that left the question of which gremlin they’d follow ambiguous to say the least. Both factors contributed to a growing sense of unease.
Regardless of their preferred gremlin, users wanted above everything else to stay in control of their own money. Yet what was happening prevented them from doing so. Well before Flag Day some users had warned that such confusion would ensue, but to no avail.
Noticing the frustration and growing anger, a third gremlin decided to begin keeping a spreadsheet of his own. He would make it easy to keep coins separate, and he promised to address a few other pesky problems as well. Users would be welcome to sit at a Round Table where concerns would be discussed in a civilized manner, and conflicts would be resolved logically and to mutual benefit.
And this is how the world’s money came to be governed by thousands of gremlins.
Image Credit: Reese Derrenberge