Skip to content

shayan-mk/View-stamped_Replication_Library

Repository files navigation

View-stamped Replication Library

An implementation of View-stamped Replication in C based on View-stamped Replication Revisited (VRR) paper.

This is under development. Byzantine Fault Tolerance implementation is expected to be added later based on the Practical Byzantine Fault Tolerance (PBFT) paper.

References:


make/gmake targets:

Compatible with both gcc and clang.
Use make on Linux and gmake on FreeBSD.

  • all (default) - builds both the client and server code in ./build/ directory. The executables are ./vrr-srv, ./benchmark-clnt, and ./test-clnt in the main directory
  • debug - similar to all but with debug flags and logging enabled
  • clean - cleans the ./build/ directory and all the executables
  • vrr-srv - builds only the server code and generates ./vrr-srv executable
  • benchmark-clnt - builds only the bench client code. exec: ./benchmark-clnt
  • test-clnt - builds only the test client code and generates ./test-clnt executable

Usage:

  • ./vrr-srv <config_file> <server_id>
    • <config_file> - path to the config file (see below)
    • <server_id> - a unique id >= 0 and < servers_count (0, 1, 2, ...)
  • ./benchmark-clnt <config_file> <client_id> <req_count>
    • <config_file> - path to the config file (see below)
    • <client_id> - an arbitrary unique id >0 (1, 2, 3, ...)
    • <req_count> - number of requests to send to the server
  • ./test-clnt <config_file> <client_id>
    • <config_file> - path to the config file (see below)
    • <client_id> - an arbitrary unique id >0 (1, 2, 3, ...)

Config file format:

<servers_count>
<server0_addr>  <server0_port>
<server1_addr>  <server1_port>
...

Some of the known issues are addressed in ./known_issues.txt and are expected to be fixed soon.

About

An implementation of View-stamped Replication in C.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages