궁금한 주제를 찾아보세요

비트코인, 스테이블코인, 온체인 데이터처럼 주제로 검색하세요.

다시 읽을 이야기

저장한 글은 이 브라우저에만 보관됩니다.

해설기술·생태계

P2PKH·P2SH·P2WPKH 출력은 무엇을 잠그는가

세 비트코인 출력이 공개키 해시, redeemScript 해시, witness 공개키 해시 중 무엇을 약속하고 지출 때 무엇을 공개하는지 비교합니다.

난이도 중급주제 카테고리와 개념 밀도 기준검토 정보AI 보조 초안 · 출처 목록 제공 · 주장별 대조 진행 중
열쇠·정책 문서·분리된 서명 표지를 서로 다른 잠금 상자와 연결해 비교한 비트코인 출력 유형 그림
주제의 이해를 돕기 위해 imagegen으로 제작한 AI 생성 개념 일러스트
먼저 읽는 핵심

P2PKH와 P2WPKH는 공개키 해시를 서로 다른 script 구조로 잠급니다.
P2SH는 공개키가 아니라 redeemScript 전체의 해시를 약속합니다.
주소 형식은 network와 checksum을 포함한 인코딩이며 지출 권한 자체가 아닙니다.

P2PKH는 20바이트 공개키 HASH160을 잠그고 지출 때 ECDSA 서명과 전체 공개키를 scriptSig에 공개합니다. P2SH는 20바이트 redeemScript HASH160을 잠그며 지출자는 해시가 맞는 전체 redeemScript와 그 조건을 만족할 데이터를 제공합니다. Native P2WPKH는 SegWit v0 witness program에 20바이트 공개키 해시를 두고 서명·공개키는 witness에 넣습니다. 주소 접두사만 비교하기보다 출력 script가 약속한 해시 대상과 지출 데이터 위치를 봐야 합니다.

출력은 미래 입력이 증명할 대상을 고정합니다

Bitcoin 잔액은 address 계정에 저장되는 것이 아니라 UTXO의 amount와 scriptPubKey에 있습니다. address는 wallet이 특정 표준 output script를 전달하기 쉽게 인코딩한 표현입니다. P2PKH·P2SH는 Base58Check를, native SegWit은 Bech32 계열을 사용하지만 검증 node는 decode된 script를 실행합니다.

mainnet에서 흔히 1로 시작하는 주소는 P2PKH, 3은 P2SH, bc1q는 witness v0 계열일 수 있습니다. 그러나 prefix만으로 실제 내부 조건을 모두 알 수 없습니다. 특히 P2SH는 multisig, nested SegWit 등 다양한 redeemScript를 감쌀 수 있습니다.

주소는 받는 사람이 제안한 출력 템플릿의 인코딩이고, 실제 잠금 조건은 거래 출력의 scriptPubKey입니다.

JOBCOIN 해설

VISUAL GUIDE키 보관과 거래 서명
보호된 개인키로 거래에 서명하고 노드가 서명을 검증하는 개념도
그림과 함께 짚어볼 본문 내용

그림은 이 주제의 공통 개념을 단순화한 설명입니다. 아래 항목에서 이 글의 구체적인 조건과 예외를 함께 읽어보세요.

  1. 출력은 미래 입력이 증명할 대상을 고정합니다

    Bitcoin 잔액은 address 계정에 저장되는 것이 아니라 UTXO의 amount와 scriptPubKey 에 있습니다.

  2. P2PKH는 공개키 해시를 비교합니다

    P2PKH scriptPubKey는 OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG 형태입니다.

  3. P2SH는 조건의 해시를 먼저 확인합니다

    P2SH 출력은 OP_HASH160 <ScriptHash> OP_EQUAL로 짧습니다.

AI로 제작한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.

P2PKH는 공개키 해시를 비교합니다

P2PKH scriptPubKey는 OP_DUP OP_HASH160 <PubKeyHash> OP_EQUALVERIFY OP_CHECKSIG 형태입니다. 지출 input의 scriptSig가 signature와 public key를 제공하면 node는 공개키 HASH160이 출력의 값과 같은지 확인하고 그 공개키로 거래 서명을 검증합니다.

공개키는 UTXO가 만들어질 때 직접 노출되지 않고 처음 지출할 때 드러납니다. 같은 주소를 재사용하면 한번 공개된 key hash와 여러 결제 관계가 연결됩니다. 주소 재사용 방지는 양자 공격 같은 가정만이 아니라 현재의 거래 그래프 privacy에도 중요합니다.

표준 출력 비교
유형 잠그는 대상 지출 데이터 위치
P2PKH HASH160(pubkey) scriptSig: sig·pubkey
P2SH HASH160(redeemScript) scriptSig: 인수·redeemScript
P2WPKH v0 + HASH160(pubkey) witness: sig·pubkey
P2SH-P2WPKH HASH160(witness program) scriptSig+ witness
P2TR v1 + x-only output key witness: key 또는 script path

P2SH는 조건의 해시를 먼저 확인합니다

P2SH 출력은 OP_HASH160 <ScriptHash> OP_EQUAL로 짧습니다. 지출자는 scriptSig 마지막에 serialized redeemScript를 공개하고, node는 그 HASH160이 출력과 같은지 확인한 다음 나머지 stack items로 redeemScript를 실행합니다. 돈을 보낸 사람은 복잡한 multisig 조건 전체를 알 필요 없이 script hash만 받습니다.

P2SH 자체가 multisig를 뜻하지는 않습니다. 2-of-3 multisig가 흔한 사용례였지만 임의의 허용된 redeemScript를 넣을 수 있고 P2WPKH·P2WSH witness program을 감싸는 nested SegWit에도 사용됩니다. 주소가 3으로 시작한다는 이유만으로 서명자 수를 추정하지 않습니다.

  • address를 해당 network 규칙으로 decode합니다.
  • scriptPubKey의 opcode와 program 길이를 봅니다.
  • P2SH라면 redeemScript 공개 시점을 확인합니다.
  • witness가 있으면 version과 program을 확인합니다.
  • 예상 vbytes와 fee를 실제 input 유형으로 계산합니다.

P2WPKH는 서명 데이터를 witness로 분리합니다

P2WPKH scriptPubKey는 witness version 0과 20바이트 key hash로 구성됩니다. native 지출의 scriptSig는 비어 있고 witness stack에 signature와 compressed public key가 들어갑니다. node는 이 program을 정해진 P2PKH 유사 조건으로 해석하며 BIP143 방식의 서명 hash에 이전 출력 amount를 포함합니다.

SegWit는 witness를 txid 계산에서 분리해 제3자 transaction malleability를 줄이고 weight 할인으로 같은 논리 지출의 수수료 효율을 높입니다. ‘witness 데이터는 검증하지 않는다’는 뜻은 아닙니다. block weight와 wtxid에는 반영되고 consensus 규칙으로 서명을 검사합니다.

호환성 선택은 수신자와 wallet 기능에 달렸습니다

오래된 송금 시스템이 bc1 주소를 거부할 수 있어 nested P2SH-P2WPKH가 전환기에 쓰였습니다. 현대 wallet끼리는 native SegWit가 더 단순하고 효율적일 수 있지만 상대 서비스의 deposit 지원과 network를 확인해야 합니다. 주소를 다른 chain에 재사용하지 않습니다.

개발자는 output descriptor로 script 유형과 key derivation을 명시하고 test vector로 address·script 변환을 검증하는 편이 안전합니다. UI는 ‘Legacy’, ‘Nested SegWit’, ‘Native SegWit’ 라벨뿐 아니라 예상 수수료와 호환성 이유를 보여 주어 사용자가 이름만으로 보안 등급을 오해하지 않게 해야 합니다.

자주 묻는 질문

3으로 시작하는 주소는 모두 multisig인가요?

아닙니다. P2SH는 redeemScript hash를 인코딩하며 multisig뿐 아니라 nested SegWit 등 여러 조건을 담을 수 있습니다.

P2WPKH는 공개키 해시를 쓰지 않나요?

20바이트 HASH160(pubkey)를 witness v0 program에 사용하며 서명과 공개키를 witness에 둡니다.

SegWit witness는 서명 검증에서 제외되나요?

아닙니다. txid 계산과 weight 처리 방식이 다를 뿐 consensus가 witness 서명을 검증합니다.

더 깊이 읽기

본문에서 다룬 개념과 확인 절차를 다음 글에서 이어서 살펴보세요.

참고한 원문 자료

자료 확인 기준일 2026.09.27
  1. Transactionsdeveloper.bitcoin.org
  2. BIP 141: Segregated Witnessbips.dev
자료 대조 기록과 확인 범위
출처 수집
원문 링크 2개 제공
핵심 주장 대조
완료 근거가 아직 기록되지 않았습니다.
분야 전문가 검수
별도 완료 기록이 없습니다.

원문 링크와 자료 확인일은 글 전체의 주장 대조나 전문가 검수 완료를 뜻하지 않습니다. 별도 확인이 필요한 절차는 원문의 적용 대상과 최신 안내를 함께 확인해 주세요.

AI 활용 안내

이 글은 초안 구성과 자료 정리에 AI를 활용했습니다. 글에 표시된 출처와 기준일을 함께 확인해 주세요. 별도 검토 정보가 없다면 전문가 검수를 뜻하지 않습니다.

이해를 위한 정보 콘텐츠

이 글은 특정 자산의 매수·매도 또는 수익을 권유하지 않습니다. 자료의 발표 시점과 이후 변경 사항을 함께 확인해 주세요.

편집 원칙 보기 →이 기사 정정 제보 →