Modularize LibraBFT

I am wondering if there is a plan to make LibraBFT as a module like Tendermint? Tendermint implements a block-by-block forkless BFT consensus, which allows any developer to use the consensus to develop their chains via ABCI protocol. Connecting the Tendermint ABCI via gRPC or tcp, a developer can develop the chains in any other language. This simplifies blockchain development and also could encourage wider usage of LibraBFT such as in consortium space.

Thank you for your suggestion.

Modularizing LibraBFT has a lot of benefits such as enabling researchers to experiment with the standalone protocol as well as allowing it to be leveraged in other projects and codebases.

It’s certainly a long-term goal of the project (our current roadmap is quite full) and we hope to provide an update in the future.

We did some work on this on this (now out-of-date) branch:

It doesn’t extract just LibraBFT: it still reuses the Libra network/P2P code, mempool, etc, however it does make VMExecutor and VMValidator fully generic so a different transaction state machine/validator can be swapped in.

We’re potentially interested in upstreaming this if there’s interest both from others and on the Calibra side of things.

Thanks for sharing and nice work @tarcieri. This is the direction we would like to move in, breaking dependencies in consensus so it can eventually be a standalone module. That being said, given that we are very focused on the current roadmap and that the code is rapidly evolving, we will likely have to focus on this type of work a bit later on.

1 Like