본문으로 건너뛰기

BIP-44 도출 경로: 지갑이 주소를 생성하는 방법

암호화폐 지갑을 설정하고 시드 문구를 생성하면, 그 단일 시드에서 수십 개의 다른 블록체인에 걸쳐 수천 개의 주소를 생성해야 합니다 — 각각 고유한 개인 키, 공개 키, 주소 형식을 가지고 있습니다. BIP-44는 이를 가능하게 하는 조직 구조를 정의합니다: 단일 루트에서 도출된 계층적 키 트리와 지갑 간 호환성을 보장하는 표준화된 경로 표기법입니다.

도출 경로를 이해하는 것은 다른 지갑에서 자금을 복구하거나, 멀티코인 포트폴리오를 관리하거나, 시드 문구 복원 후 "누락된" 잔액을 해결해야 하는 모든 사람에게 필수적입니다.

키 도출 계층​

BIP-32: 기반​

BIP-44는 단일 마스터 키에서 무한한 키 페어 트리를 도출하는 방법을 정의하는 BIP-32(계층적 결정론적 지갑)를 기반으로 합니다. BIP-32는 두 가지 기본 개념을 도입했습니다:

자식 키 도출 — 모든 확장 키(개인 키 또는 공개 키와 체인 코드의 조합)에서 다양한 인덱스의 자식 키를 도출할 수 있습니다. 각 자식은 자체 자식을 도출할 수 있어 트리를 생성합니다.

강화 vs. 일반 도출 — 일반 도출은 부모 공개 키에서 자식 공개 키를 도출할 수 있게 해줍니다(조회 전용 지갑에 유용). 강화 도출은 부모 개인 키가 필요하며 브랜치 간 더 강력한 보안 격리를 제공합니다. 강화 인덱스는 관례적으로 아포스트로피로 표시됩니다(예: 44').

BIP-43: 목적 필드​

BIP-43는 도출 트리의 첫 번째 레벨을 "목적(Purpose)"을 나타내는 데 사용하는 관례를 확립했습니다 — 본질적으로 따르는 BIP 표준을 나타냅니다. BIP-44는 목적 44'를 사용하고, BIP-49는 49'(SegWit 호환 P2SH 주소용), BIP-84는 84'(네이티브 SegWit용), BIP-86은 86'(Taproot용)을 사용합니다.

BIP-44: 전체 경로​

BIP-44는 5단계 도출 경로를 정의합니다:

m / purpose' / coin_type' / account' / change / address_index

각 단계는 특정 의미를 가집니다:

레벨필드강화설명
1목적예 (44')도출 표준을 식별
2코인 유형예암호화폐를 식별
3계정예자금을 논리적 계정으로 분리
4변경아니오 (0 또는 1)외부(0) 또는 내부 변경(1)
5주소 인덱스아니오 (0, 1, 2...)순차적 주소 번호

목적 (44')​

목적 필드는 BIP-44 표준 도출의 경우 항상 44'입니다. 다른 일반적인 값:

  • 49' — BIP-49 (P2SH 래핑 SegWit)
  • 84' — BIP-84 (네이티브 SegWit / Bech32)
  • 86' — BIP-86 (Taproot / P2TR)

이것들은 서로 다른 주소 유형을 정의하며 각각의 BIP에서 설명됩니다.

코인 유형​

코인 유형은 도출된 키가 어떤 암호화폐에 속하는지 식별합니다. 등록된 코인 유형:

코인코인 유형경로 접두사
비트코인0'm/44'/0'
비트코인 테스트넷1'm/44'/1'
라이트코인2'm/44'/2'
도지코인3'm/44'/3'
이더리움60'm/44'/60'
이더리움 클래식61'm/44'/61'
코스모스118'm/44'/118'
솔라나501'm/44'/501'
카르다노1815'm/44'/1815'
폴카닷354'm/44'/354'

코인 유형의 전체 레지스트리는 SLIP-44에서 관리되며 1,000개 이상의 항목이 포함되어 있습니다.

계정​

계정 레벨은 사용자가 같은 지갑 내에서 여러 은행 계좌를 갖는 것처럼 별도의 논리적 계정을 만들 수 있게 합니다. 계정 0'이 기본값입니다:

  • m/44'/0'/0' — 비트코인 계정 0
  • m/44'/0'/1' — 비트코인 계정 1
  • m/44'/60'/0' — 이더리움 계정 0

계정은 강화 도출을 사용하므로, 한 계정의 확장 공개 키를 알아도 다른 계정의 키를 드러내지 않습니다. 이는 계정 간 프라이버시 격리를 제공합니다.

변경​

변경 레벨은 다음을 구분합니다:

  • 0 (외부 체인) — 결제를 받기 위해 다른 사람에게 제공하는 주소.
  • 1 (내부 체인) — 지갑이 내부적으로 거스름돈을 반환하는 데 사용하는 주소.

비트코인의 UTXO 모델에서 트랜잭션 출력을 지출할 때 전체 출력이 소비되어야 합니다. 1 BTC 출력에서 0.5 BTC를 보내는 경우, 나머지 0.5 BTC는 여러분의 지갑이 제어하는 거스름돈 주소로 전송됩니다. 변경 체인은 이러한 주소를 수신 주소와 조직 및 프라이버시 목적으로 분리합니다.

이더리움 및 기타 계정 기반 블록체인은 UTXO 모델이 없으므로 같은 방식으로 변경 체인을 사용하지 않습니다. 이더리움 지갑은 일반적으로 외부 체인(변경 = 0)만 사용합니다.

주소 인덱스​

주소 인덱스는 체인 내 주소의 순차적 번호입니다. 지갑은 새 주소가 생성될 때마다 이 카운터를 증가시킵니다:

  • m/44'/0'/0'/0/0 — 첫 번째 수신 주소
  • m/44'/0'/0'/0/1 — 두 번째 수신 주소
  • m/44'/0'/0'/0/2 — 세 번째 수신 주소
  • m/44'/0'/0'/1/0 — 첫 번째 거스름돈 주소
  • m/44'/0'/0'/1/1 — 두 번째 거스름돈 주소

주요 암호화폐의 도출 경로​

비트코인​

비트코인은 다양한 주소 유형에 해당하는 여러 도출 경로를 사용합니다:

표준경로주소 유형접두사예시
BIP-44m/44'/0'/0'레거시 (P2PKH)1...1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa
BIP-49m/49'/0'/0'SegWit 호환 (P2SH-P2WPKH)3...3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
BIP-84m/84'/0'/0'네이티브 SegWit (P2WPKH)bc1q...bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
BIP-86m/86'/0'/0'Taproot (P2TR)bc1p...bc1p5d7rjq7g6rdk2yhzks9smlaqtedr4dekq08ge8ztwac72sfr9rusxg3297

복구 시 중요 사항: 새 지갑에서 시드 문구를 복원한 후 잔액이 보이지 않으면, 지갑이 원래 지갑에서 사용한 것과 다른 도출 경로를 검색하고 있을 수 있습니다. 레거시, SegWit, Taproot 주소 유형을 전환하거나 도출 경로를 수동으로 지정해 보세요.

이더리움​

이더리움은 일반적으로 단일 도출 경로를 사용합니다:

m/44'/60'/0'/0/0   — 첫 번째 계정
m/44'/60'/0'/0/1 — 두 번째 계정 (일부 지갑)

그러나 일부 지갑(예: Ledger Live)은 계정 레벨에서 여러 계정을 도출합니다:

m/44'/60'/0'/0/0   — 계정 0
m/44'/60'/1'/0/0 — 계정 1
m/44'/60'/2'/0/0 — 계정 2

반면 다른 지갑(예: MetaMask)은 주소 인덱스를 증가시킵니다:

m/44'/60'/0'/0/0   — 계정 1
m/44'/60'/0'/0/1 — 계정 2
m/44'/60'/0'/0/2 — 계정 3

이 불일치는 복구 시 혼란을 야기할 수 있습니다. 항상 어떤 지갑 소프트웨어가 시드 문구를 생성했는지 기록하세요.

솔라나​

솔라나는 Ed25519(secp256k1과 다른 타원 곡선)를 다음 경로로 사용합니다:

m/44'/501'/0'      — Phantom, Solflare
m/44'/501'/0'/0' — 일부 구현

카르다노​

카르다노는 다른 키 도출 체계(Ed25519-BIP32 / CIP-1852)를 다음 경로로 사용합니다:

m/1852'/1815'/0'/0/0  — 첫 번째 결제 주소
m/1852'/1815'/0'/2/0 — 첫 번째 스테이킹 키

목적 필드가 44' 대신 1852'(Ada Lovelace의 탄생 연도를 딴 CIP-1852)임에 주의하세요.

강화 vs. 일반 도출​

강화 도출과 일반 도출의 차이를 이해하는 것은 보안에 매우 중요합니다.

일반 (비강화) 도출​

  • 0에서 2^31 - 1까지의 인덱스를 사용합니다.
  • 부모 개인 키 없이 부모 확장 공개 키에서 자식 공개 키를 도출할 수 있습니다.
  • 장점: 조회 전용 지갑을 가능하게 합니다(예: 서버가 xpub만으로 새 수신 주소를 생성하며 개인 키를 보유하지 않음).
  • 위험: 공격자가 자식 개인 키와 부모 확장 공개 키를 모두 획득하면 부모 개인 키와 모든 형제 개인 키를 계산할 수 있습니다.

강화 도출​

  • 2^31에서 2^32 - 1까지의 인덱스를 사용합니다(0'에서 2^31 - 1'로 표기).
  • 자식 키를 도출하려면 부모 확장 개인 키가 필요합니다.
  • 장점: 자식 키가 손상되어도 부모나 형제가 손상되지 않습니다.
  • 위험: 부모 확장 공개 키만으로는 자식 공개 키를 도출할 수 없습니다(이 레벨에서는 조회 전용 기능 없음).

BIP-44가 처음 세 레벨에 강화 도출을 사용하는 이유​

목적, 코인 유형, 계정은 모두 강화(44'/0'/0')입니다. 그 이유는:

  1. 주소 개인 키(비강화 레벨 5)가 손상되어도 계정이 손상되어서는 안 됩니다.
  2. 계정은 서로 격리되어야 합니다.
  3. 다른 코인은 서로 격리되어야 합니다.

변경 및 주소 인덱스 레벨은 마스터 개인 키 없이 조회 전용 지갑이 수신 주소를 생성할 수 있도록 비강화(0/0)입니다.

갭 리밋​

지갑은 무한한 수의 주소를 검색하지 않습니다. BIP-44 사양은 "갭 리밋(Gap Limit)" 개념을 도입합니다 — 지갑이 중지하기 전에 검색하는 연속 미사용 주소의 수입니다. 표준 갭 리밋은 20입니다.

0에서 25까지 주소를 생성했지만 주소 0, 5, 10, 25만 자금을 받은 경우, 지갑은:

  1. 주소 0 검색 — 거래가 있음, 계속.
  2. 주소 1-4 검색 — 미사용이지만 갭 리밋 이내.
  3. 주소 5 검색 — 거래가 있음, 갭 카운터 재설정.
  4. 거래가 없는 연속 20개 주소를 만날 때까지 계속.

문제: 갭 리밋을 초과하는 많은 주소를 생성한 경우(가맹점 결제 처리기에서 흔함), 지갑 복원 시 모든 자금을 찾지 못할 수 있습니다. 복구 중 지갑 설정에서 갭 리밋을 늘려야 할 수 있습니다.

SafeSeed 도구

**SafeSeed 키 도출 도구**를 사용하여 BIP-44 도출 경로를 대화형으로 탐색하세요. 시드 문구(실제 문구가 아닌 테스트 문구)를 입력하고 다른 도출 경로가 다른 코인에 대해 다른 주소를 생성하는 것을 확인하세요. 모든 처리는 브라우저에서 이루어집니다.

확장 키: xpub, ypub, zpub​

확장 키는 도출 경로에 대한 메타데이터와 함께 키 자료를 인코딩합니다:

접두사표준주소 유형네트워크
xpub / xprvBIP-44레거시 (P2PKH)메인넷
ypub / yprvBIP-49SegWit 호환 (P2SH-P2WPKH)메인넷
zpub / zprvBIP-84네이티브 SegWit (P2WPKH)메인넷
tpub / tprvBIP-44레거시 (P2PKH)테스트넷

접두사는 지갑 소프트웨어에 어떤 주소 유형을 도출할지 알려줍니다. xpub을 내보내어 zpub을 기대하는 지갑에 가져오면 다른 (잘못된) 주소를 볼 수 있습니다.

확장 공개 키 프라이버시 경고​

xpub(또는 ypub/zpub)을 공유하면 수신자가 다음을 할 수 있습니다:

  • 모든 과거 및 미래 수신 주소를 도출할 수 있습니다.
  • 완전한 거래 내역과 잔액을 추적할 수 있습니다.
  • 주소를 연결하여 거래마다 새 주소를 사용하는 프라이버시 이점을 파괴합니다.

금융 프라이버시를 완전히 신뢰하는 당사자(예: 회계사, 자체 서버의 조회 전용 지갑)를 제외하고는 확장 공개 키를 공유하지 마세요.

일반적인 도출 경로 문제​

"시드 문구를 복원했는데 잔액이 0으로 표시됩니다"​

이것은 가장 흔한 도출 경로 문제입니다. 가능한 원인:

  1. 잘못된 주소 유형 — SegWit 주소(BIP-84, m/84'/0'/0')를 사용했는데 새 지갑이 레거시 경로(BIP-44, m/44'/0'/0')를 검색하고 있습니다. 주소 유형을 전환하세요.
  2. 잘못된 코인 유형 — 일부 지갑은 이전 구현에서 모든 코인에 코인 유형 0을 사용했습니다.
  3. 잘못된 계정 — 계정 1 이상을 사용했을 수 있습니다.
  4. 갭 리밋 — 사용된 주소가 기본 갭 리밋 20을 초과했습니다.
  5. 커스텀 도출 경로 — 일부 지갑은 비표준 경로를 사용합니다.

"같은 시드 문구로 두 지갑이 다른 주소를 표시합니다"​

두 지갑이 같은 시드 문구에서 다른 주소를 생성하면, 다른 도출 경로나 주소 유형을 사용하고 있는 것입니다. 두 지갑의 도출 설정을 확인하세요.

복구 체크리스트​

시드 문구에서 지갑을 복원할 때:

  1. 지갑이 BIP-39를 지원하는지 확인합니다.
  2. 올바른 주소 유형(레거시, SegWit 또는 Taproot)을 선택합니다.
  3. 도출 경로가 원래 지갑과 일치하는지 확인합니다.
  4. 많은 주소를 사용한 경우 갭 리밋을 늘립니다.
  5. 여러 계정을 만든 경우 계정 0뿐만 아니라 모든 계정을 확인합니다.

고급: 커스텀 도출 경로​

일부 고급 사용 사례는 커스텀 도출 경로가 필요합니다:

  • 다중 서명 설정 — BIP-48은 멀티시그 지갑의 도출 경로를 정의합니다: m/48'/0'/0'/2'(네이티브 SegWit 멀티시그용).
  • 라이트닝 네트워크 — 일부 라이트닝 구현은 채널 키에 커스텀 도출 경로를 사용합니다.
  • 프라이버시 지갑 — Wasabi 및 기타 프라이버시 중심 지갑은 특정 경로를 사용할 수 있습니다.

사용하는 도출 경로를 항상 문서화하세요. 정확한 경로를 재구성할 수 없으면 자금을 복구할 수 없습니다.

FAQ​

암호화폐에서 도출 경로란 무엇인가요?​

도출 경로는 계층적 결정론적(HD) 지갑에서 마스터 시드로부터 특정 키나 주소를 도출하는 방법을 지정하는 구조화된 표기법입니다. m/purpose'/coin_type'/account'/change/address_index 형식을 따르며, 각 레벨이 도출 트리에서 특정 키로 좁혀갑니다.

왜 다른 암호화폐가 다른 코인 유형을 사용하나요?​

다른 코인 유형은 같은 시드 문구가 각 블록체인에 대해 별도의 관련 없는 키를 생성하도록 보장합니다. 이는 우발적인 크로스체인 간섭을 방지하고, 한 체인의 키가 손상되어도 다른 체인의 키에 영향을 주지 않도록 합니다.

같은 시드 문구를 비트코인과 이더리움에 사용할 수 있나요?​

예. 같은 BIP-39 시드 문구로 비트코인과 이더리움(및 다른 많은 암호화폐)의 키를 도출할 수 있습니다. 다른 도출 경로를 사용합니다 — 비트코인은 m/44'/0'/0'이고 이더리움은 m/44'/60'/0' — 이므로 도출된 키와 주소는 완전히 독립적입니다.

도출 경로에서 아포스트로피(')는 무엇을 의미하나요?​

아포스트로피는 강화 도출을 나타냅니다. 강화 도출은 부모 개인 키가 필요하며 더 강력한 보안 격리를 제공합니다: 자식 키가 손상되어도 부모나 형제 키가 드러나지 않습니다. 아포스트로피가 없는 비강화 레벨은 부모 공개 키에서 자식 공개 키 도출을 허용합니다.

시드 문구를 복원한 후 지갑 잔액이 0으로 표시되는 이유는 무엇인가요?​

가장 흔한 원인은 도출 경로 불일치입니다. 원래 지갑이 다른 주소 유형(레거시 vs. SegWit vs. Taproot)을 사용했을 수 있으며, 각각 다른 도출 경로를 사용합니다. 복구 지갑에서 주소 유형을 전환하거나, 원래 지갑이 사용한 도출 경로를 수동으로 지정해 보세요.

갭 리밋이란 무엇이며 왜 중요한가요?​

갭 리밋은 지갑이 더 이상 사용된 주소가 없다고 가정하기 전에 검색하는 연속 미사용 주소의 수입니다. BIP-44 표준은 이를 20으로 설정합니다. 많은 주소를 생성한 경우(예: 결제를 수락하는 가맹점), 일부 자금이 있는 주소가 갭 리밋을 초과하여 복구 중 보이지 않을 수 있습니다. 이를 찾으려면 지갑 설정에서 갭 리밋을 늘리세요.

모든 지갑이 BIP-44를 사용하나요?​

대부분의 현대 지갑은 BIP-44 또는 그 후속 표준(BIP-49, BIP-84, BIP-86)을 지원합니다. 그러나 일부 지갑은 독점적인 도출 경로를 사용합니다. 예를 들어, Electrum은 자체 니모닉 및 도출 체계를 사용합니다. 항상 어떤 지갑이 시드 문구를 생성했고 어떤 도출 경로를 사용하는지 문서화하세요.

관련 가이드​