All Projects → helium → erlang-hbbft

helium / erlang-hbbft

Licence: Apache-2.0 license
Erlang implementation of HoneyBadgerBFT

Programming Languages

erlang
1774 projects
Makefile
30231 projects

Projects that are alternatives of or similar to erlang-hbbft

distributed-dev-learning
汇总、整理常用的分布式开发技术,给出demo,方便学习。包括数据分片、共识算法、一致性hash、分布式事务、非侵入的分布式链路追踪实现原理等内容。
Stars: ✭ 39 (-43.48%)
Mutual labels:  consensus-algorithm
Distributed Consensus Reading List
A long list of academic papers on the topic of distributed consensus
Stars: ✭ 803 (+1063.77%)
Mutual labels:  consensus-algorithm
Awesome Consensus
Awesome list for Paxos and friends
Stars: ✭ 1,619 (+2246.38%)
Mutual labels:  consensus-algorithm
blockchain-consensus
This is my attempt to list all possible blockchain consensus out there, i welcome pull request of the blockchain community! lets make it the main reference for blockchain consensus
Stars: ✭ 79 (+14.49%)
Mutual labels:  consensus-algorithm
Python blockchain app
A fully functional blockchain application implemented in Python from scratch (with tutorial).
Stars: ✭ 510 (+639.13%)
Mutual labels:  consensus-algorithm
Exonum
An extensible open-source framework for creating private/permissioned blockchain applications
Stars: ✭ 1,037 (+1402.9%)
Mutual labels:  consensus-algorithm
dusk-blindbid
Implementation of the blindbid logic within Zero Knowledge Proofs
Stars: ✭ 18 (-73.91%)
Mutual labels:  consensus-algorithm
Unetwork
U Network Public Blockchain
Stars: ✭ 189 (+173.91%)
Mutual labels:  consensus-algorithm
Copycat
A novel implementation of the Raft consensus algorithm
Stars: ✭ 551 (+698.55%)
Mutual labels:  consensus-algorithm
Blockchaintechnology
Blockchain Frontier Technology Tracking
Stars: ✭ 88 (+27.54%)
Mutual labels:  consensus-algorithm
Iwant
Commandline tool for searching and downloading files in LAN network, without any central server
Stars: ✭ 268 (+288.41%)
Mutual labels:  consensus-algorithm
Babble
Distributed Consensus Middleware
Stars: ✭ 373 (+440.58%)
Mutual labels:  consensus-algorithm
Loopchain
Blockchain engine for icon foundation.
Stars: ✭ 69 (+0%)
Mutual labels:  consensus-algorithm
MIT6.824-2021
4 labs + 2 challenges + 4 docs
Stars: ✭ 594 (+760.87%)
Mutual labels:  consensus-algorithm
Raft.net
Implementation of RAFT distributed consensus algorithm among TCP Peers on .NET / .NETStandard / .NETCore / dotnet
Stars: ✭ 112 (+62.32%)
Mutual labels:  consensus-algorithm
avalanche
A educational / research implementation of the Avalanche consensus algorithm written in Rust
Stars: ✭ 18 (-73.91%)
Mutual labels:  consensus-algorithm
Rsm
distributed computing toolkit in rust
Stars: ✭ 17 (-75.36%)
Mutual labels:  consensus-algorithm
lol
A Raft implementation in Rust language. The name is not a joke.
Stars: ✭ 130 (+88.41%)
Mutual labels:  consensus-algorithm
Atomix
A reactive Java framework for building fault-tolerant distributed systems
Stars: ✭ 2,182 (+3062.32%)
Mutual labels:  consensus-algorithm
Skinny
The Skinny Distributed Lock Service
Stars: ✭ 70 (+1.45%)
Mutual labels:  consensus-algorithm

erlang_hbbft

Build Status

Erlang implementation of HoneyBadgerBFT's protocols.

The HoneyBadgerBFT paper defines 5 protocols:

  • HoneyBadgerBFT - the top level protocol, runs a new instance of ACS each round
  • Asynchronous Common Subset (ACS) - uses RBC and BBA to agree on set of encrypted 'bundles' of transactions
  • Reliable Broadcast (RBC) - uses erasure coding to disseminate an encrypted bundle
  • Binary Byzantine Agreement (BBA) - uses a common coin to agree that a majority of nodes agree that a RBC completed
  • Common Coin - uses threshold signatures to allow nodes to construct a common random value used as a 'coin flip' in BBA

The protocols are implemented in a somewhat unconventional way, they are implemented as pure data structures that take inputs (messages) and (sometimes) return outputs or results. They have no notion themselves of networking, time or actor identity (actors are simply numbered 0..N-1).

External code is expected to provide networking, serialization and a mapping from real actor identity (eg PKI public keys and signatures or IP addresses, whatever) to a consistent index into the consensus group.

The sub protocols are embedded in their parent protocols and their messages get 'wrapped' by their containing protocols (and un-wrapped upon ingest). This makes testing them individually and composing them very easy.

Build

$ make

Test

$ make test

TypeCheck

$ make typecheck

Coverage

$ make cover

References

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].