Bitcoin Core is a critical open-source project that serves as a full Bitcoin client and wallet, managed by a large community of contributors. It is primarily written in C++ and focuses on security, stability, and community collaboration. The project is highly active, with significant recent efforts in improving build systems, test reliability, and wallet functionality.
fanquake
hebasto
MarcoFalke
willcl-ark
TheCharlatan
tdb3
furszy
brunoerg
vasild
0xB10C
instagibbs
dergoegge
Jeremy Rand
andremralves
Timespan | Opened | Closed | Comments | Labeled | Milestones |
---|---|---|---|---|---|
7 Days | 13 | 7 | 41 | 2 | 2 |
30 Days | 44 | 38 | 131 | 16 | 2 |
90 Days | 163 | 118 | 621 | 62 | 4 |
1 Year | 345 | 198 | 1709 | 113 | 4 |
All Time | 8295 | 7926 | - | - | - |
Like all software activity quantification, these numbers are imperfect but sometimes useful. Comments, Labels, and Milestones refer to those issues opened in the timespan in question.
Developer | Avatar | Branches | PRs | Commits | Files | Changes |
---|---|---|---|---|---|---|
MarcoFalke | 1 | 0/0/0 | 5 | 35 | 266 | |
Hodlinator | 1 | 1/2/0 | 10 | 7 | 238 | |
Matias Furszyfer | 1 | 5/1/0 | 3 | 2 | 68 | |
fanquake | 2 | 4/2/0 | 4 | 9 | 43 | |
Hennadii Stepanov | 1 | 8/7/0 | 4 | 8 | 20 | |
tdb3 | 1 | 1/1/0 | 1 | 1 | 10 | |
Reproducibility Matters | 1 | 3/3/0 | 1 | 1 | 9 | |
b10c | 1 | 2/1/0 | 1 | 1 | 7 | |
Gregory Sanders | 1 | 2/1/0 | 1 | 1 | 6 | |
Jeremy Rand | 1 | 0/0/0 | 2 | 2 | 6 | |
Will Clark | 1 | 3/1/1 | 2 | 2 | 5 | |
Bruno Garcia | 1 | 1/1/0 | 2 | 1 | 4 | |
André Alves | 1 | 0/0/1 | 1 | 1 | 4 | |
Vasil Dimov | 1 | 2/1/0 | 1 | 1 | 2 | |
Niklas Gögge | 1 | 2/2/0 | 1 | 1 | 2 | |
Pieter Wuille (sipa) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (TinFe) | 0 | 1/0/1 | 0 | 0 | 0 | |
Victor Hugo (wfzyx) | 0 | 1/0/0 | 0 | 0 | 0 | |
Gloria Zhao | 0 | 2/0/0 | 0 | 0 | 0 | |
l0rinc (l0rinc) | 0 | 1/2/1 | 0 | 0 | 0 | |
Damarcus Jones (Xlabjun) | 0 | 2/0/2 | 0 | 0 | 0 | |
None (maflcko) | 0 | 12/6/1 | 0 | 0 | 0 | |
Suriyaa Sundararuban (suriyaa) | 0 | 1/0/1 | 0 | 0 | 0 | |
Ava Chow | 0 | 2/1/0 | 0 | 0 | 0 | |
Antoine Poinsot (darosior) | 0 | 1/0/0 | 0 | 0 | 0 | |
Sebastian Falbesoner (theStack) | 0 | 1/1/0 | 0 | 0 | 0 | |
Martin Zumsande (mzumsande) | 0 | 2/0/0 | 0 | 0 | 0 | |
Ryan Ofsky | 0 | 1/0/0 | 0 | 0 | 0 | |
None (EMOTICON-1) | 0 | 1/0/1 | 0 | 0 | 0 | |
None (JeremyRand) | 0 | 2/2/0 | 0 | 0 | 0 | |
Skylar Ray (sky-coderay) | 0 | 1/0/1 | 0 | 0 | 0 | |
Edil Medeiros (edilmedeiros) | 0 | 0/0/1 | 0 | 0 | 0 | |
Abubakar Sadiq Ismail (ismaelsadeeq) | 0 | 1/0/0 | 0 | 0 | 0 | |
yancy (yancyribbens) | 0 | 0/0/1 | 0 | 0 | 0 | |
None (joaopauloriul) | 0 | 1/0/1 | 0 | 0 | 0 | |
Brandon Odiwuor (BrandonOdiwuor) | 0 | 1/0/0 | 0 | 0 | 0 | |
None (Princeprince559) | 0 | 1/0/1 | 0 | 0 | 0 |
PRs: created by that dev and opened/merged/closed-unmerged during the period
Risk | Level (1-5) | Rationale |
---|---|---|
Delivery | 3 | The project faces a moderate delivery risk due to an increasing backlog of unresolved issues, as evidenced by the fact that more issues are being opened than closed over various timespans. For instance, in the past year, 345 issues were opened versus 198 closed. This trend suggests potential delays in achieving project goals if the backlog is not addressed. Additionally, while there are ongoing efforts to improve code efficiency and address specific technical challenges (e.g., PR#31439 and PR#31444), underlying complexities remain unresolved, indicating potential technical debt that could impact delivery timelines. |
Velocity | 3 | The project's velocity risk is moderate. While there is active development with multiple contributors involved, the concentration of changes by a few key individuals like MarcoFalke and Hodlinator could lead to bottlenecks if these contributors become unavailable. The high volume of discussions per issue and extensive pull request activities suggest active engagement but may slow down resolution times. Additionally, the presence of CI failures in some pull requests indicates areas for improvement in testing and integration processes, which could affect overall development speed. |
Dependency | 3 | Dependency risks are moderate, highlighted by issues such as #31456 discussing the switch from MSVC to clang for Windows builds due to compile failures and non-optimized code generation. Additionally, platform-specific build process challenges (e.g., issue #31455) and reliance on certain file systems (e.g., exFAT on macOS in issue #31454) pose potential risks that need careful management to ensure build reliability across environments. |
Team | 2 | The team risk is relatively low, as there is a diverse group of contributors actively engaging in discussions and resolving issues. However, the concentration of significant contributions among a few developers could pose a risk if these key individuals become unavailable. The team's collaborative dynamics appear strong, with frequent code reviews and merges involving members like achow101 and glozow, suggesting a healthy team environment despite potential bottlenecks. |
Code Quality | 3 | Code quality risk is moderate. While there are ongoing efforts to improve code efficiency and clarity (e.g., PR#31439 simplifying reindexing processes), unresolved architectural complexities suggest potential technical debt. The high volume of changes by certain developers could either improve or degrade code quality depending on the nature of those changes. Additionally, data corruption issues on macOS when using exFAT (#31454) present risks to data integrity. |
Technical Debt | 3 | Technical debt risk is moderate due to ongoing efforts to optimize existing components without major shifts in project direction. While improvements such as PR#31439's reindexing process simplification help reduce complexity, underlying architectural complexities remain unresolved. The focus on incremental improvements and maintenance tasks suggests steady progress but also highlights areas where comprehensive solutions are needed. |
Test Coverage | 2 | Test coverage risk is relatively low due to proactive efforts to expand and refine testing frameworks. PR#31460's expansion of script verification tests for Segwit v0 and Tapscript demonstrates a commitment to ensuring robust test coverage. However, intermittent test failures reported in issues #30674 and #29643 indicate potential gaps that need addressing to maintain comprehensive test coverage. |
Error Handling | 2 | Error handling risk is relatively low, with ongoing improvements noted in several areas. For instance, PR#31453 introduces a warning mechanism for using exFAT on macOS to prevent data corruption through early detection and user alerts. The project's robust error handling strategies in network interactions (as seen in src/net_processing.cpp) further mitigate risks associated with unexpected scenarios. |
Recent activity in the Bitcoin Core GitHub repository shows a focus on addressing build system issues, improving test reliability, and enhancing wallet functionality. Notably, several issues involve intermittent test failures and build complications across different operating systems, indicating ongoing efforts to stabilize and optimize the development environment.
Build System Complications: Several issues (#31050, #30978) highlight challenges with building Bitcoin Core on macOS, particularly related to dependencies like Qt and LLVM. These issues suggest a need for better dependency management and compatibility testing across platforms.
Intermittent Test Failures: Multiple issues (#30674, #29643) report intermittent test failures, often related to specific configurations or environments (e.g., ThreadSanitizer on Ubuntu 24.04). This indicates a need for more robust testing frameworks or environment-specific adjustments.
Wallet Functionality Enhancements: Issues like #30175 propose enabling legacy import commands in descriptor wallets, reflecting ongoing efforts to enhance wallet usability and compatibility with existing workflows.
Resource Usage and Performance: Discussions around resource usage (#29386) and performance improvements (#29098) suggest a focus on optimizing Bitcoin Core's efficiency, particularly in handling large transaction volumes or complex wallet operations.
Security and Privacy Concerns: Issues such as #29285 propose policy changes to enhance security by disallowing certain transaction types from relaying by default. This reflects a proactive approach to maintaining network integrity.
Feature Requests and Enhancements: Several issues propose new features or enhancements, such as a broadcast pool (#30471) or improved fee estimation methods (#30392), indicating active community engagement in shaping Bitcoin Core's future capabilities.
#31456: Created 0 days ago; Priority: High; Status: Open
#31455: Created 0 days ago; Priority: Medium; Status: Open
#31454: Created 0 days ago; Priority: High; Status: Open
#31447: Created 1 day ago; Priority: Medium; Status: Open
#31446: Created 1 day ago; Priority: Low; Status: Open
#31436: Created 4 days ago; Priority: Medium; Status: Open
-D_GLIBCXX_DEBUG
.#31426: Created 5 days ago; Priority: Low; Status: Open
-noconnect=0
leading to unexpected behavior.#31409: Created 7 days ago; Priority: Medium; Status: Open
#31388: Created 12 days ago; Priority: Low; Status: Open
These issues reflect a diverse range of challenges and opportunities within the Bitcoin Core project, from technical debt and platform-specific quirks to strategic feature development and community-driven enhancements.
#31460: fuzz: Expand script verification flag testing to segwit v0 and tapscript
BaseSignatureChecker
.#31458: build: use -mbig-obj
for mingw-w64 builds
-mbig-obj
to compile flags.#31453: util: detect and warn when using exFAT on MacOS
#31452: wallet: Migrate non-HD keys to combo() descriptor
#31449: coins,refactor: Reduce getblockstats
RPC UTXO overhead estimation
getblockstats
RPC.#31448: fuzz: add cstdlib to FuzzedDataProvider
cstdlib
.#31396: test: simple reordering to reduce run time
#31395: build: Set shared linker flags in toolchain file
#31391: util: Drop boost posix_time in ParseISO8601DateTime
#31390: Remove src/config
directory
src/test/fuzz/FuzzedDataProvider.h
#ifndef
, #define
, #endif
) to prevent multiple inclusions, which is a standard practice in C++ header files.<vector>
, <string>
, and <cstdint>
.FuzzedDataProvider
class is well-structured, providing a variety of methods to consume data in different forms (e.g., bytes, strings, integers). This design is flexible and caters to various fuzzing needs.ConsumeIntegralInRange
.if constexpr
for compile-time checks instead of runtime assertions where applicable. This can improve performance and readability.src/wallet/wallet.cpp
LOCK
, WAIT_LOCK
) indicates careful consideration of thread safety, which is crucial in a multi-threaded environment like a cryptocurrency wallet.test/functional/wallet_migration.py
test/functional/combine_logs.py
ci/test/00_setup_env_native_tidy.sh
CI_IMAGE_NAME_TAG
, CONTAINER_NAME
).src/core_read.cpp
src/util/bitset.h
src/httpserver.cpp
src/index/base.cpp
fanquake:
achow101:
furszy:
hodlinator:
glozow:
ryanofsky:
brunoerg:
vasild:
hebasto:
willcl-ark:
MarcoFalke:
0xB10C:
instagibbs:
dergoegge:
tdb3:
TheCharlatan:
Jeremy Rand:
andremralves: