01 / The model

Coins are outputs

Forget account balances. Bitcoin doesn't have them. What it has is a global set of — discrete, indivisible lumps of value, each one created by a specific transaction and each spendable exactly once. Everything about tracing follows from this one design decision.

Anatomy of a transaction

A transaction is a bundle of inputs and outputs, identified by its . Each input () points backwards at exactly one output of an earlier transaction — by that transaction's txid and the output's index — and provides the signature that unlocks it. Each output () carries a value in and a locking , which usually encodes an . Outputs are numbered from zero, so any single coin in existence can be pinned down precisely as txid:vout. That pair is the atomic unit of tracing — and the reason this site is called vout.io.

One transaction · 2 in, 3 out

CONSUMES (vin)prior tx a1b2…:vout 10.80 BTCvin 0prior tx c3d4…:vout 00.45 BTCvin 1TX f9e8…in 1.25 BTCout 1.2497 BTCCREATES (vout)vout 0 → payee0.60 BTCvout 1 → second payee0.40 BTCvout 2 → change (back to sender)0.2497 BTC0.0003 BTC fee → miner (inputs − outputs)

Inputs must be consumed whole. You can't spend half a UTXO any more than you can tear a banknote in half — you hand over the whole thing and take change.

Many in, many out

A transaction can combine any number of inputs and produce any number of outputs, and real transactions use that freedom constantly. A wallet paying one bill might merge five small UTXOs into one input set (a consolidation: many in, few out). An exchange processing withdrawals might pay five hundred customers from two inputs (a batch payout: few in, many out). A thief splitting loot does the reverse.

This is why a naive trace explodes. Follow one stolen output through three transactions that each split into ten outputs and you already have a thousand candidate trails. The structure isn't a chain — it's a branching graph, and the branching is the whole difficulty.

Change and fees

Two bookkeeping details complete the picture. First, : because inputs are spent whole, the excess comes back to the spender as one of the transaction's own outputs — usually at a fresh address the wallet generates silently. In the diagram above, vout 2 is change: same transaction, but the money never left the sender. Telling change apart from genuine payments is one of the core judgment calls in analysis.

Second, fees. The fee is not an output — it's the gap. Whatever input value isn't claimed by an output is collected by the miner of the block, via the block's . Input sums always cover output sums; the difference is the price of settlement.

The lineage graph

Put it together and every satoshi has an unbroken, public ancestry: minted in some coinbase, then carried from output to input to output, transaction after transaction, until it rests in whatever UTXO holds it today. Each hop is recorded forever after . Nothing is anonymous in this graph — addresses are pseudonyms, but the flows between them are cryptographic fact, verifiable by anyone with a copy of the chain.

That fact is the foundation the next chapter builds on: if the plumbing is public, tracing becomes a matter of reading it carefully — and knowing exactly where reading turns into guessing.

See it on a real transaction — yours, if you have one

Everything above is live on the public chain right now. Paste any txid — the theft transaction from your own case, if that's why you're here — and see its actual inputs, outputs, and fee laid out exactly as described.

Try it · anatomy of your transaction

Live public chain data via Blockstream Esplora, fetched by your browser — vout.io never sees the txid.

Key takeaways: money lives in UTXOs, identified as txid:vout · inputs consume whole outputs; excess returns as change · transactions are many-to-many, so trails branch · every hop is public and permanent.