Skip to content

ABCI++ vote extensions & FinalizeBlock #9396

@sergio-mena

Description

@sergio-mena

This is the continuation of the work started in #9053: backport ABCI++ implementation, which lives in the v0.36.x branch.
Once this tracking issue is completed, the whole ABCI++ interface should be ready for QA process, and then release.

Proposed Path to Done. Summary

The main idea behind this plan is to proceed in the same way as #9053.
The main approach is:

  • We will "follow" our work on v0.36.x. By "following a PR", I mean looking at that PR (similar work done for v0.36.x) and copying over only what makes sense. "git cherry-pick" turned out to be our best friend for "following" PRs in ABCI++ Prepare/Process Proposal #9053
  • We will be considering only commits related to vote extensions and FinalizeBlock
  • We will be skipping PrepareProposal/ProcessProposal related commits (as they are already in main via ABCI++ Prepare/Process Proposal #9053)

The work is structured very similarly to #9053. It consists of two main parts (further described below):

  • (1) Preliminary work [Estimation of critical path: XXX days (with 1 thread)]
  • (2) Core feature work [Estimation of critical path: XXX days (with 5 threads)]

(1) and (2) can mostly proceed in parallel.

protobufs will be managed as in v0.37.x → They will evolve with the code

Proposed Path to Done. Details

(1) Preliminary Work

We could have two threads here, but as all these tasks serialized are shorter than the critical path in "Core Feature Work", there's no point

  • Create feature branch: feature/abci++vef [Estimation: 0 days]
  • Restore CI on feature/abci++vef branch [Estimation: 0.5 days]
  • e2e tests: port any improvements not included in the core work section (git diff HEAD..v0.36.x -- test/e2e) [Estimation: 2 days] (tracking: e2e: add contexts and e2e generator tests #9426)

(2) Core feature work

We have three threads that can proceed in parallel:

  • Vote extensions (*) [Estimation: XXX days]
  • FinalizeBlock (*) [Estimation: XXX days]
  • Spec and doc work [Estimation: XXX days]

(*) Only when vote extensions and FinalizeBlock are done, can we proceed with the fourth part:

  • Final adjustments [Estimation: XXX days, assuming no parallel work done]
    • tasks here could be further parallelized

Vote Extensions

FinalizeBlock

Final adjustments

Most of these tasks can be done in parallel, but they are quite short.

Spec and doc work

Low risk, can proceed completely in parallel with the rest

Metadata

Metadata

Assignees

Labels

C:abciComponent: Application Blockchain InterfaceE:mediumEstimated to take up to a month or twofeatureFeature work that definitely changes system behaviorstalefor use by stalebot

Type

No type

Projects

Status

Done/Merged

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions