Avatar head

Maintaining power: A Core story

“…we cannot get every bitcoin user in the world to now instantly switch to 0.8 so no, we need to rollback to the 0.7 chain…” – Pieter Wuille, 2013. 

Pieter Wuille is an interesting character in the history of Bitcoin. A Belgian programmer, co-founder of Blockstream but mostly quiet contributor, Wuille has had a long tendency to stay largely behind the scenes while also having a heavy hand in the development of a great many things in BTC. Notable contributions are his work on Segwit, Taproot and he can be seen in the early BIP (Bitcoin Improvement Proposal) process establishing things like seed phrase recovery and other staples of the sophomore generation of Bitcoin. In fact, his first BIP contribution was #4 alongside Greg Maxwell, Peter Todd and Rusty Russel. 

I have previously noted his leadership role in hard forking and orphaning Bitcoin in 2013 after a chain-splitting bug as one of BTC’s major turning points, but this is just the beginning, and I don’t actually want to talk about Pieter the man, but rather, his title: “Maintainer.” 

Bitcointalk
Source: BitcoinTalk

‘The Process’

Contrary to the belief that Bitcoin (any version of it) is set in stone, humans are a meddlesome species, and very shortly after Satoshi Nakamoto left the project, Amir Taki established a system by which Bitcoin could be changed based on the RFC (request for comment) system established in open source development groups.

This created a de facto governance system to be established to moderate proposals. 

According to BIP #1, the self-establishing governance mechanism for changing BTC, states that the first step should be “…asking the Bitcoin community first if an idea is original…”

Once “the community” has decided that bitcoin might be worth changing, and “…the champion has asked the Bitcoin community as to whether an idea has any chance of acceptance, a draft BIP should be presented to the bitcoin-dev mailing list.”

The next step is an appeal to the BIP Editor—a sort of gatekeeper of acceptable thoughts about Bitcoin. “The BIP editors assign BIP numbers and change their status. Please send all BIP-related email to the BIP editor…. The BIP editor reserves the right to reject BIP proposals if they appear too unfocused or too broad.”

For clarity, the BIP editor is Luke Dash Jr, Blockstream co-founder, and the author of the currently accepted BIP workflow established in BIP #2. 

Luke Dash Jr
“Yes, I created the governance system in which I am the gatekeeper.” – Luke Dash Jr (probably)

The process is lengthy and specific, and you should read about it here, but the culmination of a successful BIP is that it makes it to BTC’s “Maintainers.” If it gets successfully merged into the master branch of ‘Bitcoin’ Core. A flag day is chosen for voting, and nodes signal whether or not they will accept the protocol change as valid with their internal policy settings. 

History and controversy

Critics of the BIP process have claimed for years that the roles of “Editor” and “Maintainer” are dangerous points of centralization. What is to stop these people from being bought, bribed or threatened? Others have argued whether the roles should exist at all given that Bitcoin was designed to be a commodity, and shouldn’t be open to any change at all! Where did the white paper establish such a process? Satoshi didn’t even use GitHub, after all… 

But the small blockers have maintained that despite money coming from Blockstream, Chaincode Labs and other firms, they have no agendas, are generally above reproach and that the watchful public eye of the market and nodes will keep everything in check. 

We concur
We concur.

Get ready to glow.

Pieter Wuille stepped down as the longest sitting maintainer of BTC Core this month… Gloria Zhou (username “glozow”), after some controversy about her industry connections, was then very quickly made the first female maintainer of Bitcoin Core in his place! 

Rey “Skywalker”
Unrelated picture of Rey “Skywalker” stoically using the force.

Regardless of how you feel about maintainers or the process itself, there were some fascinating gems of conversation about Zhou’s coronation. 

BTC contributor James O’Bierne opines

“This is hard to express without coming off as impolite or ad hominem, but we have a pretty large plurality of young maintainers who don’t really have a lot of experience in other projects. Furthermore, this plurality seems pretty tightly linked in terms of funding, personal life, etc. to the point where I’ve heard concern expressed from other contributors that there may be a “virtuous circle” of mutual ACKs among maintainers. I’m not trying to criticize or alienate, but I think the potential for weirdness is growing.”

“If we’re going to have another maintainer, I’d like to see someone who is a little further removed, more experienced in the repo, and somewhat more disjointed from the funding/social graph.”

“If maintainers really are just ‘janitors,’ why do we need another maintainer? Do we need to revisit the role of maintainers? Should they be expected to take a more active role in setting goals for regions of the system—if so, that’s okay (and I think might even solve some problems!) but we should make that explicit instead of just repeating this maintainers-are-just-janitors line while kind of implicitly expecting something else.”

1440000bytes comments

“If this pull request is merged, there will be 7 maintainers and 3 funded by Brink. This was even mentioned by @0xB10C as nit in meeting. Bitcoin has only 1 implementation used by majority of nodes. It would be better if maintainers were from different parts of world and funded by different organizations. Being anon could also be helpful.”

The pull request is full of interesting criticisms about the problems of conflicts of interest, sponsorship and the powerful role of a maintainer in the first place. 

The issue may be best summarized here:

“My main concern is that @glozow is a not-impartial participant in the development… I think her role as a maintainer might muddy the waters, and cause others to be more likely to defer to her proposals on the basis of perceived hierarchy.

The issue is hierarchy. Bitcoin was designed to mimic a physical commodity in that it cannot be changed and therefore has value as a commodity asset in the real economy. 

History (and now this new addition to BTC’s ongoing story of constant, chaotic protocol change) has shown the increasingly political nature of being a BTC maintainer which calls into question whether BTC is a commodity at all. If it has political factions, sponsors, corporate interests and an unknown roadmap, then not only is BTC’s presumptions of “sound money” spurious, but courts may find that developers act as fiduciaries over what is essentially a centrally issued security offering by the BTC developers. 

The important thing to remember is precedent. 

The Supreme Court is fresh in the news, but few know that Madison vs Marbury is the case that led to the validity of the Roe V Wade decision in 1973 and led to its undoing by the same case law precedent in 2022. The Madison case was from 1803, which is a really great reminder that the decisions we make really do matter! This isn’t law or governance. Politicizing the court or Bitcoin processes which aren’t supposed to exist in the first place just leads to complete chaos! And in Bitcoin, if we introduce a convoluted governance process, there’s no telling what it becomes over time. 

In my opinion, it becomes nothing if it is not sound money, set in stone and secured exclusively by honest nodes committing proof of work to the original rule set. But I’ve always been a stickler for first principles. 

New to Bitcoin? Check out CoinGeek’s Bitcoin for Beginners section, the ultimate resource guide to learn more about Bitcoin—as originally envisioned by Satoshi Nakamoto—and blockchain.

[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]
[id^="_form"]
[id^="_form"]
[id$="_submit"]
[id$="_submit"]
[^;]
[^;]
[?&]
[?&]
[^&#]
[^&#]
[(d+)]
[(d+)]
[elem.name]
[elem.name]
[+_a-z0-9-'&=]
[+_a-z0-9-'&=]
[+_a-z0-9-']
[+_a-z0-9-']
[a-z0-9-]
[a-z0-9-]
[a-z]
[a-z]
[el.name]
[el.name]