NADO

Every node builds every block.
No leader. No proposer. No waiting.

In NADO a block is a pure function of the chain and the mempool. Given the same parent and the same transactions, every node computes the identical block — so nobody has to propose it, nobody has to wait for it, and nobody can hold a slot hostage. This page shows how that works, why it does not fork, and the next block as the network computes it right now.

The next block, as every node computes it

Live from a public node. This is not a proposal from a leader — it is the deterministic result any node on this tip arrives at from its pool. Refreshes every few seconds.

Chain
connecting…
Tip height
Next block
Transactions in it
Parent (tip hash)
Transaction ids in the next block

Source: GET https://get.nadochain.com/next_block_txids and /status. Any node answers the same question; ask a few and compare.

How a block is born

Proposer chains work by election: one node builds, everyone else waits and votes. NADO works by computation: everyone builds, and the maths guarantees the results agree.

INPUTS — identical on every node parent block epoch beacon (RANDAO) mempool (mature txs) THE BLOCK FUNCTION — the same code, everywhere winner = draw(beacon, height, registries) txs = mature(pool, height), sorted by txid weight = parent + bonded shares + 1 hash = H(height, parent, winner, txs, …) node A#83885 · 7f3a…c1 node B (a phone)#83885 · 7f3a…c1 node C#83885 · 7f3a…c1 No node sends a block to another. Each one computes it, applies it, and moves on — the winner is credited by address, so it can be asleep, and the block hash carries neither a timestamp nor a signature, so no local clock and no key can make it differ. The one thing that can differ is the mempool. That is the entire attack surface of this design, and everything below exists to keep the pools equal at the moment the function runs — and to resolve the rare case where they were not, in favour of the more complete pool.

Try it: six nodes, one function

A tiny simulation of the real rule. Each node hashes the sorted ids of its mature transactions on top of the same parent. Watch what happens when a transaction reaches one node late, and how the network resolves it without anybody being in charge.

Six nodes share the same pool. Build a block: every node computes the same hash.

The simulation hashes with SHA-256 for brevity; the chain uses blake2b over the full block preimage. The rules shown — sorted mature tx set, reconcile before building, superset wins a same-height tie — are the chain's actual rules.

Keeping the pools equal

Four layers, cheapest first. None of them is a leader; all of them make the block function's input the same everywhere by the time it runs.

1 · Push gossip

A transaction is pushed to every peer the instant a node accepts it — first sight only, so the flood stops the moment everyone has it. One hop per edge, no leader relaying.

2 · Pull reconcile

Every second, nodes whose pool hash differs exchange txid lists and fetch only the bodies they lack. Anything push missed — a node that was down, a dropped packet — converges here.

3 · Inclusion delay

A transaction names the earliest height it may land, a few blocks after submission. That gives propagation a head start over assembly, so a tx is nearly always everywhere before any node may include it.

4 · Pre-assembly reconcile

Right before it builds, a node asks its peers “what would you put in the next block on this tip?” and fetches the difference. The mesh converges on the union of its next-block sets inside the slot — no block is built on a stale view.

Why not just wait for a leader? A proposer solves the same problem by fiat: its pool is the reference. That buys agreement at the price of a party that can delay or censor a slot, of latency while everyone waits for it, and of a signature every block depends on. NADO buys agreement with bandwidth instead — a few hundred bytes of txids per block — and keeps the property that no node is special.

When two blocks still appear at one height

If a transaction reaches node A but not node B in the last few hundred milliseconds before the slot, they build two different blocks. Fork weight is content-independent, so that is an exact tie. NADO breaks it deterministically — and in favour of the better pool.

The more complete block wins

Both sides fetch the other's first divergent block and compare transaction sets. A strict superset wins; otherwise the larger set; only equal sets fall back to the lowest hash. Everyone computes the same answer, once.

Adoption is instant

The winning block carries the transaction the loser lacked, so the losing node can validate and adopt it immediately — the tx lands, nothing is re-mined, and “propagate faster” is the winning strategy rather than a coin flip.

Weight still rules

The tie-break only decides exact ties. Fork choice is cumulative bonded weight, and finality is a stake-signed checkpoint plus a hard floor no rollback may cross — a split can never undo what is final.

Side by side

PropertyNADO (shared production)Tendermint / TenderbakeNakamoto PoW
Who builds the blockEvery node, identicallyOne proposer per roundWhoever finds the hash
Waiting on a specific partyNeverYes — the proposer, then a ⅔ voteYes — the miner's propagation
Can one party censor a slotNo — there is no slot ownerYes, for its roundYes, for its block
Winner can be offlineYes — credited by addressNoNo
Hardware advantageNone (a draw, not a race)NoneAll of it
Block carries a signature the chain depends onNoYesNo
Same-height conflictDeterministic tie-break, more complete pool winsPrevented by the voteLongest chain, eventually
What must agreeThe mempool at the slot (bandwidth)⅔ of stake, every block (rounds)Nothing — work decides

Read the details

The full write-up — the block function, what is and is not hashed, every convergence layer with its parameters, the tie-break proof of symmetry, the failure modes and how each resolves, and the incidents that shaped the rules.

Leaderless block assembly

doc/leaderless-assembly.md — the design document.

Mining & the draw

doc/mining.md — two lanes, the beacon, fidelity, win-while-offline.

Finality

doc/finality.md — stake-signed checkpoints and the un-crossable floor.