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§
- Validator
Private Key - Re-export the private key type. Ed25519 Private Key.
- Validator
Public Key - Re-export the public key type. Ed25519 Public Key.