Skip to content

Separate mempool ABCI concerns from mempool data structure/storage engine concerns with clear dependency graph #9050

@jsteenb2

Description

@jsteenb2

Summary

As part of an effort to add a new mempool (specifically the narwhal DAG mempool), we are tasked with creating a new mempool. One thing that became immediately obvious as part of this, is that the ABCI concerns are unaffected by the change in storage engine (narwhal mempool vs priority or clist mempool). ATM, all the concerns are bottled up into a single type, which forces the storage engine implementation to do a lot more, increasing its risk of goofing something up in the ABCI layer, which could lead to catastrophic problems. The idea is to separate the concerns better, so that the ABCI concerns are unaffected by the change in storage engine. The ABCI guarantees TM makes, will be enforced regardless the underlying storage engine.

This is part of work we're doing in the PeggyJV/tendermint fork under @zmanian to experiment with high throughput mempools. By increasing the throughput of the mempool we hope to increase the throughput of TM as a whole.

Problem Definition

We need this feature, b/c we want to make it easier to contribute and experiment with TM. A major area of research across the blockchain community is improving the mempool, as its often the bottle neck. By separating concerns we also create a means to enforce the TM guarantees and reducing risk associated with incorporating a new mempool design.

Proposal

  • Separate ABCI concerns into separate type
  • Allow stoage engines to be plug and play without concerning itself with the ABCI layer

For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned

Metadata

Metadata

Assignees

No one assigned

    Labels

    stalefor use by stalebot

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions