Consensus only when something goes wrong
On XE, well-behaved accounts never touch consensus. It wakes up for one thing, an account forking its own chain, and settles it with delegated votes.
Because every account has its own chain, XE doesn't need global agreement to accept a block. Peers check the signature, the balance and the proof-of-work, and move on. Consensus only activates in one situation: equivocation.
The one problem: a fork#
An equivocation is when an account signs two different blocks that both point at the same Previous hash: send 100 to Alice and send the same 100 to Bob. It's the lattice's version of a double spend. Only one block can win.
Four steps to a decision#
- Detection. A node sees two blocks with the same
Previoushash and opens a conflict. - Weight. Representatives carry voting power delegated to them. The weights are snapshotted when the conflict opens, so nobody can shuffle delegation mid-vote.
- Voting. Representatives cast signed votes for the block they support.
- Resolution. Once one block has 67% of the delegated weight, it's confirmed and the other is rejected.
blockWeight * 100 >= totalWeight * 67Deterministic tie-breaking
An honest representative votes for the block with the lexicographically lowest hash. Every honest node converges on the same answer no matter which block reached it first, so an attacker can't steer the outcome by controlling message order.
A fallback
If representatives who never vote inflate the total weight so much that 67% is out of reach, a fallback resolves the conflict after a delay, as long as every representative who did vote agrees.
The result is a very small consensus surface. The vast majority of blocks never touch it: a well-behaved account just appends to its chain. Details are in the consensus docs.