Leader Election: A Lottery Is Implemented, a Rotation Is Running, and the Lottery Has an Open Design Question

Why anybody elects a leader at all

Somebody has to go first. A round with two proposers is a fork; a round with none is a stall.

The choice has to satisfy two things at once. Everybody must reach the same answer without negotiating, and an attacker should not be able to know the answer far enough ahead to act on it.

The two families, and what each costs

Rotation takes turns in a fixed order. It is trivial to agree on and impossible to manipulate. And it is completely predictable, so anybody who wants to disrupt a particular round knows exactly which participant to reach.

A lottery draws a winner each round. Unpredictable, so there is nothing to pre-target. And it needs a proof, because a claim to have won is worthless without one.

What is implemented here, and the part that is genuinely right

The lottery. Each validator computes a random-looking output for the round using its own key, and the output comes with a proof.

The inputs are a shared round seed and the round number, and nothing else. So a would-be leader has nothing to grind: it cannot try candidate inputs until one wins, because it chooses none of them.

And the result is meant to be checked rather than trusted, which is the property that makes any of this useful among participants who do not trust each other.

And on this deployment the lottery is switched off

The mode this network runs sets a flag that skips the draw, and the comment beside that flag says in our own words that this mode uses round-robin leader election.

It was visible from outside first. Twelve consecutive readable blocks show an unbroken four-way rotation, which a lottery does not produce. The external measurement and the source agree, and neither was fitted to the other.

So the honest description is: the lottery exists in the code and the rotation is what runs.

The open design question, stated in the code's own words

Deciding who won requires collecting the outputs and taking the smallest.

The routine that does it needs every validator's output. Its own documentation says so.

A fault-tolerant protocol cannot wait for every participant. Waiting on all of them means one absent validator stalls the election, which is precisely the failure the rest of the protocol exists to survive.

So the lottery needs a rule that produces a winner from a quorum rather than from everybody, and that rule is a design decision nobody has taken yet. That is very likely why the development network runs a rotation instead, and stating it is more useful than implying the lottery is ready to switch on.

An earlier page of ours overstated the receiving check

We wrote that a participant receiving a proposal verifies that the claimed leader "really did win". That was more than the check establishes and the page now states it exactly.

Naming our own overclaim here rather than quietly editing it is the only version of this that a reader can audit.

What the current arrangement costs, sized honestly

Predictable leadership means the next proposer is knowable in advance.

On this network that costs nothing: four validators, one operator, one process, nothing at stake, and no external participant to attack.

It is the first property that has to change when the set opens, and it changes at the same time as several others. A rotation is the right choice for a development network and the wrong one for an open committee.

And none of it is checkable from outside

No proof of any kind appears on the read surface, so a reader can observe the pattern and never the mechanism.

Everything above about the mechanism is a reading of source, and the only part an outsider can confirm independently is the rotation itself.

What you can check yourself

solidus_canonHead, then solidus_getBlockBySeq downward, listing proposer in sequence order

UPDATED 2026-08-02: use the sequence, not the height, or you will see one block in three: three chained blocks share a height value. The pattern repeats, which is what a rotation looks like and what a lottery does not.

Keep reading

Leader Election: A Lottery Is Implemented, a Rotation Is Running, and the Lottery Has an Open Design Question · Solidus