An non-production-grade implementation of DAG-Rider, an asynchronous, post-quantum safe, Byzantine Atomic Broadcast protocol, written in modern C++23, compiled with clang/llvm 18.1.8. At the time of writing and to the best of my knowledge, this is the only publically available C++ implementation.
The goal of this initial implementation was to practice implementing a modern consensus protocol directly from a white paper, rapidly improve my C++ skills, and explore the nuances of this BAB protocol. I plan to drastically refactor this codebase into a performant, production-grade BAB layer after completing CPSC 426 - Building Distributed Systems at Yale this December.
- To build and run a sample application which utilizes DAG-Rider for BAB, run the following commands in the root directory of this project:
mkdir src/node/build/
cmake src/node/ src/node/build/
cmake --build ./src/node/build/
src/node/build/Node --id 1 --address 127.0.0.1 --port 12345
- Drastic refactor after CPSC 426
- Switch from json serialization/deserialization to gRPC/protobufs