본문 바로가기
blockchain

[BitcoinWallet] HD wallet 생성

by clolee 2022. 10. 27.

HD 지갑(Hierarchical Deterministic Wallet)  생성

 

계층적 결정 지갑

하나의 seed는 여러개의 주소를 가질 수 있음

블록체인의 기능 중 하나 : 개인정보 보호. private privacy

hd wallet을 사용해 다른 주소들을 독립적으로 생성하여 send 하는데에 사용하면

상대방은 wallet 전체 금액이 어떻게 되는지 알 수 없음

지갑을 한번만 사용 (권장) => 아무도 내 주소를 추적할 수 없음

 

 

HD wallet 추가

 

암호를 생성하고, 해당 암호를 통해 개인키 생성

주소 생성 할 니모닉에 원하는 언어로 초기화 ( HD wallet의 seed값을 Mnemonic code로 생성)

니모닉 언어 목록

new Mnemonic(Mnemonic.word.Language) > word

mnemonic.js > './words'

 

src/api/wallet.js

const { PrivateKey } = require("bitcore-lib");
const { mainnet, testnet } = require("bitcore-lib/lib/networks");

const Mnemonic = require("bitcore-mnemonic");

const createWallet = (network = mainnet) => {
  var privateKey = new PrivateKey(Mnemonic.Words.KOREAN);
  var address = privateKey.toAddress(network);
  return {
    privateKey: privateKey.toString(),
    address: address.toString(),
  };
};

/**
 * Hierachical Determinstic wallet (HD wallet)
 */
const createHDWallet = (network = mainnet) => {
  let passPharse = new Mnemonic();
  let xpriv = passPharse.toHDPrivateKey(passPharse.toString(), network);

  return {
    xpub: xpriv.xpubkey,
    privateKey: xpriv.privateKey.toString(),
    address: xpriv.publicKey.toAddress().toString(),
    mnemonic: passPharse.toString(),
  };
};

module.exports = {
  createWallet: createWallet,
  createHDWallet: createHDWallet,
};

xpub: 많은 주소를 생성하기 위해 접근할 수 있는 xpub
privateKey: 개인키
address: 거래를 위한 주소
mnemonic: 암호문구

 

src/app.js

const { mainnet, testnet } = require("bitcore-lib/lib/networks");
const { createWallet, createHDWallet } = require("./api/wallet");
// const sendBitcoin = require("./api/sendBitcoin");

// console.log(createWallet(mainnet));
console.log(createHDWallet(testnet));

 

결과 확인

 

 

참고 :

https://youtu.be/ObRnmvIdecI

https://github.com/bitpay/bitcore/blob/master/packages/bitcore-mnemonic/docs/index.md

 

 

 

댓글