https://github.com/luckydonald/pbft
Implementation of the Practical Byzantine Fault Tolerant Algorithm (pbft)
https://github.com/luckydonald/pbft
api beautiful byzantine-fault-tolerance coverage-status docker java java-node pbft python web-gui
Last synced: 10 months ago
JSON representation
Implementation of the Practical Byzantine Fault Tolerant Algorithm (pbft)
- Host: GitHub
- URL: https://github.com/luckydonald/pbft
- Owner: luckydonald
- License: gpl-3.0
- Created: 2016-10-04T07:58:22.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-12-29T21:01:55.000Z (about 4 years ago)
- Last Synced: 2025-03-26T07:11:31.304Z (10 months ago)
- Topics: api, beautiful, byzantine-fault-tolerance, coverage-status, docker, java, java-node, pbft, python, web-gui
- Language: HTML
- Homepage: https://github.com/luckydonald/pbft
- Size: 2.28 MB
- Stars: 136
- Watchers: 4
- Forks: 45
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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.

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

## 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
[](https://travis-ci.org/luckydonald/PBFT-JAVA) [](https://coveralls.io/github/luckydonald/PBFT-JAVA?branch=master)
#### API Server
[](https://travis-ci.org/luckydonald/pbft) [](https://coveralls.io/github/luckydonald/pbft?branch=master)
## Get the Code
```bash
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.
```shell
$ 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
```shell
$ docker-compose up -d postgres postgres_browser
```
2. The API
```shell
$ docker-compose up -d api
```
3. Start the web GUI
```shell
$ docker-compose up -d web
```
4. Scale the nodes to use e.g. `4` instances
- a) Older compose syntax
```shell
$ docker-compose scale node=4
```
- b) Newer compose syntax
```shell
docker-compose up --scale node=4
```
5. Start the nodes
```shell
$ docker-compose up -d node
```
6. Stop & reset everything
```shell
$ docker-compose down
```
- [Remove unused containers](http://stackoverflow.com/a/32723127):
```shell
$ docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
```
## 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
