Bitcoin Magazine

The Core Issue: Beneath The Binary, Verifying Trust
When most people download Bitcoin Core, their interaction with the build system is over in a few clicks. They grab the executable binary of the software, verify a signature (hopefully!), and start running a Bitcoin node. What they immediately see is running software. What they donโt see is the build system and extensive processes that produced that software. A build system that represents Bitcoinโs principles of decentralization, transparency, and verifiability.
Behind that download lies years of engineering work designed to answer a simple question: โWhy should anyone trust this software?โ The answer is: you shouldnโt have to. You should be able to verify.
In a time when software supply-chain attacks make global headlines, from compromised npm packages, backdoored libraries, rogue CI servers, Bitcoin Coreโs build process stands as a quiet project of discipline. Its methods may seem slow and complicated compared to the frictionless convenience of โpush to deploy,โ but thatโs the point. Security isnโt convenient.
To understand Bitcoin Coreโs build system, we should understand:ย
- Bitcoin Coreโs Build System Philosophy
- Reproducible Builds
- Minimizing Dependencies
- No Auto-Updates
- Continuous Integration
- Ongoing Adaptation
Bitcoin Coreโs Build System Philosophy
When it comes to Bitcoinโs decentralization, most people focus on miners, nodes, and developers. But decentralization doesnโt stop at the protocolโs participants. It extends to the way the software itself is built and distributed.
One principle in the Bitcoin ecosystem is โdonโt trust, verify.โ Running your own node is an act of verification, checking every block and transaction against the consensus rules. But the build system itself gives you another opportunity to verify, at the software level. Bitcoin is money without trusted intermediaries and Bitcoin Core works to be software without trusted builders. The build system takes great lengths to ensure that anyone, anywhere, can independently recreate the exact same binaries that appear on the bitcoincore.org website.
This philosophy traces back to Ken Thompsonโs 1984 essay Reflections on Trusting Trust, which warned that even a clean-looking source code canโt be trusted if the compiler that built that software was itself compromised. Bitcoinโs developers took that lesson to heart. In the words of Bitcoin Core contributor Michael Ford (fanquake):
โReproducible builds are critical, because no user of our software should have to trust that whatโs contained inside is what we say it is. This must always be independently verifiable.โ
A statement that is both a technical goal and part of the Bitcoin ethos.
In the security world, people talk about โattack surfaces.โ Bitcoin Coreโs build system treats the build process itself as an attack surface to be minimized and defended.
Reproducible Builds: Verification all the way down
The process of producing a Bitcoin Core release begins with the open-source codebase on GitHub. Every change is public. Every pull request is reviewed. But the journey from human-readable code to runnable binary software involves compilers, third-party libraries, and operating-systems which are themselves potential vectors for tampering, backdoors, or errors.
โTrusted third parties are security holesโ โ Nick Szabo (2001)
To address these concerns, Bitcoin Core architected a build process pipeline using Guix, a package manager designed to create reproducible, deterministic software environments.
When a new Bitcoin Core release is tagged, multiple independent contributors build the binaries from scratch using Guix. Each builder works in an isolated environment that guarantees identical toolchains, compiler versions, and system libraries. If all builders produce identical-bit outputs they know the build is deterministic.
Contributors then cryptographically sign the resulting binaries and publish those signatures on a separate GitHub repository โguix.sigsโ that lists these attestations for each release of Bitcoin Core. Some builders are Bitcoin Core developers, but it is not a requirement as the attestation process is open to anyone from the public. In fact, many non-code-contributors regularly contribute signatures.
This process is known as reproducible builds, and it is the antidote to Thompsonโs โtrusting trust.โ It means anyone can take the open-source code, the same Guix environment, and independently confirm that the official binary matches what they built themselves. While reproducible builds can verify the software is a genuine representation of the softwareโs source code, the softwareโs correctness is left to processes around thorough testing and code review.
Most people will never perform a full compilation or check the Guix manifests or compare build hashes. They donโt need to. The existence of that infrastructure, and the people maintaining it, gives every user a foundation of earned confidence.ย
The official binaries on bitcoincore.org arenโt just โproduced by the Bitcoin Core maintainersโ. Theyโre the intersection of dozens of independent buildersโ outputs. What you eventually download is what everyone else built and verified to be authentic.
Itโs verification all the way down.
Minimizing Dependencies: Less to Trust
Reproducibility is one side of the equation. The other is minimizing what needs to be reproduced. Bitcoin Coreโs code is not the only code executed when running Bitcoin Core. Bitcoin Core also relies on external, third-party code and libraries to speed up development and productivity.
Over the past decade, Bitcoin Core developers have steadily stripped away these unnecessary and sometimes problematic third-party dependencies, like OpenSSL and MiniUPnP. Whether it is an external library or toolkit, these dependencies add complexity or import hidden assumptions. Projects like Boost and Libevent, once staples of Coreโs codebase, are gradually being phased out or replaced with simpler, self-contained alternatives.
Why? Because every dependency you inherit is a potential supply-chain risk. Itโs more code you didnโt write, donโt audit, and canโt fully control. Reducing dependencies makes the build system leaner, safer, and easier to verify.
Brink recently highlighted this effort in its โMinimizing Dependenciesโ blog post[1], noting that itโs not just a matter of simplicity, itโs about preserving the projectโs security and autonomy. Each removed dependency is one fewer external party the project must trust and one less potential for a backdoor.
The eventual goal is to produce fully static binaries: executables that contain everything they need to run, with no dynamic or runtime dependencies. This self-containment means no reliance on external libraries that could differ from one operating system to another.
In a world where most software grows heavier and more dependent on centralized package ecosystems, Bitcoin Core is moving in the opposite direction: toward minimalism and independence.
No Auto-Updates
In most modern software, users are shielded from decisions of what software version to update to, or decisions to update the software at all. You install an app, and it quietly and automatically updates itself to the latest versions in the background. While this is convenient, it is antithetical to Bitcoin Coreโs philosophy.
Bitcoin Core has never included automatic updates, and developers have said it never will. Automatic updates concentrate power. They create a single group that can push (potentially malicious) code to every node on the network. This is exactly the sort of centralized control Bitcoin was built to avoid. By requiring users to manually download, verify, and install new versions, Bitcoin Core reinforces individual responsibility and verifiable consent.
The build system and the lack of auto-updates are two halves of the same principle. Only the node runner decides what to run and can verify that the software that is run is authentic.
Continuous Integration: Move slow and fix things
In Silicon Valley, continuous integration and continuous deployment (CI/CD) are the hallmarks of agile software development. Ship fast. Iterate faster. Let automation do the rest.
Bitcoin Core takes a different approach. Its CI systems exist not to accelerate deployment but to safeguard integrity. Automated builds test consistency across platforms. Bitcoin Coreโs build system is designed to be agnostic to hardware and operating systems as much as possible. The project can build binaries for Linux, macOS, and Windows as well as for multiple architectures including x86_64, aarch64 (ARM), and even riscv64. The continuous integration system ensures this compatibility as well as software integrity by performing hundreds of tests for each proposed change.
The result is a culture where โcontinuous integrationโ means continuous testing, verification and security, not continuous innovation.
Move slow and fix things.
Ongoing Adaptation: Are we done yet?
The build system isnโt static. Developers continue to refine it by reducing dependencies, improving cross-architecture builds, and exploring a fully static build future with zero runtime dependencies.ย
While Bitcoin Coreโs build system strives for determinism, the build system itself cannot be static. The world it operates within is constantly shifting. Operating systems, compilers, libraries, and hardware architectures all change. Each new release of macOS or glibc, every deprecation of a compiler flag, or emerging CPU architecture introduces subtle incompatibilities that must be addressed. A build system that stood still would, over time, cease to build at all.
The paradox of reproducible builds is that they require continual evolution to remain reproducible. Developers must constantly pin, patch, and sometimes replace toolchains to preserve determinism against a moving backdrop of change. Maintaining this balance between stability and adaptability is part of Bitcoinโs ongoing resilience.

Donโt miss your chance to ownย The Core Issueย โ featuring articles written by many Core Developers explaining the projects they work on themselves!
This piece is the Letter from the Editor featured in the latestย Printย edition of Bitcoin Magazine, The Core Issue. Weโre sharing it here as an early look at the ideas explored throughout the full issue.
[1] https://brink.dev/blog/2025/09/19/minimizing-dependencies/ย
This post The Core Issue: Beneath The Binary, Verifying Trust first appeared on Bitcoin Magazine and is written by Mike Schmidt.



