|
|
@ -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); |
|
|
|
|
|
|
|