Skip to content

Commit 5ed16ba

Browse files
committed
design choices and voting protocol summary
1 parent d3ff988 commit 5ed16ba

File tree

1 file changed

+47
-6
lines changed

1 file changed

+47
-6
lines changed

docs/leios-design/README.md

Lines changed: 47 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,42 @@ Non-persistent voters, on the other hand, are selected independently for each EB
505505
Registered voters can generate and cast votes, each including an `endorser_block_hash` field that uniquely identifies the target EB.
506506
Collected votes are then aggregated into a compact certificate.
507507

508+
#### Leios Voting in a Nutshell
509+
- **Key Generation**
510+
- A secret key ($sk$) is created to generate signatures for the corresponding signature scheme.
511+
- The public key ($pk$) is securely derived from $sk$ and used to verify the corresponding signatures.
512+
- A proof of possession ($PoP$) is generated for $sk$ to ensure key ownership.
513+
> Note that keys are not rotated periodically, as forward security is not required for IBs, EBs, or votes.
514+
515+
- **Key Registration**
516+
- The registration process is responsible for storing public keys and verifying proof of possession.
517+
- Each stake pool registers with the following information:
518+
- A unique identifier (Pool ID or similar)
519+
- $pk$
520+
- $PoP$
521+
- A KES signature over the Pool ID, $pk$, and $PoP$
522+
- Nodes verify the $PoP$s of all received $pk$s to confirm their validity.
523+
524+
- **Voter Determination**
525+
- For each epoch, *persistent voters* are selected based on the stake distribution and participate in every election during that epoch.
526+
- Within the same epoch, *non-persistent voters* are chosen randomly and independently for each election.
527+
528+
- **Voting**
529+
- Voters sign the election ID and the EB hash with their $sk$.
530+
- Each vote includes the election ID, the EB hash, and the corresponding signature.
531+
- Persistent votes additionally include an epoch-specific identifier of the stake pool.
532+
- Non-persistent votes include the Pool ID and an eligibility signature on the election ID.
533+
534+
- **Certificate Generation**
535+
- Upon receiving votes, both voter identities and their signatures are verified.
536+
- Non-persistent votes are further validated for eligibility.
537+
- Once a quorum of valid votes is collected, a certificate can be generated.
538+
- The certificate includes:
539+
- The election ID and the message (the hash of the EB)
540+
- The identities of participating voters
541+
- Eligibility proofs for non-persistent voters
542+
- An aggregate signature combining all individual voter signatures
543+
508544
#### Requirements
509545
The voting and certificate scheme in Leios must satisfy key requirements to ensure security, efficiency, and practical deployability.
510546

@@ -528,12 +564,17 @@ Lastly, the cryptographic operations for eligibility verification, vote generati
528564
The total workload should stay well within the CPU budget for Leios stages, ensuring strong performance and scalability under real-world conditions.
529565

530566
#### Design Choices
531-
- Signature scheme
532-
- sortition
533-
- key registration
534-
- vote layout
535-
- certificate layout
536-
- ...
567+
568+
Several certificate schemes were evaluated for Leios, including ALBA variants, SNARK-based voting schemes, and BLS-based certificates, with the goal of identifying a design that best satisfies the security, efficiency, and deployability requirements described above.
569+
After comparison, BLS certificates based on the *Fait Accompli* sortition scheme were selected as the preferred approach.
570+
Although this choice requires the registration of additional keys and occasional key rotation, it provides a strong balance between efficiency and practicality, producing certificates smaller than 10 kB.
571+
572+
Other voting mechanisms could be considered preferable if they met the following conditions: no need for new key registration (i.e., reusing existing VRF and KES keys for voting), a certificate size well below the 90,112-byte limit of a Praos block, and proof generation and verification times that remain within the CPU budget of the `cardano-node`.
573+
However, among the schemes analyzed, BLS certificates offered the most favorable trade-offs across these dimensions.
574+
575+
The BLS voting mechanism relies on a pairing-based signature scheme defined over the BLS12-381 elliptic curve.
576+
This approach is advantageous because it enables the aggregation of public keys and signatures, allowing large groups of participants to collectively signal approval through a single compact artifact.
577+
Beyond Leios, the BLS mechanism is also relevant to other Cardano subsystems; Mithril already employs BLS-based aggregation, and Peras is expected to adopt a similar approach in future implementations.
537578

538579
#### Implementation Plan
539580

0 commit comments

Comments
 (0)