본문으로 건너뛰기
buybitcoinsmart

용어집 / 주소와 키

출력 디스크립터

별칭은 Output descriptor, 디스크립터, Descriptor입니다.

출력 디스크립터란 무엇입니까?
출력 디스크립터는 지갑이 어떤 스크립트 유형과 어떤 키, 어떤 파생 분기를 사용해야 하는지를 명시한 한 줄의 텍스트이며, 끝에 체크섬이 붙습니다.

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

디스크립터가 존재하는 이유는 확장 키만으로는 모호하기 때문입니다. 같은 xpub이 레거시, 중첩 SegWit, 네이티브 SegWit 또는 Taproot 주소를 생성할 수 있으며, 이를 확정하는 것은 래퍼 함수뿐입니다. Bitcoin Core는 2022년 4월에 출시된 버전 23.0부터 기본적으로 디스크립터 지갑을 생성하며, 디스크립터가 없는 멀티시그 백업은 복구가 불가능한 경우가 많습니다.

작동 방식

디스크립터는 키 표현식에 적용되는 함수 뒤에 해시 기호와 8개의 체크섬 문자가 붙은 형태입니다. 함수는 스크립트를 지정합니다: 레거시는 pkh, 중첩 SegWit은 sh(wpkh(...)), 네이티브 SegWit은 wpkh, Taproot는 tr, 그리고 2-of-3 금고는 wsh(sortedmulti(2,...))입니다.

키 표현식은 나머지를 담습니다. 대괄호에는 출처, 즉 마스터 지문과 해당 키에 도달하는 데 사용된 경로가 들어가며, [1a2b3c4d/84h/0h/0h]와 같습니다. 그 뒤에 확장 키가 오고, 그다음 /0/*와 같은 접미사가 붙는데, 여기서 별표는 모든 주소 인덱스를 차례로 나타내는 와일드카드입니다. 와일드카드가 있는 디스크립터를 범위형이라고 하며, 이로부터 주소 0부터 999까지를 요청하는 것은 천 번의 가져오기가 아니라 한 번의 RPC 호출입니다.

수신과 잔돈은 하나가 아니라 두 개의 디스크립터이며, 그래서 지갑은 /0/*와 /1/*로 끝나는 쌍으로 가져옵니다. BIP-389는 이를 다중 경로 표기로 정리하여 /<0;1>/*로 하나의 문자열에 쌍으로 기록합니다.

체크섬은 작지만 중요한 역할을 합니다. BIP-380은 디스크립터 텍스트에 대한 8자리 코드를 정의하며, 긴 문자열에 실제로 일어나는 종류의 손상, 즉 문자 교체, 잘린 붙여넣기, 이메일 클라이언트가 삽입한 줄바꿈을 잡아내도록 설계되었습니다. Bitcoin Core는 체크섬이 일치하지 않는 디스크립터를 거부하며, getdescriptorinfo는 직접 입력한 문자열에 대해 올바른 체크섬을 계산합니다.

확인할 수 있는 곳

디스크립터는 단일 시드보다 복잡한 모든 것의 백업 형식입니다. Sparrow, Nunchuk, Specter는 생성하는 모든 지갑에 대해 디스크립터를 내보내며, Coldcard는 멀티시그 설정 중에 디스크립터를 microSD에 기록하여 원래 코디네이터 소프트웨어 없이도 구성을 재구성할 수 있게 합니다.

Bitcoin Core는 디스크립터가 표준이 된 곳입니다. 2018년 10월에 출시된 버전 0.17.0이 스캔과 주소 생성을 위해 디스크립터를 도입했고, importdescriptors와 listdescriptors가 이를 지갑의 기본 언어로 만들었으며, 이제 디스크립터 지갑은 소프트웨어가 생성하는 유일한 종류입니다. 디스크립터와 재스캔으로 Core 지갑을 복원하는 것은 지원되는 경로이며, 소프트웨어를 처음부터 재설치해도 유지됩니다.

단순한 단일 서명 지갑의 경우 시드 문구와 표준 경로로 충분하기 때문에 디스크립터를 볼 필요 없이 사용할 수 있는 경우가 많습니다. 멀티시그의 경우 디스크립터는 백업의 나머지 절반입니다: 스크립트 유형, 키 순서, 각 공동 서명자의 출처에 대한 기록이 없는 세 개의 시드 문구만으로는 코인이 있는 주소를 재구성하지 못할 수 있습니다.

출력 디스크립터 vs 확장 키

확장 키는 재료이고 디스크립터는 레시피입니다. xpub은 소프트웨어에 어떤 키가 존재하는지 알려주고, 디스크립터는 그 키로 무엇을 만들고 어디서부터 세기 시작할지 알려줍니다. 그래서 동일한 xpub을 서로 다른 두 앱에 가져오면 서로 다른 두 개의 주소 목록이 생성될 수 있지만, 동일한 디스크립터를 가져오면 그럴 수 없습니다. 둘 다 동일한 프라이버시를 노출합니다: 어느 것을 보유하든 해당 분기를 열거할 수 있으므로, 디스크립터는 그 안의 키와 동일한 주의가 필요합니다.

혼동하기 쉬운 용어

자주 묻는 질문

시드 문구와 별도로 디스크립터도 백업해야 합니까?

표준 경로를 사용하는 일반적인 단일 서명 지갑의 경우 시드 문구로 충분합니다. 멀티시그 또는 사용자 지정 구성의 경우 디스크립터도 백업해야 합니다. 문구만으로는 스크립트 유형, 공동 서명자 키, 키 순서를 기록하지 않기 때문입니다.

디스크립터를 공유해도 안전합니까?

전체 거래 내역을 맡길 수 있는 사람에게만 공유해야 합니다. 확장 공개 키가 포함된 디스크립터는 보유자가 해당 분기의 모든 주소를 파생하고 영구적으로 지켜볼 수 있게 하지만, 지출은 절대 허용하지 않습니다.

관련 용어

주소와 키 분야의 다른 용어

이 페이지를 영어로 읽기