https://github.com/yahoo/bftkv
A distributed key-value storage that's tolerant to Byzantine fault.
https://github.com/yahoo/bftkv
big-data javascript key-value research visualization
Last synced: 8 months ago
JSON representation
A distributed key-value storage that's tolerant to Byzantine fault.
- Host: GitHub
- URL: https://github.com/yahoo/bftkv
- Owner: yahoo
- License: apache-2.0
- Created: 2017-08-15T21:10:05.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-12-27T22:02:40.000Z (about 6 years ago)
- Last Synced: 2025-04-08T18:51:31.330Z (9 months ago)
- Topics: big-data, javascript, key-value, research, visualization
- Language: JavaScript
- Homepage:
- Size: 5.67 MB
- Stars: 30
- Watchers: 10
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# bftkv
BFTKV is a distributed key-value storage which is tolerant to Byzantine fault. See [Abstract](docs/design.md) for details.
[](https://godoc.org/github.com/yahoo/bftkv)
### Additional documents:
[Design Document (restricted)](https://docs.google.com/document/d/14xYeGR291UKba1pimO9DnFNvfZ3ceTYsfbWZbgpWkTQ/edit?usp=sharing)
[Paper (draft)](docs/bftkv.pdf)
[HTTP-API](docs/http_api.md)
[Implementation Notes](docs/notes.md)
[Test Notes](docs/tests.md)
## Setup
1. Install [Go 1.13](https://golang.org/doc/install).
2. `go get -u github.com/yahoo/bftkv`
3. Install [GnuPG 2.x](https://www.gnupg.org/download/index.en.html)
4. Install [Docker](https://www.docker.com) (if you want to run BFTKV in a Docker container)
5. Run `setup.sh` in scripts (`setup.sh -host bftkv` for Docker)
6. If bftkv runs with KeyTransparency, run `$GOPATH/src/github.com/google/keytranspreancy/scripts/gen_bftkv_keys.sh`
## Build
```
# change to the directory where the source code is checked out
cd bftkv
go install -v github.com/yahoo/bftkv/cmd/bftkv
```
## Parameters
A list of parameters that can be supplied to bftkv is given below:
Flag Purpose Default
-home Path to PGP home directory, ~/.gnupg
-sec Secret key ring path, $home/secring.gpg
-pub Public key ring path, $home/pubring.gpg
-rev Revocation list path, $home/revocation.gpg
-db Database path, db
-api Http api address, localhost:5792
-ws Web socket port, 5001
## Run Options
1. Run a node `bftkv -home gnupg.key`
2. Run a BFTKV cluster `cd scripts/run; ../run.sh`
3. Run a BFTKV cluster in Docker
```
docker build -t bftkv .
docker run -d bftkv
```
## Visualization
BFTKV includes a visualization tool (located in `visual/`) for observing the current system state. The tool can display
* Trust graphs for the servers
* Read, write and sign requests sent to the servers
* Revoked and inaccessible servers
To show the graph, run `run.sh` and `open visual/index.html`.
### Write in Action

### Revoke on Read in Action

## License
Copyright 2017, Yahoo Holdings Inc.
Licensed under the terms of the Apache license. See LICENSE file in project root for terms.