Skip to content

[TEMP] Peras 23 fixup#2015

Draft
tbagrel1 wants to merge 20 commits into
mainfrom
peras/fixup-wfals-everyonevotes-implementations
Draft

[TEMP] Peras 23 fixup#2015
tbagrel1 wants to merge 20 commits into
mainfrom
peras/fixup-wfals-everyonevotes-implementations

Conversation

@tbagrel1
Copy link
Copy Markdown
Contributor

Addressing review comments from Damian on Peras 23

agustinmista and others added 14 commits April 27, 2026 13:14
This commit tweaks the generic voting committee interface around
aggregatable types to better acommodate the fact that cryptographic
aggregation of signatures can fail (in very rare cases). Previously, we
had encapsulated this problem by collecting keys and signatures and
aggregating them at verification time. The new interface is more
faithful and accounts for the new failure mode in a more honest way.

In addition, it renames the 'CryptoSupportsAggregateVRF' class into
'CryptoSupportsBatchVRFVerification', since the new interface
constraints the inputs to /not/ be aggregated at (batch) verification
time, so that implementations that require binding keys to VRF outputs
can do so more directly and explicitly.

Finally, it removes the trivial aggregation helpers introduced in Peras
22, as concrete implementations of the new aggregation interface will
not benefit much from having them, so there's no need to maintain unused
code for which we have no plans to use in the long term either.

Co-authored-by: Nicolas BACQUEY <nicolas.bacquey@tweag.io>
Co-authored-by: Thomas BAGREL <thomas.bagrel@tweag.io>
Co-authored-by: Agustin Mista <agustin.mista@moduscreate.com>
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 <nicolas.bacquey@tweag.io>
Co-authored-by: Thomas BAGREL <thomas.bagrel@tweag.io>
Co-authored-by: Agustin Mista <agustin.mista@moduscreate.com>
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 <nicolas.bacquey@tweag.io>
Co-authored-by: Thomas BAGREL <thomas.bagrel@tweag.io>
Co-authored-by: Agustin Mista <agustin.mista@moduscreate.com>
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 <nicolas.bacquey@tweag.io>
Co-authored-by: Thomas BAGREL <thomas.bagrel@tweag.io>
Co-authored-by: Agustin Mista <agustin.mista@moduscreate.com>
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 <nicolas.bacquey@tweag.io>
Co-authored-by: Thomas BAGREL <thomas.bagrel@tweag.io>
Co-authored-by: Agustin Mista <agustin.mista@moduscreate.com>
Co-authored-by: Nicolas BACQUEY <nicolas.bacquey@tweag.io>
Co-authored-by: Thomas BAGREL <thomas.bagrel@tweag.io>
Co-authored-by: Agustin Mista <agustin.mista@moduscreate.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
@tbagrel1 tbagrel1 changed the base branch from main to peras/wfals-everyonevotes-implementations April 27, 2026 14:56
tbagrel1 and others added 6 commits April 28, 2026 10:07
…into total getCandidateIfSeatWithinBounds

Co-authored-by: Copilot <copilot@github.com>
…en evalVRF fails in checkShouldVote and remove redundant LocalSortitionError (in favor of InvalidVoterEligibilityProof)

Co-authored-by: Copilot <copilot@github.com>
…ure all invariants holds in `forgeCert`

Co-authored-by: Copilot <copilot@github.com>
@tbagrel1 tbagrel1 force-pushed the peras/fixup-wfals-everyonevotes-implementations branch from 82cb109 to cfd0884 Compare April 28, 2026 09:39
@agustinmista agustinmista force-pushed the peras/wfals-everyonevotes-implementations branch 7 times, most recently from edd18f0 to fd87c55 Compare April 30, 2026 09:18
@agustinmista agustinmista force-pushed the peras/wfals-everyonevotes-implementations branch 7 times, most recently from ff292c6 to 6dc3c20 Compare May 5, 2026 15:57
Base automatically changed from peras/wfals-everyonevotes-implementations to main May 5, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants