bitcoin

Library offering an OCaml interface to the official Bitcoin client API
IN THIS PACKAGE
Module Bitcoin

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 = [
| `Default
| `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 = [
| `Address of address_t
| `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 = {
inet_addr : Unix.inet_addr;
host : string;
port : int;
username : string;
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.