Most major cryptocurrencies, such as Bitcoin, Ethereum, and Litecoin, are based on open-source code. Anyone can access the code behind the blockchain, modify it, and release it as an alternative to the original. The released versions of these open-source projects are known as reference clients.
Reference clients are customized bits of software code written exactly according to specifications. This makes it possible for developers to refer to original clients when making modifications in their own custom versions. Such a point of referral is indispensable when coordinating developers’ work and contributions. Large cryptocurrencies usually have a go-to reference implementation, making it possible to obtain the personal client software necessary for running a node.
Reference Client Essentials
- A reference client is the standard implementation of a software project.
- It provides references for how things should work in the standard version.
- Open-source, decentralized blockchains use it as the base version of their code.
- A popular Bitcoin reference client is Bitcoin Core.
Coordinating open-source projects
A software development team normally has some form of hierarchical structure or leadership, and a vision for how their project should function. This allows them to create a work plan and set clear goals, as well as to focus on pressing issues when necessary.
However, when writing open-source software, such as Bitcoin’s original code, there is no single leader, enabling anyone to change it as they see fit. Someone might feel that it would be good to increase the block size, while someone else might prefer for it to stay as it is and focus on troubleshooting instead.
No matter what is changed, though, these changes cannot take effect unless a large enough portion of the blockchain network makes the exact same change (see our article on forks to see how changes are introduced into a blockchain). It is therefore essential to have a way of reaching agreement between developers, so they can introduce crucial updates. They can achieve this by focusing on the development of the reference client.
Cryptocurrencies have several reference clients
Reference clients are often stored in cloud-based repositories, such as GitHub, which allow any developer to submit code and track changes.
Bitcoin reference clients
One of the most popular and widely-used reference clients for Bitcoin is Bitcoin Core, the descendant of the original Satoshi client (named after the father of Bitcoin, Satoshi Nakamoto). Hosted by bitcoin.org, this reference client forms the backbone of essential Bitcoin updates.
Sometimes a group of developers with a different vision chooses to make a drastic change in the reference client’s source code, forcing the reference client to fork. Forks from Bitcoin Core include Bitcoin XT, Bitcoin Unlimited, and Bitcoin Classic. Classic did not stand the test of time, while the rest stopped supporting Bitcoin and now serve as clients primarily for Bitcoin Cash.
Reference clients built from the ground up
Unlike XT or Unlimited, which started as forks from another client, some reference clients are created from scratch. While this is certainly true for the original Satoshi client, Ethereum, for instance, also has several custom-made reference clients written in a number of different programming languages. The Go Ethereum project, or Geth, provides a client written in Google’s Golang programming language, Parity uses Rust, cpp-ethereum uses C++, and so on.
Evolution of cryptocurrency blockchains
Having a standard client implementation is vital for open-source projects such as crypto blockchains. Since everyone has access to the reference client, development is made easier and the already revolutionary technology receives upgrades that introduce essential improvements and resolve potential issues.
Running a client is the most direct way of accessing a blockchain. It allows you to become a true peer on the network by running your own node. But this is irrelevant if you do not actually own any cryptocurrency. The easiest way to get some coins is to trade them for traditional money at an exchange.