Skip to content

[Consensus] Pacemaker - MinimumBlockTime Configuration #705

@jessicadaugherty

Description

@jessicadaugherty

Objective

Implement a block time configuration feature in the Consensus / Pacemaker Module, which allows setting a minimum block time before proceeding to the next height.

Origin Document

Since Tendermint is not an optimistically responsive BFT algorithm, a set of configurations were added to it during implementation. However, HotPOKT follows Hotstuff Consensus, which is optimistically responsive and moves at the speed of the network:

Responsive.mov

Hotstuff's simplicity and scalability is very important for the core of Pocket but does not need to be this fast at the moment of writing.

Goals

  • Develop a configuration setting to define a minimum block time in the Pacemaker's configurations
  • Allow transactions to propagate through the network before proceeding to the next height
  • Reduce the responsiveness of the network

Deliverable

  • Add a new MinimumBlockTime value in PacemakerConfig
  • Update the Pacemaker module to wait at least MinimumBlockTime before proceeding to the next height when a block is successfully committed

Non-goals / Non-deliverables

  • Overhauling the entire pacemaker or consensus modules
  • Developing additional features unrelated to the block time configuration
  • Adopting all of Tendermint's configurations

General issue deliverables

  • Update the appropriate CHANGELOG(s)
  • Update any relevant local/global README(s)
  • Update relevant source code tree explanations
  • Add or update any relevant or supporting mermaid diagrams

Testing Methodology

  • All tests: make test_all
  • LocalNet: verify a LocalNet is still functioning correctly by following the instructions at docs/development/README.md
  • k8s LocalNet: verify a k8s LocalNet is still functioning correctly by following the instructions here

Creator: @jessicadaugherty
Editor: @Olshansk

Metadata

Metadata

Assignees

Labels

consensusConsensus specific changescore starter taskGood for newcomers, but aimed at core team members though still open for everyone

Type

No type

Projects

Status

In Review

Relationships

None yet

Development

No branches or pull requests

Issue actions