궁금한 주제를 찾아보세요

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

다시 읽을 이야기

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

해설블록체인 기술

비트코인 SIGHASH 유형은 거래의 어느 부분에 서명할까

ALL·NONE·SINGLE과 ANYONECANPAY 조합이 입력·출력 커밋 범위를 어떻게 바꾸는지 Legacy·SegWit·Taproot 조건과 함께 설명합니다.

난이도 중급주제 카테고리와 개념 밀도 기준
여러 입력·출력 칸 중 서명으로 묶이는 범위를 색으로 나누어 비교한 SIGHASH 유형 그림
주제의 이해를 돕기 위한 개념 일러스트
먼저 읽는 핵심

ALL·NONE·SINGLE은 output 범위를, ANYONECANPAY는 input 범위를 바꿉니다.
SINGLE은 대응 output index 존재 여부와 순서를 확인해야 합니다.
Taproot는 SIGHASH_DEFAULT 0x00을 추가하고 digest 구성이 달라집니다.

SIGHASH의 하위 기본 유형은 출력을 어디까지 서명으로 고정할지 정합니다. ALL은 모든 출력, NONE은 출력 없음, SINGLE은 서명 중인 입력과 같은 순번의 출력 하나만 고정합니다. 여기에 ANYONECANPAY 비트를 더하면 모든 입력 대신 현재 입력 하나만 고정합니다. 다만 버전·락타임·현재 입력 정보처럼 메시지에 들어가는 항목은 서명 알고리즘 세대마다 다르므로, 이 설명 하나로 Legacy, SegWit v0, Taproot의 서명 메시지를 똑같이 구현하면 안 됩니다.

서명은 거래 전체가 아니라 규칙이 만든 해시값에 적용됩니다

지갑은 서명 전 거래와 이전 출력 정보로 서명 메시지를 만들고 개인키로 서명합니다. 해시 유형 바이트는 어떤 항목을 해시값에 넣을지 고릅니다. 다른 참여자가 나중에 바꿀 수 있는 부분은 서명자가 승인하지 않은 영역이므로, 화면과 프로토콜이 그 변경 의도를 제한해야 합니다.

Legacy ECDSA 서명에서는 DER 바이트 뒤에 해시 유형 바이트를 붙입니다. Taproot 키 경로와 탭스크립트의 Schnorr 서명은 DEFAULT라면 64바이트만 쓸 수 있고, 유형을 명시하면 65번째 바이트를 붙입니다. 쓸데없이 0x00 바이트를 붙인 65바이트 인코딩은 유효하지 않습니다.

SIGHASH는 서명 강도를 고르는 등급이 아니라, 거래의 어느 부분을 서명자가 고정했는지 정하는 범위 선택입니다.

JOBCOIN 해설

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

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

  1. 서명은 거래 전체가 아니라 규칙이 만든 해시값에 적용됩니다

    지갑은 서명 전 거래와 이전 출력 정보로 서명 메시지를 만들고 개인키로 서명합니다.

  2. ALL·NONE·SINGLE은 출력 범위를 바꿉니다

    SIGHASH_ALL은 일반 결제에서 모든 출력을 고정해 받는 금액과 잔돈을 보호합니다.

  3. ANYONECANPAY는 다른 입력의 추가를 허용합니다

    ANYONECANPAY가 켜지면 서명은 현재 입력에만 집중하고 다른 입력은 고정하지 않습니다.

설명을 위한 개념도 · 실제 가격·거래 내역·통계가 아닙니다.

ALL·NONE·SINGLE은 출력 범위를 바꿉니다

SIGHASH_ALL은 일반 결제에서 모든 출력을 고정해 받는 금액과 잔돈을 보호합니다. NONE은 출력을 고정하지 않으므로 다른 참여자가 목적지와 금액을 더하거나 바꿀 수 있습니다. SINGLE은 현재 입력과 같은 순번의 출력만 고정해, 입력과 출력을 한 쌍씩 조립하는 프로토콜에 쓰일 수 있습니다.

SINGLE을 쓸 때는 해당 순번의 출력이 실제로 있는지, 원하는 쌍의 순서가 유지되는지 확인해야 합니다. Legacy에는 이른바 SIGHASH_SINGLE 버그가 있어, 대응하는 출력이 없을 때 특수 해시 1을 돌려주는 동작이 그대로 남아 있습니다. SegWit v0와 Taproot 구현은 각 BIP의 정확한 규칙을 따르며 세대 간 차이를 감추지 않습니다.

SIGHASH 커밋 범위
유형 입력 출력
ALL 기본적으로 모든 입력 정보 모든 출력
NONE 기본적으로 모든 입력 정보 없음
SINGLE 기본적으로 모든 입력 정보 같은 순번의 출력
ALL|ANYONECANPAY 현재 입력 모든 출력
SINGLE|ANYONECANPAY 현재 입력 같은 순번의 출력

ANYONECANPAY는 다른 입력의 추가를 허용합니다

ANYONECANPAY가 켜지면 서명은 현재 입력에만 집중하고 다른 입력은 고정하지 않습니다. 다른 참여자가 수수료를 댈 입력을 추가하거나, 서로 따로 서명한 여러 입력을 묶는 구조에 유용합니다. 이름 때문에 ‘누구나 내 코인을 쓸 수 있다’고 오해하기 쉽지만 현재 UTXO의 서명 권한 자체를 공개하는 것은 아닙니다.

다만 NONE이나 SINGLE과 함께 쓰면 출력을 바꿀 수 있는 범위도 넓어집니다. 서명을 받은 조정자가 서명자가 예상하지 못한 거래에 그 서명을 끼워 넣을 수 없는지 프로토콜을 검토합니다. PSBT는 UTXO, 해시 유형, 출력을 서명자 화면에 분명히 보여 줘야 합니다.

  • 입력마다 해시 유형을 해석합니다.
  • 서명 알고리즘이 Legacy·BIP143·BIP341 중 무엇인지 구분합니다.
  • SINGLE이면 대응하는 출력 순번을 확인합니다.
  • ANYONECANPAY로 추가된 입력을 검토합니다.
  • 완성된 거래를 각 서명자의 정책과 다시 대조합니다.

Taproot DEFAULT는 ALL과 비슷하지만 별개의 값입니다

BIP341의 SIGHASH_DEFAULT 0x00은 ALL과 같은 출력 범위를 고정하는 기본 선택이지만, 인코딩과 메시지 구성은 Taproot 규칙을 따릅니다. 명시할 수 있는 유효한 유형은 0x01, 0x02, 0x03과 0x81, 0x82, 0x83 조합이며, 정의되지 않은 해시 유형은 실패합니다.

Taproot 서명 메시지는 모든 입력의 금액과 scriptPubKeys, 시퀀스 등을 기본으로 고정하고, ANYONECANPAY 여부에 따라 현재 입력의 데이터로 대신합니다. 부가 데이터(annex)가 있거나 스크립트 경로를 쓰면 탭리프 해시, 키 버전, 코드 구분자 위치 같은 확장 항목이 메시지에 들어갑니다. Legacy 직렬화 코드를 재사용하지 않습니다.

제품 화면은 바뀔 수 있는 부분을 보여 줘야 합니다

서명자가 SIGHASH_NONE을 승인하면서 받는 쪽 출력이 고정되지 않는다는 사실을 모르면, 정상적인 서명도 위험한 결과에 쓰일 수 있습니다. 하드웨어 지갑은 유형 이름만이 아니라 ‘다른 사람이 출력을 바꿀 수 있음’ 같은 효과를 보여 주고, 흔치 않은 유형에는 한 번 더 강하게 확인을 받아야 합니다.

테스트에는 유형마다 항목 하나를 바꿨을 때 검증이 성공하는지 실패하는지 정리한 표를 넣습니다. JSON 테스트 케이스를 저장한다면 hashType을 문자열 라벨과 정수 바이트로 함께 두고, 실제 파서로 문법을 검증합니다. 화면 설명과 해시 구현이 어긋난 상태로 출시하지 않습니다.

자주 묻는 질문

SIGHASH_NONE이면 서명 없이도 UTXO를 쓸 수 있나요?

아닙니다. 현재 입력을 쓰기 위한 서명은 필요하지만, 출력을 서명으로 고정하지 않을 뿐입니다.

ANYONECANPAY는 누구나 내 입력을 바꿀 수 있다는 뜻인가요?

서명한 현재 입력은 고정하고, 다른 입력을 더하거나 바꾸는 것을 허용하는 범위 선택입니다.

Taproot DEFAULT는 0x01 ALL과 완전히 같은 바이트인가요?

효과는 기본 ALL과 비슷하지만 값과 서명 인코딩이 다르며, 0x00을 붙인 65바이트 서명은 허용되지 않습니다.

더 깊이 읽기

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

참고한 원문 자료

자료 확인 기준일 2026.09.27
  1. BIP 341: Taproot signature validationbips.dev
  2. BIP 143: Transaction Signature Verification for Version 0 Witness Programbips.dev
작성 방식과 확인 범위
출처 수집
원문 링크 2개 제공
작성·확인
공식 기관 자료를 근거로 AI 도구를 활용해 작성했고, 운영자가 발행 전에 읽어 확인합니다.
전문가 검토
세무·법률 전문가 검토는 거치지 않았습니다.

투자·세무 판단은 전문가와 상의하세요. 제도와 거래소 안내는 바뀔 수 있으니 원문의 적용 대상과 최신 안내를 함께 확인해 주세요.

이해를 위한 정보 콘텐츠

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

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