Digital information can be copied. That makes digital cash fundamentally difficult. If money is just information, how do you stop the same unit from being spent twice?
This is the double-spending problem.
The hard part is not storing balances. A spreadsheet can store balances. The hard part is establishing one accepted transaction history in a network where participants do not automatically trust one another.
A normal database can maintain consistency if everyone accepts a central administrator. In banking or payment systems, the institution decides what the truth is. If two conflicting claims appear, the institution resolves the conflict.
Bitcoin attempts something more radical:
So Bitcoin is not simply a database. It is a consensus system for an adversarial open network.
The crucial difference is this:
Bitcoin allows transaction messages to propagate freely, but the network converges on one valid history. It does this through:
A useful mental model is:
This distinction matters because valid signatures alone are not enough. If the same coin is signed into two conflicting transactions, the network still needs a rule for choosing which one becomes part of accepted history.
Transactions are grouped into blocks. Each block references the previous block, forming a chain. That chain is not just a storage format. It is the evolving history of accepted state transitions.
Proof of Work makes block production costly. The system then prefers the chain with the most accumulated work.
That means Bitcoin does not try to prevent all conflicting messages from existing. Instead, it lets the network converge on one cost-backed history.
Bitcoin finality is probabilistic, not absolute. A transaction becomes harder to reverse as more blocks are built on top of it.
So finality in Bitcoin means:
This is very different from the intuition many people bring from ordinary database systems. In a typical database, a committed write is treated as final. In Bitcoin, “final enough” depends on how much work has been added after the transaction’s block.
Bitcoin does not primarily work like a bank account with a single mutable balance field. Instead, it uses the UTXO model:
A transaction is best understood as:
This model is elegant for validation because each spend can be checked against a known set of unspent outputs. It also means that “balance” is not a primitive on-chain object in Bitcoin. A wallet balance is the sum of all currently controllable UTXOs.
When a user spends Bitcoin, a wallet must select which UTXOs to use as inputs. This is called coin selection.
A wallet often tries to optimize among several goals:
This is one reason Bitcoin’s underlying structure is less intuitive than an account model. The wallet hides a lot of complexity from the user.
Bitcoin scripting is not a general smart contract platform. It is best thought of as a spending condition language.
Typical conditions include:
Its goal is not general-purpose programmability, but reliable and constrained control over spending conditions.
That design matters. Bitcoin deliberately restricts expressive power in order to keep consensus simpler, attack surfaces smaller, and validation more predictable.
Bitcoin prioritizes:
It does not prioritize:
This is why it is misleading to call Bitcoin “just an old slow chain.” Its architecture reflects a deliberate preference for robust settlement over expressive application complexity.
Bitcoin is a decentralized settlement system designed to prevent double spending and preserve a hard-to-rewrite history of value transfer in an open, adversarial environment.
— Mar 20, 2026
Made with ❤ at Earth.