P2PKH 출력 (P2PKH Output)
P2PKH 출력(P2PKH Output)은 공개키의 해시로 잠긴 비트코인 트랜잭션 출력입니다. P2PKH는 Pay-to-Public-Key-Hash의 약자로, 출력의 잠금 스크립트(scriptPubKey)에 공개키 자체가 아니라 공개키의 해시값이 들어 있으며, 이 해시에 맞는 공개키와 그 공개키에 대응하는 개인키의 서명을 제시해야 금액을 사용할 수 있습니다. 각 출력은 금액(사토시 단위)과 이를 사용하기 위해 충족해야 하는 이 조건을 함께 담습니다.
잠금 스크립트(scriptPubKey)
P2PKH 출력의 잠금 스크립트는 다음과 같은 고정된 형태입니다.
OP_DUP OP_HASH160 <공개키 해시 20바이트> OP_EQUALVERIFY OP_CHECKSIG
여기서 공개키 해시는 공개키에 SHA-256을 적용한 뒤 다시 RIPEMD-160을 적용한 값(HASH160)입니다. 이 스크립트의 길이는 25바이트입니다.
해제 스크립트(scriptSig)와 검증 과정
P2PKH 출력을 입력으로 사용하는 트랜잭션은 해제 스크립트에 <서명> <공개키>를 넣습니다. 노드는 두 스크립트를 이어 다음 순서로 실행합니다.
- 제시된 공개키를 복제합니다(OP_DUP).
- 복제한 공개키의 HASH160을 계산합니다(OP_HASH160).
- 계산한 해시가 출력에 적힌 공개키 해시와 같은지 확인합니다(OP_EQUALVERIFY). 다르면 즉시 실패합니다.
- 서명이 그 공개키와 현재 트랜잭션에 대해 유효한지 확인합니다(OP_CHECKSIG).
네 단계를 모두 통과해야 출력을 사용할 수 있으므로, 해당 공개키에 대응하는 개인키를 가진 사람만 자금을 옮길 수 있습니다.
P2PKH 주소
사용자가 주고받는 “1”로 시작하는 비트코인 주소(레거시 주소)는 P2PKH 출력의 공개키 해시를 Base58Check로 인코딩한 것입니다. 지갑에 이런 주소를 입력해 송금하면, 지갑은 주소에서 공개키 해시를 꺼내 위의 잠금 스크립트를 가진 출력을 만듭니다.
지불 출력과 잔돈 출력
전형적인 P2PKH 트랜잭션에는 받는 사람에게 보내는 지불 출력과, 입력 금액에서 지불액과 수수료를 뺀 나머지를 보낸 사람에게 돌려주는 잔돈 출력이 있습니다. 두 출력 모두 P2PKH 형식일 수 있으며, 차이는 어느 공개키 해시로 잠겨 있는가뿐입니다.
P2PKH 출력의 장점:
- 널리 사용되고 인식됨: 가장 초기의 출력 스크립트 유형 중 하나인 P2PKH는 다양한 지갑 및 서비스에서 광범위한 호환성을 누리고 있습니다.
- 비교적 단순함: P2PKH 스크립트는 더 복잡한 스크립트 유형에 비해 이해하고 구현하기가 더 쉽습니다.
- 공개키 노출 지연: 출력을 사용하기 전까지는 블록체인에 공개키가 아닌 해시만 기록됩니다.
- 우수한 보안: 자금은 소유자의 개인 키에 연결된 유효한 서명을 요구함으로써 보호됩니다.
P2PKH 출력의 단점:
이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.