Libbitcoin is a full stack of C++20 libraries, from Bitcoin primitives to a complete server and client. Each library is its own repository, can be built and used on its own, and depends only on the libraries below it.
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 | Provides |
|---|---|
| libbitcoin-system | Bitcoin primitives: blocks, transactions, scripts and their execution, hashes and cryptography, keys, addresses and wallets, encodings and serialization |
| libbitcoin-database | The store: memory-mapped tables, and the queries over them |
| libbitcoin-network | Connections and protocols: the P2P network, and HTTP, WebSocket, JSON-RPC, TLS and ZeroMQ services |
| libbitcoin-node | The full node: download, validation and indexing of the blockchain and unconfirmed transactions |
| libbitcoin-server | The client interfaces of Bitcoin Server, and bs |
| libbitcoin-explorer | The commands of Bitcoin Explorer, and bx |
The build, CI and install files of every library are generated by libbitcoin-build, a maintainer tool.
All libraries are licensed as AGPL with a lesser clause: a library may be used within a proprietary project, but the library and any changes to it must be published. To use one in an application, see Using a library.