HD 지갑과 파생 경로 설명 (BIP44)
목차
암호화폐 지갑을 설정하고 12단어 시드 구문을 받으면, 그 단일 백업은 지갑이 앞으로 만들 모든 계정에 대한 접근 권한을 부여합니다 — Bitcoin, Ethereum, Solana 및 기타 지원되는 모든 체인에서. 이를 가능하게 하는 메커니즘을 HD 지갑이라 하며, 사용하는 주소 체계는 파생 경로에 의해 관리됩니다.
이 가이드에서는 HD 지갑이 하나의 시드를 무제한의 키로 변환하는 방법, m/44'/60'/0'/0/0 같은 파생 경로의 실제 의미, 그리고 지갑이나 블록체인 간 이동 시 경로를 올바르게 설정하는 것이 왜 중요한지 설명합니다.
HD 지갑이란?¶
HD는 Hierarchical Deterministic(계층적 결정론적)의 약자입니다. 이 용어는 2012년에 발표된 BIP32 명세에서 나왔으며, 단일 루트에서 암호학적 키 쌍의 트리를 파생하는 방법을 정의합니다.
계층적이란 키가 트리 구조로 조직됨을 의미합니다 — 부모 키가 자식 키를 생성할 수 있고, 그 자식이 손자를 생성할 수 있습니다. 트리는 필요한 만큼 깊이 분기할 수 있습니다.
결정론적이란 과정이 반복 가능함을 의미합니다. 동일한 루트(마스터 시드)가 주어지면, 표준을 따르는 모든 지갑에서 매번 동일한 키 트리가 생성됩니다.
HD 지갑 이전에는 새 주소마다 별도의 무작위 개인 키를 생성하고 백업해야 했습니다. 100개의 주소를 생성하면 100개의 백업이 필요했습니다. 하나라도 놓치면 해당 자금은 사라졌습니다. HD 지갑은 이 문제를 해결했습니다. 시드를 한 번 백업하면 지갑이 앞으로 파생할 모든 키가 이미 그 백업에 포함됩니다.
트리의 루트는 BIP39 시드 구문에서 옵니다. 니모닉은 PBKDF2를 통해 512비트 바이너리 시드로 변환됩니다(BIP39 완전 해설에 설명됨). 512비트 시드는 마스터 개인 키(256비트)와 마스터 체인 코드(256비트)로 분할됩니다. 이 두 가지가 함께 전체 트리가 성장하는 루트를 형성합니다.
m/44'/60'/0'/0/0의 구조¶
파생 경로는 트리 내에서 특정 키를 식별하는 주소입니다. 컴퓨터의 파일 경로처럼 보이며, 각 세그먼트는 어느 브랜치를 따라갈지 알려줍니다.
첫 번째 Ethereum 주소의 표준 경로인 m/44'/60'/0'/0/0을 해독해 봅시다:
m / 44' / 60' / 0' / 0 / 0
│ │ │ │ │ │
│ │ │ │ │ └── 주소 인덱스 (0 = 첫 번째 주소)
│ │ │ │ └────── 체인지 (0 = 외부/수신, 1 = 내부/잔돈)
│ │ │ └─────────── 계정 (0 = 첫 번째 계정)
│ │ └───────────────── 코인 타입 (60 = Ethereum)
│ └──────────────────────── 목적 (44 = BIP44 표준)
└──────────────────────────── 마스터 키 (트리의 루트)
각 레벨의 분석:¶
m — 마스터 키. 모든 파생 경로는 여기서 시작합니다. 시드에서 직접 파생된 루트입니다.
44' — 목적. 숫자 44는 이 경로가 다중 계정, 다중 코인 지갑을 위한 BIP44 표준을 따름을 나타냅니다. 아포스트로피(또는 ')는 이것이 "강화" 파생임을 표시합니다. 즉, 부모 공개 키만으로는 자식 키를 계산할 수 없고 개인 키가 필요합니다. 이는 보안 조치입니다.
60' — 코인 타입. 각 암호화폐에는 SLIP-44에 의해 번호가 할당됩니다(아래에서 자세히). Ethereum은 60입니다. Bitcoin은 0입니다. Solana는 501입니다. 이 레벨이 하나의 시드가 키 충돌 없이 여러 블록체인을 서비스할 수 있게 합니다.
0' — 계정 인덱스. 지갑 내의 별도 지갑으로 생각하세요. 계정 0이 기본값입니다. 다른 목적 — 예를 들어 저축 대 지출 — 을 위해 계정 1을 사용할 수 있습니다. 대부분의 사용자는 계정 0을 넘어가지 않습니다.
0 — 체인지 레벨. Bitcoin의 UTXO 모델에서 0은 외부(수신) 주소, 1은 내부(잔돈) 주소를 의미합니다. Ethereum은 같은 방식으로 잔돈 주소를 사용하지 않지만 호환성을 위해 레벨이 유지됩니다.
0 — 주소 인덱스. 새 주소를 생성하기 위해 증가하는 최종 숫자입니다. 인덱스 0이 첫 번째 주소, 인덱스 1이 두 번째, 이런 식입니다. 지갑은 새 수신 주소를 요청할 때마다 이 값을 증가시킵니다.
BIP44와 SLIP-44 코인 타입¶
BIP44는 위에 표시된 파생 경로 구조를 표준화했습니다. 2014년에 발표되었으며 고정된 5단계 계층으로 BIP32의 키 파생을 기반으로 합니다: 목적 / 코인 타입 / 계정 / 체인지 / 주소 인덱스.
SLIP-44(Satoshi Labs Improvement Proposal 44)는 코인 타입 번호의 레지스트리를 유지합니다. 각 블록체인에 고유한 정수가 할당되어 동일한 시드가 다른 체인에 대해 완전히 다른 키를 생성합니다. 다음은 일반적인 할당입니다:
| 코인 타입 | 블록체인 | 기본 경로 |
|---|---|---|
| 0 | Bitcoin | m/44'/0'/0'/0/0 |
| 2 | Litecoin | m/44'/2'/0'/0/0 |
| 60 | Ethereum (및 EVM 체인) | m/44'/60'/0'/0/0 |
| 144 | XRP | m/44'/144'/0'/0/0 |
| 195 | Tron | m/44'/195'/0'/0/0 |
| 501 | Solana | m/44'/501'/0'/0' |
| 9006 | Avalanche (C-Chain) | m/44'/60'/0'/0/0 |
Avalanche C-Chain이 코인 타입 60(Ethereum의 타입)을 사용하는 것에 주목하세요. C-Chain이 EVM 호환이고 동일한 주소 형식을 공유하기 때문입니다. Polygon, Arbitrum, Optimism, Base도 마찬가지입니다 — 모두 m/44'/60'/0'/0/0을 사용하며, 이는 동일한 Ethereum 주소가 이 모든 네트워크에서 유효함을 의미합니다.
MetaMask에 Polygon이나 Arbitrum을 추가할 때 주소가 Ethereum 주소와 같은 이유가 바로 이것입니다. 모두 같은 경로에서 파생됩니다. 구분은 키 파생 수준이 아니라 네트워크(체인 ID) 수준에서 발생합니다.
다른 체인, 다른 경로¶
EVM 체인이 Ethereum의 경로를 공유하는 반면, 비 EVM 체인은 자체 규약을 사용하며 그 차이가 중요합니다.
Bitcoin 경로¶
Bitcoin은 여러 주소 형식을 거쳐 발전했으며, 각각 자체 파생 표준이 있습니다:
| 표준 | 경로 | 주소 타입 | 접두사 |
|---|---|---|---|
| BIP44 | m/44'/0'/0'/0/0 |
레거시 (P2PKH) | 1... |
| BIP49 | m/49'/0'/0'/0/0 |
Nested SegWit (P2SH-P2WPKH) | 3... |
| BIP84 | m/84'/0'/0'/0/0 |
Native SegWit (bech32) | bc1q... |
| BIP86 | m/86'/0'/0'/0/0 |
Taproot | bc1p... |
대부분의 현대 Bitcoin 지갑은 낮은 거래 수수료를 제공하는 BIP84(native SegWit)를 기본값으로 사용합니다. 시드를 지갑에서 복원했는데 자금이 보이지 않으면, 지갑이 잘못된 파생 경로를 스캔하고 있을 수 있습니다. 지갑 설정에서 BIP84에서 BIP44로(또는 그 반대로) 전환하는 것이 보통 해결책입니다.
Solana 경로¶
Solana는 secp256k1 대신 ed25519를 사용하므로 파생이 구조적으로 다릅니다. 표준 경로는 m/44'/501'/0'/0'입니다 — 네 개의 레벨 모두 강화('로 표시)되어 있습니다. 일부 Solana 지갑은 m/44'/501'/0' 또는 m/44'/501'을 사용하며, 구체적인 경로는 지갑 애플리케이션마다 다릅니다. Phantom과 Solflare는 다른 규약을 사용하여 마이그레이션 시 혼란을 일으킬 수 있습니다. 자세한 안내는 Solana 지갑 생성 가이드를 참조하세요.
XRP와 Tron¶
XRP는 코인 타입 144와 경로 m/44'/144'/0'/0/0을 사용합니다. Tron은 코인 타입 195와 m/44'/195'/0'/0/0을 사용합니다. 둘 다 Bitcoin과 Ethereum처럼 secp256k1을 사용하지만 주소 인코딩이 다릅니다.
BIP84 vs BIP44: Bitcoin에 여러 표준이 있는 이유¶
Bitcoin을 사용해 봤다면 일부 주소는 1로, 일부는 3으로, 현대적인 것은 bc1q로 시작하는 것을 눈치챘을 수 있습니다. 이것은 외관상의 차이가 아닙니다 — 각 형식은 다른 파생 표준과 스크립트 타입에 해당합니다.
BIP44 (m/44'/0'/...)는 레거시 P2PKH 주소(1... 형식)를 생성합니다. BIP32 파생 Bitcoin 경로의 원본이었습니다. 여전히 작동하지만 거래당 더 많은 블록 공간을 사용합니다.
BIP49 (m/49'/0'/...)는 nested SegWit P2SH 주소(3... 형식)를 생성합니다. 이전 지갑과의 하위 호환성을 유지하면서 SegWit의 수수료 절약을 제공하는 과도기적 형식이었습니다.
BIP84 (m/84'/0'/...)는 bech32 인코딩을 사용하는 native SegWit 주소(bc1q... 형식)를 생성합니다. 표준 거래에 가장 효율적인 형식이며 대부분의 현대 지갑에서 기본값입니다.
핵심 통찰은 세 가지 형식 모두 동일한 시드 구문에서 파생될 수 있다는 것입니다. 12개 단어는 변하지 않습니다. 변하는 것은 파생 경로의 목적 레벨: 44, 49 또는 84입니다. 세 가지 모두를 지원하는 지갑은 자금을 찾기 위해 각 경로를 스캔합니다.
Bitcoin 지갑을 생성하거나 복원할 때, 지갑이 기본적으로 어떤 파생 표준을 사용하는지 항상 확인하세요. 예상과 다른 주소 형식이 보이면 지갑이 다른 BIP 표준을 사용하고 있을 가능성이 높습니다. Bitcoin 주소 형식을 자세히 살펴보려면 암호화폐 주소 형식 설명을 참조하세요.
단계별 키 파생¶
시드 구문에서 사용 가능한 Ethereum 주소까지의 전체 파생 과정은 다음과 같습니다:
1단계: 니모닉에서 시드로¶
12단어 니모닉은 2,048번 반복과 "mnemonic"(선택적 패스프레이즈 추가) 솔트로 PBKDF2-HMAC-SHA512를 통해 처리됩니다. 출력은 512비트 바이너리 시드입니다.
2단계: 시드에서 마스터 키로¶
512비트 시드는 "Bitcoin seed" 키로 HMAC-SHA512를 통해 처리됩니다(이 키 문자열은 대상 블록체인과 관계없이 사용됨). 왼쪽 256비트가 마스터 개인 키가 됩니다. 오른쪽 256비트가 마스터 체인 코드가 됩니다.
3단계: 마스터 키에서 자식 키로¶
마스터 키에서 시작하여 파생 경로의 각 레벨은 자식 키 파생(CKD) 함수를 수행합니다. 강화 자식('로 표시)의 경우, 부모 개인 키와 체인 코드가 자식 인덱스와 함께 HMAC-SHA512에 입력됩니다. 결과는 새로운(자식) 개인 키와 체인 코드입니다.
일반(비강화) 자식의 경우, 개인 키 대신 부모 공개 키가 사용됩니다. 이것이 감시 전용 지갑을 가능하게 합니다 — 개인 키 없이 공개 키와 주소를 파생할 수 있습니다.
4단계: 개인 키에서 공개 키로¶
파생의 최종 레벨에서 자식 개인 키는 타원 곡선 곱셈을 통해 공개 키로 변환됩니다. Ethereum의 경우 secp256k1 곡선을 사용합니다. 연산은: 공개 키 = 개인 키 * G이며, G는 곡선의 생성점입니다.
5단계: 공개 키에서 주소로¶
공개 키는 해시되어 블록체인 주소를 생성합니다. Ethereum의 경우 공개 키가 Keccak-256으로 해시되고, 마지막 20바이트(40개 16진수 문자)가 0x 접두사가 붙은 주소가 됩니다. Bitcoin의 경우 SHA-256 다음 RIPEMD-160을 거친 후, 주소 타입에 따라 Base58Check 또는 bech32 인코딩이 적용됩니다.
SafeSeed의 Ethereum Address Generator 또는 Bitcoin Address Generator에서 시드부터 주소까지의 전체 과정을 확인할 수 있습니다.
왜 이것이 실질적으로 중요한가¶
파생 경로를 이해하는 것은 학문적인 것만이 아닙니다. 실제로 중요한 구체적 상황이 있습니다:
- 다른 소프트웨어에서 지갑 복원. Ledger에서 Trezor로, 또는 MetaMask에서 다른 지갑으로 이동할 때, 파생 경로가 일치하는지 확인하세요. 동일한 시드에 다른 경로를 사용하면 다른 주소와 겉보기에 사라진 자금이 발생합니다.
- 다중 체인 접근. 시드 구문은 이미 Polygon, Arbitrum 및 기타 EVM 체인을 다룹니다 — 모두 Ethereum의 코인 타입 60을 사용합니다. 별도 백업이 필요 없습니다.
- 누락된 자금 디버깅. Bitcoin 시드를 복원했는데 잔액이 보이지 않으면, 지갑 설정에서 BIP44, BIP49, BIP84 경로를 전환해 보세요.
- 특정 목적을 위한 주소 생성. 계정 인덱스(세 번째 레벨)를 증가시켜 논리적으로 분리된 지갑을 만들 수 있습니다 — 일상 지출용 하나, 장기 저장용 하나 — 모두 동일한 시드 구문에서.
파생 경로 시스템은 단일 시드 구문을 멀티체인, 멀티계정 지갑으로 변환합니다. 현대 암호화폐 셀프 커스터디를 강력하고 이식 가능하게 만드는 인프라 계층입니다. 이를 이해하면 지갑, 체인, 주소 형식 간에 자신감을 가지고 이동할 수 있습니다.