Bitcoin is ugly. It's not elegant. But it still worked. Why?


In this article, Gwern discusses why Bitcoin is ugly and not elegant. If you think about how computer scientists design things, they prefer to build beautiful and deterministic systems, particularly cryptographers. Cryptography is about symmetrical math and clean code. It’s elegant. And then there is Bitcoin…it’s not elegant enough for a cryptographer nor is it deterministic enough for a computer scientist, but in practice, it still works.

He writes:

What’s wrong with Bitcoin is that it’s ugly. It is not elegant. It’s clever to define your bitcoin balance as whatever hash tree is longer, has won more races to find a new block, but it’s ugly to make your network’s security depend solely on having more brute-force computing power than your opponents, ugly to need now and in perpetuity at least half the processing power just to avoid double-spending. It’s clever to have a P2P network distributing updated blocks which can be cheaply & independently checked, but there are tons of ugly edge cases which Satoshi has not proven (in the sense that most cryptosystems have security proofs) to be safe and he himself says that what happens will be a coin flip at some points.

Guarantees of Byzantine resilience? Loosely sketched out and left for future work. Incentive-compatible? Well… maybe . Anonymity? Punted on in favor of pseudonymity; maybe someone can add real anonymity later. Guarantees of transactions being finalized? None, the user is just supposed to check their copy of the blockchain. Consistent APIs? Forget about it, there’s not even a standard, it’s all implementation-defined (if you write a client, it’d better be bugward compatibility with Satoshi’s client). Moon math? Nah, it’s basic public-key crypto plus a lot of imperative stack-machine bit-twiddling. Space efficiency? A straightforward blockchain and on-disk storage takes priority over any fancy compression or datastructure schemes. Fast transactions? You can use zero-conf and if that’s not good enough for buying coffee, maybe someone can come up with something using the smart contract features. And so on.

Clearly, the Bitcoin whitepaper is grossly under-specified. There’s not a single mathematical proof in it and a lot was left in the air. Yet, despite all its gaping holes, it seemed to work…

There’s many other examples of “Worse is Better” that I can think of:

  • JavaScript is similarly ugly. It was written in 8 days by Brendan Eich. But it took over the web. You can’t build a web application without using Javascript in the modern day. There’s so many other web languages that are “better”, but JavaScript is still sits at the top of the throne.
  • We’re seeing the same thing with Solidity. Solidity is a programming language to build Ethereum smart contracts. It is by far the ugliest programming language you’ve ever used. It is so inefficient and so insecure. But there’s so much developer interest in it (e.g. compared to “better” smart contract languages provided by Tezos, EOS, and other smart contract platforms)

It’s interesting to see how the ugly solution often wins over the more elegant ones. They barely work in the early days. Maybe one of the reasons they win is because they solve a problem at right time in the minimally viable way and win over users, and then becomes impossible to unseat because of network effects and the Lindy effect?

What do you think? Why did Bitcoin succeed despite being ugly? Was it timing? Was it that it solved a real problem? Was it that it was more practical to implement?

[check out this video discussion we had about this topic for more context]


while it sounds cool and is attention grabbing i think the “worse is better” concept is a bit of a misconception. it is not literally worse things are better but instead we change our hierarchy of desired properties. instead of properties of a tech having absolute values, as a society we are figuring out that they have relative values. for example you would always think correctness was better than simplicity (what kind of hippie question is this?) but actually in the “worse is better” philosophy simplicity strictly dominates correctness. depending on where you are in your development certain things matter more. getting viral adoption of google is no longer a concern. this is the essence of growth hacking.

“tons of ugly edge cases which Satoshi has not proven (in the sense that most cryptosystems have security proofs) to be safe and he himself says that what happens will be a coin flip at some points.”

given certain assumptions on max thresholds for adversary’s hashing power this GKL 15 paper provides a security proof on btc’s POW safety and liveness guarantees:
“Regarding BA (Byzantine Agreement), we observe that Nakamoto’s suggestion falls short of solving it, and present a simple alternative which works assuming that the adversary’s hashing power is bounded by (1/3). The public transaction ledger captures the essence of Bitcoin’s operation as a cryptocurrency, in the sense that it guarantees the liveness and persistence of committed transactions. Based on this notion we describe and analyze the Bitcoin system as well as a more elaborate BA protocol, proving them secure assuming high network synchronicity and that the adversary’s hashing power is strictly less than (1/2), while the adversarial bound needed for security decreases as the network desynchronizes.”

it’s also worth noting that given the FLP impossibility result its not possible for consensus in an open asynchronous system to be reached in an elegant and deterministic cryptographic way. also if i understand correctly, btc allows a solution to the difficult distributed systems question of how to robustly synchronize a global clock over many space separated processes (computers). and ill say what i did in the video: i believe the guys (Szabo, Dai, Finney etc) that have been in the lab for decades trying to figure out these problems who say that there is a huge technological innovation here. btc’s consensus alg with (extremely) high probability allows a practical solution to the Byzantine General’s problem where you dont know who is in the membership set and anyone can enter or exit at any time. therefore i believe btc is a novel and innovative technology and its not actually “worse is better” but used some properties that are traditionally lower on the radar to achieve critical mass and spur a revolution.


also ill repost this since its tangential to this discussion and topical:

Blitzscaling with Msft CEO Satya Nadella and LinkedIn co-founder Reid Hoffman
13:22 blitzscaling def
38:40 china using blitzscaling for policy. when to use for society
52:20 unique take on quantum computing

some real sharp shit. first, the book they are here to discuss Blitzscaling very closely echoes sentiments from the Bitcoin is Worse is Better study session. later they get adjacent to the gov/policymaking evolution discussion from Patri AMA a few times. other cool topics: blue collar aristocracy, second derivative of judgement, digital geneva convention. i also was going to mention msft as a better is worse company. they were the king of flooding the market with shit to get adoption and then iterating well.


^^Great interview, thanks.

Oddly enough I am starting to believe Timing was the most important factor contributing to Bitcoin’s success.

We are 10 years out from SN’s initial introduction of Bitcoin to the world. And a sizable number of people are ALREADY making an argument that Bitcoin is Digital Gold (and some go even further and say it’s better). Practically every person on Earth connected to the internet has heard the word Bitcoin in some context. If Bitcoin was a business like Facebook, it’s up against the Apex competitor of Gold - an infallible, time proven system - not MySpace.

That’s nuts.

You had:

  • Quantitative Easing: I’d argue US money supply (and global money supply) wasn’t too big of an issue pre-2009. At least not on a global scale (see Japan chart below which started down the path a bit before the US)

    • This created an explosion of interest and research on our financial system
    • It also created uncertainty in the incumbents (Occupy Wall Street)
  • A gifted programmer named Vitalik who launched the 2nd most important cryptocurrency (that in turn drove a ton more development and interest in the space) - not possible in any previous iteration of digital money

  • Instant peer-to-peer-to-many communication: Twitter, Youtube, Reddit…all allowed the spread of the virus at an exponentially accelerated rate - important in growing the hash rate (across regions) to where it is today and to a point where it is practically infeasible to stop. It had to grow fast + in a grassroots way to prevent Bitcoin from being castrated by governments

    • I think this also helped to explode Bitcoin price (which in my view is important to attract new people, new capital, new talent in waves)
  • Economic Growth of China/Other non-US mining hubs: I think if China did not grow economically and open up its borders for the 20 years pre-2008, it would have been much easier for a few countries to unilaterally kill Bitcoin earlier

In sum, you had macro factors, technical breakthroughs, and the right people in the right spot at the right time to make Bitcoin work. But Timing crafted the right Sapiens story around why we need Bitcoin.

Let me know if I’m wrong / missed some unconventional factors that helped bitcoin get to where it is :slight_smile:

The 2 most overused Money Supply Charts in crypto: