You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/leios-design/README.md
+47-6Lines changed: 47 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -505,6 +505,42 @@ Non-persistent voters, on the other hand, are selected independently for each EB
505
505
Registered voters can generate and cast votes, each including an `endorser_block_hash` field that uniquely identifies the target EB.
506
506
Collected votes are then aggregated into a compact certificate.
507
507
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
+
508
544
#### Requirements
509
545
The voting and certificate scheme in Leios must satisfy key requirements to ensure security, efficiency, and practical deployability.
510
546
@@ -528,12 +564,17 @@ Lastly, the cryptographic operations for eligibility verification, vote generati
528
564
The total workload should stay well within the CPU budget for Leios stages, ensuring strong performance and scalability under real-world conditions.
529
565
530
566
#### 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.
0 commit comments