﻿---
title: "UTXO 모델"
description: "비트코인이 미사용 트랜잭션 출력으로 지출 가능한 가치를 나타내고, 지출을 검증하고, 거스름돈을 만들고, 거래 공간을 가격화하는 방식과 코인 선택·프라이버시의 절충을 설명합니다."
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# UTXO 모델

> 교육 목적의 정보일 뿐 투자 조언이 아닙니다. 투자로 손실이 발생할 수 있습니다.

<a id="answer"></a>

## 한눈에 보는 답

미사용 트랜잭션 출력(UTXO) 모델은 지출 가능한 가치를 계정에 기록된 하나의 잔액이 아니라 서로 구분된 출력으로 표현합니다. 비트코인에서 일반 트랜잭션 입력은 트랜잭션 식별자와 출력 인덱스로 이전 출력을 가리킵니다. 그 출력에는 금액과 잠금 스크립트가 기록됩니다. 지갑에 표시되는 잔액은 한 주소 안의 잔액 필드가 아니라 지갑이 지출할 수 있는 출력의 합계로 계산한 값입니다.

출력은 전액이 한 번에 지출됩니다. 선택한 입력이 결제액과 수수료의 합보다 크면 트랜잭션이 거스름돈 출력을 명시적으로 만들어야 하며, 프로토콜은 거스름돈을 자동 반환하지 않습니다. 한 트랜잭션은 여러 기존 UTXO를 소비하고, 저마다 금액과 지출 조건이 다른 여러 새 UTXO를 만들 수 있습니다.

<a id="mechanism"></a>

## 작동 방식

일반적인 비coinbase 트랜잭션이 유효하려면 참조하는 모든 출력이 존재하고 미사용 상태여야 하며, 각 입력이 참조 출력의 잠금 조건을 충족하고, 총 출력 가치가 총 입력 가치를 넘지 않아야 합니다. 차액은 트랜잭션 수수료로 사용할 수 있습니다.

`fee = sum(inputs) - sum(outputs)`

노드는 블록을 받아들일 때 현재 UTXO 집합에서 소비된 출력을 제거하고 새로 생성된 출력을 추가합니다. 이 상태를 검증하고 재구성하려면 블록 이력이 계속 필요합니다. 체인 재구성으로 최근 블록이 교체되면 체인 끝부분의 출력은 미확인 상태로 돌아가거나 채택된 이력에서 사라질 수 있습니다.

채택된 하나의 체인 이력에서 특정 출력은 한 번만 소비할 수 있습니다. 충돌하는 미확인 트랜잭션이 같은 출력을 쓰려고 경쟁할 수 있지만, mempool 수용과 교체는 노드 정책이며 온체인 이중 지출을 유효하게 만드는 규칙이 아닙니다. BIP 125는 선택적 교체 신호와 정책을 정의하므로 미확인 트랜잭션 수령은 최종 결제가 아닙니다.

비트코인 블록 공간의 가격은 송금액이 아니라 주로 트랜잭션 무게와 수수료율로 정해집니다. BIP 141은 `virtual size = ceil(weight / 4)` 로 정의합니다. 입력은 일반적으로 출력보다 더 많은 트랜잭션 데이터를 추가하므로, 같은 수수료율에서 작은 UTXO 여러 개를 지출하면 큰 UTXO 하나를 지출할 때보다 비쌀 수 있습니다. 정확한 크기는 사용한 스크립트와 witness 유형에 따라 달라집니다.

서로 다른 UTXO를 지출하는 트랜잭션은 입력 의존성이 분리되어 있어 검증과 트랜잭션 구성을 병렬화하기 쉽습니다. 그러나 모든 구현이나 애플리케이션에서 자동으로 독립적인 것은 아닙니다. 같은 출력을 선택한 두 트랜잭션은 충돌하고, 하위 트랜잭션은 미확인 상위 트랜잭션에 의존합니다. 지갑의 코인 선택은 이러한 의존성을 조정해야 합니다.

UTXO는 익명성을 제공하지 않습니다. 입력 결합은 공동 통제를 시사할 수 있고, 거스름돈 탐지 패턴이나 주소 재사용도 활동을 연결할 수 있습니다. 이는 암호학적 증명이 아닌 휴리스틱이지만, 통합으로 인해 따로 지출했을 때 드러나지 않을 관계가 노출될 수 있습니다.

계정 모델과 비교하면 UTXO 모델은 지출 가능한 각 객체와 소비 경로를 명시적으로 보여 줍니다. 계정 시스템은 보통 잔액과 nonce 같은 공유 계정 상태를 갱신합니다. 어느 모델도 보편적으로 우월하지 않으며, 상태 표현, 프로그래밍 가능성, 동시성, 지갑 설계에서 서로 다른 절충을 택합니다.

<a id="example"></a>

## 계산 예시

Alice는 `0.08 BTC`, `0.12 BTC`, `0.50 BTC` UTXO를 관리합니다. Bob에게 `0.15 BTC` 를 지급하기 위해 지갑은 처음 두 입력, 합계 `0.20 BTC` 를 선택하고 수수료를 `0.0002 BTC` 로 추정합니다. 다음 출력을 만듭니다.

- Bob: `0.15 BTC`
- Alice의 거스름돈: `0.0498 BTC`

계산은 `0.20 - 0.15 - 0.0002 = 0.0498 BTC` 입니다. 확인되면 `0.08 BTC` 와 `0.12 BTC` 출력은 소비되고, Bob의 출력과 Alice의 거스름돈은 새 UTXO가 됩니다. `0.50 BTC` 출력은 그대로 남습니다.

트랜잭션이 Bob의 `0.15 BTC` 출력만 만들었다면 빠진 `0.05 BTC` 는 자동 환불이 아니라 수수료가 됩니다. 지갑은 다른 입력 집합을 선택하거나, 여러 지급을 일괄 처리하거나, 수수료율이 낮을 때 작은 출력을 통합할 수도 있습니다. 이 선택은 현재와 미래의 수수료, 확인 신뢰성, 프라이버시를 절충합니다.

<a id="risks"></a>

## 위험과 통제

- **수수료 위험:** 조각난 UTXO는 입력 무게를 늘립니다. 브로드캐스트 전에 서명된 트랜잭션과 수수료율을 추정해야 합니다.
- **프라이버시 위험:** 입력 통합과 식별하기 쉬운 거스름돈은 주소를 연결할 수 있습니다. 새 주소라고 해서 연결 불가능성이 보장되지는 않습니다.
- **확인 위험:** 충돌 트랜잭션, 교체 정책, 체인 재구성 때문에 미확인 수령은 되돌릴 수 있습니다.
- **복구 위험:** 체인은 UTXO를 저장하고 지갑은 이를 찾고 지출하는 데 필요한 키와 탐색 데이터를 저장하거나 파생합니다. 필요한 모든 복구 요소를 백업해야 합니다.

<a id="misconceptions"></a>

## 흔한 오해

### 주소는 영구 계정이다

주소는 지출 조건을 인코딩하거나 표현합니다. 지갑은 여러 수신 주소와 거스름돈 주소로 전송된 출력을 통제할 수 있으므로 한 주소가 지갑의 전체 상태는 아닙니다.

### 수수료는 결제액에 비례한다

수수료는 주로 트랜잭션 무게와 선택한 수수료율에 좌우됩니다. 입력이 적은 고액 결제가 많은 입력으로 구성한 소액 결제보다 작고 저렴할 수 있습니다.

### 프로토콜이 거스름돈을 자동 생성한다

거스름돈은 지출자 지갑이 의도적으로 구성한 일반 출력입니다. 출력에 배정하지 않은 입력 가치는 채굴자가 수수료로 가져갈 수 있습니다.

### 미확인은 결제 완료를 뜻한다

mempool은 노드의 잠정적 관점이지 합의 원장이 아닙니다. 수용, 교체, 퇴출 정책은 다를 수 있으며 확인 위험은 시간이 지나며 줄어들 뿐 브로드캐스트 순간 사라지지 않습니다.

<a id="related"></a>

## 관련 주제

- [계정 기반 모델](/ko/crypto/account-based-model/)
- [비트코인](/ko/crypto/bitcoin/)
- [블록 확인](/ko/crypto/block-confirmation/)
- [메모리풀](/ko/crypto/mempool/)
- [더스트 공격](/ko/crypto/dust-attack/)

<a id="sources"></a>

## 출처

- [Bitcoin: A Peer-to-Peer Electronic Cash System](https://bitcoincore.org/bitcoin.pdf) - Satoshi Nakamoto (열람일: 2026-08-22)
- [Transactions — Bitcoin Developer Guide](https://developer.bitcoin.org/devguide/transactions.html) - Bitcoin.org (열람일: 2026-08-22)
- [Block Chain — Bitcoin Developer Guide](https://developer.bitcoin.org/devguide/block_chain.html) - Bitcoin.org (열람일: 2026-08-22)
- [BIP 141: Segregated Witness (Consensus layer)](https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki) - Bitcoin Improvement Proposals (열람일: 2026-08-22)
- [BIP 125: Opt-in Full Replace-by-Fee Signaling](https://github.com/bitcoin/bips/blob/master/bip-0125.mediawiki) - Bitcoin Improvement Proposals (열람일: 2026-08-22)

Source: https://wiki.fcontext.com/ko/crypto/utxo-model/index.mdx
