The official client library for [bitcore-wallet-service] (https://github.com/bitpay/bitcore-wallet-service).
This package communicates with BWS Bitcore wallet service using the REST API. All REST endpoints are wrapped as simple async methods. All relevant responses from BWS are checked independently by the peers, thus the importance of using this library when talking to a third party BWS instance.
See [Bitcore-wallet] (https://github.com/bitpay/bitcore-wallet) for a simple CLI wallet implementation that relays on BWS and uses bitcore-wallet-client.
You can start using bitcore-wallet-client in any of these two ways:
- via Bower: by running
bower install bitcore-wallet-client
from your console - or via NPM: by running
npm install bitcore-wallet-client
from your console.
Start your own local Bitcore wallet service instance. In this example we assume you have bitcore-wallet-service
running on your localhost:3001
.
Then create two files irene.js
and thomas.js
with the content below:
irene.js
var Client = require('bitcore-wallet-client');
var fs = require('fs');
var BWS_INSTANCE_URL = 'http://localhost:3001/copay/api'
var client = new Client({
baseUrl: BWS_INSTANCE_URL,
verbose: false,
});
client.createWallet("My Wallet", "Irene", 2, 2, 'testnet', function(err, secret) {
// Handle err
console.log('Wallet Created. Share this secret with your copayers: ' + secret);
fs.writeFileSync('irene.dat', client.export());
});
thomas.js
var Client = require('bitcore-wallet-client');
var fs = require('fs');
var BWS_INSTANCE_URL = 'http://localhost:3001/copay/api'
var secret = process.argv[2];
var client = new Client({
baseUrl: BWS_INSTANCE_URL,
verbose: false,
});
client.joinWallet(secret, "Thomas", function(err, wallet) {
// Handle err
console.log('Joined ' + wallet.name + '!');
fs.writeFileSync('thomas.dat', client.export());
});
Install bitcore-wallet-client
before start:
npm i bitcore-wallet-client
Create a new wallet with the first script:
$ node irene.js
info Generating new keys
Wallet Created. Share this secret with your copayers: JbTDjtUkvWS4c3mgAtJf4zKyRGzdQzZacfx2S7gRqPLcbeAWaSDEnazFJF6mKbzBvY1ZRwZCbvT
Join to this wallet with generated secret:
$ node thomas.js JbTDjtUkvWS4c3mgAtJf4zKyRGzdQzZacfx2S7gRqPLcbeAWaSDEnazFJF6mKbzBvY1ZRwZCbvT
Joined My Wallet!
Note that the scripts created two files named irene.dat
and thomas.dat
. With these files you can get status, generate addresses, create proposals, sign transactions, etc.
- new API(opts)
- API.seedFromExtendedPrivateKey(xPrivKey)
- API.seedFromRandom(xPrivKey)
- ApI.export(opts)
- ApI.import(opts)
- API.isComplete()
- API.openWallet(cb)
- API.createWallet(walletName, copayerName, m, n, network, cb)
- API.joinWallet(secret, copayerName, cb)
- API.getStatus(cb)
- API.sendTxProposal(opts)
- API.createAddress(cb)
- API.getMainAddresses(opts, cb)
- API.getBalance(cb)
- API.getTxProposals(opts)
- API.signTxProposal(txp, cb)
- API.rejectTxProposal(txp, reason, cb)
- API.broadcastTxProposal(txp, cb)
- API.removeTxProposal(txp, cb)
- API.getTxHistory(opts, cb)
###new API(opts) ClientAPI constructor.
Params
- opts
Object
###API.seedFromExtendedPrivateKey(xPrivKey) Seed from extended private key
Params
- xPrivKey
String
###API.seedFromRandom(xPrivKey) Seed from random
Params
- network
String
###API.export(opts) Export wallet
Params
- opts
Object
- compressed
Boolean
- password
String
- noSign
Boolean
- compressed
###API.import(opts) Import wallet
Params
- opts
Object
- compressed
Boolean
- password
String
- compressed
###API.isComplete() Return if wallet is complete
###API.openWallet(cb) Open a wallet and try to complete the public key ring.
Params
- cb
Callback
Returns: Callback
- cb - Returns an error and a flag indicating that the wallet has just been completed and needs to be persisted
###API.createWallet(walletName, copayerName, m, n, network, cb)
Create a wallet.
Params
- walletName
String
- copayerName
String
- m
Number
- n
Number
- network
String
- 'livenet' or 'testnet' - cb
Callback
Returns: Callback
- cb - Returns the wallet
###API.joinWallet(secret, copayerName, cb)
Join to an existent wallet
Params
- secret
String
- copayerName
String
- cb
Callback
Returns: Callback
- cb - Returns the wallet
###API.getStatus(cb)
Get status of the wallet
Params
- cb
Callback
Returns: Callback
- cb - Returns error or an object with status information
###API.sendTxProposal(opts)
Send a transaction proposal
Params
- opts
Object
- toAddress
String
- amount
Number
- message
String
- toAddress
Returns: Callback
- cb - Return error or the transaction proposal
###API.createAddress(cb)
Create a new address
Params
- cb
Callback
Returns: Callback
- cb - Return error or the address
###API.getMainAddresses(opts, cb)
Get your main addresses
Params
- opts
Object
- doNotVerify
Boolean
- doNotVerify
- cb
Callback
Returns: Callback
- cb - Return error or the array of addresses
###API.getBalance(cb)
Update wallet balance
Params
- cb
Callback
##API.getTxProposals(opts) Get list of transactions proposals
Params
- opts
Object
- doNotVerify
Boolean
- forAirGapped
Boolean
- doNotVerify
Returns: Callback
- cb - Return error or array of transactions proposals
###API.signTxProposal(txp, cb)
Sign a transaction proposal
Params
- txp
Object
- cb
Callback
Returns: Callback
- cb - Return error or object
###API.signTxProposalFromAirGapped(txp, encryptedPkr, m, n)
Sign a transaction proposal from an airgapped device
Params
- txp
Object
- encryptedPkr
String
- m
Number
- n
Number
- cb
Callback
Returns: Callback
- cb - Return error or object
###API.rejectTxProposal(txp, reason, cb)
Reject a transaction proposal
Params
- txp
Object
- reason
String
- cb
Callback
Returns: Callback
- cb - Return error or object
###API.broadcastTxProposal(txp, cb)
Broadcast a transaction proposal
Params
- txp
Object
- cb
Callback
Returns: Callback
- cb - Return error or object
###API.removeTxProposal(txp, cb)
Remove a transaction proposal
Params
- txp
Object
- cb
Callback
Returns: Callback
- cb - Return error or empty
###API.getTxHistory(opts, cb)
Get transaction history
Params
- opts
Object
- cb
Callback
Returns: Callback
- cb - Return error or array of transactions