How XE agrees
The fastest vote is the one you never hold.
Every account writes its own chain, so an honest payment is final in 300ms with nothing to vote on. The network only votes when an account signs two blocks for one place.
XE Consensus doesn’t make the network agree on every payment. It only asks for agreement when an account contradicts itself, and that’s the one thing an honest account never does.
Most chains put every transaction in one global order, so every node has to agree on every one, whether or not two payments have anything to do with each other. However clever the protocol, the agreement is the queue.
On the XE Lattice, every account keeps its own chain and only its key can write to it. Honest accounts never collide, so their blocks are checked by every node and final, with nothing to vote on. The one thing a key holder can do wrong is sign two blocks for the same place: a double spend. That’s the only moment XE runs consensus.
- To final, for a block nobody contests
- 300ms
- Fee to transact
- Zero
- Votes on an honest payment
- 0
- Of delegated weight settles a conflict
- 67%
One line for everyone,
or a chain for every account.
On a single chain, every node has to agree on the order of every transaction, whether or not two payments have anything to do with each other. On XE, they never share a line.
- Every node orders every transaction, related or not.
- Your payment waits for the next block, behind everyone else’s.
- Final is a probability that grows with every block on top.
- Every account writes its own chain, and only its key can.
- Unrelated payments never share a line, so nothing waits.
- A block nobody contests is final the moment it passes its checks.
From your key to final.
Nobody votes.
1// a send, on your own chain2{3 "type": "send",4 "account": "7f3a…e2c9", // your key is your address5 "previous": "9c04…1b7e", // the block before it6 "destination": "b8d1…40aa",7 "amount": 100,8 "asset": "XUSD",9 "balance": 1300, // after this block10 "representative": "", // empty keeps yours11 "timestamp": 1776070712000000000,12 "hash": "8a02…c41d", // its fingerprint13 "signature": "4e1f…07b2" // XE Signatures: sealed by your key14}15// + a moment of XE Proof of Work
- Signature
- XE Proof of Work
- Timestamp
- Not a duplicate
- No conflict
- Balance adds up
Two blocks,
one place.
That’s a double spend. Every block names the one before it. Sign two that name the same previous block and you’ve tried to write two histories. It’s the only thing XE ever votes on.
- 01Caught on arrivalEvery block passes a conflict check as it’s added to the ledger, before its balance rules run. If another block already names the same previous block, it’s a conflict.
- 02First seen stays, second waitsThe block already on the chain stays there. The newcomer is held in staging, off the chain, until the vote decides.
- 03Raised exactly onceThe vote starts the moment a conflict reaches two blocks, and never again for the same conflict.
- 04Capped at tenA conflict tracks at most ten competing blocks, so forking the same place a thousand times buys an attacker nothing.
- 05Even at birthTwo competing first blocks for a brand-new account are caught the same way.
Try to spend twice.
Watch it fail.
Sign two blocks for the same place and watch the network pick one. Then try to cheat it: move weight mid-vote, or take 40% of the representatives offline.
- 01Detection
- 02Weight
- 03Voting
- 04Resolution
- account
- 7f3a…e2c9
- previous
- #211 · 9c04…1b7e
- block A
- send 100 XUSD → Alice · main chain
- block B
- send 100 XUSD → Bob · staging
- snapshot
- —
Waiting for a double spend.
- 01DetectionA node sees a second block claim a place that’s taken. The first stays on the chain; the second is staged.
- 02WeightIt snapshots every representative’s weight, and the total. That snapshot is the only scale this conflict is ever weighed on.
- 03VotingRepresentatives sign one vote each, for the block a fixed tie-break picks, so honest votes converge whatever order the blocks arrived in.
- 04ResolutionAt 67% of the snapshotted weight, the winner is confirmed and the rest rejected. A staged winner is re-checked, then swapped in.
Your balance, your say.
Your funds never move.
Every block carries an optional representative field. Set it, and your XUSD balance counts as that representative’s voting weight. Nothing is locked, sent or staked.
{ "type": "send", …
"representative": "0b9a52f3…",
… }Your 1,400 XUSD counts for 0b…9a. Your XE counts for nobody, and none of it has left your account.
- Weight is XUSDA representative’s weight is the sum of the XUSD balances delegated to it.
- XE confers noneHowever much XE an account holds, it adds nothing to anyone’s vote.
- Nothing movesRepresentatives never hold your funds. Delegating is a field on your block.
- Empty keeps itLeave the field empty and your current representative stays.
- Updated every blockWeights shift atomically as each block is applied, and survive restarts.
Every obvious attack,
and what stops it.
Consensus that only wakes for a conflict has a small surface. Here is each way to lean on it, what the protocol does about it, and the line of the spec that does it.
Sign two sends from the same balance, one to Alice and one to Bob.
Both blocks name the same previous block, so the second is caught on arrival and held in staging. Representatives vote, and 67% of the snapshotted weight confirms one and rejects the other on every node. Only one of them can ever exist.
67% of the weight decidesReaching 67%Where XE sits among
the chains you know.
Every design here makes a real trade. XE Lattice comes from Nano’s design; where it parts ways is when the network votes: only when an account contradicts itself.
- The ledgerNanoA chain per accountXEA chain per account
- How it’s orderedNanoNo global orderXENo global order
- When the network agreesNanoRepresentatives vote to confirm blocksXEOnly when an account signs two blocks for one place
- Voting powerNanoDelegated balanceXEDelegated XUSD, snapshotted per conflict
- FinalityNanoWhen votes reach quorumXE300ms, with no vote for an uncontested block
- Cost to transactNanoNoneXENone
A qualitative summary of how each network works by design, not a benchmark. Other networks’ details change with their upgrades; check their own documentation for specifics.
Run a representative,
or back one.
Consensus on XE isn’t a committee you apply to join. Run a node and it votes; delegate and your balance counts.
1# start a node and join the testnet2xe node -port 9000 -api-port 8080 \3 -dial /ip4/45.77.226.208/tcp/9000/p2p/12D3KooW...45# the node has its own account key, and6# votes on conflicts with it, automatically
Straight answers.
What validators, builders and holders ask about how XE agrees.
Does XE run consensus on every transaction?
No. Each account writes its own chain, so an ordinary payment is checked by every node and confirmed without a vote. Consensus only runs when an account signs two blocks for the same place in its chain, which is a double spend.
How fast is finality on XE?
300ms. A block that nothing contests is confirmed the moment it passes validation, so there are no confirmations to wait for.
What is a representative?
Any key that accounts delegate their voting weight to. Representatives vote on conflicts, and their weight is the sum of the XUSD balances delegated to them. They never hold anyone’s funds.
What does it take to settle a conflict?
One block must hold at least 67% of the total delegated weight, measured on a snapshot taken when the conflict was detected. If offline representatives make that impossible, a conflict older than 10 seconds resolves when every vote cast agrees.
Can someone buy their way into a vote once a conflict starts?
No. Weights are frozen per conflict at detection. Delegations made afterwards don’t count for that conflict, and the weight a vote carries is looked up by each node, never taken from the vote itself.
How is XE different from Nano?
XE Lattice is directly inspired by Nano. XE adds a second asset per account, block types for leasing compute, and a separate chain for governance, uses XE Proof of Work against spam, and only calls a vote when an account contradicts itself.
Is XE Proof of Work part of consensus?
No. Every block carries a moment of XE Proof of Work, which keeps XE free to use and makes spam expensive on a network with no fees. It plays no part in deciding conflicts.
How do I become a representative?
Run a node with xe node. It votes on conflicts with its own key automatically, and its votes count in proportion to the XUSD balances that accounts delegate to that key.