consensus-shipyard / consensuslab

The go-to place for scalable decentralised consensus research
65 stars 3 forks source link

🚧 | Y5: Implement existing BFT consensus in subnets #14

Closed jsoares closed 2 years ago

jsoares commented 2 years ago

Description

We intend to rapidly experiment with the hierarchical consensus architecture by integrating an existing, production-ready BFT implementation as a possible subnet consensus protocol. After analysing several options, we decided on Tendermint as a proof-of-concept.

This project will, therefore, consist of implementing, documenting, and evaluating Tendermint as a consensus layer for Eudico subnets. Tendermint Core will be used in the service-based model, rather than in the traditional ABCI-based model.

image

In our approach, Tendermint Core acts as a message system providing BFT total order broadcast of input messages without any modifications of the Filecoin state. Each Eudico node interacts with a trusted sidecar Tendermint node A Eudico node sends input messages to the corresponding Tendermint node; Tendermint validates them and ensures that the messages are recorded on every Tendermint node in the same order. The Eudico node then retrieves Tendermint blocks, perform static and semantic validation, and generates a Filecoin block with the verified messages, which can be applied directly.

Scope

  1. Explore and test the expressiveness and power of Eudico’s design and interfaces (e.g., Consensus interface) by adding support for the Tendermint consensus protocol.
  2. Improve Eudico characteristics by adding a BFT-type consensus protocol with better characteristics and justified properties in addition to already i plemented and used consensus protocols (e.g., PoW).
  3. Research Eudico's “consensus upgradeability” and improve it if necessary.
  4. Explore Filecoin design and Eudico implementation pitfalls for (potential) future integration with MirBFT protocols.

Dependencies

Resources

Talks

2022-02-07 ConsensusLab Team Week 22Q1: Y5 update Watch the video

Demos

2022-02-10 Y5 Tendermint subnet (Denis) Watch the video

2022-02-21 Y5 Tendermint fault injection (Denis) Watch the video

2022-02-28 Y5 Tendermint fault injection (Denis) Watch the video

jsoares commented 2 years ago

2022-02-21 Meeting Notes

Updates

Discussion

Up next

jsoares commented 2 years ago

2022-02-28

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

jsoares commented 2 years ago

2022-03-07

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

jsoares commented 2 years ago

2022-03-14

✋ Attendees

📣 Updates

🧵 Discussion

We support the use of the same Tendermint blockchain by several subnets, right? And here we are registering a new subnet to the consensus. The assumption here is that only the owner of the node can tailor this registration message, right? Why I ask is because I am wondering how critical would it be for a rogue node to register a subnet he is not part of (or that doesn't even exist yet).

🎯 Up next

jsoares commented 2 years ago

2022-03-21

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

jsoares commented 2 years ago

2022-03-28

✋ Attendees

📣 Updates

🎯 Up next

jsoares commented 2 years ago

The project wrapped up with the implementation demoed in the initial B3 project demo. See respective issue for more details: https://github.com/protocol/ConsensusLab/issues/6.

🥳