Skip to content

[LLF1-3] Leios.Types: the endorser block, its announcement, and the vote #1301

Description

@williamdemeo

Description

New Leios primitive types for the Dijkstra specification, per the design note and CIP-164 as amended by cardano-foundation/CIPs#1250: the endorser block, its announcement, and the vote.

The certificate is deliberately absent: LeiosCert (signer bitfield plus aggregate signature) lives in the committee module introduced by #1300, and this issue coordinates with that module rather than duplicating it.

  • EndorserBlock: an ordered list of transaction references, List (TxRefHash × ℕ) (hash of the complete transaction bytes plus declared size, CIP-164 Appendix B); duplicate-freedom is a validity condition, not a proof field (decision recorded during the fork trial's M1-3 review).
  • hashEB: the EB identifier as the hash of the reference structure itself, via an abstract hashEBRefs; the byte-exact preimage stays deliberately unpinned (the conformance cliff tracked in the design note).
  • Announcement = EBHash × ℕ: the header's announced_eb and announced_eb_size; the wire's certified_eb bit is spec-derived and not modeled.
  • Vote, per the amended CIP: the hash of the announcing RB header (the signed message), the voter_id seat index, and the BLS vote signature. Consumed by no transition rule; kept as a definition serving validateVote and the quorum-safety metatheory (design-note addendum; agreed with Sebastian on Slack, 2026-08-31).
  • Carrier placement, the first thing to settle in review: TxRefHash, EBHash, and hashEBRefs need a home now that the LeiosAbstract record is dissolved in favour of the core crypto structure; candidates are fields on CryptoStructure next to the BLS primitives, or parameters of this module.
  • DecEq instances for all records; module prose maps each type to its CDDL counterpart (Appendix B).

Subissue of #1295.

Note. The branch for work on this issue should stack on #1300's crypto commit (the vote's signature type is BlsSig), which is another reason to split #1300.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions