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.

2 min read

  • XE Protocol

Machine-readable: /blog/consensus-only-when-something-goes-wrong.md

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#

  1. Detection. A node sees two blocks with the same Previous hash and opens a conflict.
  2. Weight. Representatives carry voting power delegated to them. The weights are snapshotted when the conflict opens, so nobody can shuffle delegation mid-vote.
  3. Voting. Representatives cast signed votes for the block they support.
  4. Resolution. Once one block has 67% of the delegated weight, it's confirmed and the other is rejected.
Go
blockWeight * 100 >= totalWeight * 67

Deterministic 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.

  • Written by

    XE Protocol

    Core engineering

    The engineers behind the XE node: the lattice, consensus, and compute leasing.

    GitHub ↗

←All posts

Read more like this

Newsletter

New posts, straight to your inbox.

Releases, protocol deep dives and the occasional opinion. Nothing else, and you can leave any time.