P2SH 주소 (P2SH Address)
P2SH(Pay-to-Script-Hash) 주소는 비트코인에서 자금을 특정 공개 키가 아니라 리딤 스크립트(redeem script)의 해시에 잠그는 주소 형식입니다. 2012년 BIP-16으로 도입되었고 주소 형식은 BIP-13에 정의되어 있으며, 메인넷 P2SH 주소는 숫자 3으로 시작합니다.
작동 방식
- 수신자는 지출 조건을 담은 리딤 스크립트(예: “공개 키 3개 중 2개의 서명 필요”)를 만들고, 그 해시값 HASH160(SHA-256 다음 RIPEMD-160, 20바이트)을 Base58Check로 인코딩해 3으로 시작하는 주소로 공개합니다.
- 송신자는 스크립트 내용을 몰라도 이 주소로 보낼 수 있습니다. 출력의 잠금 스크립트는
OP_HASH160 <20바이트 해시> OP_EQUAL형태로 짧고 일정합니다. - 자금을 쓸 때 소유자는 필요한 서명과 함께 리딤 스크립트 원문을 제출합니다. 노드는 먼저 제출된 스크립트의 해시가 출력에 기록된 해시와 같은지 확인한 뒤, 그 스크립트를 실행해 서명 조건이 충족되는지 검증합니다.
이 구조 덕분에 복잡한 조건의 비용과 공개 시점이 송신자에서 수신자로 옮겨집니다. 송신자는 짧은 주소만 다루고, 긴 스크립트는 지출할 때 처음 블록체인에 드러납니다. 리딤 스크립트의 크기는 520바이트로 제한됩니다.
주요 용도
- 멀티시그: 예를 들어 세 명의 공동 관리자 가운데 두 명의 서명이 있어야 자금을 옮길 수 있는 2-of-3 지갑을 만들 수 있습니다. 키 하나가 유출되어도 단독으로 자금을 옮길 수 없지만, 설정 정보(공개 키와 스크립트)를 잃으면 자금 복구가 어려워지므로 백업이 중요합니다.
- 시간 잠금 등 맞춤 조건: 특정 블록 높이나 시각 이후에만 쓸 수 있는 조건 등 다른 스크립트도 담을 수 있습니다.
- 중첩 세그윗(P2SH-P2WPKH, P2SH-P2WSH): 세그윗 증인(witness) 프로그램을 리딤 스크립트로 감싸, 네이티브 세그윗(bc1 주소)을 지원하지 않는 지갑에서도 세그윗 출력으로 송금할 수 있게 한 호환 형식입니다. 서명 데이터가 증인 영역으로 분리되어 수수료 계산에 쓰이는 가상 크기가 줄지만, 절감 폭은 네이티브 세그윗보다 작습니다.
P2WSH와의 차이
P2WSH(Pay-to-Witness-Script-Hash)는 같은 “스크립트 해시에 잠그기” 아이디어를 세그윗(BIP-141)으로 옮긴 형식입니다. 20바이트 HASH160 대신 32바이트 SHA-256 해시를 써 충돌 저항이 더 높고, 스크립트와 서명이 증인 영역에 들어가며, 주소는 bc1q로 시작하는 Bech32 형식입니다. 새로 만드는 멀티시그에는 P2WSH나 탭루트(P2TR) 기반 방식이 흔히 쓰이고, P2SH는 호환성이 필요한 경우에 주로 남아 있습니다.
확인할 점
P2SH 주소만 보고는 그 뒤에 어떤 스크립트가 있는지 알 수 없습니다. 멀티시그인지, 중첩 세그윗인지, 다른 조건인지는 해당 주소에서 처음 자금이 지출되어 리딤 스크립트가 공개될 때 드러납니다. 또한 같은 리딤 스크립트라도 공개 키 순서가 다르면 해시가 달라져 다른 주소가 되므로, 멀티시그 지갑을 복구하려면 공개 키 목록과 순서, 필요한 서명 수를 모두 보관해야 합니다.
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.