pocket icon indicating copy to clipboard operation
pocket copied to clipboard

[Consensus] Consensus Onboarding & Knowledge Transfer

Open Olshansk opened this issue 1 year ago • 1 comments

Objective

This is an umbrella ticket to capture references and discussion around knowledge transfer of the Consensus module. The primary focus is to onboard a new team member to co-own the module.

1. Origin Document

2. Knowledge Transfer FAQ

Where is the consensus module today?

We've got a basic version of 3-phase Hotstuff w/ deterministic round robin leader election driving the entire blockchain

What's the (#1) biggest known missing gap?

State sync is not implemented yet. The most basic version of it is in review in #812 and #874.

Note that this implementation uses the FSM (Finite State Machine) but we have decided to remove it as it is adding more complexity than simplicity to the codebase. We plan to make an ADR for this and likely remove it in #821.

What's the (#2) second biggest known missing gap?

The libraries for VRF leader election are in place but have not been integrated into the rest of the codebase.

We use a basic round-robin approach right now.

What's the (#3) third biggest known missing gap?

We haven't implemented penalties double signing yet, or any mechanism related to "evidence" in Tendermint.

There's also a ton of opportunity for this like inactivity leaks and implementing other penalties since we're building our own L1 ;)

What's an (???) unknown gap?

Our block & signature validation process. It's not documented well and there are not sufficient tests in place.

Points of contact for related ongoing work

Who is currently building p2p discovery, churn and gossip?

@bryanchriswhite 🌐

Who is currently building state important, export, rollback, validation and guaranteeing efficient data integrity?

@dylanlott 💾

Who is currently thinking about IBC and related light client implementations?

@h5law 🌲

Who is building & maintaining the infrastructure for all of this?

@okdas 🏗️

Who is dependant on this to enable E2E relays?

@adshmh 🚄

3. HotPOKT

The following is a screenshot from another thread (p2p related) we had just to show how hotstuff linear complexity works and how it relates to other types of gossip.

Screenshot 2023-01-16 at 3 08 51 PM

4. Goals

  • Get the consensus module to a TestNet ready stage
  • Leverage the perspective of someone new in order to update the tooling & documentation
  • Identify and resolve low-hanging fruit
  • Complete a few starter tasks and one major task
  • Determine the missing gaps and define a path forward for HotPOKT
  • Identify a co-owner and additional Point of Contact (POC) for the V1 Consensus module
  • Outline & document follow-up work & tasks to build & scale the Consensus module

4.1 Starter Tasks

  • [ ] #441
  • [ ] #705
  • [ ] #821
    • Blocked by #812 and #874

4.2 Required Deliverables

  • [ ] #324
  • [ ] #650
  • [ ] #432
  • [ ] #469
  • [ ] Create a ticket to scope, track & implement inactivity leaks
  • [ ] Create tickets to scope future implementations / improvements of state sync

4.3 Stretch Deliverables

  • [ ] #615
  • [ ] #669
  • [ ] #470
  • [ ] #109
  • [ ] #618

4.4 Non-Deliverables

  • #816
  • #538
  • #473
  • #428
  • #415
  • #108
  • #109

4.5 Non-goals

  • Getting the consensus module to a MainNet-ready stage
  • Updating/re-writing the Consensus specification; though this will need to be done in the future

Creator: @Olshansk Co-Owners: @red-0ne

Olshansk avatar Jul 07 '23 00:07 Olshansk