Skip to content
This repository has been archived by the owner on Aug 11, 2022. It is now read-only.

Tsumida/hotstuff-consensus

Repository files navigation

hotstuff-consensus

Intro

hotstuff-consensus is a Rust implementation of https://dl.acm.org/doi/10.1145/3293611.3331591. This project is under development. Since it's buggy, more tests and refactoring are needed.

Arch

arch

  • HotStuff Proxy: Network event handler and deliverer. Currently the proxy use tarpc to implement reliable event singlecast and broadcast.
  • Machine: Implemetation of event-driven hotstuff algorithm.
  • Pacemaker: Maintains liveness. Pacemaker consists of 3 components:
    • Timer: Setting and cancelling view timer.
    • RoudRobin Elector: mapping view to leader.
    • Branch synchronizer: collecting all missing proposals. In current implemetation it works when it receive a proposal with an unknown proposal.justify.node and then require leader deliver all missing blocks.
  • Signaturer: Verifying, signing and combining partial signatures. This module is stateless and used by Machine, Pacemaker and HotStuffStorage.
  • HotStuff Storage: Shared in-memory storage with a persistent backend(currently based on MySQL). Pacemaker and Machine access HotStuff Storage byLivenessStorage and SafetyStorage respectively.

Releases

No releases published

Packages

No packages published

Languages