How bitcoin is put together
Bitcoin Core is the reference implementation of the Bitcoin peer-to-peer network node: it downloads and fully validates blocks and transactions, maintains a mempool and UTXO set, and optionally provides a wallet and GUI. The core is a large C++20 codebase under src/, built with CMake (with a legacy 'depends' system for reproducible third-party builds), exposing three user-facing interfaces: the P2P network protocol (net.cpp/net_processing.cpp), an HTTP JSON-RPC server (httpserver.cpp/httprpc.cpp), and a REST interface (rest.cpp). Data flow: inbound network messages are validated against consensus rules, accepted transactions enter txmempool, blocks persist to flat files plus LevelDB-backed indexes, and clients interact through the HTTP servers or CLI utilities (bitcoin-cli, bitcoin-tx, bitcoin-wallet). Supporting tooling is written in Python (CI lint, functional tests, RPC auth generation, binary security checks), with small Rust helper programs for deterministic coverage analysis.
Languages
Frameworks
Datastores
Infrastructure
Major components
P2P networking
Manages peer connections, message serialization, address management (addrman), bans, Tor/I2P control, and headers sync (net.cpp, addrman.cpp, i2p.cpp, torcontrol.cpp, headerssync.cpp).
Consensus & validation
Implements chain parameters, proof-of-work, script/signature verification via libsecp256k1, merkle blocks, block filters, and mempool acceptance rules (chainparams.cpp, pow.cpp, blockfilter.cpp, txmempool.cpp, cluster_linearize.h).
HTTP/RPC/REST servers
Exposes the JSON-RPC API with authentication (httprpc.cpp), an unauthenticated REST interface (rest.cpp), and the underlying libevent HTTP server (httpserver.cpp).
Wallet & signing
Key handling, output types/address encoding (base58/bech32), PSBT construction, MuSig2 support, and external signer integration (key.cpp, key_io.cpp, psbt.cpp, musig.cpp, external_signer.cpp).
Cryptography & randomness
Hashing primitives, BIP324 encrypted transport, secure random number generation seeded from the environment (hash.cpp, bip324.cpp, random.cpp, randomenv.cpp).
Storage layer
Wraps LevelDB for persistent state (coins/txindex/addrdb) and manages append-only flat block files (dbwrapper.cpp, txdb.cpp, addrdb.cpp, flatfile.cpp).
Build & dependency system
CMake-based build with presets and per-dependency modules, plus the 'depends' system for reproducible cross-compilation of third-party libraries (CMakeLists.txt, cmake/*.cmake, depends/Makefile).
QA, CI & release tooling
Linting, functional/regression tests in Python, deterministic fuzz/unit-test coverage tools in Rust, Guix binary security checks, and release signing infrastructure (ci/, test/, contrib/devtools, contrib/guix/security-check.py).
A quieter week centered on merging queued fixes for PSBT merging, MuSig2 descriptors, HTTP connection limits, and block weight accounting, alongside continued test cleanups.
5 weeksWeek of 2026-08-24
Week of 2026-08-24latest
A quieter week centered on merging queued fixes for PSBT merging, MuSig2 descriptors, HTTP connection limits, and block weight accounting, alongside continued test cleanups.
Week of 2026-08-17
The busiest recent week (58 commits) shipped mempool-based fee estimation, wallet signing refactors, Windows thread naming, and many dependency and test updates.
Week of 2026-08-10
Work targeted disk efficiency in txindex, orphan transaction handling in peer networking, wallet RPC additions like derivehdkey, and library subtree updates.
Week of 2026-08-03
A large week (110 commits) advanced release prep for v32.0, fixed listreceivedby* reporting, hardened HTTP request handling, and cleaned up wallet internals.
Week of 2026-07-27
Focus fell on code hygiene (constexpr and naming conventions), early rejection of disallowed RPC clients, GUI migration options, and cross-platform IPC support.
Over the past month, Bitcoin Core development focused heavily on hardening the PSBT and wallet tooling (fixing duplicate keys, MuSig2 handling, and xpub preservation), improving fee estimation by introducing a mempool-based estimator, and a steady stream of test, fuzz, and refactoring work to make the codebase more reliable. Networking and RPC received security-minded fixes such as limiting HTTP clients and rejecting disallowed connections early. Release preparation for v32.0 also began, including translation string freezes.
Week by week
2026-08-24A quieter week centered on merging queued fixes for PSBT merging, MuSig2 descriptors, HTTP connection limits, and block weight accounting, alongside continued test cleanups.latest6 changes
Fix
PSBT merge fixes
Merged changes that avoid duplicate taproot leaf script keys when combining PSBTs and preserve global xpubs and proprietary fields in joinpsbts.
Fix
MuSig2 descriptor corrections
Fixed duplicate key checks in musig() descriptors and doubled PSBT origin paths, plus stopped aborting on invalid MuSig2 derivations.
Feature
HTTP client connection limit
Added a cap on connected remote HTTP clients to prevent resource exhaustion.
Fix
Block weight comparison fix
Corrected a bug where non-adjusted chunk weight was compared against the block weight limit.
Chore
Index crash test improvements
Made index crash tests check saved state and removed approximate float comparisons in favor of exact ones.
Refactor
Test framework modernization
Removed deprecated SetMockTime aliases and switched tests to use FakeNodeClock instead of manual time mocking.
2026-08-17The busiest recent week (58 commits) shipped mempool-based fee estimation, wallet signing refactors, Windows thread naming, and many dependency and test updates.6 changes
Feature
Mempool-based fee estimation
Introduced fee estimation based on the mempool to reduce overestimation of transaction fees.
Fix
PSBT duplicate key prevention
Avoided duplicate global xpub keys when merging PSBTs, complementing later taproot leaf fixes.
Chore
Windows thread names
Set operating-system-level thread names on Windows so debugging tools can identify threads.
Refactor
Wallet signing API cleanup
Updated SignPSBTInput to return a structured error type instead of an ambiguous 'Ok' state.
Fix
GUI command parsing fix
Fixed an out-of-bounds read in RPCParseCommandLine when given an empty command.
Chore
Release string freeze
Prepared the 'translation string freeze' step for the upcoming v32.0 release.
2026-08-10Work targeted disk efficiency in txindex, orphan transaction handling in peer networking, wallet RPC additions like derivehdkey, and library subtree updates.6 changes
Refactor
Smaller txindex database
Hashed index keys and packed block positions to reduce the transaction index's disk usage.
Fix
Orphan reconsideration on mining
Peer networking now reconsiders orphaned transactions when their previously missing inputs get mined.
Feature
derivehdkey RPC
Added a wallet RPC to obtain an extended public key at an arbitrary derivation path.
Refactor
Faster gettxspendingprevout
Removed quadratic work from the RPC and preserved result ordering.
Docs
I2P ElGamal sunset note
Documented the deprecation of I2P's legacy ElGamal encryption for users.
Chore
Crypto library updates
Updated the bundled secp256k1 and minisketch subtrees to their latest upstream versions.
2026-08-03A large week (110 commits) advanced release prep for v32.0, fixed listreceivedby* reporting, hardened HTTP request handling, and cleaned up wallet internals.6 changes
Fix
listreceivedby* accuracy
Excluded addresses the wallet only sends from (not owns) from received-by-address reports.
Fix
HTTP busy-client guard
Stopped parsing new requests from a client already processing one, preventing overload issues.
Chore
v32.0 translations opened
Prepared the 'Open Transifex translations' step for the v32.0 release cycle.
Fix
Windows UTF-8 cleanup
Removed deprecated codecvt usage in favor of UTF-8 narrow APIs on Windows.
Fix
Descriptor range overflow guard
Prevented counter overflow when deriving large descriptor ranges via RPC.
Refactor
Unique inventory processing
Peer networking now processes only unique transaction inventory announcements, cutting redundant work.
2026-07-27Focus fell on code hygiene (constexpr and naming conventions), early rejection of disallowed RPC clients, GUI migration options, and cross-platform IPC support.6 changes
Fix
Early RPC allowlist checks
Connections are now checked against rpcallowip immediately upon acceptance rather than after reading requests.
Feature
Wallet migration skip option
The GUI gained an option to not load the wallet automatically after a migration.
Feature
Non-Unix IPC support
Added inter-process communication support for non-Unix platforms.
Fix
Empty addnode values ignored
Init and RPC now ignore empty addnode entries instead of misbehaving.
Fix
Null mempool on chainstate deletion
Kernel code now safely handles a null mempool pointer during chainstate deletion.
Refactor
Constexpr modernization
Swept the codebase replacing static const/constexpr patterns with inline constexpr in headers.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required