2017년 9월 12일 화요일

비트코인 HDwallet의 개념

목차


비트코인 지갑의 신비

비트코인 지갑에는 알고싶지 않은 신비한 비밀이
숨겨져 있습니다. 비트코인을 영원토록 몰랐으면 좋았겠지만
알게 된 이상 이 공부지옥을 벗어날 순 없습니다.
지금부터 그걸 알아봅시다

비결정적 지갑 (nondeterministic wallet)

비트코인은 하나의 주소(계좌)를 일회용처럼 쓰고
버리자는 주의 입니다.
일회용 주소

왜 이런 더러운 인성을 가져야하냐면
추적의 고리를 끊기 위해서입니다.

만약 엄마가 자기의 비트코인을 추적한다고 칩시다
이때 하나의 주소만 사용한다면
언젠간 엄마가 아들이 그 주소를 쓴다는 것을 알았을때
그 주소 하나만 따라가면 뭘 했는지
동선이 전부 나옵니다.

A주소 : 교과서 사고 -> 학원비 내고 -> pc방비 결제 ->
음란사이트 회원비 결제 -> 리플 구입..

줄줄줄 다 밝혀져 버리죠.
이는 어머니의 강렬한 사랑을 맛볼 기회를 제공합니다
리또속
특히나 리플을 구입한건 부모님께 큰 실망을 줄겁니다

하지만 여러개의 주소를 일회용으로 사용한다면
하나의 주소는 하나의 단서만을 남기게 됩니다.

A주소 : 교과서 구입
B주소 : 학원비 납부
C주소 : pc방비 결제
D주소 : 음란사이트 회원비
E주소 : 리플 구입..

이렇게 되기 때문에 아들이 뭘했는지 모두 알려면
아들이 사용하는 모든 주소를 알아내야됩니다.
뒤질 가능성이 매우 감소하죠.

단지 이렇게 할려면 주소를 여러개 만들어야 됩니다.
그 여러개를 ‘비결정적으로’ 만들어주는 지갑이 바로
비결정적 지갑입니다.

그럼 비결정적이 무슨 소리냐

무작위로 찍어서..

넵. 용어 줫같죠?

결정적 지갑 (deterministic wallet)

무작위로 주소를 찍어낼땐 참 즐겁습니다.
문제는 백업이라거나 주소를 다른 지갑으로 옮길때
발생합니다.
즉 관리가 거지 같습니다.
한 비극적 일화를 보면..

철수는 비트코인 지갑 백업을 철저히 하는
바른 인간입니다.
그날도 100개의 주소를 usb로 백업하고 담배피고 있는데
영희가 같이 여행갈 자금을 보내왔습니다.
그러자 결정적 지갑은 101번째 주소를 생성해서
거기다가 여행자금을 박아놓게됩니다.

여행당일 컴터가 임종하셔서 지갑도 함께 하늘나라로 갔습니다
하지만 철수는 백업의 달인!
미소지으며 백업했던 100개의 주소를 펼쳐놓습니다만..
101번째 주소에 자금이 들었으므로
여행자금은 없습니다.
철수는 진지한 얼굴로 영희를 봅니다.

‘영희야 오빠믿지? 내 말 잘들어
지금부터 비결정적 지갑에 대해 설명해줄께’

설명을 듣고난 영희는 고개를 끄덕이며 질문합니다

‘돈은?’

‘영희야 얘기했잖아 이건 비결정적 지갑의 문제야!
난 백업을 했.. ‘

짝 짜짝짜 짝 짜짝짝!!!

자진모리장단으로 뺨을 때리고
화난 모습으로 사라지는 영희..
그 뒷모습을 보며
철수는 나카모토 사토시를 찾아나섭니다.
얼마후 나카모토 사토시는 자취를 감추게 됩니다.

이런 비화가 생기자
개발자들은 쥐도새도 모르게 행방불명되는걸 방지하기
위해 무작위 생성이 아니라
특정한 키워드 단어들을 기초로해서 주소들이
생성되게 방법을 바꿉니다.

만약 단어가 딸기라면..
모든 주소는 딸기1, 딸기2.. 이런식인거죠.
(※ 본 예제는 유아용으로 실제랑은 많이 다릅니다)

그럼 그 키워드.. 즉 패스워드만 알면
이후에 생성되는 모든 주소들을 알 수 있으므로
각 주소들은 패스워드에 따라 결정되었다고 할 수 있습니다.
결정적 지갑
결정적 지갑

이것을 북두의.. 결정적 지갑 이라고 합니다.

이제는 돈이 새로운 주소로 들어올때마다 백업할
필요없이 지갑 만들때 맨처음 키워드들만
백업해놓으면 모든 주소를 복구할 수 있습니다.

계층 결정적 지갑 (hierarchical deterministic wallet)

개발자들은 여기서 한발 더 나아가서
주소들의 계급 계층을 만들어 놨습니다.
hd지갑

그 이유는 멀티를 뛰기 위해서입니다.
예를들어

지금 내컴에 지갑이 있습니다.
그런데 사업을 시작해서 그쪽 가게에서도
입출금을 해야됩니다.

hd지갑
한데 새로뽑은 점장이 이렇게 생겼습니다

여기서 최선은 저 인간을 짜르는 거 겠지만
쟤도 가족이 있으니 일단 보류하고

대신 저 가게의 지갑을 저기서도 관리하지만
이쪽에서 더 높은 권한으로 컨트롤 할 수 있게 해야합니다
쟤가 무슨 짓을 할지 모르니까..

그것이 가능한 것이 계층 결정적 지갑 입니다
hdwallet
마스터 패스워드는 이쪽에서 관리하고
저쪽에는 하위주소만 관리가능한 키를 주는 것이죠.

이러면 저쪽에서 생성한 주소를 이쪽에서는 전부
접속할 수 있지만 저쪽에선 이쪽에서 생성한 주소는
건드리지 못합니다.

심지어 처음부터 입금만 가능한 키를 줄수도 있습니다
이것은 전자상거래 같은 해킹위험이 높은 사이트를
관리할때 편리하죠.
거기가 털려도 아무문제 없으니까요.

맺으며

무슨 놈의 지갑이 이래 복잡혀..

Written with StackEdit.

0 개의 댓글 :

댓글 쓰기