Skip to content

feat(core): add StarfishL protocol variant with BLS certificate aggregation#125

Open
polinikita wants to merge 4 commits intomainfrom
feat/starfish-l-protocol
Open

feat(core): add StarfishL protocol variant with BLS certificate aggregation#125
polinikita wants to merge 4 commits intomainfrom
feat/starfish-l-protocol

Conversation

@polinikita
Copy link
Member

Summary

  • Adds StarfishL (Lazy-Push) consensus protocol variant using BLS aggregate signatures for round/leader/DAC certification
  • Introduces BlsCertificateAggregator module for collecting partial BLS sigs and producing aggregate certificates
  • Adds bls_aggregate and bls_fast_aggregate_verify primitives to crypto.rs
  • Adds acknowledgment_bls_signatures field to BlockHeader for BLS DAC proofs
  • Wires StarfishL into all Starfish-family match arms across the codebase (committer, linearizer, broadcaster, net_sync, core, types)

Remaining work (follow-up PRs)

  • Phase 4 core wiring: BLS signing in build_block(), pacemaker gating in ready_new_block(), hybrid block references, feeding aggregator in add_blocks()
  • Phase 5: threshold clock bypass for StarfishL (BLS aggregate round sig check)
  • Phase 6: BLS-based commit rule (enough_leader_support_bls, is_certificate_bls)
  • Phase 7: StarfishL-specific collect_subdag_starfish_l in linearizer
  • Phase 10: integration smoke test with "starfish-l" protocol

Test plan

  • cargo check --all-features passes
  • cargo clippy --all-features --no-deps -- -D warnings passes
  • cargo clippy --all-features --tests --no-deps -- -D warnings passes
  • cargo +nightly fmt --check passes
  • All 43 non-smoke unit tests pass
  • Smoke tests (known flaky, timing-sensitive)

…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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant