{"id":35136994,"url":"https://github.com/parallelchain-io/hotstuff_rs","last_synced_at":"2026-04-04T12:58:30.299Z","repository":{"id":122333351,"uuid":"517968473","full_name":"parallelchain-io/hotstuff_rs","owner":"parallelchain-io","description":"Performant Byzantine Fault Tolerant State Machine Replication (BFT SMR) in Rust.","archived":false,"fork":false,"pushed_at":"2024-12-29T19:02:14.000Z","size":4520,"stargazers_count":57,"open_issues_count":26,"forks_count":12,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-30T15:44:44.176Z","etag":null,"topics":["blockchain","consensus","distributed-systems","fullnode-and-components","rust-library"],"latest_commit_sha":null,"homepage":"https://parallelchain.io","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parallelchain-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-07-26T08:03:24.000Z","updated_at":"2025-12-05T08:42:46.000Z","dependencies_parsed_at":"2023-10-13T02:03:27.781Z","dependency_job_id":"41e1a759-f71f-4915-9193-1bb5b55153f8","html_url":"https://github.com/parallelchain-io/hotstuff_rs","commit_stats":{"total_commits":223,"total_committers":2,"mean_commits":111.5,"dds":0.004484304932735439,"last_synced_commit":"56f4a942e9f580827009124072bec5f4e3871fd3"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/parallelchain-io/hotstuff_rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallelchain-io%2Fhotstuff_rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallelchain-io%2Fhotstuff_rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallelchain-io%2Fhotstuff_rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallelchain-io%2Fhotstuff_rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parallelchain-io","download_url":"https://codeload.github.com/parallelchain-io/hotstuff_rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parallelchain-io%2Fhotstuff_rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31400460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blockchain","consensus","distributed-systems","fullnode-and-components","rust-library"],"created_at":"2025-12-28T09:37:14.130Z","updated_at":"2026-04-04T12:58:30.290Z","avatar_url":"https://github.com/parallelchain-io.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./readme_assets/HotStuff-rs%20logo.png\" alt=\"Description\" width=\"200\" /\u003e\n  \u003ch1\u003eHotStuff-rs\u003c/h1\u003e\n  \n  \u003cp\u003e\n    \u003cb\u003ePerformant Byzantine Fault Tolerant State Machine Replication (BFT SMR) in Rust\u003c/b\u003e\n  \u003c/p\u003e\n  \n  \u003ca href=\"https://parallelchain-io.github.io/hotstuff_rs_docs/tag/v0.4.0/hotstuff_rs/index.html\"\u003eComprehensive Docs\u003c/a\u003e\n  | \n  \u003ca href=\"https://github.com/parallelchain-io/hotstuff_rs/tree/v0.4.0/tests\"\u003eExamples\u003c/a\u003e\n  |\n  \u003ca href=\"https://github.com/parallelchain-io/hotstuff_rs/releases\"\u003eChangelog\u003c/a\u003e\n\n  \u003cp\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\n[![crates.io](https://img.shields.io/crates/v/hotstuff_rs)](https://crates.io/crates/hotstuff_rs)\n![License](https://img.shields.io/crates/l/hotstuff_rs)\n[![dependency status](https://deps.rs/crate/hotstuff_rs/0.4.0/status.svg)](https://deps.rs/crate/hotstuff_rs/0.4.0)\n\n\u003c!-- prettier-ignore-end --\u003e\n  \u003c/p\u003e\n\n\u003c/div\u003e\n\n## Introduction\n\nHotStuff-rs is a Rust Programming Language library for performant Byzantine Fault Tolerant State Machine Replication (BFT SMR).\n  \nHotStuff-rs implements a variant of the HotStuff consensus protocol, but with extensions like block-sync and dynamic\nvalidator sets that makes this library suited for real-world use-cases (and not just research systems). Some desirable\nproperties that HotStuff-rs has are:\n- **Provable Safety** in the face of up to 1/3rd of voting power being Byzantine at any given moment.\n- **Optimal Performance**: consensus in (amortized) 1 round trip time.\n- **Simplicity**: A small API (App) for plugging in arbitrary stateful applications.\n- **Modularity**: pluggable networking, state persistence, and view-synchronization mechanism.\n- **Dynamic Validator Sets** that can update without any downtime based on state updates: a must for PoS blockchain \n   applications.\n- **Batteries included**: comes with a block-sync protocol and (coming soon) default implementations for networking,\n   state, and pacemaker: you write the app, we handle the replication.\n\n## Terminology\n \n- **App**: user code which implements the App trait. This can be any business logic that can be expressed\n  as a deterministic state machine, i.e., a pure function of kind: `(Blockchain, App State, Validator Set, Block) -\u003e\n  (Next Blockchain, Next App State, Next Validator Set)`.\n- **Replica**: a public-key-identified process that hosts an implementation of the HotStuff-rs protocol, e.g., this\n  library. There are two kinds of Replicas: validators and listeners, and each replica contains an instance of an app.\n- **Blockchain**: a growing sequence of **Blocks**, which can be thought of as instructions to update a replica's App\n  State and Validator Set.\n- **App State**: a key-value store that applications can use to store anything; two replicas with the same Blockchain\n  are guaranteed to have the same app state.\n- **Validator Set**: the set of replicas who can vote in a consensus decision.\n- **Progress protocol**: the protocol replicas use to create new blocks through consensus and grow the blockchain.\n- **Sync protocol**: the protocol new or previously offline replicas use to quickly catch up to the head of the\n  blockchain.\n\n## Getting Started\n\nThe [integration tests](./tests/) serve as good examples on how to get a dummy HotStuff-rs network up and running. \n\nTo really understand HotStuff-rs however, we recommend that you read the\n [comprehensive docs](https://parallelchain-io.github.io/hotstuff_rs_docs/tag/v0.4.0/hotstuff_rs/index.html). Like the [docs.rs](https://docs.rs/hotstuff_rs/latest/hotstuff_rs/), which is also available, these are generated using `cargo doc`. Unlike the docs.rs however,\nthese include documentation for internal modules and definitions instead of hiding them. We believe that the documentation\nfor these items are essential for understanding the features and guarantees of HotStuff-rs SMR, and that understanding them\nrequire no prerequisite knowledge about SMR algorithms!\n\n\n## Opening an issue\n\nOpen an issue in GitHub if you:\n1. Have a feature request / feature idea,\n2. Have any questions (particularly software related questions),\n3. Think you may have discovered a bug.\n\nPlease try to label your issues appropriately.\n\n## The HotStuff Consensus Protocol\n\nHotStuff works by building a 'BlockTree': a directed acyclic graph of Blocks. Block is a structure with a `data` field which applications are free to populate with arbitrary byte-arrays. In consensus algorithm literature, we typically talk of consensus algorithms as maintaining state machines that change their internal states in response to commands, hence the choice of terminology.\n\nHotStuff guarantees that committed Blocks are *immutable*. That is, they can never be *un*-committed as long as at least a supermajority of voting power faithfully execute the protocol. This guarantee enables applications to make hard-to-reverse actions with confidence. \n\n![A graphic depicting a Tree (DAG) of Blocks. Blocks are colored depending on how many confirmations they have.](./readme_assets/BlockTree%20Structure%20Diagram.png)\n\nA Block becomes *committed* the instant its third confirmation is written into the BlockTree. A confirmation for a Block `A` is another Block `B` such that there is path between `B` to `A`.\n\nThe choice of third confirmation to define commitment--as opposed to first or second--is not arbitrary. HotStuff's safety and liveness properties actually hinge upon on this condition. If you really want to understand why this is the case, you should read the [paper](./readme_assets/HotStuff%20paper.pdf). To summarize:\n\n1. Classic BFT consensus algorithms such as PBFT require only 2 confirmations for commitment, but this comes at the cost of expensive leader-replacement flows.\n2. Tendermint require only 2 confirmations for commitment and has a simple leader-replacement flow, but needs an explicit 'wait-for-N seconds' step to guarantee liveness.\n\nHotStuff is the first consensus algorithm with a simple leader-replacement algorithm that does not have a 'wait-for-N seconds' step, and thus can make progress as fast as network latency allows.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallelchain-io%2Fhotstuff_rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparallelchain-io%2Fhotstuff_rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparallelchain-io%2Fhotstuff_rs/lists"}