Browse Source

REF: old hd wallets compatibility with new bitcoinjs

singleaddress
Overtorment 5 years ago
parent
commit
666b2ca848
  1. 23
      class/hd-legacy-breadwallet-wallet.js
  2. 6
      class/hd-legacy-p2pkh-wallet.js

23
class/hd-legacy-breadwallet-wallet.js

@ -1,7 +1,8 @@
import { AbstractHDWallet } from './abstract-hd-wallet';
import Frisbee from 'frisbee';
import bitcoin from 'bitcoinjs-lib';
import bip39 from 'bip39';
const bip32 = require('bip32');
const bitcoinjs = require('bitcoinjs-lib');
/**
* HD Wallet (BIP39).
@ -22,7 +23,7 @@ export class HDLegacyBreadwalletWallet extends AbstractHDWallet {
}
const mnemonic = this.secret;
const seed = bip39.mnemonicToSeed(mnemonic);
const root = bitcoin.bip32.fromSeed(seed);
const root = bip32.fromSeed(seed);
const path = "m/0'";
const child = root.derivePath(path).neutered();
@ -36,12 +37,16 @@ export class HDLegacyBreadwalletWallet extends AbstractHDWallet {
if (this.external_addresses_cache[index]) return this.external_addresses_cache[index]; // cache hit
const mnemonic = this.secret;
const seed = bip39.mnemonicToSeed(mnemonic);
const root = bitcoin.bip32.fromSeed(seed);
const root = bip32.fromSeed(seed);
const path = "m/0'/0/" + index;
const child = root.derivePath(path);
return (this.external_addresses_cache[index] = child.getAddress());
const address = bitcoinjs.payments.p2pkh({
pubkey: child.publicKey,
}).address;
return (this.external_addresses_cache[index] = address);
}
_getInternalAddressByIndex(index) {
@ -49,12 +54,16 @@ export class HDLegacyBreadwalletWallet extends AbstractHDWallet {
if (this.internal_addresses_cache[index]) return this.internal_addresses_cache[index]; // cache hit
const mnemonic = this.secret;
const seed = bip39.mnemonicToSeed(mnemonic);
const root = bitcoin.bip32.fromSeed(seed);
const root = bip32.fromSeed(seed);
const path = "m/0'/1/" + index;
const child = root.derivePath(path);
return (this.internal_addresses_cache[index] = child.getAddress());
const address = bitcoinjs.payments.p2pkh({
pubkey: child.publicKey,
}).address;
return (this.internal_addresses_cache[index] = address);
}
_getExternalWIFByIndex(index) {
@ -75,7 +84,7 @@ export class HDLegacyBreadwalletWallet extends AbstractHDWallet {
_getWIFByIndex(internal, index) {
const mnemonic = this.secret;
const seed = bip39.mnemonicToSeed(mnemonic);
const root = bitcoin.bip32.fromSeed(seed);
const root = bitcoinjs.bip32.fromSeed(seed);
const path = `m/0'/${internal ? 1 : 0}/${index}`;
const child = root.derivePath(path);

6
class/hd-legacy-p2pkh-wallet.js

@ -3,6 +3,7 @@ import bip39 from 'bip39';
import BigNumber from 'bignumber.js';
import signer from '../models/signer';
const bitcoin = require('bitcoinjs-lib');
const HDNode = require('bip32');
/**
* HD Wallet (BIP39).
@ -50,11 +51,12 @@ export class HDLegacyP2PKHWallet extends AbstractHDWallet {
_getWIFByIndex(internal, index) {
const mnemonic = this.secret;
const seed = bip39.mnemonicToSeed(mnemonic);
const root = bitcoin.bip32.fromSeed(seed);
const root = HDNode.fromSeed(seed);
const path = `m/44'/0'/0'/${internal ? 1 : 0}/${index}`;
const child = root.derivePath(path);
return child.keyPair.toWIF();
return child.toWIF();
}
_getExternalAddressByIndex(index) {

Loading…
Cancel
Save