Skip to content

An implementation of the Byzantine Chain Replication protocol

Notifications You must be signed in to change notification settings

soumyadeep2007/constantine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# constantine
An implementation of the Byzantine Chain Replication protocol

## PLATFORM
1. DistAlgo 1.0.9
2. Python 3.6.2
3. Windows 10 Education
4. Ubuntu 16.0.4 on VirtualBox with vagrant

## INSTRUCTIONS
1. To run the system, navigate to the src directory and type in the following command:
python -m da --message-buffer-size {size_in_bytes} --logfile --logfilename {log_file_path_with_name} olympus.da {test-case-path}
Example: python -m da --message-buffer-size 1000000 -F output --logfile --logfilename ../log/testcase1 olympus.da ../test_cases/test_operation_change_fwd_request_t1_single_client.csv
Please note: Enter a significantly large buffer size in bytes, like the size in the example above to avoid running
into buffer constraints.

## CONTRIBUTIONS
1. Client, Olympus, logs, documentation - Soumyadeep
2. Replica, config files, testing - Tushar

## BUGS AND LIMITATIONS
1. For result validation simplicity in the client, we have assumed that the keys used for each client's workload
is segregated on a per client basis.
2. Test for: test_operation_change_fwd_request_t2_multi_client.csv is failing intermittently


## WORKLOAD GENERATION
The workload is being generated from a file containing some random request strings with each
string having the following format:
"operation_name(args)"

## MAIN FILES
src/olympus.da
src/client.da
src/replica.da - Contains replica, head and tail.
src/commons.py - Contains common functions required across Replica, Olympus and Client.
src/log_messages.py - Contains the log messages used in the system.
src/random_tasks.py - Contains randomized workload as specified above. It can be modified if the user so desires.

## CODE SIZE
1. LOC (including spaces and comments) =
    i)   Algorithm code ~ 1510 (~72%)
    ii)  Trigger and maintenance code ~ 420 (~20%)
    iii) Log statements ~ 170 (~8%)
    iv) Total = 2100
2. Mechanism to obtain the LOC = Added counts in IDE and used Find to get the counts of logs

## LANGUAGE_FEATURE USAGE
1. List comprehensions = 3
2. Dictionary comprehensions = 2

## OTHER COMMENTS
1. Tried to use inheritance in DistAlgo with Replica as a base and Head and Tail as subclasses,
but encountered problems with the language.

About

An implementation of the Byzantine Chain Replication protocol

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published