Project Edelweiss (Work in Progress)
Edelweiss is a lightweight consensus protocol simulator.
For safer and better consensus protocols!
The program has been tested under python3.5
Run and do vulnerability analysis existing consensus like BOSCO,NaiveVoting,DolevStrong,Herding in a straightforward way,you can see the middle and final results of the running of the protocol and analysis the vulnerability of different protocols quickly.
Provide a set of controllers,environments,settings,adversaries result measures and communication techniques so that you can easily implement and analysis your new consensus protocols without worring about the 'dirty work' of implementing it.
Simulate the kinds of attacks that is theoretical possible but difficulty to achieve or observe in real distributed systems.
Analysis the vulnerability of different protocols,say,change the parameters or weaken the assumptions of the protocols and see their performance
|SynController.py||Synchronous controller that controls the running of the protocol|
|DolevStrong.py||Synchronous DolevStrong protocol|
|Herding.py||Synchronous Herding protocol|
|HerdingWithBroadcastFast.py||Synchronous Herding protocol with broadcast|
|NaiveVoting.py||Synchronous NaiveVoting protocol|
|DolevStrong_Wrong.py||Uncorrectly written DolevStrong protocol|
|BOSCO.py||Synchronous BOSCO protocol|
|HalfHalfSenderAdversary.py||Adversary that sends different msgs to different nodes|
|SynBOSCOAgreementAttacker.py||Synchronous BOSCO agreement adversary|
|SynBOSCOAgreementCentralizedAttacker.py||Synchronous BOSCO centralized agreement adversary|
|SynHerdingAgreementFast.py||Synchronous Herding advanced adversary|
|SynHerdingBenchmarkAttacker.py||Synchronous Herding brute-force adversary|
|DolevStrongRoundAdversary.py||Synchronous DolevStong round adversary|
|HerdingStat.py||Statistics vulnerability analysis on Herding|
git clone firstname.lastname@example.org:FTRobbin/Edelweiss.git
Run a demo experiment
Run the default experiment
Run a specific experiment
python3 Main.py -i experiment_num
experiment_num is the index of the experiment in variable demoProtocols in file TestConfig.py
Do statistics analysis on Herding
Result is in the file HerdingStat.txt under directory Edelweiss/src
To test all the protocols,run
To test a specific protocol,run
python3 test.py -i protocol_num
proticol_num is the index of the prototol in variable TestProtocolsList in file TestConfig