npm-bitcoin
Version:
Communicate with bitcoind via JSON-RPC
86 lines (69 loc) • 2.42 kB
Markdown
# npm-bitcoin
npm-bitcoin is a simple wrapper for the Bitcoin client's JSON-RPC API.
The API is equivalent to the API document [here](https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list).
The methods are exposed as lower camelcase methods on the `bitcoin.Client`
object, or you may call the API directly using the `cmd` method.
This module uses callbacks, which is the prevalent way to work with asynchronous functions in Node.js. If you'd like to instead use promises, then please see the [bitcoin-promise](https://github.com/rcorbish/node-bitcoin-promise) module.
## Install
`npm install npm-bitcoin`
## Examples
### Create client
```js
// all config options are optional
var client = new bitcoin.Client({
host: 'localhost',
port: 8332,
user: 'username',
pass: 'password',
timeout: 30000
});
```
### Get balance across all accounts with minimum confirmations of 6
```js
client.getBalance('*', 6, function(err, balance, resHeaders) {
if (err) return console.log(err);
console.log('Balance:', balance);
});
```
### Getting the balance directly using `cmd`
```js
client.cmd('getbalance', '*', 6, function(err, balance, resHeaders){
if (err) return console.log(err);
console.log('Balance:', balance);
});
```
### Batch multiple RPC calls into single HTTP request
```js
var batch = [];
for (var i = 0; i < 10; ++i) {
batch.push({
method: 'getnewaddress',
params: ['myaccount']
});
}
client.cmd(batch, function(err, address, resHeaders) {
if (err) return console.log(err);
console.log('Address:', address);
});
```
## SSL
See [Enabling SSL on original client](https://en.bitcoin.it/wiki/Enabling_SSL_on_original_client_daemon).
If you're using this to connect to bitcoind across a network it is highly
recommended to enable `ssl`, otherwise an attacker may intercept your RPC credentials
resulting in theft of your bitcoins.
When enabling `ssl` by setting the configuration option to `true`, the `sslStrict`
option (verifies the server certificate) will also be enabled by default. It is
highly recommended to specify the `sslCa` as well, even if your bitcoind has
a certificate signed by an actual CA, to ensure you are connecting
to your own bitcoind.
```js
var client = new bitcoin.Client({
host: 'localhost',
port: 8332,
user: 'username',
pass: 'password',
ssl: true,
sslStrict: true,
sslCa: fs.readFileSync(__dirname + '/myca.cert')
});
```