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.
- View-stamped Replication Revisited [Liskov et al. 2012]
- Practical Byzantine Fault Tolerance [Castro et al. 1999]
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-clntin the main directorydebug- similar toallbut with debug flags and logging enabledclean- cleans the./build/directory and all the executablesvrr-srv- builds only the server code and generates./vrr-srvexecutablebenchmark-clnt- builds only the bench client code. exec:./benchmark-clnttest-clnt- builds only the test client code and generates./test-clntexecutable
./vrr-srv <config_file> <server_id>
<config_file>- path to the config file (see below)<server_id>- a unique id>= 0and< 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, ...)
<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.