libbitcoin
Bitcointoolkitlibraryforasynchonrousapps
 All Classes Namespaces Functions Pages
libbitcoin API dox

Introduction

libbitcoin is a bitcoin library targeted towards high end use. The library places a heavy focus around asychronicity. This enables a big scope for future scalability as each component has its own thread pool. By increasing the number of threads for that component the library is able to scale outwards across CPU cores. This will be vital in the future as the demands of the bitcoin network grow.

Another core design principle is libbitcoin is not a framework, but a toolkit. Frameworks hinder development during the latter stages of a development cycle, enforce one style of coding and do not work well with other frameworks. By contrast, we have gone to great pains to make libbitcoin function as an independent set of mutual components with no dependencies between them.

Overview

Broadly speaking the main services in libbitcoin can be divided down three lines.

Network services

These services are concerned with the network side of things.

Blockchain

Bitcoin's blockchain is usually disk oriented. Backends all implement the blockchain interface allowing programs to utilise backends using the same code.

Supporting services

These services utilise other services and provide additional functionality. They can be thought of as composed services.

Primitive

libbitcoin operates around primitives. Each primitive corresponds to one of the messages in the bitcoin network protocol.

These primitives make up the corpus of libbitcoin.

Foundational

These classes provide foundational functionality that is widely used.

Wallet

Useful functions

In accordance with C++ principles of encapsulation, operations which wrap or compose other operations are not provided as member functions, but as free functions.

This minimises intrusion of class interfaces and provides a clear separation as a matter of API design choice.

Transaction

Block

Blockchain

Format

Hashing

Base58