UTXO vs Account Based: The Architecture Choice Under Every Platform
UTXO vs account based architecture decides your throughput ceiling, privacy model and admin burden. Three families, not two. Read the comparison.
Niels van den Bergh
CEO
October 31, 2026

Introduction
A buyer comparing data infrastructure platforms will ask about consensus, permissioning, governance and integration effort. The layer underneath all four rarely comes up: how the platform represents ownership and records a transaction. That is the transaction model, and it sets the ceiling on everything above it.
UTXO vs account based decides how many transactions you can validate at once, what a counterparty can see without asking, and how much bookkeeping every participant carries. Three families are in commercial use, not two. They differ in how they model transactions and in what a counterparty needs in order to verify one. The difference shows up as throughput limits, privacy defaults and operational overhead long before a deployment reaches full scale.
The other steps in a platform comparison, consensus and permissioning among them, are covered in the broader enterprise platform evaluation.
How UTXO works, and why the banknote metaphor is accurate
Think of a physical wallet holding individual banknotes. Each note has a fixed denomination, belongs to one owner at any given moment, and can be spent exactly once. UTXO (Unspent Transaction Output) works much the same way. Every transaction produces one or more discrete outputs. Each output is unique, cryptographically bound to its recipient, and valid until spent. Validation reduces to a single answerable question: has this specific output already been spent? Once the transaction is confirmed the answer is yes or no, with no coordination required with other validators handling unrelated transactions.
No running balance is stored anywhere in the model. The balance you see in a wallet interface is software arithmetic, not a field on the ledger. You own what you hold, and the ledger holds the outputs themselves. Bitcoin, the original implementation, has worked this way since its first block. Every node can verify any transaction independently, without coordinating against a shared global state, because each transaction carries its own proof.
Where the account model wins
The account model, popularised by Ethereum from 2015, works the way a bank account works. One address, one balance, updated incrementally by every transaction that touches it. The ledger stores state: current balances, contract variables, the live output of all prior computation. That stored state is precisely what enables rich smart contract interaction. A contract can read balances, update counters and enforce conditions across multiple parties inside a single atomic operation, which makes it the more natural model for complex application logic.
If your project's primary value lies in sophisticated on-chain logic (a multi-party settlement engine, a programmable custody arrangement, a contract with branching payoff conditions), the account model is often the right choice. Developer tooling for account-based, EVM-compatible networks is more mature than UTXO tooling in ways that matter to a hiring plan: testing frameworks, formal verification tools, auditing services and the pool of engineers who already know the paradigm are all substantially larger. Developers reach productive output faster, and that carries weight when you are building and maintaining a team over years.
State is also what makes the account model feel natural to most software engineers. Programming languages, databases and most distributed systems assume mutable state as a baseline. The account model maps onto those assumptions without friction, which lowers the conceptual load of building on top of it.
UTXO model vs account model, and the third family in between
The binary framing obscures the distinctions that matter most when you compare vendors side by side.
Account-based, including the EVM family
Ethereum mainnet, Hyperledger Besu and Polygon all sit in the first family, though they differ substantially in consensus mechanism, permissioning model and operating assumptions. Permissioned Besu, for instance, removes public congestion and gas-price volatility by restricting who can submit transactions. What it cannot remove is the sequential dependency the account model imposes at the structural level. Because state is shared, transactions that touch that state must be ordered against each other, and that ordering is a bottleneck that lives in the model, not in the hardware.
Hyperledger Fabric sits at the edge of this family. It models state as a key-value world state and catches conflicts through read-write sets in an execute-order-validate flow, with private data collections for confidentiality between subsets of members. The mechanics differ from the EVM, but the constraint is shared: transactions that touch the same state contend for ordering.
In the EVM-compatible members of this family you gain the full EVM ecosystem and a large developer community. Across all of its members you accept a throughput ceiling that lives in the model itself.
Transaction independence with a notary
The second family uses a UTXO-style state model and settles uniqueness through a notary rather than through global consensus. R3 Corda is the reference implementation. Each transaction in Corda is independent of the others, which enables parallel processing and limits data visibility to the parties directly involved, a real privacy benefit in financial-infrastructure contexts where counterparties should not see each other's positions. The notary service, a trusted entity or cluster, records which outputs have been consumed and certifies that none appear twice. For regulated financial institutions that already run trusted clearing infrastructure of their own, that trade-off is frequently acceptable.
Parallel processing and need-to-know visibility come with a notary in the verification path, which somebody has to trust and operate.
UTXO with SPV verification
The third family combines UTXO independence with SPV verification (Simplified Payment Verification, a cryptographic method that lets a counterparty confirm a transaction against block headers without running a full node, and without having to take the sender's word for it). This is the architecture we build on at mintBlue, where the product is cross-organisational data sharing and not a chain. We build against the UTXO model rather than against the specifics of one chain, because every chain carries its own trade-offs in fee behaviour, block capacity, tooling and the composition of the parties securing it. Transactions are independent, so many of them validate at the same time. That property comes from the model itself, not from an optimisation layer on top.
A counterparty verifies the cryptographic proof directly, without holding a full copy of the ledger. Relative to the account-based family you give up the EVM contract ecosystem and the larger developer community around it. Most of that cost lands on whoever builds the platform layer, not on the team integrating with it, because integration happens through an SDK and a REST interface instead of hand-written transaction scripts.
The second price is less often stated. SPV does not remove trust so much as relocate it: instead of a named intermediary who certifies on your behalf, you rely on an economic assumption, that the parties securing the header chain are better off extending it honestly than attacking it.
Whether that assumption holds is an economic question about a given ledger at a given time, and it is a fair question to put to anyone who builds on one. Our answer is to keep it from becoming a single point of failure. We build against the UTXO model rather than against one chain's specifics, and we provision so that the records survive the chain: each organisation holds its own copy of every record it writes, written once and kept under its own control, with the proof stored alongside the record rather than fetched from the network at verification time. An entitled party can therefore check a record against the proof and the headers that came with it, without depending on the original ledger still being there to answer queries, and new records can be anchored wherever the workload is best served. The records stay verifiable and stay yours, which is what keeps a chain-level disruption from becoming a records-level one.
You gain parallel validation and verification that rests on cryptographic proof rather than on a party. You accept a smaller developer ecosystem, and an economic assumption about the parties securing the ledger.
Choosing between the three families is largely a question of which constraint you are willing to internalise: a sequential throughput ceiling, a dependency on a trusted intermediary, or a less familiar developer ecosystem alongside an economic assumption about the parties securing the ledger. None of the three is unconditionally superior. If a vendor tells you their model has no trade-off, ask which of the three they think they escaped.
| Property | Account-based, including the EVM family | Transaction independence with a notary | UTXO with SPV verification |
|---|---|---|---|
| Examples | Ethereum mainnet, Hyperledger Besu, Polygon; Hyperledger Fabric at the edge of the family, with a key-value world state rather than accounts | R3 Corda | Public UTXO ledgers verified by SPV proof (the family mintBlue builds on) |
| Validation behaviour | Transactions touching the same state contend for ordering or fail validation on conflict | Independent transactions, uniqueness certified by a notary | Independent transactions validate side by side |
| Privacy default | Shared state carries a visible history by default; limiting that requires a separate private-data mechanism and the reconciliation surface it brings | Visible to the parties involved | Individual outputs are visible on a public ledger, but no aggregate is stored and each output can be bound to a fresh key, so a position exists only when someone links the outputs off-chain; confidentiality comes from what you choose to write |
| Verification depends on | A view of shared state | A notary you trust and someone operates | Cryptographic proof against the header chain |
| Main strength | Richest contract ecosystem, deepest tooling and hiring pool | Need-to-know visibility with familiar clearing-style governance | Parallel validation, and verification without an intermediary |
| Main cost | Throughput ceiling in the model | An intermediary in the verification path | Smaller ecosystem, and an economic assumption about the ledger |
The parallel question of public versus private ledger access sits on a separate axis and is worth examining once the transaction model is settled.
What the model choice means once you are in production

Model your peak: a filing window, a batch settlement run, a high-frequency sensor or document feed. That is where the architectural constraint becomes concrete. Public account-based networks hit their ceiling on contended state, and permissioned deployments raise the headline number by removing congestion and tuning consensus without removing the serialisation underneath. Transactions that touch the same state have to be ordered against each other, so engineering effort moves that ceiling rather than removing it. Adding processors does not help on that specific path.
Account-based platforms have two answers to this, and each one carries a price. Optimistic parallel execution runs transactions side by side and re-runs the conflicting ones in sequence, so the gain tracks how independent your workload already is. Rollups move ordering off the base layer into a sequencer, which puts a trusted intermediary in the ordering path.
UTXO-based systems validate independent transactions across many processors at the same time. A ceiling still exists (network propagation, storage throughput), but the transaction model itself does not impose it.
Privacy follows a different logic in each family. In the account model one address accumulates one visible history, so anyone who can reach the ledger and knows the address can read the balance and the transaction history behind it. In a permissioned deployment that means everyone inside the permissioned network, unless the deployment adds a separate private-transaction layer, which restores confidentiality at the cost of extra coordination and a reconciliation surface of its own. In a UTXO model each output stands on its own, and on a public ledger each of those outputs is visible. The ledger stores no aggregate, and each output can be bound to a fresh key, so linking outputs into a position takes information the ledger does not hand you. Confidentiality comes from what you choose to write, which makes visibility something the design decides rather than something the model decides for you. That is the same question data provenance work keeps running into: who can see what without your involvement, and whether the architecture decides that for you.
Administrative load differs in a way operational teams notice over time. The account model requires every validating participant to maintain the current global state and keep it consistent across nodes. That work never stops. UTXO validation checks one output against the unspent-output set. That set tracks what is unspent, so it does not swell with total history, and the check itself stays a single membership test.
UTXO carries a real cost on the interface side. People think in accounts and running balances, not in discrete unspent outputs, so the translation from outputs to the balances and views they expect has to be built once in the platform layer. That is real engineering cost, and it lands there rather than on the integrating team or the end user. Stateful application logic (anything that accumulates running totals, tracks multi-step workflows, or enforces conditions that depend on prior interactions) is less immediately obvious to implement on a model with no global state. It can be done, and it is done, but it takes deliberate design work instead of an obvious natural fit.
The evidence, and what each number is worth
We ran a deliberate stress test in March 2023: 50.53 million transactions in 24 hours on a public ledger, at roughly 400 euro in total cost for the whole run. That is a one-off measured benchmark. It tests a ceiling, and it is not continuous operating capacity or a service-level commitment, so read it as evidence of what parallel validation permits at the extreme end. A separate demonstration of our operational data store returned sub-100ms queries over a 24-hour batch. This class of reporting traditionally runs on 24-hour batch cycles, so that matters if your use case is real-time reporting over high-volume history rather than raw write throughput.
The more instructive evidence is the Tax Splitter, a real-time VAT split developed as a proof of concept with the Dutch Tax Authority. It won the Ministry of Finance innovation prize in March 2026. The split uses UTXO parallelism instead of the account model, signs every transaction to eIDAS-interoperable standards rather than with a proprietary credential, and in the proof of concept the tax authority writes its own validation rules. The authority can check the record on its own terms, because verification runs on cryptographic proof rather than on a privileged view of shared state. The same property is what makes an audit trail useful when the thing being audited is an autonomous system and not a person, which is the argument behind knowing your agent.
Why the audit layer has to hold everyone at once
Enterprise adoption at scale needs a transaction model that carries throughput and privacy at the same time. What the model contributes to privacy is that the ledger never stores an aggregate position, so confidentiality of content stays an application-layer decision, made through encryption and need-to-know release. In the account family shared state pushes the other way, and every confidentiality measure has to be added against it. Of the three families above, UTXO with SPV verification is the one that offers both without a named intermediary in the verification path, at the price of the economic assumption set out above. That combination is the precondition for every party in a chain of accountability working in the same audit layer while still keeping what is theirs to themselves.
The alternative is what organisations do instead. When the audit layer cannot hold everyone, it gets split: one set of records for the regulator, another for the auditor, a third for internal management, each reconciled by hand against the others. Several of the largest financial frauds of the past decades lived in that gap. Enron kept obligations in vehicles whose real terms only insiders could see, so no outside party could set them next to the consolidated statements, and Wirecard reported balances that had no counterpart in any account anyone could inspect. Madoff went further: the bookkeeping operation existed only to produce statements that matched no trade. None of the three was caught by better reporting, because reporting was the thing being manufactured. Each survived as long as it did because the records only one party held could not be checked against anyone else's. Enron and Wirecard broke when a record was finally set next to one it could not be reconciled with. Madoff held until redemption requests arrived that no set of books could satisfy, years after an outside analyst had done the comparison and been ignored.
A shared audit layer does not make an entry true, and it only covers what participants are obliged to write to it, so scope stays a governance decision rather than an architectural one. What it does remove is the gap between records that do exist and cannot be checked against each other. It makes an entry single, attributable and checkable by everyone entitled to look, which closes the reconciliation gap these cases hid in rather than policing it. Records can be written once, cryptographically bound to who wrote them, and verified by any party entitled to check, without any of them being handed the underlying data. Getting there requires privacy and scale in the same architecture, since an audit layer that only some participants can afford to use, or that forces them to disclose more than they are willing to, splits again in practice. That is the reason the transaction model is worth this much attention, and the reason we are as specific as we are about which one we build on.
The question to put to every vendor you evaluate
The transaction model determines what a platform can do at volume and what it cannot. It sets the throughput ceiling, shapes the default privacy behaviour (what is visible to whom, without anyone deciding to make it so), and settles whether counterparty verification depends on a trusted intermediary or can proceed independently through cryptographic proof. Those three properties are fixed on the day the model is chosen.
Put the model itself on the table. Ask which one the platform uses, and ask what happens to independent transactions at your peak volume: can they be validated side by side, or do they queue behind shared state? Then ask for the architectural reason rather than the benchmark headline, because a number without a mechanism behind it tells you very little. A vendor who cannot answer that clearly has probably not modelled their own ceiling, and that is worth learning before the contract stage, not after it.