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
File | Description |
---|---|
SynController.py | Synchronous controller that controls the running of the protocol |
File | Description |
---|---|
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 |
File | Description |
---|---|
CrashAdversary.py | Crash adversary |
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 |
File | Description |
---|---|
HerdingStat.py | Statistics vulnerability analysis on Herding |
git clone [email protected]:FTRobbin/Edelweiss.git
Run the default experiment
python3 Main.py
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
python3 stat.py
Result is in the file HerdingStat.txt under directory Edelweiss/src
To test all the protocols,run
python3 test.py
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
Chujun Song, Haobin Ni, 2018