package bitcoin

  1. Overview
  2. Docs

OCaml interface to the official Bitcoin client API.

Exceptions

exception Unspecified_connection

Raised when connection parameter is not given and no default connection exists.

exception Bitcoin_error of int * string

Raised when connection parameter is not given and no default connection exists.

Error reported by the Bitcoin client.

exception Internal_error of int * string

Error reported by the Bitcoin client.

Unexpected response from the Bitcoin client

exception Httpclient_error of exn

Unexpected response from the Bitcoin client

Connection error reported by the HTTPCLIENT

Type definitions

type address_t = string

Bitcoin address (hash of the public portion of public/private ECDSA keypair)

type account_t = [
  1. | `Default
  2. | `Named of string
]

Bitcoin address (hash of the public portion of public/private ECDSA keypair)

Besides the default account, one may also create named accounts

type amount_t = int64

Besides the default account, one may also create named accounts

Amount in BTC, represented as a multiple of Bitcoin's base unit (= 10 nanoBTC).

type txid_t = string

Amount in BTC, represented as a multiple of Bitcoin's base unit (= 10 nanoBTC).

Transaction identifier

type txoutput_t = txid_t * int

Transaction identifier

Transaction output

type blkhash_t = string

Transaction output

Block hash

type priv_t = string

Block hash

Private portion of public/private ECDSA keypair

type sig_t = string

Private portion of public/private ECDSA keypair

Message signature

type hextx_t = string

Message signature

Hex representation of raw transaction

type hexspk_t = string

Hex representation of raw transaction

Hex representation of script public key

type hexblk_t = string

Hex representation of script public key

Hex representation of block data

type hexwork_t = string

Hex representation of block data

Hex representation of mining work data

type multi_t = [
  1. | `Address of address_t
  2. | `Hexspk of hexspk_t
]

Hex representation of mining work data

Multi-signature addresses may take either format

type node_t = string

Multi-signature addresses may take either format

Node representation

type assoc_t = (string * Yojson.Safe.json) list

Node representation

Association list

type conn_t = {
  1. inet_addr : Unix.inet_addr;
  2. host : string;
  3. port : int;
  4. username : string;
  5. password : string;
}

Public module types

module type HTTPCLIENT = sig ... end

Interface that any module offering HTTP POST client calls must obey. Note that the module may require POST calls to be wrapped under a custom monad, which must also be provided (use the identity monad if no actual monad is required).

module type CONNECTION = sig ... end

Module encapsulating all connection information.

module type ENGINE = sig ... end

Actual engine offering the Bitcoin API.

Public functions and values

val amount_of_float : float -> amount_t

Converts a BTC quantity expressed as a float into its amount_t representation.

val float_of_amount : amount_t -> float

Converts a BTC quantity expressed as an amount_t into its float representation.

Public functors

Functor that takes a concrete implementation of a HTTPCLIENT and actual CONNECTION information, and creates a module with signature ENGINE offering an API for communicating with a Bitcoin client.