HD 지갑 (Hierarchical Deterministic Wallet)은 계층적 결정론적 지갑이라고 한다. 하나의 마스터키로부터 여러개의 자식키를 체계적으로 생성할 수 있는 트리구조의 블록체인 지갑이다. 이는 BIP-32 표준에 의해 정의되며 HD 지갑을 사용하면 하나의 니모닉 구문이나 시드만으로도 여러개릐 주소를 생성하고 파생해 관리할 수 있다.
HD 지갑의 특징
계층적 구조
HD 지갑은 계층적 구조로 되어 있어 마스터 키에서 여러 하위키들이 파생된다. 이를 통해서 부모-자식 관계로 키를 관리할 수 있고 자식키마다 새로운 주소를 생성할 수 있다. 예를 들어 개인키A로부터 개인키B와 개인키C가 생성되는 방식이다.
결정론적
HD 지갑을 결정론적 방식으로 동작하는데 하나의 시드(Seed)로부터 항상 동일한 순서대로 자식키들이 생성된다. 이를 통해 동일한 니모닉 구문이나 시드를 이용하면 지갑복구가 가능하다.
복구를 위해 니모닉구문(12구문 또는 24구문)을 사용하는데 이 구문은 HD 지갑의 마스터키와 개인키를 재생성하는데 필요한 시드 역할을 한다. 즉 니모닉 구문을 알면 그 하위에 있는 자식 키들을 모두 알고 있게 되기 때문에 니모닉 구문은 어디에도 노출시키지 말아야 한다.
높은 보안 및 관리성
HD 지갑은 여러 개의 주소를 관리하면서도 단 하나의 마스터 키로 모든 키를 복구할 수 있어 관리가 편리하다. 개별 주소마다 고유한 키가 있지만 모든 키들은 하나의 마스터키에서 파생되므로 개인키가 유출될 위험이 줄어든다.
HD 지갑의 구조
HD 지갑은 트리구조이다. 마스터키에서 여러 계층의 키를 파생할 수 있다. BIP-32 표준에 따라 각 계층을 Path로 구분하며 일반적으로 사용하는 Path 표현은 다음과 같다.
m / 44' / 0' / 0' / 0 / 0
- m : 마스터키
- 44' : BIP-44 표준을 따른다
- 0': 코인 타입(예: 비트코인은 0, 이더리움은 60)
- 0': 계좌 인덱스(다중 계정을 지원)
- 0: 외부 키 또는 내부 키를 구분하는 인덱스
- 0: 실제 생성된 키 또는 주소의 인덱스
비트코인과 이더리움 지갑 모두 HD 지갑 방식이지만 네트워크 구조와 표준의 차이로 인해 지갑을 생성하는 방법에서 약간의 차이가 있다. 주로 이 차이는 Path 에 있다.
비트코인 지갑 Path
비트코인 지갑은 BIP-44를 따르며 경로는 다음과 같다.
m / 44' / 0' / 0' / 0 / 0
- m: 마스터 키
- 44': BIP-44 표준을 따른다는 의미
- 0': 코인 타입이 비트코인을 나타냅니다 (0은 비트코인을 의미)
- 0': 계정 인덱스
- 0: 외부 트랜잭션을 위한 주소 체계
- 0: 실제 주소의 인덱스
비트코인 지갑 주소는 다양한 형식이 있다.
- P2PKH (Pay to Public Key Hash): 전통적인 비트코인 주소 형식, 보통 1로 시작
- P2SH (Pay to Script Hash): 더 복잡한 스크립트를 허용하는 주소 형식으로, 보통 3으로 시작
- Bech32: 비트코인 세그윗(SegWit) 주소 형식, bc1로 시작합니다. 이는 비트코인의 최신 주소 형식으로, 효율적인 거래와 더 낮은 수수료를 제공
이더리움 지갑 Path
이더리움 지갑은 BIP-44를 따르지만 코인 타입이 다르다.
m / 44' / 60' / 0' / 0 / 0
- m: 마스터 키
- 44': BIP-44 표준
- 60': 이더리움을 의미하는 코드 (60은 이더리움의 코인 타입)
- 0': 계정 인덱스
- 0: 외부 트랜잭션을 위한 주소 체계
- 0: 주소 인덱스
이더리움 주소는 항상 0x로 시작하며, 40자의 16진수 문자열로 구성된다.
이더리움은 단일한 주소 형식을 사용하며, 주소는 대소문자를 구별하지 않지만, EIP-55 표준에 따라 체크섬을 포함하는 대소문자 혼합 형식의 주소를 사용할 수도 있으며 이 체크섬은 주소 입력 오류를 방지하는 데 도움을 줍니다.
HD 지갑의 주요 표준
HD 지갑에서 사용하는 표준은 다음과 같다.
BIP-32
HD 지갑의 핵심적인 표준으로, 마스터 키로부터 자식 키들을 파생하는 방법을 정의하다.
BIP-44
HD 지갑에서 여러 암호화폐를 다룰 수 있도록 확장한 표준이다. 이 표준을 통해 비트코인뿐만 아니라 이더리움, 라이트코인 등 다양한 코인을 하나의 HD 지갑에서 관리할 수 있다.
BIP-39
니모닉 구문을 정의하는 표준으로 이는 사용자가 쉽게 기억할 수 있는 12개 또는 24개의 단어로 이루어진 문구를 통해 지갑을 복구하거나 백업할 수 있게 한다.
니모닉 구문은 BIP-39 표준에 따라 생성되며 일반적으로 12개, 15개, 18개, 21개, 24개의 단어로 이루어져 있다. 이 단어들은 총 2048개의 단어 목록에서 무작뒤어 선택되어 지갑의 시드를 표현하는데 사용된다.
니모닉 구문의 구성 방식은 고유해야 하는데 지갑 생성시 랜덤한 데이터를 이요해 무작위 숫자가 생성된다. 이 랜덤 데이터의 일부는 체크섬으로 사용되어 데이터의 정확성을 보장해준다. 생성된 숫자는 BIP-39 단어 목록에서 대응되는 단어로 변환되며 각 단어는 11비트에 해당하므로 128비트의 엔트로피가 필요할 때 12개의 단어, 256비트의 엔트로피가 필요할때 24개의 단어로 변환된다.
HD 지갑의 장점
장점은 하나의 마스터키 또는 시드만 있으면 여러 지갑과 주소를 복구할 수 있기 때문에 지갑을 백업할때 마스터키 또는 시드 문구만 안전하게 보관하면 된다. 또한 한 지갑에서 수천 개의 주소를 생성할 수 있어서 지갑의확장이 용이하다.
HD 지갑의 단점
단점은 마스터키가 노출되면 그와 연결된 여러 지갑이 모두 해킹당할 수 있기 때문에 마스터 키 또는 시드를 안전하게 보관해야 한다.