LoginSignup
8
7

More than 5 years have passed since last update.

bitcoinjs-lib v3を使ったhdwalletスニペット

Last updated at Posted at 2016-11-11

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())
8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7