allow custom bip32 prefixes, and varying types of addresses returned get hdnode.getAddress
This commit is contained in:
parent
5b0ccb6f68
commit
f44e662dbe
5 changed files with 286 additions and 25 deletions
95
test/hdaddress.js
Normal file
95
test/hdaddress.js
Normal file
|
@ -0,0 +1,95 @@
|
|||
/* global describe, it */
|
||||
/* eslint-disable no-new */
|
||||
|
||||
var assert = require('assert')
|
||||
var HDNode = require('../src/hdnode')
|
||||
var bnetwork = require('../src/networks')
|
||||
|
||||
describe('bip44', function () {
|
||||
it('works without a ScriptFactory', function () {
|
||||
// mnemonic: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
|
||||
var seed = '5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4'
|
||||
var network = bnetwork.bitcoin
|
||||
|
||||
var root = HDNode.fromSeedHex(seed, network)
|
||||
assert.equal(
|
||||
root.toBase58(),
|
||||
'xprv9s21ZrQH143K3GJpoapnV8SFfukcVBSfeCficPSGfubmSFDxo1kuHnLisriDvSnRRuL2Qrg5ggqHKNVpxR86QEC8w35uxmGoggxtQTPvfUu'
|
||||
)
|
||||
|
||||
var account = root.derivePath('44\'/0\'/0\'')
|
||||
assert.equal(
|
||||
account.toBase58(),
|
||||
'xprv9xpXFhFpqdQK3TmytPBqXtGSwS3DLjojFhTGht8gwAAii8py5X6pxeBnQ6ehJiyJ6nDjWGJfZ95WxByFXVkDxHXrqu53WCRGypk2ttuqncb'
|
||||
)
|
||||
assert.equal(
|
||||
'xpub6BosfCnifzxcFwrSzQiqu2DBVTshkCXacvNsWGYJVVhhawA7d4R5WSWGFNbi8Aw6ZRc1brxMyWMzG3DSSSSoekkudhUd9yLb6qx39T9nMdj',
|
||||
account.neutered().toBase58()
|
||||
)
|
||||
|
||||
var key = account.derivePath('0/0')
|
||||
assert.equal('1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA', key.getAddress())
|
||||
})
|
||||
|
||||
it('works with a prefix', function () {
|
||||
// mnemonic: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
|
||||
var seed = '5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4'
|
||||
var network = bnetwork.bitcoin
|
||||
|
||||
var root = HDNode.fromSeedHex(seed, network, network.bip32)
|
||||
var account = root.derivePath('44\'/0\'/0\'')
|
||||
assert.equal(
|
||||
account.toBase58(),
|
||||
'xprv9xpXFhFpqdQK3TmytPBqXtGSwS3DLjojFhTGht8gwAAii8py5X6pxeBnQ6ehJiyJ6nDjWGJfZ95WxByFXVkDxHXrqu53WCRGypk2ttuqncb'
|
||||
)
|
||||
assert.equal(
|
||||
'xpub6BosfCnifzxcFwrSzQiqu2DBVTshkCXacvNsWGYJVVhhawA7d4R5WSWGFNbi8Aw6ZRc1brxMyWMzG3DSSSSoekkudhUd9yLb6qx39T9nMdj',
|
||||
account.neutered().toBase58()
|
||||
)
|
||||
|
||||
var key = account.derivePath('0/0')
|
||||
assert.equal('1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA', key.getAddress())
|
||||
})
|
||||
})
|
||||
|
||||
describe('bip49', function () {
|
||||
it('serialization and address', function () {
|
||||
// mnemonic: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
|
||||
var seed = '5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4'
|
||||
var network = bnetwork.bitcoin
|
||||
var root = HDNode.fromSeedHex(seed, network, network.bip49)
|
||||
var account = root.derivePath('49\'/0\'/0\'')
|
||||
assert.equal(
|
||||
account.toBase58(),
|
||||
'yprvAHwhK6RbpuS3dgCYHM5jc2ZvEKd7Bi61u9FVhYMpgMSuZS613T1xxQeKTffhrHY79hZ5PsskBjcc6C2V7DrnsMsNaGDaWev3GLRQRgV7hxF'
|
||||
)
|
||||
assert.equal(
|
||||
'ypub6Ww3ibxVfGzLrAH1PNcjyAWenMTbbAosGNB6VvmSEgytSER9azLDWCxoJwW7Ke7icmizBMXrzBx9979FfaHxHcrArf3zbeJJJUZPf663zsP',
|
||||
account.neutered().toBase58()
|
||||
)
|
||||
|
||||
var key = account.derivePath('0/0')
|
||||
assert.equal('37VucYSaXLCAsxYyAPfbSi9eh4iEcbShgf', key.getAddress())
|
||||
})
|
||||
})
|
||||
|
||||
describe('bip84', function () {
|
||||
it('serialization and address', function () {
|
||||
// mnemonic: abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about
|
||||
var seed = '5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4'
|
||||
var network = bnetwork.bitcoin
|
||||
var root = HDNode.fromSeedHex(seed, network, network.bip84)
|
||||
var account = root.derivePath('84\'/0\'/0\'')
|
||||
assert.equal(
|
||||
account.toBase58(),
|
||||
'zprvAdG4iTXWBoARxkkzNpNh8r6Qag3irQB8PzEMkAFeTRXxHpbF9z4QgEvBRmfvqWvGp42t42nvgGpNgYSJA9iefm1yYNZKEm7z6qUWCroSQnE'
|
||||
)
|
||||
assert.equal(
|
||||
'zpub6rFR7y4Q2AijBEqTUquhVz398htDFrtymD9xYYfG1m4wAcvPhXNfE3EfH1r1ADqtfSdVCToUG868RvUUkgDKf31mGDtKsAYz2oz2AGutZYs',
|
||||
account.neutered().toBase58()
|
||||
)
|
||||
|
||||
var key = account.derivePath('0/0')
|
||||
assert.equal('bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu', key.getAddress())
|
||||
})
|
||||
})
|
|
@ -50,7 +50,6 @@ describe('HDNode', function () {
|
|||
|
||||
it('has a default depth/index of 0', function () {
|
||||
var hd = new HDNode(keyPair, chainCode)
|
||||
|
||||
assert.strictEqual(hd.depth, 0)
|
||||
assert.strictEqual(hd.index, 0)
|
||||
})
|
||||
|
@ -124,12 +123,12 @@ describe('HDNode', function () {
|
|||
})
|
||||
|
||||
describe('getAddress', function () {
|
||||
it('wraps keyPair.getAddress', setupTest(function () {
|
||||
this.mock(keyPair).expects('getAddress')
|
||||
.once().withArgs().returns('foobar')
|
||||
|
||||
assert.strictEqual(hd.getAddress(), 'foobar')
|
||||
}))
|
||||
// it('wraps keyPair.getAddress', setupTest(function () {
|
||||
// this.mock(keyPair).expects('getAddress')
|
||||
// .once().withArgs().returns('foobar')
|
||||
//
|
||||
// assert.strictEqual(hd.getAddress(), 'foobar')
|
||||
// }))
|
||||
})
|
||||
|
||||
describe('getNetwork', function () {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue