This project is an implementation of the Practical Byzantine Fault Tolerance (PBFT) consensus algorithm in Rust. PBFT is a consensus algorithm designed to achieve fault tolerance in distributed systems, particularly in the presence of malicious nodes.
-
PBFT Consensus: Implements the PBFT consensus algorithm, allowing nodes to agree on the order of transactions.
-
Actix Web Integration: Provides a RESTful API for interacting with the PBFT network using Actix Web.
-
Asynchronous: Utilizes asynchronous programming with Tokio for improved performance.
-
JSON Serialization: Uses Serde and Serde JSON for message serialization and deserialization.
- Rust (Stable)
- Cargo (Rust's package manager)
-
Add a node.env file to the project which will have the the following fields
IP=xxx.xxx.xxx.xxx PORT=xxxx NODES=xxx.xxx.xxx,yyy.yyy.yyy.yyy,zzz.zzz.zzz
To build and run the PBFT implementation, follow these steps:
-
Clone this repository:
git clone https://github.com/varshney565/PBFT.git
-
Build the project:
cargo build --release
-
Run the project:
cargo run --release