← All reportsPublic report

bitcoin/bitcoin

Bitcoin Core integration/staging tree

90k stars C++ View on GitHubprofiled 14d ago
Try GitZoid
400PRs this week
44Contributors
0Deps scanned
0Issues found
01 · Repo overview

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

C++PythonRustCMakeShell

Frameworks

Boost.Test (unit tests)libevent-based HTTP server (src/httpserver.cpp)LevelDB wrapper (dbwrapper.cpp)Qt GUI (optional, per README)CMake presets/CTest

Datastores

LevelDB (chainstate/txindex/block indexes via dbwrapper)Flat-file block storage (flatfile.cpp)

Infrastructure

Guix reproducible builds (contrib/guix)NSIS Windows installer (share/setup.nsi.in)Multi-platform CI (Windows/Linux/macOS per README)Transifex translation pipeline (.tx/config)vcpkg manifest (vcpkg.json)

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).

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.

03 · Security check

Dependencies and code review

0 dependencies scanned

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