libraries.md raw

Libraries

NameDescription
libbitcoin_cliRPC client functionality used by bitcoin-cli executable
libbitcoin_commonHome for common functionality shared by different executables and libraries. Similar to libbitcoin_util, but higher-level (see Dependencies).
libbitcoin_consensusConsensus functionality used by libbitcoin_node and libbitcoin_wallet.
libbitcoin_cryptoHardware-optimized functions for data encryption, hashing, message authentication, and key derivation.
libbitcoin_kernelConsensus engine and support library used for validation by libbitcoin_node.
libbitcoinqtGUI functionality used by bitcoin-qt and bitcoin-gui executables.
libbitcoin_ipcIPC functionality used by bitcoin-node and bitcoin-gui executables to communicate when `-DENABLE_IPC=ON` is used.
libbitcoin_nodeP2P and RPC server functionality used by bitcoind and bitcoin-qt executables.
libbitcoin_utilHome for common functionality shared by different executables and libraries. Similar to libbitcoin_common, but lower-level (see Dependencies).
libbitcoin_walletWallet functionality used by bitcoind and bitcoin-wallet executables.
libbitcoin_wallet_toolLower-level wallet functionality used by bitcoin-wallet executable.
libbitcoin_zmqZeroMQ functionality used by bitcoind and bitcoin-qt executables.

Conventions

- libbitcoin_node code lives in src/node/ in the node:: namespace - libbitcoin_wallet code lives in src/wallet/ in the wallet:: namespace - libbitcoin_ipc code lives in src/ipc/ in the ipc:: namespace - libbitcoin_util code lives in src/util/ in the util:: namespace - libbitcoin_consensus code lives in src/consensus/ in the Consensus:: namespace

Dependencies

<table><tr><td>


%%{ init : { "flowchart" : { "curve" : "basis" }}}%%

graph TD;

bitcoin-cli[bitcoin-cli]-->libbitcoin_cli;

bitcoind[bitcoind]-->libbitcoin_node;
bitcoind[bitcoind]-->libbitcoin_wallet;

bitcoin-qt[bitcoin-qt]-->libbitcoin_node;
bitcoin-qt[bitcoin-qt]-->libbitcoinqt;
bitcoin-qt[bitcoin-qt]-->libbitcoin_wallet;

bitcoin-wallet[bitcoin-wallet]-->libbitcoin_wallet;
bitcoin-wallet[bitcoin-wallet]-->libbitcoin_wallet_tool;

libbitcoin_cli-->libbitcoin_util;
libbitcoin_cli-->libbitcoin_common;

libbitcoin_consensus-->libbitcoin_crypto;

libbitcoin_common-->libbitcoin_consensus;
libbitcoin_common-->libbitcoin_crypto;
libbitcoin_common-->libbitcoin_util;

libbitcoin_kernel-->libbitcoin_consensus;
libbitcoin_kernel-->libbitcoin_crypto;
libbitcoin_kernel-->libbitcoin_util;

libbitcoin_node-->libbitcoin_consensus;
libbitcoin_node-->libbitcoin_crypto;
libbitcoin_node-->libbitcoin_kernel;
libbitcoin_node-->libbitcoin_common;
libbitcoin_node-->libbitcoin_util;

libbitcoinqt-->libbitcoin_common;
libbitcoinqt-->libbitcoin_util;

libbitcoin_util-->libbitcoin_crypto;

libbitcoin_wallet-->libbitcoin_common;
libbitcoin_wallet-->libbitcoin_crypto;
libbitcoin_wallet-->libbitcoin_util;

libbitcoin_wallet_tool-->libbitcoin_wallet;
libbitcoin_wallet_tool-->libbitcoin_util;

classDef bold stroke-width:2px, font-weight:bold, font-size: smaller;
class bitcoin-qt,bitcoind,bitcoin-cli,bitcoin-wallet bold

</td></tr><tr><td>

Dependency graph. Arrows show linker symbol dependencies. Crypto lib depends on nothing. Util lib is depended on by everything. Kernel lib depends only on consensus, crypto, and util.

</td></tr></table>

Work in progress