Skip to content
Eric Voskuil edited this page Jul 13, 2015 · 2 revisions

Proactor Pattern

Bitcoin Node utilizes the proactor pattern of asynchronous operation. The pattern allows for a high degree of asynchrony while minimizing thread consumption and eliminating the need to explicitly write threading code. Boost ASIO provides the optimized cross platform proactor framework.

Zero Message Queue API

Bitcoin Server builds on Bitcoin Node by adding a blockchain query and notification API based on ZeroMQ. The API is conceptually similar to bitcoind's JSON-RPC API and Electrum's Stratum API.

Curve Security

Security for the API is provided by CurveZMQ which in turn relies on the Sodium cryptographic library. Optional client and server authentication and packet-level privacy are provided using the flexible and highly-performant modern protocol with modern elliptic curve cryptography.

Blockchain Database

Bitcoin Server is built on libbitcoin-blockchain, a highly performant custom memory-mapped file database.

Bitcoin Consensus

Bitcoin Server can be built using either the libbitcoin or the libbitcoin-consensus implementation of Bitcoin Consensus algorithm.

libsecp256k1 or OpenSSL

It was a design goal to eliminate the dependence on OpenSSL. The native libbitcoin consensus implementation uses libsecp256k1. There is experimental support for use of libsecp256k1 within libbitcoin-consensus.

Configurable

Bitcoin Server is highly configurable. A single configuration file controls most behaviors and scale factors, including the number of threads used by various services.

Single File Objective

Bitcoin Server was designed for trivial deployment as a single file executable program on all major platforms. This simplifies deployment and maintenance of the application in production environments.