Skip to content

Instantly share code, notes, and snippets.

@JackTanRoo
Created September 16, 2014 00:26
Show Gist options
  • Save JackTanRoo/558fd45e01d65d0a5570 to your computer and use it in GitHub Desktop.
Save JackTanRoo/558fd45e01d65d0a5570 to your computer and use it in GitHub Desktop.
How to generate new childKeys after generating a HDNode in Bitcoinjs?
var bitcoin = require('bitcoinjs-lib');
var BigInteger = require('bigi');
var chainCode = new Buffer(32); //buffer of 32 bytes
// fill buffer with 1, do I increment .fill parameter up
// to generate new chaincodes?
chainCode.fill(1);
console.log("---------START-----------");
var hd = new bitcoin.HDNode(d, chainCode, bitcoin.networks.testnet);
console.log("----------hd key------------- \n\n", hd);
// @Sida, now how do i generate childkeys from HDNode?
@sidazhang
Copy link

var bitcoin = require('bitcoinjs-lib');
var network = bitcoin.networks['testnet'];

var hdnode = bitcoin.HDNode.fromSeedHex('c1eef4215b4a4a7225eae3fe75b88fa46148fbb49473400df2ef851996ef328a', network);
// https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki
// Path m/a'/i'/k
// Path m/0'/0'/1
for (var i = 0; i < 10; i++) {
  for (var k = 0; k < 10; k++) {
    var child = hdnode.deriveHardened(0).deriveHardened(i).derive(k)
    var address = child.getAddress(network);
    console.log('Path', 'm/0\'/' + i + '\'/' + k, 'Base58', address.toString())
  }
}

// This is how you can get a seed hex
// var crypto = require('crypto');
// crypto.randomBytes(32, function(err, buffer) {
//   console.log(buffer.toString('hex'))
// })

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment