Honey Badger BFT #consensus #kafka #raft


Olivier de Jong - Trejo
 

Hi everyone,

Currently BFT can only be achieved by using experimental plugins. I am currently investigating how to use Honey Badger BFT as the consensus algorithm for Hyperledger Fabric. This because of its asynchrony and its leaderless consensus. There is a paper describing this consensus algorithm: https://eprint.iacr.org/2016/199.pdf. Furthermore, POA Network has released a Rust implementation of this algorithm. I was wondering if anyone would be interested in making this a project


Gari Singh <garis@...>
 

Interesting idea ... any reason you chose Honey Badger over Tendermint?
Tendermint is written in Go and would be "easier" in the sense that you would not have to implement the actual protocol.
I don't think there's Go implementation of Honey Badger and will you could probably use the Rust implementation via cgo or rewriting it in Go, if your goal is a BFT orderer, you might want to start with Tenbermint instead.

There's also some work going on in the background from the Fabric team to implement a BFT consensus mechanism as well.
You might want to reach out on the #orderer channel or ping @jyellick

-- G

-----------------------------------------
Gari Singh
Distinguished Engineer, CTO - IBM Blockchain
IBM Middleware
550 King St
Littleton, MA 01460
Cell: 978-846-7499
garis@...
-----------------------------------------

-----fabric@... wrote: -----
To: fabric@...
From: "Olivier de Jong - Trejo"
Sent by: fabric@...
Date: 08/08/2019 09:57AM
Subject: [EXTERNAL] [Hyperledger Fabric] Honey Badger BFT #consensus #kafka #raft

Hi everyone,

Currently BFT can only be achieved by using experimental plugins. I am currently investigating how to use Honey Badger BFT as the consensus algorithm for Hyperledger Fabric. This because of its asynchrony and its leaderless consensus. There is a paper describing this consensus algorithm: https://eprint.iacr.org/2016/199.pdf. Furthermore, POA Network has released a Rust implementation of this algorithm. I was wondering if anyone would be interested in making this a project


Olivier de Jong - Trejo
 

Hi Gari,

Thank you for your reply. There are actually reasons for choosing Honey Badger over Tendermint. These are outlined in an article written by POA Network on Medium. The first one is asynchrony. With Honey Badger BFT there are no timing assumptions. Messages can arrive at any time, and network speed determines the transaction rate. This improves efficiency in both fast and slow networks, as the block rate does not need to be configured based on scenarios or assumptions, it follows the true speed of the network. The second is leaderless consensus. Honey Badger BFT consensus mechanism does not require a leader node to propose transactions. Every node is a proposer. This eliminates potential attacks where a leader node can be stalled indefinitely, bringing the entire network to a halt. The third one is efficient and secure message distribution. Based on algorithms developed by Miller et al., the Honey Badger library uses several techniques to effectively encrypt, split and send messages in small chunks. This saves bandwidth and creates an extremely efficient process. The article can be found on Medium.

I think that using Honey Badger would be the best option. The Rust implementation is well written and can be found on Github. Before getting started, I will reach out in the orderer channel.