← Back to list

How Bitcoin’s UTXO Model Works (And How It Differs from Account-Based Blockchains)

A deep dive into the architecture that makes Bitcoin transactions tick — and why it matters for developers and users alike.

Anshukaushik · 2026-03-09 01:55 · 0 claps · 6.6 min read
#bitcoin #blockchain #cryptocurrency #web3 #utxo
Open on Medium ↗
Wiki topics: CRY · Crypto & Web3 🏛️ · Architecture

How Bitcoin’s UTXO Model Works (And How It Differs from Account-Based Blockchains)

A deep dive into the architecture that makes Bitcoin transactions tick — and why it matters for developers and users alike.

Introduction

When most people think about money, they think in terms of accounts — you have a bank account with a balance, and when you send money, that balance decreases. Ethereum works this way too. But Bitcoin is fundamentally different.

Bitcoin uses a model called UTXO — Unspent Transaction Output. It sounds intimidating, but once you understand it, you’ll realize it’s both elegant and powerful. In this post, we’ll break down exactly how the UTXO model works, trace a real transaction from start to finish, and compare it head-to-head with the account-based model used by Ethereum.

By the end, you’ll understand why this design choice has profound implications for privacy, scalability, and security.

Part 1: What Even Is a UTXO?

Let’s start with a simple analogy.

Imagine you have a physical wallet full of cash. You don’t have one continuously updating “balance” — you have a collection of individual bills: a ₹500 note, two ₹100 notes, a ₹50 note. When you pay for something worth ₹150, you hand over two ₹100 notes and receive ₹50 in change.

Bitcoin works exactly like this — but digitally.

In Bitcoin, your “wallet balance” is not a single number stored somewhere. Instead, it is the sum of all unspent transaction outputs (UTXOs) associated with your address. Each UTXO is like a distinct digital bill that can only be spent once, in its entirety.

Formal Definition

A UTXO is an output from a previous transaction that has not yet been used as an input in any subsequent transaction.

Every UTXO has two key properties:

  • Amount — how many satoshis (the smallest unit of BTC) it holds
  • Locking Script (scriptPubKey) — a condition that must be satisfied to spend it (usually: “prove you own the private key for this address”)

Part 2: Anatomy of a Bitcoin Transaction

Let’s trace a real transaction step by step.

The Setup

Suppose Alice has received Bitcoin in two separate transactions in the past:

  • UTXO #1: 0.5 BTC
  • UTXO #2: 0.3 BTC

Alice wants to send 0.6 BTC to Bob.

Step 1: Selecting Inputs

Alice’s wallet selects which UTXOs to use. Since no single UTXO covers 0.6 BTC, the wallet picks both UTXOs as inputs:

  • Input 1 → UTXO #1 (0.5 BTC)
  • Input 2 → UTXO #2 (0.3 BTC)

Total input = 0.8 BTC

Step 2: Defining Outputs

The transaction creates new UTXOs as outputs:

  • Output 1 → Bob’s address: 0.6 BTC (the payment)
  • Output 2 → Alice’s address: 0.195 BTC (change back to herself)
  • Implicit → Miner fee: 0.005 BTC (inputs − outputs = fee)

Step 3: Signing

Alice signs each input with her private key, proving she is authorized to spend those UTXOs. This signature is part of the unlocking script (scriptSig).

Step 4: Broadcasting & Validation

The transaction is broadcast to the Bitcoin network. Every full node independently validates:

  1. Do the referenced UTXOs exist in the UTXO set?
  2. Are the UTXOs unspent?
  3. Do the signatures satisfy the locking scripts?
  4. Do inputs ≥ outputs (no coins created from thin air)?

If all checks pass, the transaction is valid. Once included in a block:

  • The two old UTXOs (Alice’s 0.5 BTC and 0.3 BTC) are destroyed (marked as spent)
  • Two new UTXOs are created (Bob’s 0.6 BTC and Alice’s 0.195 BTC change)

Part 3: The Global UTXO Set

Every full Bitcoin node maintains a database called the UTXO set — a complete record of every unspent output currently in existence across the entire Bitcoin blockchain.

As of 2024, the Bitcoin UTXO set contains roughly 100–150 million UTXOs and is around 5–7 GB in size.

This is critically important: to validate a new transaction, a node only needs to check the UTXO set, not replay the entire blockchain history. This makes validation fast and efficient.

Key Properties of the UTXO Set:

  • Every UTXO is unique — identified by the transaction hash (txid) and output index (vout)
  • UTXOs are atomic — you must spend a UTXO in full; you cannot partially spend it
  • No double-spending — once a UTXO is spent, it is removed from the set and can never be used again

Part 4: The Account-Based Model (Ethereum)

Now let’s look at how Ethereum handles things differently.

How Ethereum Tracks State

Ethereum maintains a global state — a giant table that maps every address to its current balance (and more, for smart contracts). Think of it like a spreadsheet with two columns: Address → Balance.

When you send ETH:

  1. The network checks your account’s current balance
  2. Subtracts the amount sent + gas fee
  3. Adds the amount to the recipient’s balance

That’s it. Two rows in the spreadsheet get updated. Simple and intuitive.

Ethereum’s State Trie

Under the hood, Ethereum stores this state in a Merkle Patricia Trie — a data structure that allows efficient updates and cryptographic proof of the current state. Each block’s header contains a hash of the entire state trie, committing to the full global state at that point in time.

Part 5: UTXO vs. Account Model — A Direct Comparison

FeatureBitcoin (UTXO)Ethereum (Account)State modelSet of unspent coinsGlobal address → balance mapIntuitive analogyPhysical cash / billsBank accountTransaction structureInputs + OutputsFrom + To + ValueParallelismHigh (independent UTXOs)Low (sequential nonce)PrivacyBetter (new addresses per tx)Weaker (one reusable address)Smart contractsLimited (Bitcoin Script)Powerful (EVM / Solidity)Double-spend preventionUTXO set lookupNonce + balance checkState sizeUTXO set (~5–7 GB)Full state trie (hundreds of GB)SimplicityMore complex for developersMore intuitive

Part 6: Privacy Implications

This is where the UTXO model really shines.

Why UTXO Is Better for Privacy

Bitcoin best practices encourage using a new address for every transaction. Since your “balance” is a collection of UTXOs across potentially many addresses, an outside observer cannot easily tell how much bitcoin you hold just by looking at one address.

Moreover, coin selection (which UTXOs you choose as inputs) affects your on-chain privacy footprint. Tools like:

  • CoinJoin — multiple users combine their UTXOs into one transaction, obscuring who paid whom
  • PayJoin — the receiver also contributes a UTXO as input, breaking the assumption that all inputs belong to the sender
  • Coin Control — manually choosing which UTXOs to spend to avoid linking addresses

…all leverage the UTXO model’s structure to enhance privacy.

Ethereum’s Privacy Problem

In Ethereum, your address is permanent and reused. Every transaction to or from your address is trivially linked. The entire history of your account is public and permanently associated with a single identifier. Privacy tools exist (like Tornado Cash, now sanctioned), but they are layered on top of a fundamentally transparent account model.

Part 7: Scalability and Parallelism

One underappreciated advantage of UTXOs is parallelism.

Because each UTXO is independent, transactions that spend different UTXOs can be validated in parallel — they don’t share state. This makes it easier to build systems that process multiple transactions simultaneously.

In contrast, Ethereum’s account model requires a nonce — a sequential counter per address that prevents replay attacks. This means transactions from the same address must be processed in order. If you send two transactions and the second one gets included first, the first one becomes invalid (wrong nonce). This creates ordering dependencies that limit parallelism.

Part 8: Script and Programmability

Each UTXO has a locking script (scriptPubKey) that defines the conditions under which it can be spent. Bitcoin’s scripting language, simply called Bitcoin Script, is intentionally limited — it is not Turing-complete. This is by design: simplicity reduces the attack surface.

Common locking script types include:

  • P2PKH (Pay to Public Key Hash) — the classic “pay to an address” transaction
  • P2SH (Pay to Script Hash) — allows more complex redemption conditions
  • P2WPKH / P2WSH — SegWit versions, storing the witness data separately
  • P2TR (Pay to Taproot) — the latest upgrade, enabling more efficient and private scripts via Schnorr signatures and Merklized Abstract Syntax Trees (MAST)

With Taproot (activated in November 2021), complex multi-signature or time-locked conditions look identical to simple payments on-chain — a huge win for both privacy and efficiency.

Part 9: Coinbase Transactions — Where UTXOs Are Born

Every Bitcoin block begins with a special transaction called the coinbase transaction. Unlike regular transactions, coinbase transactions have no inputs — they create new UTXOs from nothing (well, from the protocol’s issuance rules).

The coinbase transaction rewards the miner with:

  • Block subsidy — new BTC issued per block (currently 3.125 BTC after the April 2024 halving)
  • Transaction fees — sum of all fees from transactions in the block

This is the only mechanism by which new Bitcoin enters circulation. Every single satoshi in existence can be traced back to a coinbase transaction.

Part 10: Common Misconceptions

“My wallet stores my Bitcoin”

❌ False. Your wallet stores your private keys. The Bitcoin itself exists on the blockchain as UTXOs. Your wallet just knows how to find and spend UTXOs associated with your keys.

“Sending Bitcoin updates my balance”

❌ False. Sending Bitcoin destroys old UTXOs and creates new ones. There is no “balance” field anywhere that gets decremented.

“You can send any amount from your address”

❌ Not exactly. You must work with whole UTXOs as inputs. If you want to send 0.1 BTC but your only UTXO is 0.5 BTC, the transaction must also create a change output back to yourself. If you forget the change output, miners collect it as fees — an irreversible mistake.

Conclusion

The UTXO model is one of Bitcoin’s most elegant design decisions. By representing wealth as a collection of discrete, unspent coins rather than a balance on an account, Bitcoin achieves:

  • Straightforward double-spend prevention via the UTXO set
  • Better privacy through address reuse avoidance and coin selection strategies
  • Parallel validation of independent transactions
  • Clear provenance — every satoshi traces back to a coinbase transaction

The account model (used by Ethereum) wins on simplicity and developer ergonomics — it’s easier to reason about smart contract state when you have a persistent, addressable account. That’s why Ethereum’s model is dominant in the DeFi and NFT space.

But for a system designed to be digital cash — where trustlessness, auditability, and resistance to manipulation are paramount — the UTXO model is a remarkably sound foundation.

Understanding UTXOs isn’t just academic. It’s foundational to building on Bitcoin, contributing to open-source projects like Bitcoin Core or BDK (Bitcoin Dev Kit), and reasoning clearly about the protocol’s security and privacy properties.


메타데이터
post_id
a9b1eaffe2ca
slug
how-bitcoins-utxo-model-works-and-how-it-differs-from-account-based-blockchains-a9b1eaffe2ca
url
https://medium.com/@anshukaushik4700/how-bitcoins-utxo-model-works-and-how-it-differs-from-account-based-blockchains-a9b1eaffe2ca
canonical_url
https://medium.com/@anshukaushik4700/how-bitcoins-utxo-model-works-and-how-it-differs-from-account-based-blockchains-a9b1eaffe2ca
author_url
https://medium.com/@anshukaushik4700
status
ok
fetched_at
2026-06-21 21:05:38