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
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).
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.
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 abstracthashEBRefs; the byte-exact preimage stays deliberately unpinned (the conformance cliff tracked in the design note).Announcement = EBHash × ℕ: the header'sannounced_ebandannounced_eb_size; the wire'scertified_ebbit is spec-derived and not modeled.Vote, per the amended CIP: the hash of the announcing RB header (the signed message), thevoter_idseat index, and the BLS vote signature. Consumed by no transition rule; kept as a definition servingvalidateVoteand the quorum-safety metatheory (design-note addendum; agreed with Sebastian on Slack, 2026-08-31).TxRefHash,EBHash, andhashEBRefsneed a home now that theLeiosAbstractrecord is dissolved in favour of the core crypto structure; candidates are fields onCryptoStructurenext to the BLS primitives, or parameters of this module.DecEqinstances 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.