Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
1### Verify Binaries3#### Preparation5As of Bitcoin Core v22.0, releases are signed by a number of public keys on the basis6of the [guix.sigs repository](https://github.com/bitcoin-core/guix.sigs/). When7verifying binary downloads, you (the end user) decide which of these public keys you8trust and then use that trust model to evaluate the signature on a file that contains9hashes of the release binaries. The downloaded binaries are then hashed and compared to10the signed checksum file.12First, you have to figure out which public keys to recognize. Browse the [list of frequent13builder-keys](https://github.com/bitcoin-core/guix.sigs/tree/main/builder-keys) and14decide which of these keys you would like to trust. For each key you want to trust, you15must obtain that key for your local GPG installation.17You can obtain these keys by18- through a browser using a key server (e.g. keyserver.ubuntu.com),19- manually using the `gpg --keyserver <url> --recv-keys <key>` command, or20- you can run the packaged `verify.py --import-keys ...` script to21have it automatically retrieve unrecognized keys.23#### Usage25This script attempts to download the checksum file (`SHA256SUMS`) and corresponding26signature file `SHA256SUMS.asc` from https://bitcoincore.org and https://bitcoin.org.28It first checks if the checksum file is valid based upon a plurality of signatures, and29then downloads the release files specified in the checksum file, and checks if the30hashes of the release files are as expected.32If we encounter pubkeys in the signature file that we do not recognize, the script33can prompt the user as to whether they'd like to download the pubkeys. To enable34this behavior, use the `--import-keys` flag.36The script returns 0 if everything passes the checks. It returns 1 if either the37signature check or the hash check doesn't pass. An exit code of >2 indicates an error.39See the `Config` object for various options.41#### Examples43Validate releases with default settings:44```sh45./contrib/verify-binaries/verify.py pub 22.046./contrib/verify-binaries/verify.py pub 22.0-rc347```49Get JSON output and don't prompt for user input (no auto key import):51```sh52./contrib/verify-binaries/verify.py --json pub 22.0-x8653./contrib/verify-binaries/verify.py --json pub 23.0-rc5-linux-gnu54```56Rely only on local GPG state and manually specified keys, while requiring a57threshold of at least 10 trusted signatures:58```sh59./contrib/verify-binaries/verify.py \60--trusted-keys 74E2DEF5D77260B98BC19438099BAD163C70FBFA,9D3CC86A72F8494342EA5FD10A41BDC3F4FAFF1C \61--min-good-sigs 10 pub 22.0-linux62```64If you only want to download the binaries for a certain architecture and/or platform, add the corresponding suffix, e.g.:66```sh67./contrib/verify-binaries/verify.py pub 25.2-x86_64-linux68./contrib/verify-binaries/verify.py pub 24.1-rc1-darwin69./contrib/verify-binaries/verify.py pub 27.0-win64-setup.exe70```72If you do not want to keep the downloaded binaries, specify the cleanup option.74```sh75./contrib/verify-binaries/verify.py pub --cleanup 22.076```78Use the bin subcommand to verify all files listed in a local checksum file80```sh81./contrib/verify-binaries/verify.py bin SHA256SUMS82```84Verify only a subset of the files listed in a local checksum file86```sh87./contrib/verify-binaries/verify.py bin ~/Downloads/SHA256SUMS \88~/Downloads/bitcoin-24.0.1-x86_64-linux-gnu.tar.gz \89~/Downloads/bitcoin-24.0.1-arm-linux-gnueabihf.tar.gz90```
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.