A Pragmatic Definition of Consensus (for Economic Actors)
I’ve been trying to articulate, primarily to myself, a practical, pragmatic, and realistic definition of consensus, viewed strictly from the perspective of economic actors rather than theoretical correctness. The question I’ve found most valuable to ask is: What works in practice, but not in theory? Below, I’ll share my current thinking.
Core Premises
Looking back, my chain of thought breaks down into four core premises:
-
Value drives follow-through.
An economic actor is incentivized to follow the chain where they expect to hold the most value, both in the present and over the long term. -
PoW (the heaviest chain) provides a large part of the answer.
It informs your node which chain is actually valued by the majority of economic nodes. There is a slight delay (visible when comparing hashrate changes to price changes), but it gives a reliable, and objective market-driven signal. -
Utreexo supplies the rest of the verification piece.
Demand alone isn’t enough if your UTXOs have been fraudulently spent on that chain. However, the decision isn’t binary: if only a small fraction of your UTXOs are stolen, you might still rationally stick with the heaviest chain because its overall economic value outweighs the personal loss. The Ethereum vs. Ethereum Classic split is a good example; sticking with the chain that reverted some transactions may have made economic sense even for those personally affected. -
Future speculation about each chain’s value is the wild card.
This is inherently subjective and impossible to codify into a light client. The only viable fallback is to halt, notify the user, and require a subjective, manual decision.
A Practical Light‑Client Protocol
So how would that translate into a practical light‑client design? Here’s a seven‑step approach:
-
Sync headers just like a standard SPV client.
-
Only consider forks whose tip is very close to the current wall‑clock timestamp.
This filters out stale, abandoned forks from the outset. -
Use header timestamps for ad‑hoc fork detection.
If blocks start taking unusually long to produce, assume a fork might be occurring, and aggressively seek out peers that might be mining on that alternative chain. -
When a fork is suspected (whether you find it or not), verify, but not everything.
Instead of fully validating every block (as Floresta does), only check that the UTXOs relevant to your wallet (and possibly covenants and bridges) remain unspent fraudulently. -
If you find proof that a fork fraudulently spends a significant (user‑adjustable) portion of your funds, broadcast that fraud proof to your peers and abandon that fork immediately, waiting for another that doesn’t violate your property rights.
-
If you find no such proof (and receive no credible fraud alerts), present the user with two clear options:
- A) Require a substantially higher number of confirmations than usual, potentially scaled by the ratio of observed work between forks or the drop in hashrate on your current chain.
- B) Halt all incoming transactions and notify the user that a subjective, manual decision is required before proceeding.
-
If you receive a fraud proof from a peer (affecting any UTXOs, not necessarily your own), take it as a strong warning. Present the user with one of the options above.
Why This May Be Safer Than Full Validation
Counterintuitive as it sounds, a light client following the heaviest chain can be safer than a full node enforcing rigid local rules. Full validation mistakes a local policy for global consensus, but we have no direct way to measure the economic weight behind any given rule.
Take Segwit: its economic backing is only inferred by counting BTC locked in Segwit UTXOs, a weak signal compared to the behavior of miners as evident by block templates. If the majority of economic value started using older Bitcoin Core versions or new patched ones ignoring Segwit, for any reason, then a Segwit-enforcing node would be stranded on a worthless minority chain, if any block included an invalid transaction according to Segwit.
This weakness is magnified with soft forks like Taproot. Rules buried in unspent Taproot leaves are practically unobservable until spent; their economic weight is effectively observable only at spending time, yet a full node treats them as absolute.
Now consider a deliberate hard fork, say, an inflation bug is discovered and the community (exchanges, major holders, applications) decides it simply cannot tolerate it and patches it out. A subset of miners may refuse to upgrade. A full node that blindly follows local rules will track that heaviest “valid” but economically abandoned chain. Our light client, however, detects the fork (via block time anomalies or hashrate drops), halts, and asks the user to make a subjective value judgment, or at least requires hundreds of confirmations that never arrive, forcing the user to react. That is exactly the intervention needed to align with the chain where actual economic value resides.
The heaviest chain remains the only objective proxy for economic reality, but it only works in absence of chaos. Both full nodes and sensible SPV clients should halt on clear anomalies (difficulty drops, time lags) and ask the user to intervene. This light-client design does exactly that, making it more honest, and in practice, safer than pretending local rules are infallible, or that relative hashrate is irrelevant once any rule is broken.
What Stops Miners From Stealing?
Miners are not automatically stopped from trying, but theft cannot happen silently. A fraudulent spend of a watched UTXO generates a fraud proof broadcast to peers, triggering confirmation slowdowns, user alerts, and ultimately subjective chain selection. If enough users judge the fraud unacceptable, economic weight shifts to the honest chain, destroying the cheater’s market value. Miners follow paying chains; the deterrent is economic exile, not local rule enforcement.
Existing infrastructure—bridges locking BTC or atomic swaps—already blindly trusts the heaviest chain via SPV logic. This design adds a critical fraud-detection safety net absent today.
Consensus is not enforced; it is participated in through vigilance, alerts, and subjective choice, and that collective process, reflected in PoW over time, ultimately protects property rights.
A Note on Utreexo, libbitcoinkernel, and Future Commitments
Building such a client is now practically feasible thanks to Utreexo (compact state proofs that eliminate the need for a full UTXO set) and libbitcoinkernel as seen in Floresta already.
To further strengthen this design, we could consider two ways to add utreexo commitments:
-
Soft fork: miners commit to a Utreexo root in the coinbase transaction and the block is considered invalid if the commitment is invalid.
-
Velvet fork: miners commit to the current Utreexo root and explicitly point to the latest root they endorse. This gives light clients a weaker guarantee than soft fork utreexo commitment, but more valuable than getting utreexo roots from random peers that don’t spend PoW and trusting their consensus!