Implementation of the Peters Practical Byzantine Fault Tolerant Algorithm
This project supports a web interface to b e a u t i f u l l y
represent what's going on.
You'll get a overview over all the values the nodes measured.
You can also get insight which messages get send by which node to which node.
Please note, the project for which this was made for has reached an end, so the code will not be actively maintained any longer. However, pull requests with fixes and improvements will be merged. Have a look into the bugtracker, if someone else had a similar issue, and already made it work.
git clone --recursive https://github.com/luckydonald/pbft.git
If you forget --recursive
, the phppgadmin
container won't be available.
You need Docker installed.
$ docker-compose build
Because some services need longer to start it is best to start them in the following order:
-
Database and Database browser
$ docker-compose up -d postgres postgres_browser
-
The API
$ docker-compose up -d api
-
Start the web GUI
$ docker-compose up -d web
-
Scale the nodes to use e.g.
4
instances
- a) Older compose syntax
$ docker-compose scale node=4
- b) Newer compose syntax
docker-compose up --scale node=4
-
Start the nodes
$ docker-compose up -d node
-
Stop & reset everything
$ docker-compose down
- Remove unused containers:
$ docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
- Remove unused containers:
Assuming your docker is publishing it's ports on localhost
.
Server | URL |
---|---|
API | http://localhost:80/ |
Database | http://localhost:8080/phppgadmin/ |
Web GUI | http://localhost:8000/src/ |
The whole project: https://github.com/luckydonald/pbft
The Java node implementation: https://github.com/luckydonald/PBFT-JAVA
DB Struktur (for debugging and powering the web gui): https://editor.ponyorm.com/user/luckydonald/pbft