Sybil Resistance: Every Part of the Intended Answer Exists, and Each Is in a Different State

The question

A Sybil attack is one party pretending to be many. For a chain: what stops somebody standing up a thousand participants and outvoting everybody.

Every consensus design has an answer, and the answer is the security model rather than a feature beside it.

The answer today, plainly

The set is closed.

The committee is a list in the genesis file, read once at process start, and no transaction anybody can send changes it.

So nobody can be many participants because nobody can be one. That is not Sybil resistance. It is a configuration that makes Sybil resistance unnecessary, and the two are easy to confuse from outside because they look identical while the set stays closed.

The intended answer has four parts, and each is in a different state

"Not deployed" has been doing too much work. Here is each part separately.

an economic gate BUILT AND LIVE, and bypassed: the minimum is enforced and the producing validators hold no stake at all committee sampling NOT IMPLEMENTED: the drawing half has no production code, while the leader half is implemented and switched off in this mode slashing DETECTOR ONLY: no caller and no penalty transaction admission by stake STRUCTURALLY IMPOSSIBLE: the validator record holds no keys, so the path cannot lead to a committee seat even in principle

Those are four different conditions: working but bypassed, absent, half-present, and impossible as designed. A single phrase covering all four tells a reader nothing.

And the parts interact in one direction only

A stake that cannot buy a seat cannot deter a Sybil. A slashing rule with no penalty cannot make a stake meaningful. And sampling from a pool nobody can join has nothing to sample.

So the four are not four independent tasks. Admission has to work before staking means anything, staking has to mean something before slashing has teeth, and only then does sampling have a population. The order is forced.

One thing this page will not repeat

A number in a stake column is a record, not a quantity of value. The unit has no market, no listing and no price, and this estate reports those fields and declines to interpret them.

And there is a second Sybil question, one layer up

Even on the surfaces where identities can be created, nothing constrains how many one person holds. That is a separate finding on a separate surface, and it belongs here because a Sybil question asked about a whole system does not stop at the consensus layer.

What is genuinely right

The economic gate is real code that works: a zero amount is rejected, a balance that cannot cover the amount plus the fee is rejected before any write, and a total below the minimum is rejected with an error naming both figures.

The leader draw is unbiasable by design, taking a shared seed and the round number so a would-be leader has nothing to grind.

And the second consensus stack carries the equivocation half properly. The components of a real answer exist. They are not yet assembled into one.

What you can check yourself

solidus_getValidators, then sample proposers across a dozen canonical blocks

Five entries come back, all flagged active, and four of them propose. The one carrying a stake proposes nothing, which is the whole of the economic story visible from outside.

Keep reading

Sybil Resistance: Every Part of the Intended Answer Exists, and Each Is in a Different State · Solidus