Builds of bs are published on the libbitcoin-server
releases page,
one for each platform and hardware level, each with a signature. There is
no installer and there are no dependencies, just a single executable file.
1. A release#
Each release lists the version of each library it was built from, and the
key that signed its builds. Its assets are the builds, each with a
signature file of the same name, ending in .asc:
bs-linux-x64
bs-linux-x64.asc
bs-linux-x64-shani
bs-linux-x64-shani.asc
...
2. Selecting a build#
A build is named bs-<platform>-<architecture>, followed by the
extension level it is built for, if any. Windows builds end in .exe.
| Platform | Runs on |
|---|---|
linux |
Linux, linked with its C library (glibc) |
musl |
Linux, linked with musl, independent of the distribution's C library |
macos |
macOS |
windows |
Windows |
| Build | Also uses |
|---|---|
x64 |
|
x64-shani |
SHA extensions |
x64-avxifma |
SHA extensions, AVX-IFMA |
x64-avx512ifma |
SHA extensions, AVX-512 IFMA |
arm64 |
|
arm64-sha2 |
ARMv8 SHA-2, AES |
arm64-sha3 |
ARMv8 SHA-2, AES, ARMv8.2 SHA-3 |
Linux and Windows have every build above, and musl has the x64
builds. macOS has one build for each architecture: arm64, which uses
ARMv8 SHA-2, SHA-3 and AES, and x64, which uses AES-NI.
A build runs only on a CPU that has every extension it uses, and is
faster for using them. To select one, run the build without an extension
level, which runs on any CPU of its architecture, with --hardware:
$ bs-linux-x64 --hardware
It lists the extensions of the CPU. Use the build whose extensions are
all among them, preferring avx512ifma to avxifma, and either to
shani. For example, a CPU with SHA extensions and AVX-512 IFMA uses
bs-linux-x64-avx512ifma. For what each extension does, see
Hardware options.
3. Verifying a build#
Verify a build before running it. A build is verified by its signature, made with the libbitcoin release key. The signature proves the build is the one released only if the key is obtained apart from the release: whoever could replace a build could also replace a key published beside it.
3.1 The release key#
Import the key from this page, not from a release:
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaekBLRYJKwYBBAHaRw8BAQdAOTBxJVknNMnoYLrlsZ7Cs8R2Nk3ES6Z9uUUU
uhkKrUC0H0xpYmJpdGNvaW4gPG1pZW5rcGhpQGdtYWlsLmNvbT6ItQQTFgoAXRYh
BMQDUCNIi2ZttpwL2fN9153pcb2bBQJp6QEtGxSAAAAAAAQADm1hbnUyLDIuNSsx
LjEyLDIsMQIbAwUJA3TGEwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRDz
fded6XG9mzzsAP9ietyeTpq3wdKNaDM9+KeQ+LSv+bpItphJ+dWJ+F++0QD8DXrM
vmKCsMcp00fa8l79rNFCSlTT9tBwp5Wv29pJRw64OARp6QEtEgorBgEEAZdVAQUB
AQdAMIFjrHMSxEwCkiN7FeUPxC7xk0w1MKuQbTX4YGT6JE0DAQgHiJoEGBYKAEIW
IQTEA1AjSItmbbacC9nzfded6XG9mwUCaekBLRsUgAAAAAAEAA5tYW51MiwyLjUr
MS4xMiwyLDECGwwFCQN0xhMACgkQ833XnelxvZvI8QEAmpEPcK27HA/dQXz2TuVB
hILewCE+IkkegW6iXc1Fx1YA+wQb0HWHA05INf+QEm6rmG4ax7mDnZyCPjVVJENa
DpAL
=vA2l
-----END PGP PUBLIC KEY BLOCK-----
Save it as libbitcoin.asc, or download libbitcoin.asc,
import it, and check its fingerprint:
$ gpg --import libbitcoin.asc
$ gpg --fingerprint
| Key | Value |
|---|---|
| Fingerprint | C403 5023 488B 666D B69C 0BD9 F37D D79D E971 BD9B |
| Type | ed25519, created 2026-04-22, expires 2028-02-22 |
Import the key once, and keep it. Every later release is signed with the same key, so a build that does not verify against the key already held is not a libbitcoin release, whatever key its release shows.
This site and the releases are both hosted by the libbitcoin GitHub organization. For a check independent of it, compare the fingerprint with one published elsewhere by the project's maintainers.
3.2 The signature#
Verify the build against its signature:
$ gpg --verify bs-linux-x64.asc bs-linux-x64
A good build reports Good signature from "Libbitcoin", with the
fingerprint above. Any other result means the file is not the one
released, and should not be run. On Windows, gpg is provided by
Gpg4win.
3.3 The hash#
The releases page also shows the SHA-256 of each file:
| Platform | Command |
|---|---|
| Linux | sha256sum bs-linux-x64 |
| macOS | shasum -a 256 bs-macos-arm64 |
| Windows | certutil -hashfile bs-windows-x64.exe SHA256 |
4. Running a build#
On Linux and macOS, make the build executable, and rename it if convenient:
$ chmod +x bs-linux-x64
$ mv bs-linux-x64 bs
On macOS, a downloaded file is quarantined, and is refused until the quarantine is removed:
$ xattr -d com.apple.quarantine bs-macos-arm64
Then continue from Quick Start §2.