bitcoinjs-lib hdwallet
- 階層的決定性ウォレット
- この記事はbitcoinjs-lib@3系です
install
npm i bip39 bitcoinjs-lib
mnemonic generate
12 word
const mnemonic = bip39.generateMnemonic();
24 word
const mnemonic = bip39.generateMnemonic(256);
mnemonic to masternode
const mnemonicToM = (mnemonic, password, network) => {
const seed = bip39.mnemonicToSeed(mnemonic, password || "")
const m = bitcoin.HDNode.fromSeedBuffer(seed, bitcoin.networks[network || "bitcoin"])
return m
}
master extended private key
m.toBase58()
extended private key
m.deriveHardened(44).deriveHardened(0).deriveHardened(0).toBase58()
m.derivePath("m/44'/0'/0'").toBase58()
extended public key
m.deriveHardened(44).deriveHardened(0).deriveHardened(0).neutered().toBase58()
m.derivePath("m/44'/0'/0'").neutered().toBase58()
bitcoin address
address
m.derivePath("m/44'/0'/0'/0/0").getAddress()
private key
m.derivePath("m/44'/0'/0'/0/0").keyPair.toWIF()
とりあえず実行してみる
const bitcoin = require("bitcoinjs-lib")
const bip39 = require("bip39")
const mnemonicToM = (mnemonic, password, network) => {
const seed = bip39.mnemonicToSeed(mnemonic, password || "")
const m = bitcoin.HDNode.fromSeedBuffer(seed, bitcoin.networks[network || "bitcoin"])
return m
}
const mnemonic = bip39.generateMnemonic();
const m = mnemonicToM(mnemonic, '', 'bitcoin')
console.log(mnemonic)
console.log(m.derivePath("m/44'/0'/0'").toBase58())
console.log(m.derivePath("m/44'/0'/0'").neutered().toBase58())
console.log(m.derivePath("m/44'/0'/0'/0/0").getAddress())