Bitcoin

Bitcoin UTXO Model

Bitcoin's Unspent Transaction Output (UTXO) model tracks ownership as a set of discrete unspent outputs rather than account balances — each transaction consumes existing UTXOs as inputs and creates new UTXOs as outputs, with the total input value equalling the total output value plus fees.

Bitcoin and Ethereum have fundamentally different models for tracking who owns what. Ethereum uses an account model (like a bank account — a single balance per address, updated by transactions). Bitcoin uses the UTXO model — Unspent Transaction Output — where ownership is tracked as a collection of discrete "coins" each tied to specific spending conditions. Understanding the UTXO model is essential for understanding Bitcoin's privacy properties, fee dynamics, wallet consolidation, and the mechanics of advanced Bitcoin protocols like CoinJoin and the Lightning Network.

What a UTXO Is

A UTXO is a specific output from a previous transaction that hasn't been spent yet. When you receive 0.5 BTC from Alice, that creates a UTXO in your wallet: "0.5 BTC spendable by whoever can satisfy this locking script (typically: whoever has the private key for address X)." This UTXO is a discrete unit — not a balance, but a specific "coin" with a specific value and a specific spending condition. Your wallet's total "balance" is simply the sum of all UTXOs it controls — which might be one UTXO worth exactly 0.5 BTC, or fifty tiny UTXOs worth 0.01 BTC each, all adding to 0.5 BTC total.

Every Bitcoin transaction consumes one or more existing UTXOs as inputs and creates one or more new UTXOs as outputs. The key constraint: the total value of inputs must equal the total value of outputs plus the transaction fee. Inputs are fully consumed — you can't partially spend a UTXO. If you have a 1 BTC UTXO and want to pay someone 0.3 BTC, your transaction spends the entire 1 BTC input and creates two outputs: 0.3 BTC to the recipient and (approximately) 0.699 BTC back to yourself as "change" (the difference minus the transaction fee, which goes to miners). This creates a new 0.699 BTC UTXO in your wallet.

UTXO Selection and Wallet Management

How your wallet selects which UTXOs to use as inputs for each transaction affects both your privacy and transaction fees. Transaction size (and therefore fee cost) depends on the number of inputs — each additional input adds ~41–68 bytes. A wallet with many small UTXOs (e.g., from receiving many small payments) pays more in fees for equivalent payments because more inputs are required. This is UTXO fragmentation — a practical issue for frequent Lightning channel settlement, active mining payouts, or exchange withdrawal histories with many small transactions.

UTXO consolidation is the practice of periodically sending all your small UTXOs to yourself in a single transaction during low-fee periods — merging many inputs into a single larger UTXO. This reduces future transaction fees but has a privacy cost: the consolidation transaction links all your previously unconnected UTXOs on-chain, revealing that they're controlled by the same wallet. During Ethereum's EIP-1559 equivalent of "low gas" windows — Bitcoin's Sunday morning low-fee periods — consolidation transactions are cheapest.

Privacy Implications

The UTXO model has significant privacy implications due to the on-chain linkability of inputs and outputs. When a transaction has multiple inputs, blockchain analysis heuristically assumes all those inputs are controlled by the same wallet (the "common input ownership" heuristic). When a transaction has one output to a payment recipient and one change output back to the sender, analysis can often identify which is the "real" payment and which is change by amount, round number patterns, and subsequent transaction history.

CoinJoin addresses this directly. CoinJoin transactions combine inputs from multiple unrelated users into a single transaction with multiple equal-value outputs — breaking the common input ownership heuristic and obscuring which input corresponds to which output. Tools like Wasabi Wallet (implementing WabiSabi CoinJoin) and JoinMarket automate CoinJoin for privacy-conscious Bitcoin users. PayJoin (a two-party CoinJoin between sender and recipient) breaks change identification heuristics while looking like a normal transaction.

UTXO vs Account Model Trade-offs

The UTXO model's advantages over Ethereum's account model: better parallelisation potential (non-overlapping UTXOs can be verified in parallel); explicit spending conditions encoded per-UTXO enabling complex multi-party protocols; and better privacy by default (no persistent address balance that updates on every transaction — wallet privacy depends on address reuse behaviour, not the model itself). Disadvantages: higher complexity for wallet developers (UTXO selection algorithms are non-trivial), higher fee variance (input count varies by UTXO history), and difficulty expressing stateful applications (which is why Bitcoin Script is limited compared to Ethereum's EVM — UTXO state is entirely captured in the spending condition, with no persistent on-chain state beyond the UTXO set).

The UTXO set — all currently unspent transaction outputs in existence — is the minimal state a full Bitcoin node must maintain to validate new transactions. As of 2026, the UTXO set is approximately 5–6 GB, much smaller than Ethereum's full state, contributing to Bitcoin node accessibility.