Skip to content

Leios design: Cryptography - Voting, Certificate#599

Draft
curiecrypt wants to merge 13 commits intomainfrom
curiecrypt/leios-design-votes-certs
Draft

Leios design: Cryptography - Voting, Certificate#599
curiecrypt wants to merge 13 commits intomainfrom
curiecrypt/leios-design-votes-certs

Conversation

@curiecrypt
Copy link

A draft of the technical design for cryptographic primitives for the voting mechanism and certificate scheme.

This PR contributes to #542.

@curiecrypt curiecrypt force-pushed the curiecrypt/leios-design-votes-certs branch 2 times, most recently from 8bc1314 to 1d3b5c9 Compare October 29, 2025 17:02
@curiecrypt curiecrypt changed the base branch from main to ch1bo/design-edit October 29, 2025 17:04
@ch1bo ch1bo force-pushed the ch1bo/design-edit branch from 52bf28c to 79a3b47 Compare November 7, 2025 14:34
Base automatically changed from ch1bo/design-edit to main November 7, 2025 14:40
@curiecrypt curiecrypt force-pushed the curiecrypt/leios-design-votes-certs branch from 3017067 to ed84962 Compare November 20, 2025 13:33
@curiecrypt
Copy link
Author

curiecrypt commented Dec 15, 2025

Please see my comment, @hjeljeli32.

  • Regarding the following

Consider the modifications to also cover Peras-related/specific features.

I suggest we first address the first two items as @ch1bo suggested. Then we can ask the Peras people to review this PR and decide what, if any, additional modifications are needed based on their feedback.

After that, I think we can merge this into main and leave the Potential Risks and Mitigations part to be completed in a follow-up PR. WDYT @ch1bo, @hjeljeli32?

Comment on lines +109 to +111
- *Signed election proofs:* Leios does **not** aggregate eligibility proofs.
Each non-persistent voter provides a 48-byte eligibility signature, which
must be verified independently to enforce the sortition threshold.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Including the 48 bytes for the signed aggregated of the election proofs has a significant performance advantage:

  • Verifying the aggregate proof means that one does not have to verify the numerous eligibility signatures.
  • One can just use the VRF which is the eligibility signature to determine how many seats the pools has on the committee. This doesn't involve any BLS group operations.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@perturbing Does this comment change the design decisions? I don't really understand the suggestion, but it sounds interesting?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm, also not entirely sure what @bwbush is alluding to in this context.

This section is about certificates 🤔

Certificates will not contain eligibility proofs (votes do).

Also note, we can aggregate eligibility proofs into one for many non-persistent voters, as each signs over the same message (something like hash(slot of EB | Praos epoch nonce)), but this has no practical value, as this new aggregate signature is no longer a VRF output of each party (so you cannot derive any eligibility check from it).

Bottom line: Aggregation is done in the context of signature schemes, not VRFs. So even though technically, the VRF output here is also a signature, its aggregated form loses the VRF context.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for the record, I understand the remark made now.

As mentioned by @hjeljeli32

Leios does not aggregate eligibility proofs.

Which is true, so each bls signature must remain in the certificate. That said, to use the signature as a vrf, you have to check its validity. @bwbush remark is that, we can optionally add another aggregated signature over the eligibility proofs, so that we can do this validity check in one batch.

Currently, the formal spec has an optional field for this, but tbh, I think we need to make it mandatory (though this would add some cost on the critical path of EB cert creation, (as the producer needs to aggregate the eligibility proofs). That said, on mainnet we have sub-100 non-persistent voters, probably manageable.

@ch1bo
Copy link
Member

ch1bo commented Feb 25, 2026

@perturbing what shall we do with these changes, can you take ownership of these parts on the technical design document?

@perturbing
Copy link
Member

@ch1bo , will do. Given our recent discussion, I think we can make some statements more exact and precise

@perturbing perturbing force-pushed the curiecrypt/leios-design-votes-certs branch from 3e86cc6 to a28654a Compare February 26, 2026 09:21
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.

5 participants