Skip to content

keshav11/ByzantineChainReplication

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  1. Unzip the release zip in your Windows 10 PC. Go to the root of the unzipped folder.
  2. Put your config file in config folder.
  3. Open two command line terminals
  4. 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>
  5. 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:

  1. open 2 command line terminals
  2. 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
  3. 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

About

Distalgo Implementation of Byzantine Chain Replication capable of tolerating t failures with 2t*1 replicas

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages