consensus-shipyard / consensuslab

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

🚧 | Y3: Efficient subnet consensus protocols #9

Closed jsoares closed 2 years ago

jsoares commented 2 years ago

Description

Our goal is to design and implement scalable, efficient consensus protocols for subnets (i.e. anything below the top-level Filecoin consensus). This should enable secure, low-latency operation up to ~500 nodes per subnet.

These protocols will be integrated with Eudico, the research clone of the Lotus Filecoin client, supporting a hierarchy of subnets, each running its own instance of a consensus protocol.

To achieve our, we develop Mir, a framework for implementing distributed protocols. The first protocol to be implemented is ISS, a multi-leader BFT-style consensus protocol, in conjunction with Narwhal, a state-of-the-art mempool implementation enabling sale-out throughput.

The design should be, however, general enough, and its implementation sufficiently modular, to make it easy to implement various different consensus protocols and select any of them for any particular subnet deployment.

Scope

Resources

Papers

Talks

soon™️

Demos

2022-04-07, MirBFT

Watch the video

2022-06-02, Crash failures in Mir and its integration with Eudico

Watch the video

2022-08-12, Reproducible Integration Testing in Mir

Watch the video

2022-08-12, Taking Pseudocode To An Implementation With Mir Framework

Watch the video

2022-09-01, Reconfigurable SMR with Mir

Watch the video

2022-09-01, Dynamically adding new nodes to Eudico with Mir

Watch the video

jsoares commented 2 years ago

2022-02-21 meeting notes

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

🎯 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

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-04-11

(Updated by @matejpavlovic 2022-04-12)

✋ Attendees

📣 Updates

🧵 Discussion

Implementation Framework Name

Currently MirBFT - carries historical baggage. Let's rename to

GoNode

Initial idea was Node.go (like Node.js), which would have fit even better to the abstraction it provides, but Node.js is a registered trademark. For now the repository lives at https://github.com/matejpavlovic/go-node and will be populated with code soon.

Consensus Protocol

Given recent research results (Narwhal, Tusk, Bullshark, etc.) and discussions,

  1. it seems like we can have 1 out of 2:
    • request deduplication and
    • resistance to a mobile adversary (DoS resistance).
  2. The long-term solution will almost surely involve a DAG.

Thus, it is worth revisiting the current plan for consensus implementation. The long-term solution will involve a

Conclusion:

🎯 Up next

vukolic commented 2 years ago

Would we need "RustNode" as well?

adlrocha commented 2 years ago

From complete ignorance, @matejpavlovic, how does Mir-BFT relates to Node.js? (I am just wary of this kind of generic names :smile: ). It makes SEO and general discoverability harder.

vukolic commented 2 years ago

+1 I am not a huge fan of the name proposal

dnkolegov commented 2 years ago

Why Node? Node-go or go-node says that "Node" is implemented in Go, but what Node is, and how does it relate to BFT?

If we are talking about names:

matejpavlovic commented 2 years ago

Proposing the initial draft of the design document for incremental implementation of Eudico's ordering layer. Comments welcome! https://hackmd.io/@matejpavlovic/ryd53ZP4c

sergefdrv commented 2 years ago

initial draft of the design document for incremental implementation of Eudico's ordering layer

I left some comments

matejpavlovic commented 2 years ago

2022-04-21

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-04-25

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-05-02

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-05-09

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-05-16

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

jsoares commented 2 years ago

2022-05-23

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-05-30

✋ Attendees

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-06-20

✋ Attendees

No zoom call, just async collaboration on the notes.

📣 Updates

🧵 Discussion

🎯 Up next

atonkikh commented 2 years ago

Oh, hi! I'm just QA engineer from another company, I don't mind learning Rust, but can you help with DSL please. Also, do you pay euros?

xosmig commented 2 years ago

@atonkikh oh, sorry, it's because I also sometimes use atonkikh as my nickname. Don't worry, I'll handle the DSL thing :)

matejpavlovic commented 2 years ago

2022-06-27

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-07-04

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-07-11

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-07-25

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-08-01

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-08-08

📣 Updates

matejpavlovic commented 2 years ago

2022-08-15

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-08-22

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-08-29

📣 Updates

🧵 Discussion

🎯 Up next

matejpavlovic commented 2 years ago

2022-09-19

📣 Updates

🎯 Up next

matejpavlovic commented 2 years ago

Y3 has been merged with the B4 project, including the meeting notes.