Skip to content
Finance Lessons

Ethereum

Accounts vs Bitcoin's UTXO Model

Two ways to track who owns what: Bitcoin's UTXO 'cash and coins' model vs Ethereum's account 'bank balance' model. Externally-owned vs contract accounts, the nonce, and why programmable money prefers accounts.

8 min Updated Jun 3, 2026

Every blockchain has to answer one boringly fundamental question before it can do anything clever: who owns what? There’s no bank vault, no spreadsheet on a company server, no clerk you can phone. The ledger is the answer — and Bitcoin and Ethereum keep their ledgers in two genuinely different shapes.

Bitcoin tracks money the way a pickpocket thinks about it: as a pile of distinct coins you either have or don’t. Ethereum tracks it the way your banking app does: as a single number that goes up and down. Same goal — record ownership — wildly different bookkeeping. By the end of this lesson you’ll know why Ethereum picked the “bank balance” style, and why that choice is exactly what makes smart contracts possible.

Info:

Where this sits

You’ve met UTXO and the account model briefly in crypto-basics, and you’ve seen Ethereum’s basics in the two prior lessons. Here we slow down and pull the two models apart properly. We’ll re-define UTXO from scratch — assume you only half-remember it.

UTXO: Money as Physical Coins

Before you read — take a guess

Guess before reading: in Bitcoin, where is your balance stored?

UTXO stands for Unspent Transaction Output. Think of it as a coin: a chunk of bitcoin, of some specific value, locked to a specific owner, sitting on the chain waiting to be spent. Your wallet is a pocket full of these mismatched coins — maybe a 0.7 BTC coin, a 0.05 BTC coin, a 1.2 BTC coin. There is no tidy “balance” field anywhere. Your balance is simply the sum of every UTXO you can unlock, computed fresh by your wallet.

Spending consumes whole coins

Here’s the part people find weird. You can’t shave a sliver off a coin. To spend, you consume entire UTXOs as inputs and create brand-new UTXOs as outputs. If the coins you feed in are worth more than you’re paying, the leftover comes back to you as a new coin — your change — exactly like handing the cashier a $20 bill for a $13 sandwich and pocketing $7 back.

The old coins are now marked spent and gone forever; the outputs are the new unspent coins. The ledger is just an ever-growing graph of “this output came from those inputs.”

Worked example

Say you want to send 0.5 BTC and the only coin you hold big enough is a 0.7 BTC UTXO. The transaction looks like this:

SideItemAmount
InputYour 0.7 BTC coin (consumed whole)0.7 BTC
OutputTo the recipient0.5 BTC
OutputChange back to you (new coin)0.199 BTC
Miner fee (the gap, claimed by the miner)0.001 BTC

Inputs must equal outputs plus fee: 0.7 = 0.5 + 0.199 + 0.001. The fee isn’t a separate line you set; it’s whatever you don’t hand back to yourself. After this, your old 0.7 coin is dead and you hold a fresh 0.199 coin instead.

Fill in the blanks about how a UTXO spend works.

Pick the right option for each blank, then check.

In Bitcoin you don't store a balance; you hold a set of , each a discrete coin. To pay someone you consume whole coins as and create new . Any leftover value returns to you as a new coin. The miner fee is simply the .

Accounts: Money as a Bank Balance

Ethereum throws all of that out. Instead of a scattered pile of coins, every account has one field: an explicit balance. To send money, the protocol just debits the sender and credits the receiver — two numbers change. That’s it. No coins to consume, no change to mint, no graph of outputs.

The analogy is your bank statement. You don’t own “a $50 dollar-unit and a $20 dollar-unit”; you own a balance of $70 that ticks down to $57 when you spend $13. The single number is your money.

Two ways to track money

UTXO model — Bitcoin

Your walletRecipient

Account model — Ethereum

Balance

Hit Send and watch both sides. On the left (Bitcoin/UTXO) a whole coin leaves and a smaller change coin floats back. On the right (Ethereum/accounts) nothing moves — one balance bar just gets shorter.

Watch the contrast carefully. On the UTXO side, objects move: a coin leaves, change returns. On the account side, no objects exist — there’s a single bar whose height drops. That’s the whole philosophical difference in one animation: Bitcoin moves coins, Ethereum edits a number.

What's the core difference between how the two models record a payment?

Two Kinds of Account

In the account model, “account” isn’t one thing. Ethereum has two flavors, and the distinction matters for everything that follows.

  • Externally-Owned Account (EOA). Controlled by a private key — a human (or a normal wallet) holding a secret. An EOA has a balance and a nonce, but no code. Critically, only an EOA can start a transaction: every action on Ethereum is ultimately kicked off by someone signing with a private key.
  • Contract Account. Controlled by its code, not by any key. It has a balance, persistent storage, and the contract’s bytecode. A contract account can’t initiate anything on its own — it only wakes up and runs when it’s called by a transaction (from an EOA, or from another contract that an EOA ultimately triggered).
PropertyEOAContract account
Controlled byA private keyIts own code
Has code?NoYes
Has storage?No (just balance + nonce)Yes (persistent state)
Can start a transaction?YesNo — only acts when called

Think of an EOA as a person with a pen who can write the first check, and a contract as a vending machine: full of logic and contents, but it never reaches out — it only does something when a coin (a call) drops in.

Match each concept to its defining trait.

Pick a term, then its matching description.

The Nonce: A Counter That Stops Double-Spends & Replays

Every EOA carries a nonce — short for “number used once,” but really just a transaction counter. Your first transaction has nonce 0, your next must be 1, then 2, and so on. The network refuses to process a transaction unless its nonce is exactly the next expected value for that account.

Picture numbered checks in an old paper checkbook. The bank processes check #5 only after #4, and once #5 has cleared, presenting another copy of check #5 does nothing — that number is already used. The nonce does both jobs:

  • Ordering. It forces your transactions into a strict sequence, so a payment and the action that depends on it can’t get reshuffled.
  • Replay protection. A signed Ethereum transaction is just data. If there were no nonce, anyone who saw your valid signed transfer could rebroadcast that exact bytes again and again, draining you on repeat. Because the nonce is baked into what you signed, a resubmitted copy carries an already-used number and is rejected on sight.

Bitcoin gets replay protection for free from its structure: a transaction names specific UTXOs as inputs, and once those coins are spent they no longer exist, so re-submitting the same transaction references coins that are gone — it’s automatically invalid. The account model has no such trick: balances are just numbers, and “send 1 ETH from A to B” stays perfectly valid-looking every time. The nonce is the account model’s manufactured version of that one-time-ness — it’s the explicit counter that makes each signed transaction usable exactly once.

Why Programmable Money Prefers Accounts

So why did Ethereum, built for smart contracts, choose accounts? Because contracts need a home. A contract is a long-lived program: a token contract has to remember every holder’s balance, a lending pool has to track who deposited what. That demands a persistent, addressable place to keep state — a stable address you can call again next week, with storage that survives between calls.

The account model hands every contract exactly that: a fixed address and its own storage slots (think of mappings like “address → balance” living inside the contract). UTXO makes this awkward — there’s no standing “place,” only a stream of fresh outputs created and destroyed with each transaction. Encoding evolving application state into disposable coins is like trying to keep a running diary by writing each entry on a new banknote and spending the old one.

Neither model is strictly better; they trade off:

UTXO strengthsAccount strengths
Parallel validation — independent coins check independentlySimple, natural fit for contracts and persistent state
Better privacy — change coins and new addresses fragment the trailEasy to reason about balances (one number per account)
Simpler per-output validity rulesCompact transactions — no need to gather and reference many coins
No global mutable state to coordinateStable addresses + storage that contracts can rely on

Sort each feature into the model it favors.

Place each item in the right group.

  • Coins can be validated in parallel because they're independent
  • No global mutable state to coordinate across the chain
  • Transactions stay compact — no scrounging for enough coins
  • A contract gets a stable address and persistent storage
  • Your balance is one number that's easy to reason about
  • Stronger privacy via change coins and fresh addresses

The Big Picture

Big picture

Tracking ownership: UTXO vs accounts

  • Tracking ownership
    • UTXO model (Bitcoin)
      • Money = discrete unspent coins
      • No stored balance — sum your UTXOs
      • Spend whole coins, get change back
      • Replay-proof: spent coins vanish
    • Account model (Ethereum)
      • Money = one stored balance per account
      • Payment = debit sender, credit receiver
      • Natural home for contract state
    • EOA vs contract
      • EOA — key-controlled, can start a tx
      • Contract — code-controlled, has storage
      • Contracts only act when called
    • Nonce
      • Per-EOA transaction counter (0, 1, 2…)
      • Orders your transactions
      • Blocks replay of a signed tx
Bitcoin stores discrete coins and sums them; Ethereum stores explicit balances. Accounts split into key-controlled EOAs and code-controlled contracts, and each EOA's nonce orders its transactions and blocks replays.
Question 1 of 60 correct

You spend a single 1.0 BTC UTXO to send 0.4 BTC, with a 0.001 BTC fee. How much change comes back as a new coin?

Check your answer to continue.

Key Takeaways

Success:

What to remember

  • UTXO (Bitcoin) = coins. No stored balance; you hold discrete unspent outputs, spend whole ones as inputs, mint new outputs, and get change back. Your balance is just the sum of your coins.
  • Accounts (Ethereum) = a bank balance. Each account stores one explicit number; a payment simply debits the sender and credits the receiver.
  • Two account types. EOAs are key-controlled and the only thing that can start a transaction. Contract accounts are code-controlled, have storage, and only act when called.
  • The nonce is a per-EOA counter that must increase by one each time — it orders your transactions and stops anyone from replaying a signed one. UTXO gets replay protection for free; accounts need the nonce to manufacture it.
  • Why accounts won for Ethereum: programmable money needs persistent, addressable state, and the account model hands every contract a stable address plus storage — something UTXO’s disposable outputs make awkward.

Next up: now that you know money is a balance that gets debited, we’ll see what it costs to change that balance. The next lesson tackles gas and fees — why every operation on Ethereum has a price, who you’re paying, and how to avoid overpaying.

Mark lesson as complete