개발하기좋은날

니모닉 생성 - 2 (니모닉 개발) 본문

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 생성후 배포 
반응형
Comments