Did you know you can run a node on the Bitcoin network without using the Bitcoin Core software? And that you can do so without causing the blockchain to fork?
Last year Bitcoin has experienced two successful hard forks that split the blockchain into three distinct cryptocurrencies—Bitcoin, Bitcoin Cash and Bitcoin Gold. The two forks in August and November happened because people designed versions of the Core software that were incompatible with the original one they wanted to replace.
Since 2013, several unsuccessful versions of the Core software have been created to launch hard forks. These include Bitcoin XT, Bitcoin Unlimited and Bitcoin Classic. What is perhaps lost to non-tech-savvy followers of the scaling debate is that there have been other implementations of the Core software that have not resulted in hard forks.
These versions were coded using alternative programming languages and they offer different user interfaces while executing the same rules as Bitcoin Core.
First we need to understand how the original software version works. Satoshi Nakamoto coded and released the very first Bitcoin client in January 2009. Since then, Core developers have implemented numerous upgrades through the process of making Bitcoin improvement proposals (BIPs). Anybody with an idea can create a BIP, share it through the Bitcoin mailing list, publish it on the Bitcoin repository on GitHub and invite the community to adopt it.
The client version that has grown through this process has come to be known as Bitcoin Core. Its source code is available on the repository on GitHub and it is downloadable from Bitcoin.org.
The Core software is the most secure and safe to implement, especially for someone who is not a knowledgeable Bitcoin developer. It is the product of the most experienced Core developers and it is the most peer-reviewed of all the Bitcoin clients.
However, several Bitcoin Core alternatives exist.
1. Bitcoin Knots
Core developer Luke Dashjr released this client in 2011 and he has remained its primary maintainer. At first, Bitcoin Knots primarily retained features that were dropped from the Core software. It also incorporated most features that Core rejected or that took too long to implement.
The fact that Bitcoin Knots is maintained by one person makes it less secure than Core. It is also larger in size and requires more resources to download, install and run. Bitcoin Knots is the only other client besides Core, however, that is downloadable from Bitcoin.org.
The main unique characteristic of the BTCD alternative full node implementation (written as a replacement for bitcoind, the second client in the network’s history) is that it is coded in the Go (golang) programming language. Also, unlike Bitcoin Core, it comes without a native wallet for sending and receiving bitcoins. Wallet functionality is offered on separate applications by the same developers.
This client is written in C++ and is more of a toolkit library for building Bitcoin applications. Several major entities within the space use the Libbitcoin implementation. These include the decentralized marketplace Open Bazaar as well as the wallet services Airbitz and Dark Wallet.
On its official website, the founders declare that they started the project based on principles of privacy, scalability and integrity. The software is downloadable from the official project website as well as its GitHub repository.
This client implementation is Java based and was coded and released by Mike Hearn in 2011 while he worked at Google as a software engineer. It is run as an open-source project and many developers contribute to its maintenance.
BitcoinJ supports simplified payment verification (SPV), making it a lightweight client. This makes it possible to join the Bitcoin network using devices that are limited in resources.
5. Your version
Because bitcoin is an open-source project that works on a peer-to-peer network, you could also choose to code your own Bitcoin client. Why would you want to do this, you might ask? If you have the necessary skills, time and resources, you could—like the developers mentioned above—design your own personalized and customized user interface with execution features that serve specific needs.
Be sure your client executes the same rules outlined in the Bitcoin protocol so it doesn’t launch as a hard fork. Also be aware that you may end up with more bugs in a self-developed client than you would in a peer-reviewed one.