-
Mnemonic 과 HD WalletBlockChain Tech 2019. 1. 2. 11:18
Mnemonic 생성 / 백업
최근 지갑 Web & App에서 거의 필수적으로 보여지는 문구이다. 직접 생성을 해보면 12개의 단어가 나온다. (HardWare 지갑의 경우 24개의 단어 조합을 주로 사용한다.)
1. Mnemonic 이란
Mnemonic의 어원은 기억의 여신 ‘Mnemosyne’ 이다. 제우스의 부인이자 9명의 예술의 여신 (Muses)의 어머니이기도 하다. 그녀의 이름은 그리스어로 ‘기억' ‘곰곰이 생각하다'라는 뜻을 가지고 있고, 그녀의 이름에서 파생된 Mnemonic은 오늘 날 ‘기억술'이나 ‘기억 증진법'을 뜻한다.
처음 ‘니모닉 단어 생성' 이라는 말을 들었을 때, 단순히 백과사전에 기록 된 n개의 단어를 랜덤으로 제공해주는 기능이라고 생각 했다. 하지만 Mneminic이란 단순히 암호화화폐 지갑에서의 Seed 값이 아닌, ‘기억 증진법'으로 생각하는 것이 맞다.
어릴 적 ‘공부의 신’들이 TV 프로그램에 나와서 암기를 쉽게 하기 위해서 하나의 단어를 이미지와 매칭 한다고 말한 것을 들어본 적이 있을 것이다. 그것이 Mnmonic 이다.
결국 Mnemonic 이란, 암호화화폐 지갑을 위해 생성 된 개념이 아니다. Wallet에서 사용하는 Mnemonic Phrase는 우리가 보다 쉽게 인지하고 암기(?) 할 수 있도록 12개의 단어를 주어주고, 그 것을 기반으로 Private Key를 만들기 위함이다.
Private Key : 183bab3a43ef259a7f8c5d18efbd2d440c390a78ab8018799efdcba11811a18f
Mnemonic Phrases : check korean top class hiphop on the nobless frozen elsa stake cubic
어떤 Key 값이든 외우고 싶진 않지만.. 굳이 외운다면 Mnemonic Phrases가 편해보이긴 한다.
2. Mnemonic Phrases 그리고 Wallet
Mnemonic의 어원도 알고 어떤 느낌인지 알았겠다. 실제 Mnemonic Phrases를 사용하여 각 지갑 Web & App 연동을 진행해보았다.
Mnemonic 의 개념을 깨닫고 공부를 멈추려다.. 위 부분에서 많은 혼란이 찾아왔다.
- MyEtherWallet에서 Mnemonic Phrases를 입력하면 끝 없이 Address가 나온다. (1세트의 Phrases에서 끝 없이 Address가 생성 된다.)
- HD derivation 경로를 바꾸면 모든 Address가 변경 된다.
(변경 되는 이유는 아마도 Mnemonic Phrases + HD devrivation 조합으로 Private Key를 생성 하기 때문일 것이다.)
또한, MetaMask에서 해당 Mnemonic Phrases로 지갑을 복구 하면, 모든 Address가 순차적으로 복구 되고, ‘New Address’ 를 클릭 하면 위 사진의 순서대로 추가가 된다.
[MetaMask]
- 0xa2d~~~~ : 1 ETH
- 0x83b~~~~ : 0.00156 ETH
위 상태에서 새로운 지갑 App으로 접속하여 Mnemonic Phrases로 복원을 하면 위의 Address가 자동으로 추가된다. (App이 친절하면 잔액 혹은 트랜잭션이 존재 하는 Address를 추가 해줄 것이다.)
App이 친절 하지 않아. ‘0xa2d~~~~’로 시작하는 Address만 복원 해주어도 그저 ‘New Address’ 만 클릭하면 ‘0x83b~~~~’ Address 가 추가된다.
당연히 그 다음 새로운 주소를 생성 하면 그 것은 ‘0xf2451~~’이 될 것이다.
결론은 니모닉 문구로 n개의 지갑을 만들 수 있고, 굳이 n개의 Private Key를 들고 다닐 필요가 없다. 결국 니모닉 문구를 Seed로 계좌가 생성 되니 12개 혹은 24개의 단어만 기억한다면 여러개의 계좌를 컨트롤 할 수 있다.
3. HD Wallet (Hierarchical Deterministic)
HD Wallet 은 Hierarchical Deterministic 의 줄임말로 계층적 결정성을 의미한다. 말이 굉장히 어렵지만 쉽게 이야기해 하나의 Seed가 무수한 Address를 결정한다는 의미이다.
BIP32에서 제안 되었고, BIP44에서 개선되었다.
BIP (Bitcoin Improvement Proposal)
EIP (Ethereum Improvement Proposal)
m / purpose' / coin_type' / account' / change / address_index
- m : Mnemonic 의 약자인 것으로 추정된다.
- purpose : BIP44의 44를 뜻한다.
- coin_type : 코인의 번호다. (현재 등록된 코인 번호)
- account : Public Key / Address 의 개념이 아닌 이것들을 담을 수 있는 계정이다. (하나의 계정에 여러개의 Address를 생성할 수 있다.)(EOS의 계정을 사용해보신 분들은 이해가 조금 쉬울 것 같다.) (국민은행 / 신한은행 / 카카오뱅크 정도라고 생각하면 쉽게 이해하시려나..ㅎ)
- change : 0은 내부 체인 1은 외부 체인이라고 한다. 외부 체인은 지갑 외부에서 볼 수 있도록 의도된 주소 (입금용 Address) 내부 체인은 지갑 외부에 표시 되지 않고 반송 Transaction Change에 사용 된다.
- address : n번째 지갑
Mnemonic Phrases -> HD derivation 경로 지정
이러한 규칙을 만들기 때문에 하나의 Mnemonic Phrases로 BTC / BCH / ETH/ ETC 등을 생성 할 수 있다.
참고 문헌
'BlockChain Tech' 카테고리의 다른 글
블록체인 Oracle Problem (0) 2019.01.02 이중 지불 (Double Spent) / 51% Attack (0) 2019.01.02 ERC20 그리고 EIP (0) 2019.01.02