Skip to content

feat(core): add Bluestreak protocol#128

Closed
polinikita wants to merge 9 commits intomainfrom
feat/mysticeti-compress
Closed

feat(core): add Bluestreak protocol#128
polinikita wants to merge 9 commits intomainfrom
feat/mysticeti-compress

Conversation

@polinikita
Copy link
Member

Summary

  • add the Bluestreak protocol as the final name for the former MysticetiCompress implementation
  • wire Bluestreak through the DAG, commit, sync, orchestrator, and dryrun paths
  • add Bluestreak smoke and unit coverage, including the dedicated commit smoke test

Test plan

  • cargo check --all-features
  • cargo test -p starfish-core --lib bluestreak

polinikita and others added 9 commits March 19, 2026 17:45
Add MysticetiCompress to ConsensusProtocol enum with from_str parsing,
helper methods (is_mysticeti_compress, uses_dual_dag), and wire into
all match arms: PushCausal dissemination, no erasure coding, Blake3
transaction commitment, ancestor-based subdag collection, full-block
format, wave_length=3 with pipeline=true (3 pipelined committers).
Add Optional<BlockReference> field for MysticetiCompress unprovable
certificate mechanism. Includes accessors on BlockHeader and
VerifiedBlock. All existing callers pass None. Digest integration
deferred to block building step.
…cetiCompress

Add optional unprovable_certificate field to BlockHeader to support
the MysticetiCompress protocol. This field references a leader block at
round r-2 that is claimed to have been seen by 2f+1 validators at
round r-1, and is part of the signed block hash for compression.

Changes:
- Add unprovable_certificate: Option<BlockReference> field to BlockHeader
- Add accessor methods unprovable_certificate() to BlockHeader and VerifiedBlock
- Initialize field to None in all BlockHeader constructors
- Update BlockDigest hashing to include unprovable_certificate in digest
- Update all Block Digest::new and new_without_transactions calls to pass parameter
- Update Signer::sign_block and PublicKey::verify_signature_in_block to handle field

Co-Authored-By: Claude <noreply@anthropic.com>
MysticetiCompress non-leaders include at most own_prev + leader at r-1.
Leaders keep the full clean-DAG frontier. compute_unprovable_certificate
checks direct evidence (2f+1 votes at r-1) and propagation (f+1 at r).
Replace SailfishPlusPlus-specific checks with uses_dual_dag() helper:
- Certified ref recovery now applies to both SailfishPlusPlus and MysticetiCompress
- proposal_round logic for vertex certification applies to both dual DAG protocols

This enables MysticetiCompress to benefit from the same vertex certification
and proposal timing mechanisms as SailfishPlusPlus.

Co-Authored-By: Claude <noreply@anthropic.com>
Replace explicit SailfishPlusPlus checks with uses_dual_dag() helper
in dag_state.rs to support both SailfishPlusPlus and MysticetiCompress
protocols for:
- Vertex certification recovery from storage
- Proposal round calculation (requires certified vertices)
- Certified parent quorum checks

This enables MysticetiCompress to benefit from the dual DAG
infrastructure (clean/dirty DAG with vertex certification).

Co-Authored-By: Claude <noreply@anthropic.com>
…etiCompress

Ensure unprovable_certificate targets are included in missing
dependencies check. When a MysticetiCompress block references an
unprovable certificate, that certificate block must be present
in the vertex certification set before the block can be processed.

This maintains ancestor-closure invariant for the clean DAG.

Co-Authored-By: Claude <noreply@anthropic.com>
@polinikita polinikita closed this Mar 19, 2026
@polinikita polinikita deleted the feat/mysticeti-compress branch March 19, 2026 19:43
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