Skip to main content

Crate hashgraph_like_consensus

Crate hashgraph_like_consensus 

Source
Expand description

A lightweight consensus library for making binary decisions in P2P networks.

This library implements the Hashgraph-like Consensus Protocol, which lets groups of peers vote on proposals and reach agreement even when some peers are unreliable or malicious. It’s designed to be fast (O(log n) rounds), secure (Byzantine fault tolerant), and easy to embed in your application.

§How it works

  1. Someone creates a types::CreateProposalRequest within a scope.
  2. Peers cast votes (yes/no), each cryptographically signed and linked into a hashgraph.
  3. Once enough votes are collected the session transitions to session::ConsensusState::ConsensusReached and a types::ConsensusEvent is emitted.

§Getting started

The main entry point is service::DefaultConsensusService (a type alias for service::ConsensusService with in-memory storage and broadcast events).

use hashgraph_like_consensus::{
    api::ConsensusServiceAPI,
    scope::ScopeID,
    service::DefaultConsensusService,
    types::CreateProposalRequest,
};
use alloy::signers::local::PrivateKeySigner;

let service = DefaultConsensusService::default();
let scope = ScopeID::from("my-scope");
let signer = PrivateKeySigner::random();

let proposal = service
    .create_proposal(
        &scope,
        CreateProposalRequest::new(
            "Upgrade contract".into(),
            b"Switch to v2".to_vec(),
            signer.address().as_slice().to_vec(),
            3,    // expected voters
            60,   // expiration (seconds from now)
            true, // tie-breaker: YES wins on equality
        )?,
    )
    .await?;

let vote = service
    .cast_vote(&scope, proposal.proposal_id, true, signer)
    .await?;

§Modules

Modules§

api
Public API trait for the consensus service.
error
Error types for the consensus library.
events
protos
scope
scope_config
Scope-level configuration for consensus defaults.
service
service_consensus
Implementation of ConsensusServiceAPI for ConsensusService.
service_stats
Scope-level statistics for monitoring consensus activity.
session
Consensus session and configuration types.
storage
Storage trait and default in-memory implementation.
types
Core request and event types.
utils
Low-level helpers for hashing, signing, validation, and consensus calculation.