본문으로 건너뛰기
buybitcoinsmart

용어집 / 주소와 키

P2SH 주소

별칭은 P2SH address, Pay-to-Script-Hash입니다.

P2SH 주소란 무엇입니까?
P2SH 주소는 3으로 시작하며 상환 스크립트의 해시를 고정하므로, 누군가 스크립트를 공개하기 전까지 지출 조건은 비밀로 유지됩니다.

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

Pay to script hash는 BIP-16과 함께 등장했고 2012년 4월 1일부터 블록 173,805에서 시행되었으며, 복잡성의 비용을 누가 부담하는지를 바꾸었습니다. 그 이전에는 송신자가 계약 전체를 출력에 기록해야 했습니다. 그 이후에는 송신자가 23바이트를 기록하고 수신자가 나중에 스크립트를 공개하는 비용을 부담합니다. 그래서 3 주소는 5개의 키를 가진 금고도, 단일 키 지갑도 감출 수 있습니다.

작동 방식

출력 스크립트는 짧고 모든 P2SH 주소에 대해 동일합니다. OP_HASH160 뒤에 20바이트 해시와 OP_EQUAL이 오며, 총 23바이트입니다. 해시는 수신자만 아는 상환 스크립트를 고정합니다.

지출은 두 단계로 이루어집니다. scriptSig는 상환 스크립트가 필요로 하는 인수를 제공하고, 마지막 항목으로 직렬화된 상환 스크립트 자체를 제공합니다. 노드는 마지막 항목의 해시를 계산해 고정된 값과 비교하고, 일치하면 스크립트를 역직렬화하여 스택에 남은 모든 항목에 대해 실행합니다. 두 단계 모두 성공해야 합니다.

두 가지 한도가 무엇이 들어갈 수 있는지를 결정합니다. 상환 스크립트는 스택 요소 하나이므로, Bitcoin Core가 MAX_SCRIPT_ELEMENT_SIZE로 정의하는 520바이트 푸시 한도를 초과할 수 없습니다. 릴레이 정책은 P2SH 입력당 15개의 서명 연산이라는 두 번째 상한을 추가합니다. 이 둘을 합치면 일반적으로 스크립트 언어가 허용하는 범위, 즉 10,000바이트 스크립트 한도보다 훨씬 아래로 이 구성이 제한됩니다.

주소 자체는 버전 바이트 0x05를 사용하는 Base58Check이며, 앞자리 3과 34자 문자열을 만들어 냅니다. BIP-13이 BIP-16의 합의 규칙과 별도로 그 형식을 정의했습니다.

확인할 수 있는 곳

거래소 출금 양식에서 어떤 옵션을 "native"라고 밝히지 않고 "SegWit"이라고만 설명한다면 보통 3 주소를 뜻합니다. 2018년 이전에 구축된 멀티시그 금고가 이를 사용합니다. 스크립트는 필요하지만 일반 지갑이 지불할 수 있는 주소를 원하는 원자적 교환과 해시 타임락 계약도 이를 사용합니다.

이 설계의 결과는 모호함이며, 그것은 완전합니다. 사용되지 않은 3 출력은 해시만 드러내므로, 블록 탐색기는 그것이 감싸진 단일 키를 담고 있는지 기업의 쿼럼을 담고 있는지 알려 줄 수 없고, 송신자도 알 수 없습니다. 정보는 지출 트랜잭션에서만 나타납니다.

그 모호함에는 실제 손실 경로가 따릅니다. P2SH 출력에서 코인을 복구하려면 개인 키만이 아니라 상환 스크립트가 필요합니다. 시드 문구만으로는 임의의 스크립트를 재구성할 수 없으므로, 표준 지갑 파생보다 복잡한 P2SH 구성은 디스크립터나 스크립트 바이트 자체로 백업해야 합니다. 모든 키를 가지고 있으면서 스크립트는 없는 채로 코인을 잃은 사례가 있습니다.

P2SH 주소 vs P2SH 멀티시그

P2SH 멀티시그는 P2SH 주소 안에 넣을 수 있는 하나의 요소이지, 그 형식의 동의어가 아닙니다. 주소는 컨테이너이며, 그 안에 숨은 상환 스크립트는 n개 중 m개 멀티시그일 수도, 중첩된 SegWit 키 해시일 수도, 타임락이 걸린 복구 조항일 수도, 아무도 작성한 적 없는 스크립트일 수도 있습니다. 3 주소를 "멀티시그 주소"로 읽는 것은 자주 틀리는 추측입니다. 감싼 SegWit이 2017년 이후 여러 해 동안 3을 기본 단일 키 형식으로 만들었고, 수백만 개의 일반 지갑을 그 접두사 뒤에 남겨 두었기 때문입니다.

혼동하기 쉬운 용어

자주 묻는 질문

3 주소 안에는 실제로 무엇이 들어 있습니까?

주소만으로는 알 수 있는 방법이 없습니다. 출력에는 상환 스크립트의 20바이트 해시가 들어 있으며, 그 스크립트는 멀티시그 쿼럼일 수도, 감싸진 SegWit 키일 수도, 타임락이 걸린 계약일 수도 있습니다. 코인을 지출할 때에만 드러납니다.

P2SH 코인을 복구하려면 상환 스크립트가 필요합니까?

네, 스크립트가 사용 중인 소프트웨어가 재구성할 수 있는 표준 지갑 파생에서 나온 것이 아니라면 필요합니다. 개인 키만으로는 임의의 P2SH 출력을 지출할 수 없으므로, 시드 문구와 함께 디스크립터나 스크립트 바이트를 백업하십시오.

관련 용어

주소와 키 분야의 다른 용어

이 페이지를 영어로 읽기