https://github.com/myl7/pbft
PBFT (Practical Byzantine fault tolerance) implementation focused on composability
https://github.com/myl7/pbft
bft blockchain pbft
Last synced: 12 months ago
JSON representation
PBFT (Practical Byzantine fault tolerance) implementation focused on composability
- Host: GitHub
- URL: https://github.com/myl7/pbft
- Owner: myl7
- License: apache-2.0
- Created: 2022-08-03T13:47:10.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-29T08:36:08.000Z (about 1 year ago)
- Last Synced: 2025-04-30T07:39:57.744Z (about 1 year ago)
- Topics: bft, blockchain, pbft
- Language: Go
- Homepage:
- Size: 71.3 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# myl7/pbft
PBFT (Practical Byzantine Fault Tolerance) implementation focused on composability
The project is aimed for academic use currently.
It may consider production use as a long-term goal, but not now.
## Getting Started
All required interfaces are in the [`traits.go`](traits.go) file.
All you need to do is to implement all (public) interfaces, then pass them to `NewNode` function to initialize a `Node`, and finally pass received PBFT messages from the network to `Node` respective `Handle*` methods.
## Features
- Basic PBFT (request, preprepare, prepare, commit, reply)
- Custom KV storage backend
- Custom network communication
- Custom state machine, to fit whatever you want to do
## Caveats
- No checkpoint
- No view change
- Some ignored (so) edge cases. Search `TODO` comments in the code for details.
- NO READY FOR PRODUCTION USE, yet. Please only use it for academic purposes currently.
## License
Copyright (C) 2022 myl7
SPDX-License-Identifier: Apache-2.0