비트코인기술 입문

세그윗 (SegWit) — 서명 분리로 확장하다

세그윗 (SegWit)은 2017년에 활성화된 비트코인 프로토콜 업그레이드로, 서명 데이터를 분리하여 블록의 실질적 용량을 늘린 기술입니다.

· 5분

**세그윗 (Segregated Witness, SegWit)**은 2017년 8월에 활성화된 비트코인 프로토콜 업그레이드로, 트랜잭션에서 서명 데이터(witness)를 분리하여 블록의 실질적 용량을 늘린 기술입니다. 세그윗은 단순한 기술적 개선을 넘어, 비트코인 역사상 가장 격렬한 거버넌스 논쟁인 블록사이즈 전쟁의 결과물이었습니다.

graph LR
  subgraph "기존 트랜잭션"
      A1["버전"] --- A2["입력
(스크립트+서명)"] --- A3["출력"] --- A4["록타임"] end subgraph "SegWit 트랜잭션" B1["버전"] --- B2["마커+플래그"] --- B3["입력
(스크립트만)"] --- B4["출력"] --- B5["위트니스
(서명 분리)"] --- B6["록타임"] end style A2 fill:#f85149,stroke:#f85149,color:#000 style B3 fill:#3fb950,stroke:#3fb950,color:#000 style B5 fill:#58a6ff,stroke:#58a6ff,color:#000

블록사이즈 전쟁의 맥락 (2015-2017)

비트코인 네트워크의 트랜잭션 처리량이 1MB 블록 크기 한도에 접근하면서, 확장성 문제는 커뮤니티의 핵심 쟁점이 되었습니다. 크게 두 진영이 대립했습니다.

빅 블록 진영은 블록 크기를 2MB, 8MB, 혹은 그 이상으로 직접 증가시키는 하드 포크를 주장했습니다. 더 큰 블록이 더 많은 트랜잭션을 처리할 수 있으므로 즉각적인 확장이 가능하다는 논리였습니다. 이 진영에는 다수의 대형 채굴 풀과 일부 기업이 포함되어 있었습니다.

스몰 블록 진영은 블록 크기 증가가 노드 운영 비용을 높여 탈중앙화를 약화시킨다고 우려했습니다. 대신 세그윗과 같은 소프트 포크를 통한 효율적 확장, 그리고 라이트닝 네트워크 같은 2계층 솔루션을 통한 장기적 확장을 지지했습니다. 핵심 개발자 대부분과 다수의 노드 운영자가 이 입장이었습니다.

이 논쟁은 2017년 뉴욕 합의(SegWit2x), UASF BIP148, 그리고 결국 Bitcoin Cash의 하드 포크 분리로 이어졌습니다. 세그윗의 활성화는 노드 운영자(사용자)가 채굴자에게 규칙 변경을 강제할 수 있음을 증명한 역사적 사건이었습니다.

BIP141/143/144의 핵심 내용

세그윗은 세 개의 주요 BIP(Bitcoin Improvement Proposal)로 구성됩니다.

**BIP141 (Segregated Witness)**은 세그윗의 핵심 사양을 정의합니다. 증인 데이터를 트랜잭션 본문에서 분리하여 별도의 “증인” 구조에 배치하고, 블록 크기 대신 블록 가중치(weight) 개념을 도입했습니다. 최대 블록 가중치는 4,000,000 weight units이며, 비증인 데이터 1바이트 = 4 weight units, 증인 데이터 1바이트 = 1 weight unit으로 계산됩니다.

**BIP143 (Transaction Signature Verification for Version 0 Witness Program)**은 세그윗 트랜잭션의 서명 해시 알고리즘을 재설계했습니다. 기존 방식에서는 서명해야 하는 데이터 크기가 입력 수에 따라 이차적(O(n^2))으로 증가하여, 대량 입력 트랜잭션에서 검증 비용이 급증하는 문제가 있었습니다. BIP143은 각 입력의 서명 해시 계산을 O(n)으로 개선하여 이 공격 벡터를 제거했습니다.

**BIP144 (Peer Services - New Serialization)**는 세그윗 트랜잭션의 P2P 네트워크 직렬화 형식을 정의합니다. 기존 노드와의 하위 호환성을 유지하면서, 세그윗을 지원하는 노드 간에 증인 데이터를 효율적으로 전송할 수 있는 새로운 메시지 형식을 도입했습니다.

트랜잭션 가변성(Malleability) 문제

트랜잭션 가변성은 트랜잭션의 의미(입력, 출력, 금액)를 변경하지 않으면서 트랜잭션 ID(txid)를 변경할 수 있는 문제입니다. 세그윗 이전에는 서명(scriptSig)이 txid 계산에 포함되었는데, ECDSA 서명의 특성상 동일한 개인키로 동일한 메시지에 대해 여러 유효한 서명을 생성할 수 있었습니다.

이 문제의 실질적 피해는 라이트닝 네트워크 같은 오프체인 프로토콜에서 심각했습니다. 결제 채널은 미확인 트랜잭션의 txid를 참조하여 후속 트랜잭션을 구성하는데, 만약 txid가 변경되면 전체 채널 상태가 무효화될 수 있었습니다. 2014년 마운트곡스 해킹 사건에서도 트랜잭션 가변성이 악용된 것으로 알려져 있습니다.

세그윗은 서명 데이터를 txid 계산에서 제외함으로써 이 문제를 근본적으로 해결했습니다. 세그윗 트랜잭션의 txid는 서명 없이 입력과 출력만으로 계산되므로, 서명을 변조해도 txid가 변하지 않습니다. 이로써 라이트닝 네트워크 등 txid의 불변성에 의존하는 프로토콜의 구현이 가능해졌습니다.

증인 할인(Witness Discount)의 근거

세그윗에서 증인 데이터(서명)가 비증인 데이터보다 75% 할인된 가중치를 받는 이유는 경제적, 기술적으로 정당화됩니다.

기술적으로, 증인 데이터는 UTXO 세트에 포함되지 않습니다. UTXO 세트는 노드가 빠르게 접근해야 하는 핵심 데이터로, 메모리에 유지되는 경우가 많습니다. 서명 데이터는 트랜잭션 검증 후에는 더 이상 필요하지 않으므로, UTXO 세트를 팽창시키는 비증인 데이터보다 장기적 비용이 낮습니다. 증인 할인은 이러한 실제 비용 차이를 반영한 것입니다.

경제적으로, 증인 할인은 UTXO 통합(consolidation)을 장려합니다. 다수의 작은 UTXO를 소비하는 트랜잭션은 서명이 많이 필요하므로 증인 데이터 비중이 높은데, 할인 덕분에 이러한 통합 트랜잭션의 수수료가 상대적으로 저렴해집니다. 이는 UTXO 세트의 비대화를 억제하는 인센티브 구조를 만듭니다.

세그윗 주소 형식의 변천

세그윗은 여러 단계의 주소 형식을 거쳐 발전했습니다.

P2SH-P2WPKH (3으로 시작): 초기 세그윗 채택을 위한 호환 형식입니다. 기존 P2SH 주소 형식으로 감싸(wrapped) 세그윗을 사용하므로, 세그윗을 지원하지 않는 구형 지갑에서도 이 주소로 송금할 수 있었습니다. 다만 래핑 오버헤드로 인해 최적의 수수료 절감을 달성하지 못했습니다.

bech32 (bc1q로 시작): BIP173에 정의된 네이티브 세그윗 주소 형식입니다. 세그윗의 수수료 절감 효과를 최대화하며, 오류 감지 능력이 향상되었고, 대소문자를 구분하지 않아(소문자 전용) QR 코드 효율이 높습니다. 세그윗 v0에 사용됩니다.

bech32m (bc1p로 시작): BIP350에 정의된 개선된 주소 형식으로, bech32의 마지막 문자 변경 시 오류 감지가 실패하는 미묘한 버그를 수정했습니다. 탭루트(세그윗 v1 이상)에 사용됩니다.

UASF BIP148의 정치적 의미

2017년 채굴자들이 세그윗 활성화에 필요한 95% 시그널링 임계값에 도달하지 못하자, 사용자들은 BIP148을 통해 UASF(User Activated Soft Fork)를 조직했습니다. BIP148은 2017년 8월 1일부터 세그윗 시그널링 비트(bit 1)를 설정하지 않은 블록을 거부하겠다고 선언했습니다.

이 움직임의 정치적 의미는 심대했습니다. 전통적으로 프로토콜 변경은 채굴자의 시그널링에 의존했지만, UASF는 노드 운영자(경제적 다수)가 채굴자에게 규칙을 강제할 수 있음을 보여주었습니다. 만약 경제적 다수의 노드가 BIP148을 적용하면, 세그윗을 지원하지 않는 블록의 코인은 이 노드들에 의해 거부되어 무가치해집니다. 채굴자로서는 자신의 블록 보상이 경제적으로 인정받지 못할 위험을 감수할 수 없었습니다.

결국 BIP91이라는 타협안이 채굴자들 사이에서 빠르게 채택되면서 세그윗이 활성화되었고, 실제 체인 분열은 발생하지 않았습니다. 그러나 UASF는 비트코인의 권력 구조에서 최종 권한이 채굴자가 아닌 사용자(노드 운영자)에게 있음을 증명한 전환점이었습니다.

연결되는 개념

  • 라이트닝 네트워크 — 세그윗 위에 구축된 비트코인 2계층 결제 네트워크
  • 노드 — UASF를 통해 세그윗 활성화를 주도한 비트코인 네트워크의 독립적 검증 소프트웨어
  • 머클 트리 — 세그윗이 증인 데이터를 위한 별도의 머클 구조를 도입
  • 멤풀 — 세그윗의 가중치 시스템이 수수료 구조에 영향
  • 비트코인이란? — 비트코인의 기본 개념과 작동 원리

관련 글