Browse Source

Improve xpub derivation perf by only deriving one node deep in loop

master
Luke Childs 5 years ago
parent
commit
34a5bc667d
  1. 2
      bench/index.js
  2. 6
      src/key-formats/xpub.js
  3. 2
      test/vanity-addresses.js

2
bench/index.js

@ -99,7 +99,7 @@ options.forEach(options => {
break; break;
case 'xpub': case 'xpub':
console.log(`Derivation Path: ${data.derivationPath}`); console.log(`Derivation Index: ${data.index}`);
console.log(`xpub: ${data.xpub}`); console.log(`xpub: ${data.xpub}`);
break; break;

6
src/key-formats/xpub.js

@ -1,16 +1,14 @@
const bitcoin = require('bitcoinjs-lib'); const bitcoin = require('bitcoinjs-lib');
const generateXpubKey = ({attempts, xpub}) => { const generateXpubKey = ({attempts, xpub}) => {
const change = 0;
const index = attempts - 1; const index = attempts - 1;
const derivationPath = `${change}/${index}`;
const node = bitcoin.bip32.fromBase58(xpub); const node = bitcoin.bip32.fromBase58(xpub);
const {publicKey} = node.derivePath(derivationPath); const {publicKey} = node.derive(index);
const format = () => ({ const format = () => ({
xpub, xpub,
derivationPath index
}); });
return {publicKey, format}; return {publicKey, format};

2
test/vanity-addresses.js

@ -97,7 +97,7 @@ testCases.forEach(options => {
case 'xpub': { case 'xpub': {
const node = bitcoin.bip32.fromBase58(keyData.xpub); const node = bitcoin.bip32.fromBase58(keyData.xpub);
key = node.derivePath(keyData.derivationPath); key = node.derive(keyData.index);
break; break;
} }

Loading…
Cancel
Save