What Is the UTXO Model?

From The Weekly BOLT ยท

Last three weeks we covered Transaction Fees (Week 13), Replace-by-Fee (Week 14), and Child-Pays-for-Parent (Week 15). This week, let's go a level deeper into how Bitcoin actually tracks balances under the hood: the UTXO model.

The Basics: When you check your bank account, the bank has a single number representing your balance, and every transaction adjusts that number. Bitcoin doesn't work that way. Bitcoin tracks balances as a set of "unspent transaction outputs," or UTXOs. Each UTXO is like an individual envelope of coins that was sent to you in a specific past transaction. Your "Bitcoin balance" is actually the sum of all the unspent envelopes you currently control, not a single number stored on the blockchain. When you send Bitcoin, your wallet picks one or more of those envelopes, hands them to the network, and creates new envelopes for the recipient (and usually a "change" envelope back to you for any leftover amount).

Why It Matters: The UTXO model is one of Bitcoin's most underrated design choices. It enables three important properties. First, parallel verification: nodes can validate UTXO transactions in parallel because each UTXO is independent, which is part of why Bitcoin scales as well as it does. Second, privacy through change addresses: well-designed wallets generate fresh receiving addresses for change, which makes chain analysis harder than it would be in an account-based model like Ethereum's. Third, deterministic settlement: a UTXO either exists or it doesn't, with no possibility of double-spending if the network has reached consensus. There's no "balance reconciliation" needed.

The trade-off: UTXOs make some operations clunkier. You can't send "exactly 0.1 BTC" if your envelopes don't add up to that amount; your wallet has to use a slightly larger envelope and create change. This is also why Bitcoin transactions sometimes have surprisingly large byte sizes, the wallet has to reference all the input envelopes it's spending, and each reference takes space. CPFP and RBF (the techniques we covered the past two weeks) work specifically because UTXOs are individually addressable; you can target a specific stuck transaction's output and create a child that spends from it.