본문으로 건너뛰기
buybitcoinsmart

용어집 / 주소와 키

BIP-84 파생

BIP-84 파생이란 무엇입니까?
BIP-84 파생은 BIP-32 경로의 목적 수준을 84'로 정하는 방식으로, 시드 문구 1개로 BIP-141의 P2WPKH 캡슐화를 사용하는 네이티브 SegWit bc1q 주소를 얻을 수 있게 합니다.

BIP-84에 명시되어 있습니다.

BIP-84는 BIP-44의 5단계 구조를 그대로 쓰고 목적 값만 바꿉니다. 2017년 12월 28일에 지정되었으며, 각 계정을 버전 바이트가 0x04b24746인 zpub 확장 키와 짝지어 줍니다. 사용자에게는 복원한 시드가 자신의 bc1q 잔액을 찾아내는지 아니면 빈 지갑을 나타내는지를 결정합니다.

작동 방식

BIP-84는 두 가지 일을 하는데, 첫째는 경로 안의 숫자 1개를 고정하는 것입니다. 키는 BIP-44가 도입한 골격, 즉 m / purpose' / coin_type' / account' / change / address_index로 표기되는 구조에 매달리며, 이 명세가 자기 것으로 주장하는 유일한 수준은 목적이고 이는 84'로 고정됩니다. 코인 유형, 계정, 잔돈, 주소 인덱스는 BIP-44와 BIP-49가 이미 부여한 의미를 그대로 유지하며, 저자인 Pavol Rusnak은 BIP-49의 근거를 다시 서술하지 않고 명시적으로 재사용합니다.

둘째는 출력 형식입니다. BIP-84는 BIP-141의 캡슐화를 빌려옵니다. scriptPubKey는 0x0014 뒤에 공개 키의 20바이트 해시가 오고, scriptSig는 비어 있으며, 위트니스는 서명을 담은 뒤 키를 담습니다. 그 출력에는 어떤 목적 값이 그것을 만들었는지 기록하는 부분이 없습니다.

브랜치의 확장 키에는 자체 버전 바이트가 있습니다. 공개 키는 0x04b24746을 사용하며 zpub으로 표시되고, 개인 키는 zprv를 위해 0x04b2430c를 사용하며, 테스트넷은 vpub과 vprv를 위해 0x045f1cf6과 0x045f18bc를 사용합니다. 이 값들은 비트코인만의 고유한 값이 아닙니다. 이 값들을 모아 두는 등록소인 SLIP-0132는 동일한 0x04b24746 아래에 Groestlcoin과 Syscoin도 기재하는데, 직렬화 형식에는 코인 유형을 담는 필드가 없기 때문입니다. 따라서 zpub은 스크립트 유형을 알려 줄 뿐 그것이 속한 체인에 대해서는 아무것도 알려 주지 않습니다.

이 명세는 스스로를 "not backwards compatible by design"이라고 부르며, 호환되지 않는 지갑은 "will not discover accounts at all"이라고 밝힙니다. 이는 의도된 것입니다. 별도의 목적 값을 두면 SegWit 이전에 작성된 소프트웨어가 제대로 다루지 못할 계정에 접근하지 못하게 되며, 잔액이 0으로 표시되는 편이 지갑이 아무 말 없이 절반만 복원되는 것보다 나은 실패입니다.

확인할 수 있는 곳

BIP-84는 지갑이 이미 표시하는 세 곳에 나타납니다. 계정 경로 m/84'/0'/0', zpub으로 시작하는 확장 키, bc1q로 시작하는 수신 주소입니다. SLIP-0132는 비트코인에 대한 그 zpub 행을 경로 m/84'/0'와 짝지으며, 이는 앱이 사용자에게 하나를 건넬 때 주장하는 짝입니다. 이 사이트의 리뷰에서 4.7점을 받은 Sparrow는 일반적인 스크립트 유형 전반에 걸쳐 단일 서명 및 다중 서명 지갑을 지원하므로, 사용자가 여는 계정은 물려받은 기본값이 아니라 사용자가 고른 계정입니다.

이 문서에서 빌려올 만한 부분은 테스트 벡터 블록으로, "이 지갑이 다른 모든 지갑과 같은 방식으로 BIP-84를 구현하는가"라는 질문을 1분이면 되는 점검으로 바꿔 줍니다. BIP는 니모닉 "abandon"을 11번 반복한 뒤 "about"이 오는 문구에 대한 결과를 공개합니다.

  • m/84'/0'/0'/0/0은 bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu를 줍니다
  • m/84'/0'/0'/0/1은 bc1qnjg0jd8228aq7egyzacy8cys3knf9xvrerkf9g를 줍니다
  • m/84'/0'/0'/1/0은 bc1q8c6fshw2dlwun7ekn9qwf37cu2rn755upcp6el을 줍니다

코인이 없는 기기에서 그 문구를 낯선 소프트웨어에 불러오고, 네이티브 SegWit을 선택한 뒤, 첫 수신 주소와 첫 잔돈 주소를 그 문자열들과 비교하십시오. 둘 다 일치한다면 그 구현은 잔돈 브랜치에서도 표준과 일치하는 것이며, 이는 사람들이 확인하는 것을 잊는 절반입니다. 그 주소들로는 절대 아무것도 보내지 마십시오. BIP는 대응하는 개인 키를 공개하고 SLIP-0132는 같은 니모닉을 공개하므로, 두 문서 중 어느 것을 읽든 그곳에 도착한 것을 쓸 수 있습니다.

BIP-84 파생 vs P2WPKH

BIP-84 파생은 키가 어디서 왔는지를 말하고, P2WPKH는 코인이 어떻게 잠기는지를 말합니다. 합의인 것은 두 번째뿐입니다. 지갑은 경로 어디에도 84'가 없는 경로로 키를 파생하고, 같은 0x0014 패턴으로 출력을 잠글 수 있으며, 그 결과 bc1q 주소는 온체인에서 사용자의 주소와 구별되지 않을 것입니다. 따라서 "BIP-84 주소"는 어떤 블록 탐색기로도 판정할 수 있는 주장이 아니라 줄임말이며, 목적 값은 백업 메모에 기록해 두는 것입니다. 나중에 블록체인에서 다시 읽어 낼 수는 없기 때문입니다.

혼동하기 쉬운 용어

자주 묻는 질문

BIP-84와 BIP-49의 차이는 무엇입니까?

목적 수준이고, 그에 따라 주소 형식도 달라집니다. BIP-84는 84'를 사용하며 zpub 확장 키 아래에서 네이티브 SegWit bc1q 주소를 생성하는 반면, 2016년 5월 19일에 지정된 BIP-49는 49'를 사용하며 ypub 아래에서 P2SH에 중첩된 P2WPKH 주소를 생성합니다. 시드 문구 1개가 두 계정을 동시에 담을 수 있습니다.

zpub 접두사가 비트코인 지갑임을 증명합니까?

아닙니다. SLIP-0132는 비트코인뿐 아니라 Groestlcoin과 Syscoin에도 동일한 버전 바이트 0x04b24746을 등록하는데, 확장 키 형식에는 코인 유형을 담는 필드가 없기 때문입니다. 이 접두사는 스크립트 유형이 P2WPKH임을 알려 줄 뿐 체인에 대해서는 아무것도 알려 주지 않습니다.

백업과 함께 m/84'/0'/0'을 적어 두어야 합니까?

네, 지갑 이름 옆에 적어 두십시오. 이 경로는 비밀이 아니며 그 자체로는 아무것도 드러내지 않지만, 같은 단어를 다른 목적 수준에서 복원하는 소프트웨어는 다른 주소 집합을 도출하고 빈 지갑을 표시합니다.

다음에 읽을 글

관련 용어

주소와 키 분야의 다른 용어

이 페이지를 영어로 읽기