Module simplex

Module simplex 

Source
Expand description

Simplex BFT consensus implementation for Guts.

This module provides a production-ready BFT consensus implementation based on the Simplex consensus protocol from commonware. It provides:

  • Fast block times (2 network hops)
  • Optimal finalization latency (3 network hops)
  • Byzantine fault tolerance (up to f < n/3 faulty validators)
  • Externalized uptime and fault proofs

§Architecture

The consensus engine is composed of several actors:

  • Application: Handles block proposal and verification
  • Marshal: Manages block storage and synchronization
  • Buffer: Buffers broadcast messages
  • Consensus (Voter/Batcher/Resolver): Core BFT logic

§Usage

use guts_consensus::simplex::{Engine, Config};

// Create configuration
let config = Config::new(
    blocker,
    my_public_key,
    my_private_key,
    validator_public_keys,
);

// Create engine
let engine = Engine::new(context, config).await;

// Start with P2P channels
engine.start(pending, recovered, resolver, broadcast, marshal);

Re-exports§

pub use application::Actor as ApplicationActor;
pub use application::Config as ApplicationConfig;
pub use application::Mailbox;
pub use application::Message;
pub use block::SimplexBlock;
pub use engine::Config;
pub use engine::Engine;
pub use engine::EngineMetrics;
pub use engine::StaticSchemeProvider;
pub use engine::EPOCH;
pub use engine::NAMESPACE;
pub use types::Activity;
pub use types::Finalization;
pub use types::Notarization;
pub use types::Scheme;

Modules§

application
Application actor for Simplex BFT consensus.
block
Simplex consensus block type.
engine
Simplex BFT consensus engine.
types
Type definitions for Simplex BFT consensus.

Structs§

ValidatorPrivateKey
Re-export the private key type. Ed25519 Private Key.
ValidatorPublicKey
Re-export the public key type. Ed25519 Public Key.