NAME

Finance::Bitcoin::API - wrapper for the Bitcoin JSON-RPC API

SYNOPSIS

use Finance::Bitcoin::API;

my $uri     = 'http://user:password@127.0.0.1:8332/';
my $api     = Finance::Bitcoin::API->new( endpoint => $uri );
my $balance = $api->call('getbalance');
print $balance;

DESCRIPTION

This module provides a low-level API for accessing a running Bitcoin instance.

new( %args )

Constructor. %args is a hash of named arguments. You need to provide the 'endpoint' URL as an argument.

call( $method, @params )

Call a method. If successful returns the result; otherwise returns undef.

Caveat: The protocol used to communicate with the Bitcoin daemon is JSON-RPC based. JSON differentiates between numbers and strings: "1" and 1 are considered to be different values. Perl (mostly) does not. Thus the JSON module often needs to guess whether a parameter (i.e. an item in @params) is supposed to be a number or a string. If it guesses incorrectly, this may result in the wrong JSON getting sent to the Bitcoin daemon, and the daemon thus returning an error. To persuade JSON to encode a value as a number, add zero to it; to persuade JSON to encode a value as a string, interpolate it. For example:

$api->call(
   "sendfrom",
   "$from_adr",  # Str
   "$to_adr",    # Str
   $btc + 0,     # Num
   6,            # literal: perl already knows this is a Num
);
endpoint

Get/set the endpoint URL.

jsonrpc

Retrieve a reference to the JSON::RPC::Legacy::Client object being used. In particular $api->jsonrpc->ua can be useful if you need to alter timeouts or HTTP proxy settings.

error

Returns the error message (if any) that resulted from the last call.

BUGS

Please report any bugs to http://rt.cpan.org/.

SEE ALSO

Finance::Bitcoin.

http://www.bitcoin.org/.

AUTHOR

Toby Inkster <tobyink@cpan.org>.

COPYRIGHT

Copyright 2010, 2011, 2013, 2014 Toby Inkster

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.