본문 바로가기
🍊⚡️ Bitcoin/technical-theory

비트코인 기술(세그윗 SegWit, 라이트닝 네트워크, UTXO)

by devhertz 2026. 10. 18.

세그윗(SegWit): 서명 분리로 확장하기

  • 세그윗(Segregated Witness)은 2017년 8월에 활성화된 비트코인 프로토콜 업그레이드
  • 트랜잭션에서 서명 데이터(witness)를 본문에서 분리해 블록의 실질적 용량을 늘린 기술
  • 비트코인 역사상 가장 격렬했던 거버넌스 논쟁인 블록사이즈 전쟁의 결과물

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

1MB 블록 한도에 트랜잭션 수요가 근접하면서 확장성 문제가 핵심 쟁점이 됐다. 두 진영이 대립했다.

  • 빅 블록 진영: 블록 크기를 2MB·8MB 이상으로 직접 늘리는 하드 포크를 주장. 즉시 처리량을 늘릴 수 있다는 논리. 대형 채굴 풀과 일부 기업이 포함됐다.
  • 스몰 블록 진영: 블록 크기 증가가 노드 운영 비용을 높여 탈중앙화를 약화시킨다고 우려. 세그윗 같은 소프트 포크와 라이트닝 같은 2계층 솔루션을 지지. 핵심 개발자와 다수의 노드 운영자가 이 입장이었다.

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

BIP141 / 143 / 144의 핵심

  • BIP141: 증인 데이터를 트랜잭션 본문에서 분리하고, 블록 크기 대신 블록 가중치(weight) 개념을 도입. 최대 4,000,000 weight units. 비증인 데이터 1바이트 = 4 weight, 증인 데이터 1바이트 = 1 weight.
  • BIP143: 서명 해시 계산을 O(n²)에서 O(n)으로 개선. 대량 입력 트랜잭션의 검증 비용 급증 공격 벡터를 제거.
  • BIP144: 세그윗 트랜잭션의 P2P 직렬화 형식을 정의. 기존 노드와의 하위 호환성을 유지하면서 증인 데이터를 효율적으로 전송.

트랜잭션 가변성(Malleability) 해결

세그윗 이전에는 서명(scriptSig)이 txid 계산에 포함됐다. ECDSA 특성상 같은 메시지에 대해 여러 유효한 서명이 가능했고, 이로 인해 txid가 변경될 수 있었다.

오프체인 프로토콜(특히 라이트닝)은 미확인 트랜잭션의 txid를 참조해 후속 상태를 구성한다. txid가 바뀌면 채널 전체가 무효화될 수 있었다. 세그윗은 서명 데이터를 txid 계산에서 제외함으로써 이 문제를 근본적으로 해결했다. 서명을 변조해도 txid가 변하지 않는다.

증인 할인(Witness Discount)의 근거

증인 데이터는 비증인 데이터보다 75% 할인된 가중치를 받는다.

  • 기술적 이유: 증인 데이터는 UTXO 세트에 포함되지 않는다. 검증 후에는 더 이상 필요 없으므로 장기 비용이 낮다.
  • 경제적 이유: 다수 소액 UTXO를 소비하는 통합 트랜잭션의 수수료를 상대적으로 낮춰, UTXO 세트 비대화를 억제하는 인센티브를 만든다.

주소 형식의 변천

  • P2SH-P2WPKH (3으로 시작): 초기 호환용 래핑 형식. 구형 지갑에서도 송금 가능했으나 오버헤드가 있었다.
  • bech32 (bc1q): BIP173. 네이티브 세그윗 v0. 수수료 절감 극대화, 오류 감지 강화, QR 효율 향상.
  • bech32m (bc1p): BIP350. bech32의 미묘한 버그 수정. 탭루트(세그윗 v1 이상)에 사용.

UASF BIP148의 정치적 의미

채굴자들이 95% 시그널링에 도달하지 못하자, 사용자들은 BIP148로 UASF를 조직했다. 2017년 8월 1일부터 세그윗 시그널링이 없는 블록을 거부하겠다고 선언한 것이다.

경제적 다수의 노드가 특정 규칙을 강제하면, 그 규칙을 따르지 않는 블록의 보상은 무가치해진다. 채굴자로서는 감수하기 어려운 위험이었다. 결국 BIP91 타협으로 세그윗이 활성화됐고, 체인 분열은 피했다.
UASF는 최종 권한이 채굴자가 아니라 사용자(노드 운영자)에게 있다는 것을 증명한 전환점이었다.

라이트닝 네트워크: 비트코인의 2계층

  • 라이트닝 네트워크는 비트코인 블록체인 위에 구축된 Layer 2 결제 네트워크.
  • 2015년 Joseph Poon과 Thaddeus Dryja의 백서에서 제안됐으며, 세그윗의 트랜잭션 가변성 해결을 기반으로 실현
  • 소액·즉시 결제를 목표로 함

HTLC (Hash Time-Locked Contract)

직접 채널이 없는 당사자 간 결제를 중개 노드를 통해 안전하게 라우팅하는 핵심 메커니즘이다.

  • 해시 잠금: 수신자가 preimage의 해시를 공개. 경로상의 각 노드는 원본 preimage를 제시해야만 자금을 청구할 수 있다. preimage가 역방향으로 전파되면서 순차 정산된다.
  • 시간 잠금: 만료 시간이 지나면 자금이 송신자에게 반환된다. 각 홉은 이전 홉보다 짧은 만료 시간을 가져, 중개 노드가 안전하게 청구할 여유를 보장한다.

어느 참여자도 상대방을 신뢰할 필요가 없다. 암호학과 인센티브가 협력을 강제한다.

양파 라우팅(Onion Routing)

Sphinx 기반 양파 라우팅을 사용한다. 송신자가 전체 경로를 미리 계산하고, 각 중개 노드가 볼 수 있는 정보를 계층적으로 암호화한다.

중개 노드는 자신의 층만 복호화할 수 있으며, 직전·직후 노드만 파악한다. 최종 수신자나 총 금액을 알 수 없다. 온체인보다 훨씬 강한 프라이버시를 제공한다. 결제 완료 후 기록이 남지 않는다.

채널 용량과 유동성 관리

채널은 양방향이지만 자금은 한 방향으로만 흐른다. 채널 개설 시 잠긴 총량이 용량이며, 닫지 않는 한 변경할 수 없다. 대규모 결제가 어려운 근본 이유다. 경로상의 모든 채널이 해당 금액 이상의 방향별 유동성을 가져야 한다.

재균형(rebalancing)은 원형 결제 등으로 자신의 채널 간 자금 분포를 조정하는 과정이다. 수수료가 발생하며 항상 가능한 것은 아니다.

워치타워

상대방이 오래된(철회된) 채널 상태를 온체인에 게시해 부당 이득을 취하려는 시도를 감시한다. 철회 키를 이용해 페널티 트랜잭션을 자동 브로드캐스트한다. 사용자가 항상 온라인일 필요를 줄여준다. 프라이버시를 위해 최소한의 정보만 제공하는 것이 중요하다.

인바운드 유동성과 LSP

결제를 수신하려면 자신에게 향하는 채널에 충분한 잔액이 있어야 한다. 새 노드는 아웃바운드만 있고 인바운드가 0이다.

LSP(Lightning Service Provider)는 인바운드 유동성을 제공하고 채널 관리를 대행한다. 편의성은 높지만 특정 LSP에 대한 의존이라는 중앙화 요소를 도입한다. 다수의 경쟁적 LSP와 전환 가능성이 중요하다.

보안 모델과 한계

보안은 궁극적으로 비트코인 기본 레이어에 의존한다. 분쟁 시 온체인으로 최종 정산된다.

주요 한계:

  • 온라인 요구(또는 워치타워)
  • 채널 용량으로 인한 대규모 결제 어려움 (멀티패스로 부분 해결)
  • 강제 종료 시 높은 온체인 수수료
  • 유동성 부족으로 인한 라우팅 실패

기본 레이어가 최종 정산 계층(금고)이라면, 라이트닝은 일상 결제 계층(지갑)이다. 금본위제에서 금과 지폐의 관계와 구조적으로 유사하다.

UTXO: Unspent Transaction Output

  • 비트코인에는 잔고라는 개념이 없음
  • 비트코인은 계좌에 숫자를 적어두는 방식이 아님
  • UTXO(Unspent Transaction Output, 미사용 트랜잭션 출력) 모델을 사용
    • 이 개념으로 트랜잭션 작동 원리, 수수료 구조, 프라이버시 특성을 이해해야 함

지갑 잔액이라는 착각

지갑 앱에 “0.05 BTC”가 표시돼도, 네트워크 어디에도 “이 주소의 잔액은 0.05 BTC”라고 적힌 장부는 없다. 네트워크가 추적하는 것은 아직 소비되지 않은 출력값들의 집합이다. 지갑 소프트웨어가 이를 합산해 잔액처럼 보여줄 뿐이다.

UTXO란 무엇인가

  • 입력(Input): 이전 트랜잭션의 출력을 소비한다.
  • 출력(Output): 새로운 비트코인 잠금을 생성한다. 수신 주소와 금액이 포함된다.

출력이 생성되고 아직 다른 트랜잭션의 입력으로 사용되지 않았다면 그것이 UTXO다.

  • 예시: Alice가 Bob에게 1 BTC를 보낼 때
    • 입력으로 Alice의 2 BTC UTXO를 소비하고,
    • 출력 1: Bob에게 1 BTC (새 UTXO),
    • 출력 2: Alice에게 0.999 BTC 잔돈 (새 UTXO),
    • 나머지 0.001 BTC는 수수료로 간다.

동전 지갑 비유

지갑에 5만 원권 1장, 1만 원권 2장, 천 원권 3장이 있으면 총 7만 3천 원이다. “7만 3천 원”은 추상적 합이고, 실제로는 각기 다른 지폐·동전의 묶음이다.
비트코인도 “0.5 BTC를 보유했다”고 할 때 실제로는 여러 UTXO의 합이다.

UTXO 선택과 수수료

수수료는 금액이 아니라 **데이터 크기(vbyte)**에 비례한다. 입력 하나당 약 148바이트(P2PKH 기준)가 추가된다.

같은 금액을 보내더라도 소액 UTXO 여러 개를 소비하면 트랜잭션 크기가 커져 수수료가 크게 오른다.
수수료가 낮은 시기에 소액 UTXO를 자신의 주소로 합치는 것이 **UTXO 통합(consolidation)**이다. 이후 고수수료 시기에 큰 UTXO 하나를 쓰면 비용을 줄일 수 있다.

단, 통합은 프라이버시를 약화시킨다. 여러 주소의 UTXO를 한 트랜잭션에서 소비하면 동일인 소유로 추론될 수 있다. 더스트 공격의 기반이 되기도 한다.

UTXO 모델 vs 계정 모델

특성 비트코인 (UTXO) 이더리움 (계정)
잔액 표현 UTXO 집합의 합 주소별 숫자
병렬 처리 유리 (독립 UTXO) 불리 (순서 의존)
프라이버시 상대적으로 강함 추적 용이
복잡도 높음 낮음
이중지불 방지 UTXO 소비 여부 확인 논스 확인

UTXO 모델은 복잡하지만 병렬 처리와 이중지불 방지에 구조적으로 유리하다.

UTXO 집합과 노드

모든 풀노드는 현재 존재하는 모든 미사용 출력의 목록인 UTXO set을 유지한다. Bitcoin Core는 chainstate에 두고 자주 쓰는 부분만 메모리에 캐시한다.
전체 블록체인의 1~2% 수준에 불과하다. “지금 남아 있는 잔액”만 있으면 검증이 가능하기 때문이다.
소액 UTXO가 과도하게 쌓이면 UTXO 팽창(bloat)이 발생해 노드 운영 비용을 높인다.


정리하면:

  • UTXO 모델은 잔액 개념 없이 동작하는 비트코인의 방식이다. 각 코인은 독립적인 출력으로 존재하며, 사용되면 소멸하고 새로운 출력이 생성된다.
  • 이중지불 방지와 병렬 처리에 유리하지만, 소액 UTXO 누적 시 수수료 부담이 커진다.
  • UTXO 선택과 통합 전략은 고급 사용자가 수수료를 최적화하는 핵심 도구다.

댓글