khann's IT와 경제 블로그

반응형

비트코인 지갑이란? 그리고 니모닉(mnemonic)

 

1. 지갑(Wallet)

지갑은 2가지 의미를 가진다.

첫쨰, 지갑=어플리케이션이다.

둘쨰, 지갑=데이터구조체이다. (키 관리)

 

 

쉽게 말하자면, 지갑은 블록체인이라는 호텔에서 내 방에 접근하기 위한 열쇠를 보관하는 애플리케이션이라고 보면된다.

열쇠들의 묶음에서 room 202에 접근할 수 있는 열쇠를 꺼내 룸에 들어가는 것 처럼, 1.2 btc가 들어있는 주소에 접근하는 거라고 생각하면 쉽다.

 

 

2. 지갑 종류

지갑은 크게 2가지 종류가 있다.

첫째, 비결정적 지갑(random)

둘쨰, 결정적 지갑(seeded, HD)

 

요즘은 관리의 특성상 하나의 니모닉으로 파생가능한 HD wallet을 주로 사용한다.

 

 

3. 니모닉(Mnemonic)

니모닉은 그리스 신화의 기억의 여신 므네모시네(Mnemosyne)에서 유래되었다. 므네모시네의 자녀인 뮤즈(Muses)는 올림포스 신들의 축제에서 아폴론을 도와 음악을 연주 하였는데, 악보가 없는 세계라 기억력에 의존하여 연주할 수 있었다고 한다. 그래서 니모닉(Mnemonic)이라는 어원은 "기억"에 기반하고 있다.

 

니모닉은 random하게 생성된 256bit의 entropy를 백업할 때 기억하기 쉽게 2048개의 단어 리스트로 각각 매핑한 것을 의미한다.

 

니모닉을 기억하고 있다면 bip39표준을 사용하는 어떤 지갑에서든지 seed를 파생시킬 수 있고 이 seed는 무한개의 키들을 파생시킬 수 있다. 즉, 무한개의 비트코인 주소를 derivation, recovery시킬 수 있다.

 

 

 

4. 니모닉 생성 과정

128bit(또는 256bit)의 entropy에 앞 4bit를 sha256으로 hashing하여 맨 뒤에 checksum으로 붙인다. 이렇게 총 132bit(또는 260bit)를 11bit씩 잘라서 총 12개(또는 24개)의 bit셋을 만든다. 이렇게 만들어진 bit셋을 각각 기 정의된 단어 셋과 1대1 매핑한다.

 

 

5. python을 활용한 니모닉 생성 실습

python을 활용하여 니모닉을 생성해볼 수 있다. 먼저 관련 라이브러리를 설치해준다.

1
pip install mnemonic
cs

 

다음으로 python을 실행한 다음 아래의 스크립트를 실행한다.

[INPUT]

1
2
3
4
from mnemonic import Mnemonic
mnemo = Mnemonic("english")
words = mnemo.generate(strength=256)
print(words)
cs

 

[OUTPUT]

1
romance gather jeans such exclude eyebrow prize frozen space position horror visual burger neglect switch about regret snap filter east option peasant poem rare
cs

그럼 이렇게 24개의 영어단어가 생성이 된다.

 

이 니모닉은 한글도 지원한다. 아래처럼 english대신 korean을 입력하면 된다.

[INPUT]

1
2
3
4
from mnemonic import Mnemonic
mnemo = Mnemonic("korean")
words = mnemo.generate(strength=256)
print(words)
cs

 

 

[OUTPUT

1
풍경 긴급 광고 공항 대낮 초청 부인 중간 지우개 설사 답장 비둘기 양주 퇴원 구석 주변 민족 발전 굉장히 평균 평일 다양성 긴급 우선
cs

그럼 이렇게 한글 단어 24개가 생성이 된다.

 

 

 

 

반응형

'보안' 카테고리의 다른 글

Python으로 비트코인 블록체인 블록헤더 해쉬 계산해보기  (0) 2022.06.14
암호학의 종류 간단하게 알아보기  (0) 2022.06.13
비트코인 펀더멘탈  (0) 2021.06.14
비트코인 가치  (0) 2021.06.14
비트코인 이해  (0) 2021.06.14

이 글을 공유합시다

facebook twitter googleplus kakaostory naver