pocket
pocket copied to clipboard
[Consensus] Consensus Onboarding & Knowledge Transfer
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
- Development Guides - Make sure to start here
- Consensus module source code - Make sure to look here
- V1 Consensus Specification - Make sure to read here
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.
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