KE
keshav11/ByzantineChainReplication
Distalgo Implementation of Byzantine Chain Replication capable of tolerating t failures with 2t*1 replicas
Byzantine Chain Replication
An implementation of Byzantine Chain Replication based on-
van Renesse R., Ho C., Schiper N. (2012) Byzantine Chain Replication. In: Baldoni R., Flocchini P., Binoy R. (eds) Principles of Distributed Systems. OPODIS 2012. Lecture Notes in Computer Science, vol 7702. Springer, Berlin, Heidelberg
The described system requires 2t+1 replicas to tolerate t Byzantine failures.
Motivation
This was done as course project for the course CSE 535 Asyschronous Systems at Stony Brook University taught by Professor Scott Stoller.
Instructions
- Unzip the release zip in your Windows 10 PC. Go to the root of the unzipped folder.
- Put your config file in config folder.
- Open two command line terminals
- In the first terminal run the following command with <config_file_name.txt> as the argument
python -m da --logfile -n MainNode --logfilename logs\log_verify_result_single_client_2_mainnode.txt -F info --message-buffer-size 100000 src\bcr.da <config_file_name.txt> - In the second terminal run the following command with <config_file_name.txt> as the argument
python -m da --logfile -n ClientNode --logfilename logs\log_verify_result_single_client_2_clientnode.txt -F info --message-buffer-size 100000 src\bcr.da <config_file_name.txt>
For example to run test case 1:
- open 2 command line terminals
- on terminal 1 run the following command-
python -m da --logfile -n MainNode --logfilename logs\log_verify_result_single_client_2_mainnode.txt -F info --message-buffer-size 100000 src\bcr.da config_result_verify_testcase_2.txt - on terminal 2 run the following command-
python -m da --logfile -n ClientNode --logfilename logs\log_verify_result_single_client_2_clientnode.txt -F info --message-buffer-size 100000 src\bcr.da config_result_verify_testcase_2.txt
Workload Generation
Algorithm:
pseudorandom(seed, n):
initialize python's random number generator with the specified seed.
for i in range(n):
generate a random number from 1 to 4 and map it to (get put slice append)
generated key and value using random to generate 4 random lowercase character
Main Files
- src/bcr.da
- src/client.da
- src/object.py
- src/olympus.da
- src/replica.da
Platform
OS: Windows 10
DistAlgo version: 1.0.9
Python implementation: CPython
Python version: 3.5
Contributors
- Keshav Gupta
- Pratik Zambani