비트코인기술 중급

UTXO 모델 이해하기

비트코인이 잔액을 기록하는 방식인 UTXO(미사용 트랜잭션 출력) 모델을 실습과 함께 깊이 이해한다. 이더리움의 계정 모델과 비교하고, UTXO 선택이 수수료에 미치는 영향을 다룬다.

· 4분

비트코인은 잔액을 어떻게 기록할까. 은행처럼 계좌에 숫자를 적어두는 방식이 아니다. 비트코인은 UTXO(Unspent Transaction Output, 미사용 트랜잭션 출력) 모델을 사용한다. 이 개념을 이해하면 비트코인 트랜잭션의 작동 원리, 수수료 구조, 프라이버시 특성이 한꺼번에 명확해진다.

지갑 잔액이라는 착각

지갑 앱을 열면 “0.05 BTC”처럼 잔액이 표시된다. 그런데 비트코인 네트워크 어디에도 “이 주소의 잔액은 0.05 BTC”라고 적힌 장부는 없다.

비트코인 네트워크가 실제로 추적하는 것은 아직 소비되지 않은 트랜잭션 출력값들이다. 지갑 소프트웨어는 이 값들을 합산해서 잔액처럼 보여줄 뿐이다.

UTXO란 무엇인가

트랜잭션이 처리될 때마다 입력(Input)과 출력(Output)이 생성된다.

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

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

예시:

Alice가 Bob에게 1 BTC를 보낸다.

트랜잭션 TX_A
  입력: Alice의 이전 UTXO 2 BTC
  출력 1: Bob의 주소에 1 BTC  ← 새로운 UTXO
  출력 2: Alice의 주소에 0.999 BTC (잔돈)  ← 새로운 UTXO
  (0.001 BTC는 수수료로 채굴자에게)

이 트랜잭션 이후 두 개의 UTXO가 존재한다. Bob의 1 BTC짜리 UTXO와 Alice의 0.999 BTC짜리 UTXO다.

동전 지갑으로 이해하기

UTXO를 이해하는 가장 좋은 비유는 지폐와 동전이다.

지갑에 5만원권 1장, 1만원권 2장, 천원권 3장이 있다면 총 73,000원이다. 그런데 이 “73,000원”은 추상적 개념이고, 실제로는 각기 다른 지폐와 동전의 묶음이다.

비트코인도 마찬가지다. “0.5 BTC를 보유했다”고 할 때, 실제로는 여러 UTXO의 합이다.

UTXO금액
UTXO #10.3 BTC
UTXO #20.15 BTC
UTXO #30.05 BTC
합계0.5 BTC

송금할 때는 이 UTXO 중 일부를 선택해 소비한다. 현금으로 결제할 때 지폐를 골라 내는 것과 같다.

실습: UTXO 직접 조회하기

txid.uk에서 비트코인 주소를 검색하면 해당 주소에 연결된 UTXO 목록을 확인할 수 있다.

조회 방법:

  1. txid.uk 접속 후 검색창에 비트코인 주소 입력
  2. UTXO 탭에서 각 UTXO의 금액, 트랜잭션 ID, 확인 수 확인
  3. 개별 TXID를 클릭하면 해당 트랜잭션의 입출력 구조를 시각적으로 확인 가능

viz.txid.uk에서는 트랜잭션의 입출력 관계를 네트워크 그래프로 시각화해볼 수 있다. UTXO가 어떻게 생성되고 소비되는지 흐름을 눈으로 추적하기에 좋다.

유명한 비트코인 창세기 블록 주소로 실습해보자:

1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

이 주소는 사토시 나카모토가 채굴한 최초의 블록에서 생성된 주소다. 이 주소의 UTXO들은 오늘날까지 소비된 적이 없다.

여러 주소에 흩어진 UTXO를 한눈에 파악하려면 portfolio.txid.uk의 멀티주소 추적 기능을 활용할 수 있다.

UTXO 선택과 수수료의 관계

트랜잭션 수수료는 금액이 아니라 **데이터 크기(바이트)**에 비례한다. 이것이 UTXO 개수와 수수료가 연결되는 이유다.

트랜잭션 크기는 입력 수에 크게 영향받는다. 입력 하나당 약 148바이트(P2PKH 기준)가 추가된다. 출력은 약 34바이트다.

예시 비교:

시나리오입력출력트랜잭션 크기수수료(10 sat/vbyte 기준)
대형 UTXO 1개 사용12~226 vbytes2,260 sat
소액 UTXO 10개 사용102~1,496 vbytes14,960 sat

같은 금액을 보내더라도 소액 UTXO 여러 개를 소비하면 수수료가 훨씬 비싸진다.

UTXO 통합(Consolidation)

수수료가 낮은 시기에 소액 UTXO 여러 개를 자신의 주소 하나로 합치는 작업을 UTXO 통합이라 한다. 이후 고수수료 시기에 큰 UTXO 하나를 사용하면 더 저렴하게 송금할 수 있다.

단, UTXO 통합은 프라이버시를 약화시킨다. 여러 주소의 UTXO를 하나의 트랜잭션에서 소비하면, 외부에서 이 주소들이 동일인 소유임을 추론할 수 있다.

UTXO 모델 vs 계정 모델

이더리움은 계정 모델을 사용한다. 각 주소마다 잔액 숫자가 기록되고, 트랜잭션은 그 숫자를 증감시킨다. 은행 계좌와 개념이 같다.

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

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

UTXO 집합과 블록체인 용량

비트코인 전체 노드는 **UTXO 집합(UTXO set)**을 메모리에 유지한다. 이 집합은 현재 존재하는 모든 미사용 출력의 목록이다.

2024년 기준 UTXO 집합의 크기는 약 4~5GB다. 전체 블록체인(600GB 이상)과 비교하면 작다. 노드는 새 트랜잭션을 검증할 때 이 UTXO 집합을 조회하므로, 빠른 메모리 접근이 중요하다.

소액 UTXO가 많아지면 UTXO 집합이 비대해진다. 이를 “UTXO 팽창(UTXO bloat)“이라 하며, 노드 운영 비용을 높이는 문제로 논의된다.

정리

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

다음 단계: 수수료 계산 실전 가이드를 통해 UTXO 선택이 실제 수수료에 어떻게 영향을 주는지 계산해보자.

관련 글