니모닉(mnenonic)은 원래 쓰이는 단어입니다.
두산 백과 사전 니모닉의 해석을 보면,
'니모닉은 재사용이 필요할 때 사람의 기억을 돕기 위해 명확하게 선택된 상징이나 상징의 조합을 사용하는 것을 말한다.'라고 되어 있습니다.
그렇다면, 블록체인에서 니모닉은 어떻게 사용되는 것일까요?
니모닉은 블록체인에서 가장 중요한 월렛의 개인키를 복구할 때 사용됩니다.
서명 알고리즘에 의해 개인키와 공개키를 만들 수 있습니다.
여기서 개인키는 한 개인이 보유하고 있어야 하고 비밀키라고도 불리는 아주 중요한 키입니다.
다만, 알고리즘에 의해 만들어진 키는 매우긴 숫자(128bit)이기 때문에 일반적으로 외울수가 없습니다.
이것을 16진수로 변환하여 표현하게 되는데, 이것도 아무렇게나 나열된 글자이기 때문에 외우기가 어렵습니다.
FCCF1AB3329FD5DA3DA9577511F8F137
예시를 들어보면, 메타마스크에서 새 지갑 생성을 하면 아래와 안내문구가 표시됩니다.
MetaMask는 이 비밀번호를 복구할 수 없습니다.
메타마스크는 지갑 서비스일 뿐 온라인에 사용자의 지갑을 저장하지 않습니다. 로컬에 설치된 메타마스크의 비밀번호는 로컬 메타마스크 내에만 저장되어 있습니다. 그래서 만약 메타마스크를 삭제하면 비밀번호만으로는 동일한 지갑을 사용할 수 없게 됩니다.
메타마스크의 비밀번호는 현재 로컬에 설치된 메타마스크의 비밀번호 일 뿐, 저장된 개인키와는 관련이 없습니다.
하지만, 개인키를 보관하고 있으면, 어느 곳에 메타마스크를 다시 설치하더라도 자신의 개인키를 입력하여 기존과 동일한 지갑계정을 사용할 수 있습니다.
이 때, 개인키를 보관하는 방법 중 하나가 니모닉 입니다. (물론 개인키를 그대로 보관하셔도 됩니다.)
새 지갑 생성을 생성하다보면 다음과 같은 화면을 볼 수 있습니다.
이 비밀 복구 구문을 니모닉(mnenonic)이라고 부릅니다. 총 12개의 문장으로 되어 있습니다.
블록체인에서 사용하는 니모닉은 BIP-39에서 제안된 후 사용되어지고 있습니다.
기존 Random Seed를 통해 개인키 생성을 하고 개인키 분실 시 복구가 불가능한 문제를 보완합니다.
Mnemonic을 통해 개인키를 재생성하여 사용할 수 있습니다
Mnemonic 생성 방식은 아래와 같습니다.
- 랜덤 Seed(128bit)를 생성
-> sha256 해시 후 Checksum(4bits)
-> Seed(128bits)와 Checksum(4bits) 도합 132bits를 11bits씩 분할 (총 12개)
-> BIP 39 word list에서 찾아서 분할된 데이터를 매핑
-> 니모닉 결과값 생성
http://wiki.hash.kr/index.php/BIP39
BIP39 - 해시넷
BIP39(Bitcoin Improvement Proposal 39)는 니모닉 코드(mnemonic code) 단어를 설명하는 일반적인 산업 표준이다. BIP39는 복구 단어를 만드는 방식과 관련되어있다. 복구 단어는 니모닉 코드 단어(mnemonic code word
wiki.hash.kr
워드리스트는 각 언어별로 있는데 english는 아래에서 확인이 가능합니다.
https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
- 예를 들어 첫 11개의 bits가 00000000001이 나왔다면 abandon 이라는 단어로 대체되게 됩니다.
- 2^11 = 2048
'IT > Blockchain' 카테고리의 다른 글
ERC-20 컨트랙트 작성 with Hardhat, Openzeppelin (0) | 2023.08.20 |
---|---|
ERC-20? ERC, EIP란 무엇인가? (0) | 2023.08.12 |
Hardhat 튜토리얼 - 4) 컨트랙트 테스트 (0) | 2023.08.10 |
Hardhat 튜토리얼 - 3) 배포 설정 (0) | 2023.08.10 |
Hardhat 튜토리얼 - 2) 소스 분석 (0) | 2023.08.09 |