Overview
A UTXO (Unspent Transaction Output) is the fundamental building block of Bitcoin's accounting system. Unlike traditional banking systems that track account balances, Bitcoin tracks discrete chunks of value — each UTXO represents a specific amount of bitcoin locked by a spending condition. To send bitcoin, a wallet selects one or more UTXOs as inputs, unlocks them by satisfying their conditions, and creates new UTXOs as outputs.
The UTXO Model
Account-Based Model (banks): UTXO Model (Bitcoin):
┌─────────────────────┐ ┌─────────────────────┐
│ Alice: $500 │ │ UTXO 1: 0.3 BTC → Alice │
│ Bob: $300 │ │ UTXO 2: 0.15 BTC → Alice│
│ │ │ UTXO 3: 0.5 BTC → Bob │
│ (single balance) │ │ (discrete coins) │
└─────────────────────┘ └─────────────────────┘
Alice's balance = sum of her UTXOs = 0.45 BTC
UTXO Lifecycle
- Creation: A UTXO is created as an output of a transaction, locking a specific amount of bitcoin to a script (e.g., requiring Alice's signature).
- Existence: The UTXO sits in the UTXO set, available to be spent.
- Spending: When Alice creates a new transaction, she references the UTXO as an input and provides the data (signature, etc.) to satisfy its spending condition.
- Destruction: Once spent, the UTXO is removed from the UTXO set. It no longer exists; new UTXOs created by the spending transaction take its place.
A UTXO can only be spent entirely — there is no way to spend a partial UTXO. If Alice has a 0.3 BTC UTXO and wants to send 0.1 BTC, her transaction creates two outputs: 0.1 BTC to the recipient and approximately 0.2 BTC back to herself as change (minus the transaction fee).
Why the UTXO Model Matters
- Parallelism: UTXOs can be validated independently, enabling efficient parallel verification.
- Privacy: Each UTXO can use a different address, making it harder to link transactions.
- Deterministic verification: Every full node can independently verify that no UTXO is spent twice.
- No global state: There are no "account balances" to corrupt — the UTXO set is the complete state.
Edge Cases
- Dust: Very small UTXOs may cost more in fees to spend than they are worth, effectively making them unspendable.
- UTXO bloat: Creating many small UTXOs increases the size of the UTXO set that all nodes must store in memory, which has costs for the network.
- Coin selection: Wallets must choose which UTXOs to spend, balancing fee efficiency, privacy, and UTXO management.