All Projects → yahoo → bftkv

yahoo / bftkv

Licence: Apache-2.0 License
A distributed key-value storage that's tolerant to Byzantine fault.

Programming Languages

javascript
184084 projects - #8 most used programming language
go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to bftkv

Dvid
Distributed, Versioned, Image-oriented Dataservice
Stars: ✭ 174 (+544.44%)
Mutual labels:  big-data, key-value
Redislite
Redis in a python module.
Stars: ✭ 464 (+1618.52%)
Mutual labels:  big-data, key-value
bigtable
TypeScript Bigtable Client with 🔋🔋 included.
Stars: ✭ 13 (-51.85%)
Mutual labels:  big-data, key-value
Pgm Index
🏅State-of-the-art learned data structure that enables fast lookup, predecessor, range searches and updates in arrays of billions of items using orders of magnitude less space than traditional indexes
Stars: ✭ 499 (+1748.15%)
Mutual labels:  research, big-data
x86-Assembly-Reverse-Engineering
🛠 Knowledge about the topic of x86 assembly & disassembly 🛠
Stars: ✭ 27 (+0%)
Mutual labels:  research
research
ethereum, leveldb
Stars: ✭ 25 (-7.41%)
Mutual labels:  research
Anti-Debug-DB
Anti-Debug encyclopedia contains methods used by malware to verify if they are executed under debugging. It includes the description of various anti-debug tricks, their implementation, and recommendations of how to mitigate the each trick.
Stars: ✭ 20 (-25.93%)
Mutual labels:  research
dynamicslearn
Working directory for dynamics learning for experimental robots.
Stars: ✭ 40 (+48.15%)
Mutual labels:  research
saffrontree
SaffronTree: Reference free rapid phylogenetic tree construction from raw read data
Stars: ✭ 17 (-37.04%)
Mutual labels:  research
Main
Management materials and content
Stars: ✭ 32 (+18.52%)
Mutual labels:  research
Settings
A Laravel multi-tenant settings manager
Stars: ✭ 36 (+33.33%)
Mutual labels:  key-value
SparkProgrammingInScala
Apache Spark Course Material
Stars: ✭ 57 (+111.11%)
Mutual labels:  big-data
mnist1d
A 1D analogue of the MNIST dataset for measuring spatial biases and answering "science of deep learning" questions.
Stars: ✭ 72 (+166.67%)
Mutual labels:  research
failure-modes
Collection of how and why our software systems fail
Stars: ✭ 18 (-33.33%)
Mutual labels:  research
adage
Data and code related to the paper "ADAGE-Based Integration of Publicly Available Pseudomonas aeruginosa..." Jie Tan, et al · mSystems · 2016
Stars: ✭ 61 (+125.93%)
Mutual labels:  research
registry
Joomla Framework Registry Package
Stars: ✭ 16 (-40.74%)
Mutual labels:  key-value
Research
Non-technical Blockchain Research Topics
Stars: ✭ 22 (-18.52%)
Mutual labels:  research
v6.dooring.public
可视化大屏解决方案, 提供一套可视化编辑引擎, 助力个人或企业轻松定制自己的可视化大屏应用.
Stars: ✭ 323 (+1096.3%)
Mutual labels:  big-data
PySDM
Pythonic particle-based (super-droplet) warm-rain/aqueous-chemistry cloud microphysics package with box, parcel & 1D/2D prescribed-flow examples in Python, Julia and Matlab
Stars: ✭ 26 (-3.7%)
Mutual labels:  research
predictionio-sdk-php
PredictionIO PHP SDK
Stars: ✭ 269 (+896.3%)
Mutual labels:  big-data

bftkv

BFTKV is a distributed key-value storage which is tolerant to Byzantine fault. See Abstract for details.

GoDoc

Additional documents:

Design Document (restricted)

Paper (draft)

HTTP-API

Implementation Notes

Test Notes

Setup

  1. Install Go 1.13.
  2. go get -u github.com/yahoo/bftkv
  3. Install GnuPG 2.x
  4. Install Docker (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

Write

Revoke on Read in Action

Revoke on Read

License

Copyright 2017, Yahoo Holdings Inc.

Licensed under the terms of the Apache license. See LICENSE file in project root for terms.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].