본문으로 건너뛰기

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은 자체 니모닉 및 도출 체계를 사용합니다. 항상 어떤 지갑이 시드 문구를 생성했고 어떤 도출 경로를 사용하는지 문서화하세요.

관련 가이드