Transcribe of Jihan Wu's speech about bitcoin's governance

in bitcoin •  7 years ago 

It's nice to see you guys here, and my topic today is about why multiple implementations are quite important for Bitcoin. More than 2,000 years ago, Aristotle argued that there were six ways of how society can be organized. There is monarchy, aristocracy, politicy [demagoguery?], tyranny, oligarchy, and democracy. And in open source software management, we can usually find two ways of management. The first one is called benevolent dictatorship. The other one we call design committee. Benevolent dictatorship is the most frequently seen one, that usually the dictator or the founder of the project, or the ones who have contributed the most significantly to the project, he knows the project very well, he contributes the most, his skills are well recognized, he knows everyone in the project who contributed, and everyone knows him. In Linux, Linus is the most famous dictator, right? And in most of the cases, it functions very well. Design committee is quite rare, actually, and usually when open source becomes design committee it doesn't function very well.

One question is why we cannot see other forms of organization as Aristotle described. I think it's because democracy is not possible in open source software, because developers' software is quite complicated, abstract activity, and who is good and who is bad is most times quite obvious and you cannot just vote to decide which way the software is going to go. And tyranny, because there is a lack of enforcement there, so if you want to seek the benefit of a tyranny, it's not open source software, it's Microsoft, it's Windows, it's Office, right? We can maybe see this kind of tyranny, maybe that's why Microsoft is widely hated in the open source community.

Another question we want to ask is why benevolent dictatorship is so common in open source software. I think it's about human nature, it's about the complication of the software development. Just like Steve Jobs said, one very good software engineer is 100 times better than an average one. So there is no democracy here; if you are a good developer, if you contribute the most, everyone knows about it. If you look at the Github for most open source software, you can all see that the number one contributors contribute far better and far more than the other contributors. So it's just a natural process that there will be a dictator there. We also have to notice that there is another tendency in human nature, that is obedience to authority.

In 1961, in Yale University, there is an experiment called the Milgram experiment, that showed a very strong willingness for human beings to obey the orders without just contradictory(?) to their consciences. We also have to pay attention to another cognitive bias, called the Halo effect. Because people's judgement over certain things are highly influenced by the past behavior of the entity, without just understanding 100% perfect about the fact itself. So if there is a kind of very significant contributor in a project, if this contributor makes a judgement, because of the halo effect lots of the other contributors or members in this project are very likely to follow. And we know that there is also a bandwagon effect in the social dynamics. There is an experiment that in a group discussion, the experiment asks the participants to say which pen is longer. It's obvious that Pen A is longer, but everyone else says that Pen B is longer, it's a lie, but the only one left in the room doesn't dare to say the truth, and just follows the other people. This effect is very strong, that if you are the lone person to hold an opinion, even if the opinion is true, [there is a lot of pressure not to speak out]. But it's also very interesting that if there is only one companion standing beside you, that this person will be much more brave to speak out. So if you really want to control many people, censorship is required, you just shut everyone up so that everyone feels he is lonely.

We need to pay attention that software development is very pressure[?] and highly complicated intellectual activity, and most of the time the contributors don't have direct economic incentives. He contributes for fun, or to feel good, it's voluntary. But if he contributes with the possibility that he will be attacked and face political pressure, and everyone [] him he is doing very wrong, most likely this one will quit. He will not continue to fight for this project.

So I think given all these kinds of effects, I think it's very natural that open source software most likely will be organized in a kind of dictatorship. Actually there is nothing to blame, and most of the time it's fine, because this is the most effective way given our human nature. Maybe the dictator will usually advise that the lead maintainer be humble and humorous and manage the whole order of the software development, but if he's doing something wrong, it's not unacceptable, because there are so many software [projects] in the world and there is no perfect piece of software, and people can just use other software.

If we look at the case of Bitcoin, that Bitcoin was founded by satoshi, and then the lead maintainer position was transferred to Gavin Andresen. Satoshi was definitely a dictator, and he made lots of code changes into the codebase without much discussion. For example, the one megabyte blocksize limit, he might have discussed with two people, then he just added it into the codebase, and maybe one year later Jeff Garzik found it and started to discuss it. When Gavin became the lead maintainer, the transition to the design committee began. Gavin Andresen at that time worried about maybe he will be hit by a bus, so he gave the commit access to a few other people. From then, all the changes have been seriously discussed in the community, and everyone is very conservative, so right now I think we can safely judge that Bitcoin Core is governed by a design committee.

Another phenomenon we need to pay attention to in open source software, is that usually there is very clear ownership of a software project. This is somehow contradictory to the instinct, because the code is open source everyone can fork the code away, everyone can copy it, can use it, it's free. But in the common law of the open source community, there is definitely some kind of ownership, that if you fork away the code and you add some patches and release a binary without the consent of the original founder or the existing everyone recognizes as owner's consent. This will be called a kind of rogue patch, that you steal the project, people will still blame you, everyone will point fingers at you. So in common practice, there is a very strong practice that open source software will have kind of ownership.

So who is owning bitcoin core right now? Usually people, lots of devious arguments, will say "oh Bitcoin Core does not actually exist." Right? Have you heard about that? But it's a joke, Bitcoin Core does exist, and everyone knows exactly who are the committee members of Bitcoin Core. Maybe they have a kind of hierarchy inside the committee, but the ownership is quite clear, that this software project is owned by some people in this world. It's not owned by everyone, it's owned by a small group of people.

So we need to think about this. If Bitcoin is just a kind of software, it would be just fine that this software has a kind of ownership, even if it's owned by just one person its fine. If you don't like it, you just don't use it. If you don't like Microsoft Office, it's fine, you just change to some open source alternative, you can choose Google Docs. But it seems that Bitcoin is not only a software, because if you don't like the one megabyte blocksize, you can just choose another piece of software, like Dash, right, is going to create a 400MB block, right? And why everyone troubles themselves creating /r/btc and forum.bitcoin.com to try to fight and to increase the blocksize? I think that Bitcoin is a kind of social agreement established since 2008, that everyone who signed up for Bitcoin with this kind of agreement. The most well known terms would be the 21 million coin cap.

There were also lots of trolls on the internet in 2011. When they were first met with the bitcoin concept, and when they would argue with everyone else, they would say there is a kind of one megabyte limit, it can most likely process 7 transactions per second. "Dude, it's not going to be a very good payment network or good monetary tool", and I always argued that Satoshi had established the roadmap that the blocksize can be increased someday that it is required.

So such kind of arrangement is an agreement that existed in the mind of everyone that has been investing in or buying or holding Bitcoin. It's not a kind of thing that could be a tradeoff of software engineering, it's not a kind of feature that you can choose to have or not have, it's not technical, it's a social agreement. Peter Todd used to say "oh the 21 million coin cap is a kind of technical arrangement." No, it's not. It's a kind of social agreement. It's unchangeable. If you change it, you are basically violating the agreement.

However, we found a problem here, that since this whole argument started like four years ago, people found from the beginning there is a strong incentive in the community that we will want to choose the best software implementation, and actually that's Bitcoin Core for a very long time, and I think today it's most likely still the case that Bitcoin Core is still the most widely recognized software implementation.

If we consider Bitcoin as a kind of social agreement, that the implementation is a kind of contract on paper, there is only one lawyer in the world that can draft a contract for everyone, for participants. And later you find that the lawyer starts to manipulate the terms in the contract for some weird reasons, and everyone thinks "oh this is not true, this is against the original arrangement." But because going through legal training or the whole legal system is too complicated, and you still have to rely on this lawyer and he starts changing the terms and you have nothing to do and you have to accept. Maybe that's what we are facing right now.

I think we need to encourage multiple implementations so that we don't have to be hijacked by the monopoly implementation in the world. I think that if we have been promoting multiple implementations earlier, at least some of the miners I know in China will have been more comfortable to switch to the big-blocks roadmap. That will make everyone feel more comfortable to switch their software. I think we need to encourage multiple implementations, because it will help Bitcoin to bring new innovations. I think today Bitcoin has missed at least one very important innovation in the world, and that is smart contracts. When smart contracts were introduced, I recognized that it was very important.

I was a very early investor of ASICMiner, and I traded stocks on GLBSE.com. How many of you know about GLBSE.com? Ok, very few. It was very early. It's basically a kind of centralized stock exchange that used bitcoin as a currency. At the time, maybe the UK securities regulators locked the door of the GLBSE creator, and the creator was kinda freaked, and he just shut the site down. And everyone was in chaos, because the cap table of the company, the virtual company on that website, became unknown. No one could make sure, could prove, that he owns certain shares of a company. So if we could have a kind of decentralized cap table for the companies, it will be great, right?

So from the beginning I thought that smart contracts could do this kind of thing, and it has been evident that the ERC20 protocol has been widely used in the ICOs. I know ICOs are quite crazy right now and lots of scams, I think lots of people are going to lose money. But definitely if you want to create a kind of decentralized economy, at least you want to allow those entrepreneurs to raise money from the public without regulations. I think such a protocol and innovation is quite important. The smart contract is actually very hard to do anything that is meaningful, because the coding and security is very troublesome. Maybe a very simple feature requires a month of time of engineering. But anyway, it's a very very important innovation.

Bitmain started to invest in Rootstock in 2015. As a community, we have to admit that Bitcoin is a little bit late for this innovation. One post in /r/btc today [] the Nokia CEO's presentation. Nokia has done nothing wrong, but Nokia failed. I think Bitcoin, if it cannot catch up to the most important innovations in cryptocurrency, maybe we will end up the same situation. Maybe Bitcoin does nothing wrong. One megabyte is nothing wrong, right? But it just failed.

I think another innovation we are missing right now is a kind of economic incentives about inflation, reward distributions. One very important competing blockchain just redistributes the mining reward to the long term coin holders and full node operators. This kind of model will incentivize everyone to store their coins in the long term, and to make judgement about the technical improvements for the long term, and to contribute to the community. Such kind of innovation have been adopted by Ethereum, but I just see lots of Bitcoiners in this community trash this idea, saying it's bad, it's a scam... okay. I will leave my work here, it's a very important innovation, and we will see how powerful this kind of arrangement is for the innovation.

If we have a kind of monoculture of implementations, all these kinds of new things will be trashed because you don't have the perfect solutions. Every innovation has its problems, and every new idea has been trashed and rejected. That will be quite risky for Bitcoin in the future.

I think an implementation that wants to be successful should go through several important steps. First it should be running as a full node without mining, that it can catch up and follow the right consensus rules, the right chain, which means that you don't accidentally introduce consensus rule changes to your software. You can call it a UASF or UAHF, or whatever, but you don't want to accidentally create such kind of bugs to fork yourself away and leave the main chain. If you can finish this, then another important step is for your implementation to be able to create new blocks, can extend the blockchain. That is quite an important step, because lots of software has difficulty in this step.

I think the next very important milestone for an implementation is that it will be able to bring improvements to the protocol, and bring innovations to the protocol, and it will be able to convince the community to upgrade, and to accept the innovations and help the community to grow. That will be a very important milestone.

Lots of innovations in the protocol are actually very aggressive, it will have the potential risk to damage the protocol as a whole. So how can we introduce the innovation safely? I think extension blocks can be used a kind of general framework to bring innovation. Extension blocks are a kind of very special sidechain. It's a special sidechain that requires all full nodes and mining nodes to verify the consensus rules in the extension block, so some aggressive innovations like smart contracts, mimblewimble, or lumino, can be included in the extension block. If something goes wrong, the largest risk we face is the extension block is wrong[?], but it's voluntary and it's someone who dared to take the risk to use the extension block and bear the risk. You don't have to ask everyone in the ecosystem to bear the risk of extension blocks.

I think that we should construct a way for software implementations to fund their business models. Kind of volunteering, or self-establishment is quite good, quite important in open source software. But we really want such kinds of protocol implementations have a public way to say "I'm going to earn money this way." And they don't need to hide their business plans and leave the whole community to create lots of conspiracy theories to say what their intention is. Like Rootstock. Rootstock reached a kind of arrangement with miners that on the Rootstock chain, 20% of the gas revenue, basically transaction fees, will be distributed to Rootstock Labs. This is a very public business plan, and investors invest into rootstock for a very good reason: to one day earn lots of money. And the whole community will accept the fact that if you really bring something interesting to this protocol that it's just natural to have a kind of revenue for your innovations.

The protocol developers don't have to be very confidential about their business plan. We also know that Rootstock just raised money from private investors, and today there are lots of ICOs, so if you can work out some kind greater proposal that has potential to be adopted by the whole community and widely used, maybe there are more decentralized ways, like ICOs, to raise money to fund your development.

When we say that we want to encourage multiple implementations, I'm not saying that every implementation in the ecosystem will be very successful. I think it must be the opposite, that most of the initiatives will fail. Only those ones with good code quality, very developer-friendly, and very clear documentation, and very good communication, will be very successful. And because of the competition of software implementations, most of them will have very bad code, not very good documentation, and maybe all those comments in the code are bad, maybe lots of bugs in the code. It's quite easy to introduce bugs into the software implementation. Most of the software will fail, but anyway, we have to try to be successful. And I hope that we can make it a very beautiful future for Bitcoin. Thank you.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://www.reddit.com/r/btc/comments/6kmyge/in_case_you_missed_it_jihan_wu_delivered_a_very/