§ 16 · III Advanced · Advanced · 9 min
Bitcoin Development
Bitcoin Core development process. Bitcoin Improvement Proposals (BIPs). How to contribute. Understanding the codebase. Testing and code review.
Contributing to Bitcoin Core and the open-source ecosystem.
Sections 15–21 are technical. Each was drafted with Claude at Marius's direction and approved by Marius.
~850
Contributors
36,000+
Commits
100+
BIPs
0
Owners
Bitcoin Core Development: How Bitcoin's Protocol Actually Evolves
Bitcoin Core development is one of the most scrutinised, slowest-moving, and most conservative open-source projects in existence — deliberately so. When the protocol that secures hundreds of billions of dollars in value changes, every line of code matters. Understanding how Bitcoin Core development works explains why Bitcoin is so slow to change, and why that slowness is a feature, not a bug.
The Development Process
Bitcoin Core development happens entirely in the open on GitHub (github.com/bitcoin/bitcoin). The process:
- Proposal: A developer opens a Pull Request (PR) with code changes
- Review: Other developers review the code, test it, and leave comments — this process can take months or years
- ACK / NACK: Reviewers signal approval (ACK) or rejection (NACK) — there's no formal voting, only accumulated consensus
- Merge: A maintainer merges the PR only when sufficient review and consensus exists
- Release: Changes are bundled into a new Bitcoin Core release
Who Controls Bitcoin Core?
No one and everyone. There are a small number of "maintainers" with merge access to the repository — but they cannot push anything without community review. And even if they merged something controversial, node operators worldwide would simply not upgrade. The real power in Bitcoin development is not held by developers but by full node operators who choose which software to run.
"Bitcoin Core maintainers are janitors, not kings. They clean up the repository. They don't control the protocol." — Bitcoin development community saying
Want to go deeper?
Bitcoin Improvement Proposals (BIPs): How Protocol Changes Are Documented
A Bitcoin Improvement Proposal (BIP) is a design document that describes a proposed change to Bitcoin's protocol, process, or standards. BIPs are the formal mechanism through which Bitcoin evolves — not through backroom deals or corporate roadmaps, but through publicly documented, peer-reviewed proposals that anyone can read, comment on, and evaluate.
The BIP Process
- Author writes a BIP document describing the proposed change, motivation, and technical specification
- BIP is submitted to the BIPs repository (github.com/bitcoin/bips) for numbering and initial review
- Community discusses the BIP — developers, researchers, miners, node operators all contribute
- If accepted, the change is implemented in Bitcoin Core and potentially other software
- Deployment mechanisms (soft fork activation) are defined — users and miners signal readiness
The Lifecycle of a BIP
Famous BIPs
| BIP # | Name | Year | Status | Significance |
|---|---|---|---|---|
| BIP 32 | HD Wallets | 2012 | Final | Derives all wallet keys from a single seed — enables backup via 12/24 words |
| BIP 39 | Mnemonic Seeds | 2013 | Final | The 12/24-word seed phrase standard used by virtually every wallet today |
| BIP 141 | SegWit | 2017 | Final (Active) | Fixed transaction malleability; enabled Lightning Network; increased effective block capacity |
| BIP 174 | PSBT | 2019 | Final | Partially Signed Bitcoin Transactions — standard for hardware wallet interoperability |
| BIP 340–342 | Taproot / Schnorr | 2021 | Final (Active) | Schnorr signatures (BIP 340), Tapscript (BIP 342) — improved privacy, signature aggregation |
"BIPs are Bitcoin's constitution in practice — proposals that succeed only if the community chooses to adopt them, not because any authority mandated it." — Bitcoin development philosophy
Want to go deeper?
Bitcoin Core's C++ Codebase: What's Under the Hood
Bitcoin Core is written primarily in C++ — a language chosen for its performance, control over memory, and long-term stability. The codebase has evolved significantly since Satoshi's original code, but maintains backward-compatible consensus behaviour. Understanding the structure of Bitcoin Core's codebase helps developers navigate, review, and contribute to the project.
Codebase Structure
| Directory | Purpose | Key Files |
|---|---|---|
| src/ | Core application logic and entry points | main.cpp, bitcoind.cpp |
| src/consensus/ | Most critical: defines valid blocks and transactions. Most heavily reviewed code. | consensus.h, tx_verify.cpp |
| src/net/ | P2P networking: peer discovery, block relay, transaction broadcast | net.cpp, net_processing.cpp |
| src/wallet/ | Key management, UTXO tracking, transaction building and signing | wallet.cpp, spend.cpp |
| test/ | Unit tests and functional tests — running these is the first step for new contributors | test_bitcoin.cpp, feature_*.py |
Getting the Code: Clone & Build
To explore or contribute to Bitcoin Core, start by building from source:
# Clone the Bitcoin Core repository
git clone https://github.com/bitcoin/bitcoin.git
cd bitcoin
# Install dependencies (Ubuntu/Debian)
sudo apt-get install build-essential cmake pkg-config \
libevent-dev libboost-dev libsqlite3-dev
# Configure and build
cmake -B build
cmake --build build -j$(nproc)
# Run the test suite (verify your build is clean)
ctest --test-dir build -j$(nproc)
Full build instructions: doc/build-unix.md in the repo.
Dependencies and Build System
Bitcoin Core uses CMake (switching from autotools in recent versions) for its build system. Key dependencies include: libsecp256k1 (Bitcoin's optimised elliptic curve library, also maintained by Bitcoin Core contributors), Boost, Berkeley DB (for legacy wallet), SQLite (for new descriptor wallets), and various cryptographic libraries.
"The Bitcoin Core codebase rewards patience. It is dense, well-commented in critical areas, and changes extremely carefully. That's by design." — Bitcoin developer observation
Want to go deeper?
Bitcoin's Consensus Rules: The Inviolable Laws of the Protocol
Bitcoin's consensus rules are the specific, exactly-defined criteria that every valid transaction and block must meet. Every full node on the network enforces these rules independently. No transaction or block that violates them can be part of the valid chain — regardless of who produced it, how much hash power backs it, or what any company or government wants. Understanding these rules is understanding Bitcoin at its deepest level.
Key Consensus Rules
- Block reward: Coinbase transaction cannot claim more than the subsidy + fees; violating this = invalid block
- 21 million supply: Enforced via the halving schedule — 21 million BTC hard cap in block reward rules
- Script validation: Every input script must satisfy the output script it's spending
- No double-spending: Each UTXO can only be spent once per valid chain
- Block size limits: 1MB base block size (4 million weight units with SegWit)
- Proof of Work: Block hash must be below the current target
- Timestamp rules: Blocks cannot be too far in the past or future
Consensus vs. Policy
Consensus rules are absolute. Policy rules (like default minimum fee rates for transaction relay) can vary between nodes and can be changed without a hard fork. Understanding this distinction explains why some "Bitcoin changes" are simply miner/node policy choices that don't require consensus, while others require network-wide coordination.
"Consensus rules are the constitution of Bitcoin. They define what Bitcoin is. Change them incorrectly and you have a different coin." — Bitcoin developer culture
Want to go deeper?
Contributing to Bitcoin Core: How to Get Involved
Bitcoin Core is an open-source project that welcomes contributions from developers worldwide. But contributing to the most security-critical financial infrastructure ever built is different from contributing to most open-source projects. The bar is high, the review process is thorough, and patience is required. Here's what you need to know.
Types of Contributions
- Code review — The most valuable contribution. Review open PRs, test them, leave thoughtful feedback. Consistent reviewers are highly valued.
- Bug reports — Detailed, reproducible bug reports are genuinely useful. Non-security bugs go to GitHub Issues; security bugs go to security@bitcoincore.org privately.
- Documentation — Improving developer documentation, RPC documentation, or the Bitcoin Core wiki helps onboard new contributors.
- Testing — Manual and automated testing of new releases, particularly Release Candidates, helps catch regressions.
- Code contributions — New features and bug fixes, following the contribution guidelines.
Getting Started as a New Developer
Recommended path for new Bitcoin Core contributors:
- Build Bitcoin Core from source — understand the codebase structure
- Run the test suite (unit tests, functional tests)
- Review existing PRs — start with small, self-contained changes
- Fix small bugs from the "good first issue" label
- Engage respectfully in code review discussions
"The best contribution to Bitcoin Core you can make right now is reviewing open PRs. There are always more PRs than reviewers." — Bitcoin Core contributor advice
Want to go deeper?
Key Takeaways
- Bitcoin Core development happens entirely in the open on GitHub — every change is publicly reviewed; no one can push code unilaterally.
- Bitcoin Improvement Proposals (BIPs) are the formal mechanism for documenting protocol changes — numbered, publicly reviewed, and freely readable by anyone.
- Bitcoin Core's C++ codebase separates consensus logic, networking, wallet, and RPC — the consensus layer is the most critically reviewed code.
- Consensus rules are absolute and enforced by every full node — changes require network-wide adoption, not just developer approval.
- The most valuable contribution to Bitcoin Core right now is reviewing open Pull Requests — there are always more PRs than reviewers.
Mark as read
Frequently Asked Questions
How do I contribute to Bitcoin Core?
Start by reading the Bitcoin Core contributor guidelines on GitHub. You can contribute through code review (the most needed skill), documentation, testing, bug reporting, or writing code. No permission is needed — Bitcoin is open source. Join the Bitcoin Core IRC channels to connect with other developers.
What programming language is Bitcoin written in?
Bitcoin Core is primarily written in C++. However, the Bitcoin ecosystem uses many languages: Rust (Lightning implementations, BDK), Python (testing, tools), Go (btcd alternative node), JavaScript (web wallets), and more. You don't need C++ to contribute to Bitcoin.
What is a BIP?
A BIP (Bitcoin Improvement Proposal) is the formal process for proposing changes to Bitcoin. Anyone can write a BIP. They go through community review, discussion, and if they change consensus rules, require broad agreement from node operators. Famous BIPs include BIP 141 (SegWit) and BIPs 340-342 (Taproot).
Continue Learning
See also: Bitcoin Glossary · Bitcoin History · Bitcoin Scripting
Further Reading
- Bitcoin development — lopp.net — Jameson Lopp's developer resources.
- Bitcoin Core on GitHub — Source code, issues, and pull requests.
- BIPs repository — All Bitcoin Improvement Proposals.
- Contributing to Bitcoin Core — Official contribution guidelines.
- Mastering Bitcoin (3rd Edition) — A. Antonopoulos & D. Harding — the definitive Bitcoin development reference (CC BY-SA 4.0).
- Bitcoin Developer Documentation — official Bitcoin protocol and API reference (MIT).
- Bitcoin Optech Topics Index — searchable index of Bitcoin technical topics (Public Domain).
- awesome-bitcoin — curated list of Bitcoin developer tools and resources (CC0).
Claude drafted this text at Marius's direction and did the research Marius asked for; Marius reviewed and corrected it until approving it. Earlier versions were also researched with Perplexity. References curated from: Jameson Lopp (PD) · Mastering Bitcoin by A. Antonopoulos & D. Harding (CC BY-SA 4.0) · Blockchain Commons (CC BY 4.0) · developer.bitcoin.org (MIT) · Bitcoin Optech (PD).
Help Improve This Section
Have expertise on this topic? We welcome corrections, expansions, and translations. All content is CC BY-SA 4.0 licensed with full author credit. Suggested corrections are reviewed by Marius before anything goes live.
Email Your Contribution →