Skip to content

Latest commit

 

History

History
28 lines (20 loc) · 1.66 KB

README.md

File metadata and controls

28 lines (20 loc) · 1.66 KB

DAG-Rider

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.

Build + Run

  • 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

Dependencies

To-Do

  • Drastic refactor after CPSC 426
  • Switch from json serialization/deserialization to gRPC/protobufs