Skip to content

Implementation of the Practical Byzantine Fault Tolerant Algorithm (pbft)

License

Notifications You must be signed in to change notification settings

luckydonald/pbft

Repository files navigation

pbft

Implementation of the Peters Practical Byzantine Fault Tolerant Algorithm    

Web GUI

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.

image

You can also get insight which messages get send by which node to which node.

image

Code status

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.

Java PBFT Node

Build Status Coverage Status

API Server

Build Status Coverage Status

Get the Code

git clone --recursive https://github.com/luckydonald/pbft.git

If you forget --recursive, the phppgadmin container won't be available.

Starting everything

You need Docker installed.

$ docker-compose build

Because some services need longer to start it is best to start them in the following order:

  1. Database and Database browser

    $ docker-compose up -d postgres postgres_browser
  2. The API

    $ docker-compose up -d api 
  3. Start the web GUI

    $ docker-compose up -d web
  4. 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
  1. Start the nodes

    $ docker-compose up -d node
  2. Stop & reset everything

    $ docker-compose down

Standart Ports and URLs

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/

Links

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 pbft database structure