feat(core): add StarfishL protocol variant with BLS certificate aggregation#125
Open
polinikita wants to merge 4 commits intomainfrom
Open
feat(core): add StarfishL protocol variant with BLS certificate aggregation#125polinikita wants to merge 4 commits intomainfrom
polinikita wants to merge 4 commits intomainfrom
Conversation
…gation Add StarfishL (Lazy-Push) consensus protocol variant that uses BLS aggregate signatures for round/leader/DAC certification instead of DAG-edge-based counting. Key changes: - Add `StarfishL` variant to `ConsensusProtocol` enum with full dispatch across committer, linearizer, broadcaster, net_sync, and core - Add `bls_aggregate` and `bls_fast_aggregate_verify` primitives - Add `BlsCertificateAggregator` module for collecting partial BLS sigs and producing aggregate certificates (round, leader, DAC) - Add `acknowledgment_bls_signatures` field to `BlockHeader` for carrying BLS DAC proofs parallel to acknowledgment_references - Wire StarfishL into all Starfish-family match arms for networking, block creation, transaction encoding, and verification
…to StarfishL - Add signature verification to BlsCertificateAggregator before accumulating partials - Wire aggregator into Core for block processing and recovery replay - Track leader/DAC certificates in DagState with query methods - Use BLS leader certificates for commit decisions in base_committer - Gate linearizer block inclusion on DAC certificates for StarfishL - Sign leader and DAC messages during block creation in new_with_signer - Add domain-separated BLS message builders (bls_leader_message, bls_dac_message) - Add StarfishL smoke tests (commit, sync, crash faults, lifecycle)
- Extract BlsFields struct behind Option<Box<BlsFields>> (StarfishL only) - Extract AckFields struct for acknowledgment compression (Starfish variants) - Reorder BlockHeader: base fields first, ack fields, protocol extensions last - Add section comments clarifying which fields belong to which protocol
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
StarfishL(Lazy-Push) consensus protocol variant using BLS aggregate signatures for round/leader/DAC certificationBlsCertificateAggregatormodule for collecting partial BLS sigs and producing aggregate certificatesbls_aggregateandbls_fast_aggregate_verifyprimitives tocrypto.rsacknowledgment_bls_signaturesfield toBlockHeaderfor BLS DAC proofsStarfishLinto all Starfish-family match arms across the codebase (committer, linearizer, broadcaster, net_sync, core, types)Remaining work (follow-up PRs)
build_block(), pacemaker gating inready_new_block(), hybrid block references, feeding aggregator inadd_blocks()enough_leader_support_bls,is_certificate_bls)collect_subdag_starfish_lin linearizer"starfish-l"protocolTest plan
cargo check --all-featurespassescargo clippy --all-features --no-deps -- -D warningspassescargo clippy --all-features --tests --no-deps -- -D warningspassescargo +nightly fmt --checkpasses