Bitcoin is an open-source protocol that secures a monetary network worth over $1 trillion. Over 100 million users trust it to safeguard their savings and process transactions. But how can it be trusted to remain secure? If nobody owns the Bitcoin project, then who is working on the software to protect users against bugs?
In this article, we explain what is Bitcoin Core and how it keeps Bitcoin running smoothly.
Bitcoin Core is the main implementation of Bitcoin’s software, meaning it defines the protocol and acts as a standard for the network as a whole. It is the original and most widely used Bitcoin client by an estimated 97% of the network. Bitcoin Core includes everything needed to participate in the Bitcoin network, whether by mining, transacting, or verifying transactions.
In this article, we explain what Bitcoin Core is and how it keeps Bitcoin running smoothly.
Is Bitcoin Core the Same as Bitcoin?
Bitcoin Core and Bitcoin are not the same as bitcoin is the cryptocurrency itself, while Bitcoin Core is the software that enables to use and distribution of this currency.
Who Started Bitcoin Core?
Satoshi Nakamoto didn’t originally refer to the software as “Bitcoin Core.” The term “Bitcoin Core” emerged later to distinguish between the original Bitcoin client and other software that emerged as the ecosystem grew. When Satoshi released the first version of the Bitcoin software in 2009, it was simply called “Bitcoin,” serving both as a wallet and as the network’s node software.
Bitcoin Core is thus the continuation of the original client Satoshi worked on, now maintained and developed by a group of contributors from around the world.
What Does Bitcoin Core Software Do?
Running Bitcoin Core means operating a full node, which includes validating transactions, maintaining a copy of the entire blockchain, and relaying transactions to other nodes. Operating a node enhances your privacy and strengthens the network.
➤ Learn more about full nodes.
There are several benefits to node operators, such as:
- Increased Privacy: Using Bitcoin Core allows you to verify your own transactions without relying on third-party services. This enhances your privacy by not disclosing information about your transactions and balances to others.
- Network Strength and Security: The more full nodes there are, the more decentralized and secure the network becomes. Each node acts as an authority on the validity of transactions and blocks, making it harder for malicious actors to compromise the network.
- Empowerment and Sovereignty: Running your own node gives you more control over your transactions. It aligns with the ethos of self-sovereignty that is central to Bitcoin.
Supporting the Ecosystem: Nodes help new users sync their software faster and more securely, contributing to the overall health and efficiency of the network.
Running Bitcoin Core on a node achieves the following:
- Validation: It validates transactions and blocks according to the Bitcoin protocol rules without relying on third parties.
- Wallet Functionality: Although primarily a node software, Bitcoin Core also includes a wallet functionality that allows users to send and receive bitcoin.
- Mining Support: It supports bitcoin mining, though most miners nowadays use specialized mining software that can work together with Bitcoin Core for block validation.
- Network Relay: Bitcoin Core relays transactions across the Bitcoin network, helping to propagate transactions and blocks.
You can download the latest Bitcoin Core version here.
Can I Earn Bitcoin With Bitcoin Core?
Although you can technically mine bitcoin with Bitcoin Core by integrating it with a personal mining setup, it’s not an efficient solution for large-scale or profitable mining.
➤ Learn more about bitcoin mining.
Originally, Bitcoin Core included a mining function that individuals could use to mine bitcoin directly on their computers. However, as bitcoin mining has become more competitive and specialized, this method has become largely impractical for earning rewards.
What is Bitcoin Core Development?
Bitcoin Core development is the process of maintaining and improving Bitcoin’s main software implementation, which is essential for the health and future of the Bitcoin network. When successful, as explained in this open letter, Bitcoin Core development achieves the following:
- Maintains network health: Bitcoin depends on the robustness of its network of node operators, miners, and users. Successful development maintains the ability of nodes, miners, and users to interact with the protocol as intended. For example, ongoing development can help ensure that Bitcoin Core can be run on new operating systems used today and in the future.
- Enhances performance: Substantial improvements have been made to increase network efficiency, reduce block download times, refine memory usage, and reduce CPU bottlenecks, making the Bitcoin protocol more user-friendly for both users and nodes.
- Preserves Bitcoin’s central features while making it accessible to more people: Successful Bitcoin development safeguards the network’s decentralization, security, and permissionless innovation. Without sacrificing these features, improvements have been made to increase its accessibility. For example, Bitcoin Core is now translated into dozens of languages to champion its use around the world.
While Bitcoin’s software has been updated continuously over its history, the underlying monetary attributes of the protocol are unlikely to change.
“The nature of Bitcoin is such that once version 0.1 was released, the core design was set in stone for the rest of its lifetime.” - Satoshi Nakamoto, June 17, 2010
How Does New Code Get Introduced to Bitcoin Core?
Since 2011, the Bitcoin Core repository has been hosted on Github, where the software can be downloaded, proposed improvements are reviewed, and updates are released. Bitcoin Core is an open-sourced software distributed under an MIT License, meaning that nobody owns the code or holds special rights over its distribution. Bitcoin Core can be used, copied, modified, scrutinized, and redistributed by anyone.
Due to its open-source nature, much of Bitcoin development occurs in public. Proposals to modify Bitcoin’s software undergo extensive review, scrutiny, and testing before being rejected or merged into the core repository.
Major changes to Bitcoin Core follow a formal process known as a Bitcoin Improvement Proposal (BIP). Smaller changes and patches to specific pieces of software follow their own project-specific development workflows and do not require a BIP.
➤ Learn more about Bitcoin Improvement Proposals
Once a proposed change has undergone sufficient review, testing, and has achieved rough consensus among the network, it is merged into the Bitcoin Core repository.
After a proposal has been merged, the implementation will be included in a future release of the Bitcoin Core software. Major releases occur every 6-7 months and are versioned as 22.0, 23.0, and so on. Maintenance releases, which are intermediary updates that fix bugs within major releases, are versioned as 22.1, 22.2, etc.
Importantly, even after a software release, nodes must choose to update their software for any changes to be reflected in the network. This is a crucial aspect of Bitcoin’s security: Because nodes do not automatically update, the network is less vulnerable to bugs and malicious code that could be introduced in new updates.
How Has Bitcoin Core Evolved?
In early 2009, the original release of Bitcoin v0.1, consisting of 26,221 lines of code, was shared with a cryptography mailing list. Since then, Bitcoin Core’s codebase has expanded to over 750,000 lines. This is in addition to thousands of lines that have been deleted, and thousands of proposed changes that were never implemented.
Most of the code added since 2009 is not essential for running the network but enhances safety, readability for developers, and user accessibility.
- Base code is the fundamental code that nodes, miners, and other network participants use to interact with the protocol.
- Dependencies are a minimum number of well-maintained external tools that Bitcoin uses. The primary dependencies include LevelDB, a data storage library developed by Google, and secp256k1, a method to generate public and private keys to control access to your bitcoin.
- Localization represents the translated versions of Bitcoin Core into dozens of languages, taking up nearly half of the existing codebase. Many of these translations are complete, and others are partial.
- Tests are crucial for ensuring the reliability of Bitcoin’s features. As the codebase grows, new features introduce combinations that need extensive testing to prevent any functionality from breaking.
- Documentation helps developers understand the purpose and functionality of various parts of the code, making it easier to maintain and improve Bitcoin.
Who Controls Bitcoin Core?
The maintenance and development of Bitcoin Core is a collaborative effort from volunteer contributors called Core developers. There are no qualifications or restrictions to being a Core developer.
Once a change has received acceptance, a few individuals who serve as maintainers of the code integrate the changes. These individuals are trusted not to arbitrarily integrate code that the community has not approved.
The primary maintainer role involves managing the GitHub repository, reviewing code submissions, and coordinating releases. In addition to the core maintainers, a wider community of contributors submit patches, improve documentation, find bugs, and suggest features.
If maintainers breach their trust, they will not compromise anyone’s existing node and the old Bitcoin Core code can be easily restored by ignoring the malicious changes. Thus, the role of Bitcoin Core maintainer carries respect but very little power or influence.
What if Something Happened to GitHub or Bitcoin Core?
Bitcoin’s software does not depend on Bitcoin Core or GitHub for the network to run properly. Today, GitHub is simply what developers have chosen to use for easy coordination, but they could switch platforms at any time. Likewise, Bitcoin operates with various software implementations, not just Bitcoin Core, allowing node operators to choose their preferred version. These different implementations interact with one another to form a single, cohesive network, similar to how different internet browsers all access the same internet despite their differences.
Despite the variety, all implementations must adhere to core transaction and block validity rules to maintain consensus across the network. Bitcoin Core, being the original and most popular, serves as the reference for others, setting the standards and guiding the development of alternative versions.
Who Funds Bitcoin Core Development?
Over Bitcoin’s lifetime, over 1,000 developers have contributed to the project. Roughly 50 contributions have occurred per week over the past four years. Who pays for all of this development?
In Bitcoin’s early years, most development occurred on a voluntary basis, with little commercial interest in funding Bitcoin at a large scale. Today, many developers are employed by or receive grants from various organizations, foundations, and corporations committed to sustaining Bitcoin’s future. These include Blockstream, Brink, Chaincode Labs, the Human Rights Foundation, MIT’s Digital Currency Initiative, and OpenSats. Importantly, these organizations typically grant developers the freedom to choose what to work on.
How To Get Started as a Bitcoin Core Developer
While there is no predefined path to becoming a Bitcoin developer, there are plenty of resources available to help aspiring developers get started.
- The Bitcoin Development Mailing List, Monthly PR Review Club, and Optech Newsletter are great ways to engage with ongoing development.
- Base58, Chaincode Labs, and Mastering Bitcoin are in-depth curriculums for aspiring Bitcoin developers.
- In-person BitDevs meetups are available in many larger cities.
- Other resources include the BitcoinWiki and Jameson Lopp’s list of Technical Resources.
For those ready to get started, guidelines for contributing are provided here.
Key Takeaways
- Bitcoin Core is the most popular software used to connect to the Bitcoin network and run a node.
- Bitcoin Core is open source software, meaning anyone can view, copy and propose upgrades.
- Changes to Bitcoin Core only occur with consensus from the network.