Skip to content

Latest commit

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

A Node.js Opalcoin Client

Opalcoin

node-opalcoin is a Opalcoin client for Node.js. It is a fork of node-dogecoin client (see fork) intended for use with Opalcoin. The purpose of this repository is:

  • Provide a one-stop resource for the Node.js developer to get started with Opalcoin integration.
  • Prevent would-be Opalcoin web developers worrying whether a DogeCoin client will work out of the box.
  • Promote Node.js development of Opalcoin web apps.
  • Identify and address any incompatibilities with the Opalcoin and DogeCoin APIs that exist now and/or in the future.

Dependencies

You'll need a running instance of opalcoind to connect with.

Then, install the node-opalcoin NPM package.

npm install node-opalcoin

Examples

varopalcoin=require('node-opalcoin')()opalcoin.auth('myusername','mypassword')opalcoin.getDifficulty(function(){console.log(arguments);})

Options

You may pass options to the initialization function or to the set method.

varopalcoin=require('opalcoin')({user:'user'})opalcoin.set('pass','somn')opalcoin.set({port:22555})

Available options and default values:

  • host 127.0.0.1
  • port 45443
  • user
  • pass
  • passphrasecallback
  • https
  • ca

Passphrase Callback

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-opalcoin initialization function to manage wallet unlocks. passphrasecallback should be a function accepting three arguments:

function(command, args, callback) {}
  • command is the command that failed due to a locked wallet.
  • args is the arguments for the failed command.
  • callback is a typical node-style continuation callback of the form 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:

varopalcoin=require('node-opalcoin')({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:

varreadline=require('readline')varrl=readline.createInterface({input: process.stdin,output: process.stdout})varopalcoin=require('node-opalcoin')({passphrasecallback: function(command,args,callback){rl.question('Enter passphrase for "'+command+'" operation: ',function(passphrase){if(passphrase){callback(null,passphrase,1)}else{callback(newError('no passphrase entered'))}})}})

Secure RPC with SSL

By default opalcoind 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 opalcoind with a self-signed SSL certificate and an associated private key to enable HTTPS. For example, in your opalcoin.conf:

rpcssl=1
rpcsslcertificatechainfile=/etc/ssl/certs/opalcoind.crt
rpcsslprivatekeyfile=/etc/ssl/private/opalcoind.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 opalcoind.crt. Pass your self-signed certificate in the ca option and set https: true and node-opalcoin is secured!

varfs=require('fs')varca=fs.readFileSync('opalcoind.crt')varopalcoin=require('node-opalcoin')({user: 'rpcusername',pass: 'rpcpassword',https: true,ca: ca})

About

Node Client for Communicating with Opalcoin RPC

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages