Bitcoin ABC is focused on scaling Bitcoin Cash to serve the payments needs of billions of daily users. We aim to change civilization as we know it, and materially empower the world with greater liberty and prosperity.
To do that, we need the best people working full-time to build out the Bitcoin Cash roadmap.
Here are the reasons why.
- For Emergencies: The first obvious reason is that you need people on hand ready to handle emergencies such as security vulnerabilities. Attackers get smarter and smarter and therefore this will be an ongoing battle. Even if you do nothing else, you need a critical mass of developers to be able to handle this.
- Scaling: With scale, everything becomes exponentially more challenging. Imagine the code could be optimized to within 1ms when validating a transaction. Right now, this would barely change anything. But, at 1000 transactions per second (TPS), you will have one CPU core pinned at 100% constantly due to that 1ms requirement. Imagine a bug that corrupts the database once in a while when writing a transaction to it. Maybe it isn’t even a bug, maybe it is just the hardware that is failing you once in a while. It happens to one person per year, so it’s not a huge deal, and you can tell that person that the database is corrupted and they need to do an Initial Block Download (IBD) again. Now step forward to a world where there are 1000 TPS. You have 3 people experiencing database corruption every day. Now, you need to change your database system and add error correction or something. What was before a minor issue is now a serious problem.
- Changing Stack: The technology stack we are building on changes constantly. Here is a partial list of events that have taken place since the inception of Bitcoin that demonstrate why, even if you think the 2009 Bitcoin codebase was fine, there is still much work to be done.
- People started using solid-state drives (SSDs). SDD have vastly different characteristics from HDDs (hard disk drives). First SSDs are faster, especially for non-sequential reads. That means the optimization work will need to be redone altogether as the tradeoffs made are not relevant anymore. But they also do not like being written to many times at the same location. As a result, using the same data structure in the database as on a typical HDD would drastically reduce the lifespan of an SSD. You need to change the data-structures the database uses (usually B-trees for HDDs and log-structured merge trees for SSDs). Finally, SSDs have a higher error rate than HDDs. This means there will be way more database failures and corruption due to the hardware. This needs to be compensated for in the software.
- The network bottleneck used to be bandwidth. Now it is latency. We got faster and faster internet. Or did we? No, not really. The time it takes for information to go from point A to point B hasn’t really changed. What changed is how much information we can move. This means that the tradeoffs made in the network layer don’t make a lot of sense now as they are not optimizing for the limiting factor. The network layer will need, in time, to be rewritten to account for this new reality.
- Everybody uses a mobile phone. This is creating new challenges for the whole internet, not just Bitcoin, because mobile phones can, and often do, move. You can’t assume the endpoint you are talking with is at the same location on the network. This results in a horrible user experience. For instance, when you get out of your home and switch from WiFi to 4G or vice versa and the devices drops all active connections. This is new usage that we need to modify the software to handle.
- New CPU architectures. It is now common to build servers with ARM chips in them, for example Raspberry Pi nodes. So the full node software now needs to build and run on ARM.
- Changes in third party dependencies. OpenSSL changed its API in version 1.1 . You wouldn’t be able to run any old version of bitcoind on a modern system because of this. The same goes for BerkeleyDB and various other dependencies.
- Different run-time environments. For instance, Windows 10 brings with it a new set of APIs and bugs to manage.
- High-DPi screens. Today, we have 15” 4K screens and the text drawn for earlier screens looks too small. If you make it bigger, it’s laughably big on a previous generation screen. The concept of DPi solves this, but that means using a new set of graphics APIs and libraries.
Even if we assume constant usage and no new features, there is still a lot to do. This internet thing is fast-moving and constantly changing — the computers plugged into it as well. Add scaling challenges on top of this and you get what’s using 90% of developer time.
We need to be hiring more people, and that requires money, but that’s only one part of the equation. The second part is more of a cultural shift. We need to project that we want ten times more people and that we’ll treat them well.
We need to start building infrastructure for real. Even though many articles have been written, little of the difficult scaling work has actually taken place.
That means we need to hire world-class people right now. They’ll take several months to get up to speed, and this will take away from the time current developers can put in, so there is way less time for that to happen than most imagine.
We need to foster an environment where these people can thrive. If they have to jump from one crisis to another, then they won’t be able to do work on a longer time scale, and this is absolutely required.
Our challenge is to make this happen right now.
Join the Bitcoin ABC team in building censorship-resistant P2P electronic cash for billions of daily users and realizing the vision that is Bitcoin Cash!
Visit fund.bitcoinabc.org to find our business plan, budget, delivery timeline, funding options and feedback mechanisms.
We can only do this together.
Got questions? Ask us below.
- How You Can Contribute to Bitcoin ABC
- How to Participate in the Upgrade Testnet
- Multiple Implementations and Cooperation in Bitcoin Cash