Skip to content

[Peras 23] wFA^LS and EveryoneVotes voting committee implementations#1975

Open
agustinmista wants to merge 5 commits intoperas/generic-voting-committee-apifrom
peras/wfals-everyonevotes-implementations
Open

[Peras 23] wFA^LS and EveryoneVotes voting committee implementations#1975
agustinmista wants to merge 5 commits intoperas/generic-voting-committee-apifrom
peras/wfals-everyonevotes-implementations

Conversation

@agustinmista
Copy link
Copy Markdown
Contributor

@agustinmista agustinmista commented Apr 13, 2026

This PR implements two concrete voting committee strategies:

  1. Weighted Fait-Accompli with Local Sortition (WFALS), and
  2. A simpler one where every pool with positive stake can vote (EveryoneVotes)

While Peras will use WFALS at the beginning, EveryoneVotes serves as a baseline for future benchmarks, as well as a starting point for Leios shall they end up opting for a simpler approach.

NOTES:

  • WFALS depends on two separate sub-componenents:

    • WFA: the pure weighted Fait-Accompli seat split algorithm, which relies on an "extended stake distribution" ExtWFAStakeDistr (a sorted array of pools with cumulative stake). The latter can be precomputed at the beginning of an epoch and shared across multiple voting committees (e.g. shared between Leios and Peras).
    • LS: the Local Sortition check for non-persistent voters, mapping their VRF outputs into seats sampled through a Poisson distribution.
  • For simplicity, EveryoneVotes reuses the same ExtWFAStakeDistr as WFALS. This way, if Leios is instantiated with EveryoneVotes, it could still use the same precomputed data as Peras.

  • Both voting committee implementations defined their own abstract vote and certificate type and it's up to the clients to marshal between these types and their concrete ones (possibly using the same underlying representation and serialization routines)

agustinmista and others added 5 commits April 15, 2026 14:20
This commit implements the deterministic core of the weighted
Fait-Accompli algorithm using a precomputed extended stake distribution,
shareable across multiple voting committees running on the same epoch.

The implementation includes a tiebreaker mechanism to allow altering the
order of pools with the same stake when the threshold index between
persistent and non-persistent voters would land between them. This can
later be instantiated to allow for a fair split across epochs.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
This commit implements the local sortition fallback scheme needed by
wFA^LS to allocate non-persistent voters. Each non-persistent voter
provides a VRF output that gets normalized and compared against the
output of a numerically-stable stake-weighted Poisson distribution.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
This commit defined the weighted Fait-Accompli with local soritition
voting scheme (WFALS) using the separate WFA and LS components. This
includes the definition of both persistent and non-pesistent abstract
votes and abstract certificates.

NOTE: it is the job of the low-level vote and certificate implementation
to provide the plumbing needed to convert between abstract and concrete
values, possibly allowing the same concrete definitions to work with
multiple voting commitee implementations.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
This commit implements EveryoneVotes a simpler alternative to WFALS
where every voter with non-negative stake is entitled to vote. This
exists as a baseline to run benchmarks against later on.

Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Co-authored-by: Nicolas BACQUEY <[email protected]>
Co-authored-by: Thomas BAGREL <[email protected]>
Co-authored-by: Agustin Mista <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: 🗓️ Next up

Development

Successfully merging this pull request may close these issues.

Mocked Vote and Cert Cryptography Voting Committee selection logic

2 participants