표준 트랜잭션 (Standard Transaction)

중급블록체인수정일

표준 트랜잭션(Standard Transaction)은 Bitcoin Core의 IsStandard() 및 IsStandardTx() 테스트를 통과하는 트랜잭션입니다. 기본 설정의 Bitcoin Core를 실행하는 노드는 표준 트랜잭션만 멤풀에 받아들이고 중계(브로드캐스트)하며, 채굴 시에도 기본적으로 자신의 멤풀에 있는 표준 트랜잭션으로 블록 템플릿을 만듭니다. “표준”은 합의 규칙이 아니라 노드의 중계 정책(policy)입니다.

정책과 합의 규칙의 차이

  • 합의 규칙(consensus): 블록과 트랜잭션이 유효한지를 결정하는 규칙입니다. 모든 노드가 같은 규칙을 따라야 하며, 이를 어긴 블록은 네트워크 전체가 거부합니다.
  • 중계 정책(policy): 각 노드가 아직 블록에 들어가지 않은 트랜잭션을 멤풀에 받아들이고 다른 노드에 전달할지를 정하는 기준입니다. 노드 운영자가 설정으로 바꿀 수 있고, 소프트웨어 버전에 따라 달라질 수 있습니다.

따라서 비표준 트랜잭션도 합의 규칙만 지키면 유효합니다. 기본 설정의 노드가 중계하지 않을 뿐, 채굴자에게 직접 전달되어 블록에 포함되면 다른 모든 노드가 그 블록을 정상적으로 받아들입니다. 표준 규칙은 서비스 거부(DoS) 공격을 막고, 향후 소프트포크로 의미가 정해질 수 있는 형식(예: 아직 정의되지 않은 버전 번호나 스크립트 연산자)을 미리 사용하지 못하게 해 업그레이드를 안전하게 하려는 목적이 있습니다.

무엇이 “표준”으로 만드는가

Bitcoin Core 버전마다 세부 기준은 조금씩 다르지만, 대표적인 기준은 다음과 같습니다.

  • 출력 스크립트 유형: 출력은 P2PKH, P2SH, P2WPKH, P2WSH, P2TR 같은 정해진 유형, 소수의 공개 키를 쓰는 베어 멀티시그, 또는 데이터를 담는 OP_RETURN 출력이어야 합니다. 알 수 없는 형식의 스크립트는 비표준입니다.
  • 크기 제한: 트랜잭션 무게(weight)는 400,000 WU(약 100 kvB) 이하여야 하고, 입력의 scriptSig 크기도 제한됩니다(1,650바이트 이하).
  • scriptSig 형식: 입력의 scriptSig는 데이터를 스택에 올리는 연산(push)만 포함해야 합니다.
  • 먼지(dust) 출력 금지: 사용하는 데 드는 수수료보다 금액이 작은 출력, 즉 더스트 출력은 비표준입니다. 기본 설정에서 P2PKH 출력의 더스트 기준은 546사토시입니다.
  • OP_RETURN 데이터: 오랫동안 OP_RETURN 출력은 트랜잭션당 1개, 데이터 80바이트까지로 제한되었으나, 2025년 출시된 Bitcoin Core 30.0에서 기본 제한이 크게 완화되었습니다.
  • 버전과 기타 조건: 트랜잭션 버전이 정해진 범위 안에 있어야 하고, 입력이 사용하는 이전 출력의 스크립트와 서명 연산 수도 검사합니다.

비유

  • 현금으로 식료품 구매: ‘표준’에 해당합니다. 누구나 받아 주고 처리 방법도 모두 압니다.
  • 희귀 우표로 자동차 구매 시도: ‘비표준’에 해당합니다. 불법은 아니지만, 이런 지불 수단을 받아 줄 판매자를 찾기 어렵습니다.

표준 트랜잭션의 장점

  • 원활한 전파: 기본 설정의 노드가 모두 중계하므로 네트워크 전체에 빠르게 퍼지고, 대부분의 채굴자 멤풀에 도달합니다.
  • DoS 방어: 처리 비용이 지나치게 큰 트랜잭션이 멤풀과 네트워크에 퍼지는 것을 막습니다.
  • 업그레이드 안전성: 앞으로 소프트포크에서 쓰일 형식을 미리 사용하지 못하게 해, 새 규칙이 도입될 때 기존 트랜잭션과 충돌하지 않게 합니다.
  • 호환성: 지갑과 서비스가 같은 형식을 쓰므로 개발과 검증이 쉬워집니다.

표준 트랜잭션의 단점

  • 유연성 부족: 새로운 스크립트나 실험적인 형식은 노드의 중계를 받지 못해, 채굴자에게 직접 제출하는 등 별도의 경로가 필요합니다.
  • 정책 결정을 둘러싼 논쟁: 기본 설정을 대부분의 노드가 그대로 쓰므로, 무엇을 표준으로 볼지(예: OP_RETURN 데이터 제한)를 두고 커뮤니티에서 논쟁이 벌어지기도 합니다.

비표준 트랜잭션

비표준 트랜잭션은 기본 설정의 노드가 멤풀에 받아들이지 않으므로 일반적인 방법으로 전송하면 네트워크에 전파되지 않습니다. 다만 합의 규칙상 유효하다면 채굴자가 직접 받아 블록에 포함할 수 있으며, 일단 블록에 포함되면 유효한 트랜잭션으로 확정됩니다.

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