[가상화폐] HD wallet - 여러개의 주소를 사용하는 지갑

안녕하세요, goldenman 입니다.

최근들어 비트코인지갑에 대한 문의가 개인적으로 많이 들어와서 포스팅으로 남겨봅니다.

비트코인 주소가 바뀌어 있어요. 제 지갑에 문제 있는 것 아닌가요?

결론부터 말씀드리자면,

정상입니다!!! 아무런 문제가 없습니다

되겠습니다.

대표적으로 MyCelium, jaxx 비트코인지갑, Byteball지갑이 이에 해당됩니다.


HD 지갑이란?

매번 코인의 트랜잭션(transaction, 송금전송)이 발생할때마다 지갑의 주소가 새로 생성되는 지갑을 HD 지갑(Hierarchical Deterministic Wallet)이라고 합니다.

보통 일반적으로는 지갑=1개의 주소라고 생각하기 쉬운데, 그렇지 않습니다.
하나의 지갑에 여러 주소를 통합적으로 관리할 수도 있으며, 이렇게 임의로 여러개의 주소를 그때그때 추가생성하기도 합니다.

내부적으로 추가되고 생성된 적 있는 모든 주소는 계속해서 유효하며, HD지갑 내에서 통합되어 관리됩니다.
지갑에서 보여지는 잔액은 이 모든 주소에 들어있는 코인수의 총합이 되며,
수신가능하게 표시되는 주소는 단지 최근에 생성한 주소를 대표적으로 보여주는 것일 뿐입니다.

표시되고 있는 새 주소가 아닌 이전 주소로 다른 누군가가 송금을 해준다하더라도,
여전히 그 금액은 내 지갑에 합해져서 보여주는 나의 자산입니다.

도대체 왜 이렇게 하는걸까요?

보안적인 측면 때문입니다.

일전에 코인의 익명성과 관련된 포스팅(클릭)에도 밝혔듯이, 블럭체인의 투명성은 부담스러운 약점이기도 합니다.

단 하나의 주소값(address)를 사용하게 된다면 내가 보내고 받는 모든 transaction 내역이 한 눈에 파악할 수 있게 됩니다.

HD지갑에서는 하나의 지갑내에 여러개의 주소를 생성하여 알아서 분산하여 보관함으로써 이러한 부분을 어느정도 방지할 수 있게 됩니다. 물론 파쇄된 문서도 맞추어볼 수 있듯이, 좀 더 부지런히 블럭체인을 조합해보면 이것이 HD지갑 내부의 여러 주소의 것인가 추론은 해볼 수 있겠지만, 한 눈에 정리되어 보이는 것과는 상당한 수준의 차이를 가지게 합니다.


바이트볼 지갑 연결과 관련하여

바이트볼 배포와 관련하여 지갑을 연결받고 배포받는 시스템에서는,
이것이 간혹 혼란을 불러일으키고 문제를 일으키게 됩니다.

배포를 위해 연결하는 주소는 단 하나의 address 인데,
실컷 힘들게 연결한 후에 HD지갑이라는 이유로 지갑안에서는 다른 주소로 코인이 들어있게 될 수도 있기 때문입니다.

A 주소를 연결해두었더니, 지갑내에서 임의로 B 주소를 생성해버렸고 이후 송금을 B로 해버렸다면,
같은 지갑에 A+B만큼의 금액이 있더라도, A 주소에 들어있는 코인수만큼만 인정받기 때문입니다.

이를 해결하기 위해서는 아래 둘 중 하나를 실행하면 됩니다.

  1. B 주소도 추가로 연결작업을 해준다.
  2. A 주소로 모든 자산을 모아준다.

1번은 추천하지 않습니다. 주소가 생길때마다 연결하는 것은 굉장히 번거롭습니다.

2번은 내 지갑에서 내 지갑으로 송금을 한다는 개념이 생소할 수도 있습니다만, 연결된 주소 A가 마치 남의 주소인마냥 그냥 내 지갑의 잔액 모두를 다시 A로 옮기도록 송금(transaction생성)하면 됩니다. 물론 약간의 transaction fee는 감수해야겠군요.

그럼 내 지갑내의 여러 주소에 흩어져있던 내 잔액이 A 주소명의로 모아지는 효과를 가지게 됩니다.

이는 비트코인 지갑뿐만 아니라 바이트볼 지갑에서도 유효합니다.

만일 transition bot 에게 연결코인수 현황을 물어봐서 실제 내가 가진 코인 수 보다 적다면,

연결된 주소로 모아주는 것을 한 번 해보세요.

마침 오늘 바이트볼 6차 배포일이군요 ^^

모두 부자됩시다!


제 글이 도움이 되었다면?!
↓↓↓ 아래 !!!VOTE UP!!! 부탁드립니다 ^^ ↓↓↓

H2
H3
H4
3 columns
2 columns
1 column
24 Comments