공개 키 스크립트 (Pubkey Script, scriptPubKey)

고급블록체인수정일

공개 키 스크립트(Pubkey Script, scriptPubKey)는 비트코인 트랜잭션의 출력에 포함되어 해당 금액의 사용 조건을 설정하는 스크립트입니다. 조건을 충족하기 위한 데이터는 서명 스크립트(scriptSig) 또는 세그윗 증인(witness) 데이터에 제공될 수 있습니다. 코드에서는 scriptPubKey로 표기되며, “잠금 스크립트”라고도 합니다.

공개 키 스크립트 이해하기

비트코인과 같은 UTXO 방식의 블록체인에서는 각 트랜잭션 출력이 일정 금액과 그 금액을 쓰기 위한 조건을 함께 담고 있습니다. 이 조건이 바로 공개 키 스크립트입니다. 사용하려는 비트코인을 잠긴 금고에 비유하면, scriptPubKey는 금고의 자물쇠 설정과 같아서 금고를 열기 위한 조건을 명시합니다.

  1. scriptPubKey는 트랜잭션 출력 내부에 존재하며, 다음에 해당 코인을 사용할 권리가 있는 사람을 지정합니다.
  2. 일반적인 조건은 특정 공개 키(또는 그 해시)에 해당하는 개인 키의 소유권을 증명하는 유효한 디지털 서명을 제공하는 것입니다.
  3. 자금을 사용하려면 새 트랜잭션의 입력에 서명 스크립트(또는 증인 데이터)를 제시해야 합니다. 노드는 이 데이터와 이전 출력의 scriptPubKey를 함께 실행해 결과가 참일 때만 지출을 유효한 것으로 인정합니다.

그래서 올바른 서명 데이터를 제공하여 scriptPubKey 조건을 충족할 수 있는 사람, 즉 해당 개인 키를 보유한 적법한 소유자만이 비트코인을 사용할 수 있습니다.

표준 스크립트 유형

  • P2PKH (Pay to Public Key Hash): 공개 키의 해시에 자금을 잠급니다. 사용하려면 그 해시와 일치하는 공개 키와 이에 대응하는 서명을 제시해야 합니다. “1”로 시작하는 기존 주소 형식입니다.
  • P2SH (Pay to Script Hash): 다른 스크립트(예: 다중 서명 조건)의 해시에 자금을 잠급니다. 사용할 때 원래 스크립트와 그 조건을 만족하는 데이터를 함께 제시합니다. “3”으로 시작하는 주소입니다.
  • P2WPKH (Pay to Witness Public Key Hash): P2PKH의 세그윗 버전으로, 서명 데이터를 증인 영역에 두어 수수료 부담을 줄입니다. “bc1q”로 시작하는 주소입니다.
  • P2TR (Pay to Taproot): 탭루트 업그레이드로 도입된 유형으로, 슈노르 서명 하나로 지출하거나 미리 정해 둔 여러 조건 중 하나를 공개해 지출할 수 있습니다. “bc1p”로 시작하는 주소입니다.

실제 예시

  • 시나리오 1: 친구에게 비트코인 전송. 공개 키 스크립트는 “이 자금은 친구의 비트코인 주소에 해당하는 개인 키로 서명할 수 있는 사람만 사용할 수 있습니다.”와 같은 지침입니다. 친구는 소유권을 증명하고 비트코인을 사용하기 위해 개인 키로 만든 서명을 제시합니다.
  • 시나리오 2: 다중 서명 지갑 설정. 다중 서명 지갑의 공개 키 스크립트는 “이 자금은 세 명의 승인된 사람들 중 두 명이 서명을 제공하는 경우에만 사용할 수 있습니다.”와 같은 조건을 담을 수 있습니다. 이는 자금 보호에 추가적인 보안 계층을 더합니다.

공개 키 스크립트 사용의 장점

  • 유연성: 단순 결제 외에도 다중 서명, 타임락 등 다양한 지출 조건을 표현할 수 있습니다. 비트코인 스크립트는 의도적으로 기능이 제한된 언어여서 범용 스마트 계약보다는 단순한 조건부 지출에 쓰입니다.
  • 보안: 자금은 스크립트에 명시된 특정 조건에 의해 보호되어 무단 사용이 어렵습니다.
  • 프로그래밍 가능성: 사용자 정의 지출 조건을 만들어 에스크로, 상속 대비 지갑 같은 사용 사례를 구현할 수 있습니다.

공개 키 스크립트 사용의 단점

  • 복잡성: 기술적이지 않은 사용자는 스크립트를 이해하고 구성하는 데 어려움을 겪을 수 있습니다.
  • 오류 가능성: 스크립트 생성의 실수는 자금의 돌이킬 수 없는 손실로 이어질 수 있습니다.
  • 트랜잭션 크기: 복잡한 스크립트는 트랜잭션 크기와 검증 부담을 늘려 수수료를 높일 수 있습니다.

공개 키 스크립트가 사용되는 분야

  1. 비트코인 및 UTXO 기반 암호화폐: 모든 트랜잭션 출력에서 지출 조건을 정의합니다.
  2. 다중 서명 지갑: 여러 당사자가 트랜잭션을 승인해야 하므로 자금의 공유 제어가 가능합니다.

이 글은 학습을 위한 일반 정보이며 투자 권유나 법률 자문이 아닙니다. 가상자산은 가격 변동이 크고 원금 손실 위험이 있습니다.