node-dogecoin is a Dogecoin client for Node.js. It is a fork of the excellent Kapitalize Bitcoin Client (now removed from GitHub) intended for use with Dogecoin. The purpose of this repository is:
You'll need a running instance of dogecoind to connect with. If you're running Debian/Ubuntu, this worked for me: http://www.dogeco.in/wiki/index.php/Dogecoind
Then, install the node-dogecoin NPM package.
npm install node-dogecoin
Some code examples follow below, but for more complete examples, see these snippets, or this wallet app which was created to to test this module.
var dogecoin = require('node-dogecoin')()
dogecoin.auth('myusername', 'mypassword')
dogecoin.getDifficulty(function() {
console.log(arguments);
})
Pretty much everything is chainable.
var dogecoin = require('node-dogecoin')()
dogecoin
.auth('MyUserName', 'mypassword')
.getNewAddress()
.getBalance()
The Litecoin API is supported as direct methods. Use either camelcase or lowercase.
dogecoin.getNewAddress(function(err, address) {
this.validateaddress(address, function(err, info) {
})
})
Executes the given command with optional arguments. Function callback
defaults to console.log
.
All of the API commands are supported in lowercase or camelcase. Or uppercase. Anycase!
dogecoin.exec('getNewAddress')
dogecoin.exec('getbalance', function(err, balance) {
})
Accepts either key & value strings or an Object containing settings, returns this
for chainability.
dogecoin.set('host', '127.0.0.1')
Returns the specified option's value
dogecoin.get('user')
Generates authorization header, returns this
for chainability
TODO: Write tests for these.
All Litecoin API commands are supported, in lowercase or camelcase form.
Generation is limited to [genproclimit] processors, -1 is unlimited.
You may pass options to the initialization function or to the set
method.
var dogecoin = require('dogecoin')({
user:'user'
})
dogecoin.set('pass', 'somn')
dogecoin.set({port:22555})
Available options and default values:
With an encryped wallet, any operation that accesses private keys requires a wallet unlock. A wallet is unlocked using the walletpassphrase <passphrase> <timeout>
JSON-RPC method: the wallet will relock after timeout
seconds.
You may pass an optional function passphrasecallback
to the node-dogecoin
initialization function to manage wallet unlocks. passphrasecallback
should be a function accepting three arguments:
function(command, args, callback) {}
function(err, passphrase, timeout) {}
. Call callback with the wallet passphrase and desired timeout from within your passphrasecallback to unlock the wallet.You may hard code your passphrase (not recommended) as follows:
var dogecoin = require('node-dogecoin')({
passphrasecallback: function(command, args, callback) {
callback(null, 'passphrase', 30);
}
})
Because passphrasecallback
is a continuation, you can retrieve the passphrase in an asynchronous manner. For example, by prompting the user:
var readline = require('readline')
var rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
var dogecoin = require('node-dogecoin')({
passphrasecallback: function(command, args, callback) {
rl.question('Enter passphrase for "' + command + '" operation: ', function(passphrase) {
if (passphrase) {
callback(null, passphrase, 1)
} else {
callback(new Error('no passphrase entered'))
}
})
}
})
By default dogecoind
exposes its JSON-RPC interface via HTTP; that is, all RPC commands are transmitted in plain text across the network! To secure the JSON-RPC channel you can supply dogecoind
with a self-signed SSL certificate and an associated private key to enable HTTPS. For example, in your dogecoin.conf
:
rpcssl=1
rpcsslcertificatechainfile=/etc/ssl/certs/dogecoind.crt
rpcsslprivatekeyfile=/etc/ssl/private/dogecoind.pem
In order to securely access an SSL encrypted JSON-RPC interface you need a copy of the self-signed certificate from the server: in this case dogecoind.crt
. Pass your self-signed certificate in the ca
option and set https: true
and node-dogecoin is secured!
var fs = require('fs')
var ca = fs.readFileSync('dogecoind.crt')
var dogecoin = require('node-dogecoin')({
user: 'rpcusername',
pass: 'rpcpassword',
https: true,
ca: ca
})
npm install -g nodeunit
nodeunit test/test-node-dogecoin.js
Dogecoin donation address is DE4isu3m2RBma7nGEwnaX8cu4Y2m2J2g8Q
Donations in dogecoin will be used for bounties. The first bounty will be awarded for creating a unit test suite. As a side note: I encourage all GitHub repository owners to post a donation address so their community can easily support development financially. If you accept donations at your repository, I'll send you a reward!