Achieving Our Goals, Preventing Protocol Capture, and Avoiding Community Splits

Achieving Our Goals,
Preventing Protocol Capture, and Avoiding Community Splits

So far, Bitcoin has proven to be a bit tricky. Bitcoin was created in 2009, but by 2015, a problem emerged: The Bitcoin Core developers could not agree on raising the maximum blocksize limit — a necessary step to allow the network to grow.

In 2017, a portion of the community (that could not abide by the technical leadership of Core) forked off to create a separate network called Bitcoin Cash. But, barely a year went by before another subset disagreed with the new development leadership and forked off again into Bitcoin SV.

Forking is freedom and a beautiful thing, but too many forks lead to a splintering of the community. This is a real risk and can be very damaging.

The early Bitcoin Cash community saw Bitcoin Core as a single point of failure, and believed having multiple implementations was the obvious solution to the problem of developer capture.

But this doesn’t solve the problem entirely.

Multiple implementations are beneficial for a few reasons. They give miners more options — the community isn’t “stuck” with only one reliable software choice Also, multiple implementations make the network more robust in case of node crashes. Finally, it is harder to corrupt multiple groups than it is with a single group.

But, what happens when developers disagree? The fundamental dilemma over consensus remains.

The conventional wisdom says that multiple groups are more capture resistant since you can’t corrupt them all. But there is a flaw in the logic here, because you actually don’t need to corrupt them all. If you want to take over the Bitcoin Cash network, you only need to control a single implementation — the one whose rules the network follows or will follow.

And history shows, in fact, that Bitcoin protocol development was paradoxically more capture resistant when it was centralized, rather than decentralized.

For example, in the early days, protocol decision making was centralized under Satoshi and then Gavin, and the project did great. Gavin added Wladimir as a github contributor with commit privileges, who later added others, and so it began. It was only after it was “decentralized” that the Core developers got corrupted, kicked Gavin out, and changed Bitcoin from global digital cash to whatever BTC is now.

Granted, one can also argue that Core was a single centralized group, so the issue isn’t cut and dried. Corruption can happen with or without decentralization.

A similar pattern happened when Bitcoin Cash was born. ABC successfully forked BTC into Bitcoin Cash, and at first all was well. Later, when ABC, BU, and nChain were the three major implementation groups, the situation got bad.

Although nChain’s takeover attempt failed, Bitcoin Cash suffered greatly because of high levels of uncertainty in the market, which resulted in a severe price crash. Despite having good people in both ABC and BU, the two groups were unable to present a united front against nChain, which allowed them to gain a strong footing.

Now, let us examine a few possible models for protocol governance:

This is the BTC approach: Avoid protocol upgrades entirely, or only allow them if there is overwhelming super majority consensus. Despite Core’s extremist and sometimes disingenuous narratives, there actually is some merit to the principle of avoiding network upgrades, as it simultaneously avoids both protocol capture and community splits.

This approach only makes sense at a time when the protocol doesn’t need upgrades for the foreseeable future. Allowing the network to become ossified is the result of applying this strategy too soon, before the protocol has ripened. The blocksize limit was the most obvious example, but other changes may be needed as we continue toward our goal of global-scale digital money.

But, even as we utilize protocol upgrades in BCH, the principle of Bitcoin being “hard to change” can help us and is something to keep in mind.

“Take the power away from developers and give it back to the miners!”. This is the rallying call for the miner voting model, but it comes with its own set of issues.

Firstly, there is no guarantee miners will fully participate in the voting, and may even do so dishonestly. We saw this during the lead-up to the BTC-BCH split. Worse, a minority chain like Bitcoin Cash is very vulnerable to manipulative voting from a well funded saboteur.

Finally, even though the mining community should strive to become better informed and more involved, in practice they still prefer to avoid politics and defer to a trusted group of developers with a proven track record. This is why miners stuck with Core for so long and is the same reason most miners continue to run Bitcoin ABC, despite there being alternatives.

Some developers have also proposed allowing miners to vote just to include certain features, but this would become messy — for example if miners voted for a feature one group wants, but another doesn’t implement. Not coincidentally, most of the calls to implement miner voting come not from miners, but from developers of competing implementations, as it provides a way to gain more influence over the protocol.

In practice so far (2017–2019), the Bitcoin ABC implementation has much more control over the protocol than other implementations since most mining pools and exchanges run it. But suppose this wasn’t the case.

In this hypothetical model, we can envision 5 mining pools running 5 different implementations, and perhaps exchanges commonly running all their nodes. This is what many in the early BCH community imagined and wanted.

However, this isn’t a panacea. In case of disagreements, the answer to “who decides” suddenly gets a lot more complicated, and the risk of a community split becomes greater.

The security model is also weakened because a bad actor could take over the ticker symbol by creating their own “hashwar” and bribing exchanges to use one of the multiple implementations they run as the “reference”.

Perhaps some would argue that having no lead implementation would be best even if it means having plenty of splits, with the rationale that you can keep all your forked coins and stay fully hedged. But that argument would be ignoring the fact that there’s already 3000 altcoins and BCH is too small to keep splitting.

As we saw at the time of the BCH-BSV split, the sum of both forked coins’ prices were lower than the pre-fork price. The process of price discovery and the battle over ticker symbols, key infrastructure and people can be lengthy, disruptive, and expensive.

This is the model we have today in Bitcoin Cash. Bitcoin ABC allows collaboration but in practice has a final say in what goes into the protocol. This is routinely criticized within the internal Bitcoin Cash community as a failure to truly implement the ideals of decentralized development.

But, we should remember that “decentralized development” is merely a means to an end. The real goals are peer-to-peer cash for the world, having network rules to support this, and preventing anyone from impeding progress.

The key benefit of having a single implementation be “the decider” is that it creates a strong schelling point. The idea is that the community follows the upgrades from the lead team as long as they are reasonable.

In general, the fewer and more powerful schelling points, the less “decentralized” things are from a certain perspective, but the more sure we are to stay on track, assuming corruption doesn’t occur.

In the case when the lead group is doing a good job and most of the other developer groups support and helpfully collaborate with the lead group, then there is no problem.

Sooner or later, the supremacy of the lead group will be challenged. This can happen even when many believe the lead group is doing a good job. Perhaps others don’t agree the lead group is good… or, they may simply be interested in controlling the protocol.

As control over the protocol is power, attempting to grab that power is a natural incentive that is always present. The incentive applies to existing groups that would like to be in charge, outsiders who would like to come in and control the protocol, and saboteurs as well.

The mantle is always there for the challengers. This is a key point and it’s why we frequently see divide and conquer tactics and constant attacks on Bitcoin ABC. In many strategies, one of the first steps to gaining power is to discredit the group in charge.

It is also obviously possible for a lead group to do an objectively bad job or become corrupted, in which case it is appropriate for another group to attempt to supplant them.

There are no easy answers for resolving differences of opinion on whether a group is doing a “good” or “bad” job. But, participating in a challenge to the lead group’s role is not something to take lightly, and should be done only with full awareness of the dynamics at play. Even in the noblest situation where a lead group is truly corrupt and an outstanding group is ready to replace them, a coup can be extremely costly and risky.

Cryptocurrency is a fundamentally cooperative domain. No one can force you to run certain code or use a certain coin. Thus, power comes from collaboration rather than coercion.

In a perfect world, everyone would be only concerned with the highest and best interests of the protocol. In the real world, many people and groups are self-seeking and focused on their own agendas. This is a fact of life and won’t change.

Infighting is bad because it creates instability, poisonous culture, and uncertainty in the market. Saboteurs want infighting, but it’s also important to note that implementations wanting to overthrow the leader also create infighting, and may not care about the consequences of doing so.

There is a tragedy of the commons with multiple implementations: The people in the implementations who care most about the coin rather than their own power are incentivized to do whatever is right for the coin. But the people who care more about being in power have less incentive to cooperate because they care less about the consequences.

Truly benevolent dictators do not seek control for control’s sake, and instead attempt to foster a culture of inclusiveness and collaboration because that is in the best interests of the coin. But it is not always beneficial to include everyone, particularly those that demonstrate power-seeking behavior.

This article is meant to be food-for-thought rather than prescriptive. Nobody has a magic silver bullet for governance, and perhaps there never will be one. But, here are some guiding principles that may help us:

1. Have plenty of censorship-free communication channels.

Censorship is very dangerous in Bitcoin as we saw with Bitcoin Core, as it prevents even discussing a legitimate challenge to a lead implementation. Note that moderation isn’t the same as censorship.

2. Have a shared vision of the desired outcome.

Bitcoin Cash has a clear goal of becoming permissionless peer-to-peer cash for the world. Having a clear goal in mind makes our job easier. We don’t need to absolutely solve distributed governance — we just need to be aware enough to keep the ship on course.

Personally, I like the mission statement “Permissionless peer to peer cash at global scale”. Documents like the Bitcoin Cash Roadmap are helpful because they further define some of the high level details of what protocol changes we would like. They also can serve as schelling points and also a compass to let the community know if it’s on track. Additional documents such as manifestos can help too.

3. The more educated the community, the better the outcome.

This applies to everything from Bitcoin knowledge in general, to knowledge about the various actors in the sphere and their behaviors, to game-theory and philosophy.

4. Have good schelling points.

“A house divided against itself, cannot stand.”

Published at Wed, 06 Nov 2019 22:34:05 +0000

{flickr|100|campaign}

Spread the word. Share this post!

Leave a comment