In my previous article , I explored ways for developers to participate and contribute to Bitcoin node development. Do it right, we can attract diversified and talented developers with different starting point, skills, experience, reputation and objectives to participate fairly and cooperate closely for the development of the whole eco system and reduce the chance of network splits.
In this article, I will delve a bit further on why this can be a sound alternative for the current funding models and the coming IFP along with shortcomings of this approach.
Network split: Miners or Developers or Community?
For simplification, I would classify Bitcoin stakeholders into 3 main categories: Miners, Developers and Community. The first two are relatively simple to understand; "Community" is anyone that are not in the first two but have some influence to the network or be impacted by the network's changes. They can be users, investors, traders, holders, app developers around the protocol, or simply outsiders who just watch or have conflicting interest with BCH network. A person or group can be both Miners, Developers and Community.
According to Nakamoto consensus, it is the miners who keep the network secure and determine which chain is a longest chain, hence the winning chain, in the event of hard fork. The assumption is that after "hash war", the miners on the lesser chain will give up and move on to the longest chain for security and benefits. As it turns out, the miners will keep mining any chain as long as they still have value, that means is still profitable to mine, as witnessed with BCH, BTG, and recently BSV. So actually it is not the miners who decide on which chain will win and survive and the other will become obsolete. It is not that black and white. Yes the miners will determine which chain will retain the ticker symbol, but in the end, it is the community who decide if the minority chain will still be alive by continue supporting the lesser chain. In pure terms, hardforks will encourage innovations and radical improvements, meanwhile, splits will deteriorate both networks, causing incompatible apps and services, awkward and confusing user experience, damaged public image and on-going infighting between divided communities.
Developers caused the split?
Some may say it is not the community who causes the split, but rather the developers who develop incompatible changes. This is where it is getting interesting. Actually the developers so far have no direct incentive from developing and maintaining the node software. All coinbase rewards and transaction fees go to the miners. The users have the benefits of network security and features, and the investors are rewarded (or punished) by the market values.
Ironically, the developers who spends effort to develop and maintain the software has zero direct incentive from the system. Here I meant developers, not investors and I assume they are two different stakeholders, but very often developers also hold the coins. However they are two very different things. So how can the developers earn benefits, assuming they do not hold or trade? As many have pointed out, so far it works by having donations from community and miners, or simply the developers just work for fun.
The point here is that, developers are under influence of community and miners, and they will develop whichever software the community and miners will give back to them the most, regardless of whether the implementation will benefit the whole network, nor do they have any intention to avoid network split.
In the end, it is their fight to win the community and the miners, not to maintain the network. Having said that, I am not ruling out some good will developers who is putting the network security on top and working with their passion, however they are not the one who decide a split. It is the community who still support, believe, invest and hold the value of the lesser chain that cause the split. Looking at the split events of BTC/BCH and BSV, we can see it is the forces behind the developers which caused the splits. Not the developers, not the miners. As long as the lesser chain has no value, the miners will abandon it, and the developers will also abandon it. And it never happens yet.
Bitcoin is just a piece of software
Nobody deny the importance of node developers in Bitcoin. It is one of the most sophisticated software ever developed. The developers will also need to ensure the quality because of the value of the network and the confidentiality of transactions which give Bitcoin values, they will also need to maintain and upgrade development infrastructure, including hardware, software, internet access bandwidth, etc... Miners rely on the software to earn millions a day. In fact, Bitcoin is simply just a software. People with a computer can participate in the network and mine for reward at least in early days. Eventually it also becomes a hardware business with the invention of ASIC machines, however at its core, it is simply just a piece of software.
In that sense, the role of Bitcoin's node developers are quite undervalued so far, they have no direct incentive from the system they help developed and maintained. However, most of them have been happily putting hours of work to keep the system running. I have come to appreciate all those developers who give all they can to keep the revolution goes on.
On another hand, with Bitcoin is supposed to revolutionize the financial world on how the people will transfer values, make payments, or simply hold as a store of value, it is really a strange position that developers are still treated using the funding methods of the open source world, where developers raise fund via public or private donations, or private funding agreement with miners or other stakeholders. There are good things with that approach, and it has been proven working for Linux. However, what if we have a direct way to incentivise the developers on chain?
Bitcoin is based on PoW
With the invention of Bitcoin, Satoshi Nakamoto solved the problems to incentivise miners who provide PoW to keep the system secure and process transactions for users. Bitcoin also provide a secure ways for its users to transact or store values with its supply cap. What about the developers who put hours of work to the Bitcoin software? That is essentially Work, proven by hundreds of thousand lines of code written, proven by the quality, security and reliability of the software that has been running with zero failure since day one. They deserve to be rewarded fairly based on their work.
So if there is a way to provide incentive to the developers directly on-chain, that will make the system stay true to the PoW philosophy, that everyone got paid for their work, and in doing so, encourage more talented developers to join the development.
On-chain development incentive
More details have been provided in my previous article, here just a summary of how on-chain development incentive will work:
There is no conflicts between developers who want to charge for a fee and developers who want to contribute freely
The coinbase reward will have an option for developers to ask for a fee, it can be from zero to an agreeable maximum ratio (e.g. 10%)
Developers can compete fairly depending on their own goal (money, market or simply just credits). Some may do for free, some may ask for a small fee, some can ask for a premium
A fair and healthy system will encourage all developers to remain and compete for the end goal to keep up with the roadmap for scalability and most importantly for stability, and have incentive to avoid split
This is not another IFP, the fee will go directly to the developers for using the node software without a whitelist or a IFP governance. The fee will be completely of developers' control for the expenditure in software development and maintenance.
Development incentive vs IFP
One key element of the development incentive, is that it is not a IFP with a centralised governance. I don't think marry a decentralised, PoW based system like Bitcoin with a centralised governance is will play out well, especially for the PoW philosophy, where the work is rewarded and there is no trust among the parties. What has the governance done to receive the reward? Why do we need to trust them? PoW don't base on trust or future commitments. It is just Work!
There are PoS systems for such a need. Having PoW system with a centralised governance is like having the worst of both worlds - the inefficiencies of PoW and the centralisation of the PoS. We should rather go with one way or another.
With development incentive go straight to developers' wallet, as long as the developers still contribute to the network, they are rewarded. The day they have no contribution, there will be someone taking over and change the software, and the incentive will be redirected to the new developers. The incentive is totally of developers' use for their expenditure and future investment, and for maintaining their development resources and infrastructure. It works similarly to the miners' reward, anonymously without any financial bonding and commitment, but in fact there are quite a strong bonding in term of existing and future investment in resources and infrastructure, as well as software development know-how.
Another key difference to the IPF is that the reward split is not at protocol level, developers can set it in the code so that part of the rewards will go to their wallet without a whitelist of approved addresses and at any ratio developers deem necessary. By doing so, it will level playing fields for new developers who want to get into the game. Having a whitelist of developers’ wallet or a fixed fee will only benefit the established developers and prevent new comers, lowering the network ability to attract talents. Why a miner would want to use a new node software if they have to pay the same with the existing ones? It is very difficult unless the new software offer much greater features and quality, which mean higher cost of entry.
So what if greedy miners don’t want to pay the developers and instead modify the software to redirect the fee to their own wallet? In software development, effort for changing the code is just a small part of the total cost, it is the overall software quality assurance which takes the most effort. In fact, the developers may develop their own quality test suites and development methodology which is not necessary open sources to ensure rapid development.
By having the flexibility, there will be many developers join the market, providing different quality and extra features with different fee rates. They compete for the incentive to drive the innovation, user experience, features and quality to new highs.
There will be two main developers' classes:
Leaders are the one who are always first, deliver the best quality, reliability and innovation, leading the network to compete with other networks and stay relevant in the crypto landscape. They are also the first to provide hotfixes on security issues or solve the network issues. In return, they always charge for a premium, for all their investment and development team. However the big miners are willing to pay for the Leaders because of the features, credibility and reliability of the software.
Challengers are developers who do not have as much resources and reputation as the Leaders, however they can compete for some niches or at lower segments of the market where cost is a primary concern. Some examples such as integration with certain exchanges, specific reporting, etc... The miners themself may also fund for their own development team help diversify the market to retain or even earn some extra reward.
Small entrance cost for new developers
With the nature of Bitcoin software as open source, there is very small entrance cost for new developers. Anyone can easily fork from the main code base to build a new software and add features into it. The formation of BCHN in just a few month time is an example, similar with the BSV node implementation in the BSV split. So the Leaders will have to evolve constantly to stay relevant to fence off the competitions from the Challengers, or at least keep them at bay. With the competitions between Leaders and Challengers, the whole network will benefit with added features, better quality and reliability, in the meanwhile drive down the incentive rate. There will be a wide range of options for miners and users to choose from with ever enhancing user experience.
Development incentive vs fund raising programs
As mentioned earlier, the current incentive models put developers under huge pressure and influence from miners and community. Network unify is not at their stake, and they can develop conflicting code as long as they gain more money. And it causes unhealthy competition, whoever has greater social skills will likely to win over the skilled developers who do not communicate well. I do not mean to play down the importance of public communication, however there are a lot more effort putting in social engineering to the public crowd who does not have full understand of technology.
And since all incentive come from off-chain donation or support, the incentive does not link to performance at all (or Work in the PoW system). The less developers in the space, the more money developers can ask for, regardless of features or quality of the software. So most often, developers compete by introducing conflicting changes to drive out other developers instead of competing for work and services based on aligned and collaborated roadmap. It is less PoW based, but more social based. Crowd is always divisive and community funding development will almost always lead to network split.
With direct, on-chain PoW incentive, developers will now have their skin in game directly. The more they fragment the network, the less they will benefit. No developers want to develop for fragmented systems. Developers will have to collaborate, while still in fierce competition, to keep the whole system unified. Once the network split, they will have to either abandon one of the systems or split their resources to maintain both, that means less profit. They would rather to service one big eco system than multiple smaller ones. In previous splits where developers introduced conflicting changes, developers may even have more money from off-chain incentives. They didn't have much benefit of staying unified or even can be sued for avoiding network split. Developers will have to collaborate to avoid network fragmentation.
There are still cases where the conflict of interest will cause developers to develop conflicting changes and part away to stay with their vision. The thing is, with their reward at stake, they would seriously look for ways to avoid fragmentation and unnecessary splits.
Having said that, there are also developers who have great social skills will be privately or publicly funded via fund raising programs while still earn through on chain reward. In the end it will create variety and diversifications to the system and hence more competition. In fact, the voluntary donation system will still be quite relevant and will play an important role in keeping the system more balanced. More on this shortly.
There are still risks with this development incentive model where the Leaders will have a lot more resources than the Challengers, which may create centralised development and monopoly. This is where Miners and Community roles will play to prevent the centralization of development. Miners may defer aggressive roadmap and prefer more stable ones so Challengers can catch up and provide cheaper alternatives. Community can vote with their wallets if their security is at risk due to the centralization. In fact, given the open source nature of node software, it is very hard for the Leaders to maintain the lead, let a lone become monopoly. Other developers will just simply fork the software and offer cheaper fee, so without the constant innovations, there is no way for the Leaders to ask for premium incentive. Once the protocol is stablized without any new development, the incentive rate is expected to be lower. Less Work less reward!
The real threat comes from the centralization of mining, bigger miners may control the development so they don’t have to split the reward, while still collect fees from smaller miners who use their software. This has been an inherent issue with the PoW system, and by collecting a fee will further favor bigger miners. However as the fee is not part of protocol level, the smaller miners can choose to mine using free or cheaper alternatives. This is the reason why protocol level fee as proposed by various IFPs will further centralise the system. Here is where the community will play a big role to prevent such a thing, and the donation system will still work along with the development incentive to support Challengers to compete with the Leaders. However, the advantages seem to be far worth the challenges, most importantly, in Bitcoin, Work will be rewarded.
On another hand, development incentive will encourage miners to invest back to the development if it is a viable incentive for them, as opposed to the “free” model, where free riders will pay nothing and have the same benefits. They will need to look for alternatives or pay for first class software and services.
Doing it right, there will be three foundational pillars - Miners, Community and Developers, all have equal but different and significant roles in the network, no one should be able to dominate and rule.
On-chain development incentive will provide a fair reward to developers' role in the Bitcoin system, based on PoW, encouraging healthy competition
Development incentive will make the Leaders to be innovative, leading the technological curve and competing with other chains, while the Challengers will drive the cost down and provides alternative options for miners and users, enriching user experience
Developers will need to collaborate more to keep the system from fragmentation, minimizing network splits
Again, this is not another IFP. The incentive is given to developers at their own use similar to the rewards to miners for their past work, anonymously without any bonding or commitment. The bonding is with existing and future investment and software know-how
There will be three foundational pillars - Miners, Community and Developers, all have equal but different and significant roles in the network, no one should be able to dominate and rule.
Bitcoin is still an experiment, many things have worked very well, many things haven’t worked as good. Network split is one of them. This approach may or may not work or I may over-simplify something so appreciate comments. However I believe any chain that put developers at the forefront, as one of the core pillars in the system, together with Miners and Community, will eventually win the game. The crypto space is still in its infantry. Let's our developers to do their best, connect the dots between technologies and the (future) market, maximise the benefits of miners and users, and on the way, change the world!