Full stack Bitcoin software

Developers

The libbitcoin C++ libraries, from Bitcoin primitives to a complete server.

Libbitcoin is a full stack of C++20 libraries, from Bitcoin primitives to a complete server and client. Bitcoin Server (bs) is built on libbitcoin-server, and Bitcoin Explorer (bx) on libbitcoin-explorer. Each library can be used on its own, by any application.

1. The stack#

Both executables rest on libbitcoin-system: Bitcoin Server through the node's libraries, and Bitcoin Explorer directly.

flowchart BT sys["libbitcoin-system"] db["libbitcoin-database"] net["libbitcoin-network"] node["libbitcoin-node"] server["libbitcoin-server"] explorer["libbitcoin-explorer"] bs(["bs<br/>Bitcoin Server"]) bx(["bx<br/>Bitcoin Explorer"]) sys --> db sys --> net db --> node net --> node node --> server server --> bs sys --> explorer explorer --> bx
Library Namespace Dependencies Provides
libbitcoin-system libbitcoin::system none Bitcoin primitives: blocks, transactions, scripts and their execution, hashes and cryptography, keys, addresses and wallets, encodings and serialization
libbitcoin-database libbitcoin::database system The store: memory-mapped tables, and the queries over them
libbitcoin-network libbitcoin::network system Connections and protocols: the P2P network, and HTTP, websocket, JSON-RPC, TLS and ZMQ services
libbitcoin-node libbitcoin::node database, network The full node: sync, validation and confirmation, and the transaction pool
libbitcoin-server libbitcoin::server node The client interfaces of Bitcoin Server, and bs
libbitcoin-explorer libbitcoin::explorer system The commands of Bitcoin Explorer, and bx

The node and the store are described in Architecture and Database.

2. Using a library#

Each library has one header that includes all of it:

#include <bitcoin/system.hpp>

using namespace libbitcoin::system;
Library Header Package
libbitcoin-system <bitcoin/system.hpp> libbitcoin-system
libbitcoin-database <bitcoin/database.hpp> libbitcoin-database
libbitcoin-network <bitcoin/network.hpp> libbitcoin-network
libbitcoin-node <bitcoin/node.hpp> libbitcoin-node
libbitcoin-server <bitcoin/server.hpp> libbitcoin-server
libbitcoin-explorer <bitcoin/explorer.hpp> libbitcoin-explorer

A library and those it depends on are found with pkg-config:

$ c++ -std=c++20 app.cpp $(pkg-config --cflags --libs libbitcoin-system)

3. Versioning#

Version Change
Major Breaks compatibility
Minor Adds compatible features
Build Text, comments, style, refactoring and minor enhancements

A version is <major>.<minor>.<build>, where the build is the number of commits in the repository's history, so it never resets. From 4.0.3372:

Version Change
4.0.3380 Build: eight more commits
4.1.3400 Minor: a compatible change
5.0.3500 Major: a compatibility break

Copyright © 2011-2026 libbitcoin developers