MSTR Cat

블록체인/레벨 II · 작동 원리/2.2 트랜잭션/수업 1

UTXO 모델

비트코인에 계정이 없는 이유와 원장이 사용된 코인을 파악하는 방법

준비물블록 탐색기(예: mempool.space)에 접속할 수 있는 웹 브라우저여러 UTXO를 가진 공개 비트코인 주소출력 ID와 금액을 기록할 노트

호기심

  1. 업데이트할 계정이 없을 때 잔액은 어떻게 되나요?
  2. 노드는 이전 트랜잭션을 모두 확인하지 않고 어떻게 입력이 아직 사용되지 않았음을 검증할까요?
  3. 코인의 전체 이력이 따라다니면 왜 익명성을 유지하기가 더 어려워질까요?

탐구

  1. 비트코인은 은행 원장이나 이더리움의 계정 모델을 사용하지 않습니다. 그러한 시스템에서는 잔액이 주소에 저장되어 그 자리에서 업데이트되며, 자금을 보내면 한 계좌의 잔액은 줄고 다른 계좌의 잔액은 늘어납니다. 비트코인에는 이러한 저장 방식이 없습니다. 대신, 가치가 개별적이고 사용되지 않은 단위로만 존재하는 현금과 유사한 구조를 사용합니다. ‘앨리스의 총 잔액’을 추적하는 중앙 원장은 없으며, 현재 지출할 수 있는 개별적인 출력값들만 존재할 뿐입니다.
  2. 이러한 단위를 미사용 트랜잭션 출력(UTXO)이라고 합니다. 각 UTXO는 사토시 단위의 특정 금액과, 누가 그것을 사용할 수 있는지 정의하는 잠금 스크립트를 담고 있습니다. 트랜잭션이 발생하면 UTXO를 통째로 입력으로 소비하고 새로운 UTXO를 출력으로 생성합니다. 소비된 출력은 사용 가능한 코인 집합에서 빠지고(트랜잭션 자체는 체인의 기록에 그대로 남습니다), 새 출력이 그 집합에 추가됩니다. 지갑의 ‘잔액’은 저장된 숫자가 아니라, 그 지갑의 개인 키로 충족할 수 있는 잠금 스크립트를 가진 모든 UTXO의 합계입니다.
  3. 이 구조는 네트워크 노드의 검증을 단순화합니다. 각 입력은 이전에 사용되지 않은 특정 출력을 참조하므로, 노드는 그 출력이 현재 상태에 존재하고 아직 사용된 적이 없는지만 확인하면 됩니다. 전역 잔액을 다시 계산하거나 복잡한 계정 내역을 검증할 필요가 없습니다. 모든 풀노드는 ‘체인스테이트(chainstate)’를 유지하는데, 이는 사실상 특정 시점에 존재하는 모든 활성 UTXO의 전체 집합입니다. 덕분에 이중 지불 시도를 빠르고 결정론적으로 검증할 수 있습니다.
  4. 이더리움과 비교하면 핵심적인 설계 선택이 드러납니다. 이더리움은 각 주소에 잔액과, 리플레이 공격을 막기 위한 논스(트랜잭션 카운터)가 저장되는 계정 모델을 사용합니다. 계정을 업데이트하려면 상태 트리를 전역적으로 변경해야 합니다. 반면 비트코인은 잔액을 제자리에서 수정하는 대신 새로운 출력을 생성하므로, 코인에 이력이 따라다니며 과거 트랜잭션과 현재 보유분이 연결됩니다.
  5. 이러한 이력상의 연결은 프라이버시와 대체 가능성(fungibility)에 중대한 영향을 미칩니다. 모든 입력이 이전 출력을 가리키므로, 분석가는 UTXO의 사슬을 따라 자금 흐름을 추적할 수 있습니다. 믹싱 서비스 등 여러 기법이 있지만, 이 근본 구조 때문에 코인의 출처와 현재 보유자 사이의 연결을 완전히 끊기는 어렵습니다. 일부 시장 참여자는 추적 가능한 이력이 적은 ‘깨끗한’ 코인을 선호할 수 있기 때문에, 비트코인이 진정으로 대체 가능한지에 대한 논쟁에서 이러한 투명성이 자주 언급됩니다.
  6. 실제로 확인해 보려면 여러 번 지불을 받은 지갑의 코인 컨트롤(또는 ‘UTXO’) 화면을 열어 보세요. 각 출력이 고유한 금액과 트랜잭션 ID와 함께 따로 나열됩니다. 블록 탐색기의 주소 페이지에서도 같은 내용이 받은 출력 목록으로 표시되며, 그중 일부는 사용되었고 일부는 사용되지 않았습니다. 이 개별 출력 목록이 소유권의 진정한 온체인 표현이며, 인터페이스에 표시되는 ‘잔액’은 이 집합을 바탕으로 클라이언트 측에서 계산한 값일 뿐입니다.

핵심 사실

  • 비트코인에는 온체인에 저장된 계정이나 잔액이 없으며, 소유권은 오직 미사용 트랜잭션 출력(UTXO)으로만 이루어집니다.
  • 각 UTXO에는 사토시 단위의 금액과 그것을 사용하기 위해 필요한 조건들을 명시하는 잠금 스크립트가 포함되어 있습니다.
  • 트랜잭션은 UTXO를 통째로 입력으로 소비하고 새로운 UTXO를 출력으로 생성합니다. 소비된 출력은 UTXO 집합에서 빠집니다.
  • 모든 풀노드는 검증에 사용되는, 현재 사용되지 않은 모든 출력의 전체 집합인 ‘체인스테이트(chainstate)’를 유지합니다.
  • 지갑에 표시되는 잔액은 블록체인에 저장된 값이 아니라, 그 지갑의 개인 키로 제어되는 UTXO의 금액을 합산해 로컬에서 계산한 값입니다.
  • 논스와 변경 가능한 잔액을 가진 이더리움의 계정 모델과 달리, 비트코인의 UTXO 모델은 코인을 업데이트되는 대신 교체되는, 이력을 지닌 개별 단위로 다룹니다.

연습 아홉, 여섯, 셋, 하나

9모으기서로 다른 디지털 자산 또는 통화 9가지를 나열하세요. 각각이 계정 기반 잔액 시스템(이더리움 등)을 사용하는지, UTXO 기반 출력 시스템(비트코인 등)을 사용하는지 적으세요.
6묶기9개를 상태 처리 방식에 따라 6개 범주로 분류하세요: 변경 가능한 잔액, 불변 출력, 하이브리드 모델, 중앙화된 원장, 기타.
3추리기6개 그룹을, 프로토콜이 원장 구조로 계정 대신 UTXO를 선택하는 3가지 근본적인 이유로 압축하세요.
1결정화저장된 잔액이 없다는 점이 전통적인 은행 시스템과 비교해 비트코인의 이중 지불 방지 방식을 어떻게 바꾸는지 한 문장으로 설명하세요.

팩트 체크

날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.

인터랙티브 아카데미에서 열기 →

EN PT ES ZH JA RU DE FR MS