BlockChain
니모닉 생성 - 2 (니모닉 개발)
devbi
2022. 7. 20. 11:16
반응형
니모닉 생성되는 과정을 코드를 통해서 알아보자
아래 라이브러리를 사용
- res : https://github.com/ConsenSys/eth-lightwallet#readme
1. 랜덤한 니모닉 코드 생성
let mnemonic = lightwallet.keystore.generateRandomSeed();
console.log(menemonic)
Log의 내용은 아래와 같이 찍힌다
"laugh vendar ctucial length cup surface pratice toilet license easy dash rug"
2. newWallet 생성
let password = "<input password>"
let mnemonic = "<input mnemonic code>"
try
{
lightwallet.keystore.createVault
(
{
//salt: fixture.salt,
password: password,
seedPhrase: mnemonic,
hdPathString: "m/0'/0'/0'"
},
function(err,ks){
ks.keyFromPassword(password, function(err,pwDerivedKey){
ks.generateNewAddress(pwDerivedKey,1);
let address = (ks.getAddresses()).toString();
let keystore = ks.serialize();
console.log("addr => "+address+" keystore => "+keystore)
});
}
);
}catch(exception){
console.log("error"+exception)
}
설명 :
- hdPathString 은 Hierarchal Deterministic 약자로 결정형 계층 지갑이란 뜻
- Bitcoin을 위해 만들어진 표준이지만 현재는 secp256k1 개인 키에 의존하는 다양한 블록체인에 적합
- BIP-32, BIP-39, BIP-44 참고
- HD path는 "/" 마다 의미가 달라진다
- 예를들어 이더리움 같은 경우 m/44’/61’/0’/0 나타내고자한다면 그 의미는 아래와 같다
- m’ / purpose’ / coin_type’ / account’ / change / address_index
- 이더리움 클래식은 : m’/44’/61’/0’/0
- 이더리움 테스트넷은 : m’/44’/1’/0’/0 계층적 Common paths를 가지고있다
- Salt를 넣지않는 경우 자동으로 고유한 Salt를 생성하게된다
- pwDerivedKey는 개인키를 해독할때 사용
- lightwallet.keystore.createVault를 사용하여 키스토어를 생성
- lightwallet.keystore.createVault 첫번쨰 인자는 option, 두번쨰는 콜백 함수
- ks.generateNewAddress를 통해서 새로운 주소 생성함수를 실행, 두번쨰 인자는 지갑 생성 갯수
- 주소와 keystore 생성후 배포
반응형