Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ABCI ++ tracking issue #6066

Closed
tessr opened this issue Feb 8, 2021 · 6 comments
Closed

ABCI ++ tracking issue #6066

tessr opened this issue Feb 8, 2021 · 6 comments
Labels
C:abci Component: Application Blockchain Interface stale for use by stalebot T:tracking Tracking issue for other issues
Milestone

Comments

@tessr
Copy link
Contributor

tessr commented Feb 8, 2021

The upcoming ABCI++ work is currently scattered across teams, repos, etc. It will probably continue to be fairly disperse, but here's a tracking issue anyways.

Original RFC: tendermint/spec#254

UPDATE:
We have shifted to using this project board to divide and track remaining work for implementing ABCI++:
https://github.com/orgs/tendermint/projects/9

@tessr tessr added C:abci Component: Application Blockchain Interface T:tracking Tracking issue for other issues labels Feb 8, 2021
@tessr tessr added this to the Tendermint 1.0 milestone Feb 8, 2021
@ebuchman
Copy link
Contributor

ebuchman commented May 7, 2021

I just want to highlight that it seems the three components of ABCI++ (PrepareProposal, ProcessProposal, and VoteExtensions) are relatively independent and could and maybe should all be implemented independently, as they each unblock other kinds of work and I'm not sure if there's a good reason why they must all come together.

I would think that VoteExtensions is the most straight forward and should just proceed, as it will then unblock things like aggregate signatures and native oracles.

Probably next would be PrepareProposal, which should also be relatively straightforward, but for it to actually be useful will require significant lift from the application side to handle it meaningfully.

Finally ProcessProposal, which will introduce more latency into the consensus (executing blocks before prevoting) or else has some subtle impacts on correctness if we want to run that concurrently with voting (see https://github.com/tendermint/spec/pull/283/files#r628424695).

@tessr @ValarDragon does that make sense ?

@ValarDragon
Copy link
Contributor

I think VoteExtensions is the least straightforward personally, since it alters many core Tendermint data structures. (Also its orthogonal to aggregating signatures, the state machine wouldn't be the one doing that aggregation!) Agreed that it would allow for validator-based price oracles, if your view is that it would be the most immediate demand happy to switch focus to that.

I was currently working on a PR for process proposal with everything in sync. It on its own doesn't require executing the block prior to consensus, but does move when you do the communication between state machine and application for communicating the block data.

Agreed with PrepareProposal being relatively straightforward. One downside is that I don't think we should merge it until after vote extensions are down though, since we also want to allow for prepares of vote extensions and not immediately break the API.

Happy to switch focus to vote extensions though!

@ebuchman
Copy link
Contributor

ebuchman commented May 7, 2021

Right isn't Vote Extensions the main breaking changes in Tendermint data structures? Need to review the details again as to why it's less straight forward but seemed it was more a data structure issue vs more complex interactions with the app.

I don't have strong preference on the order just wanted to clarify that we could do the pieces relatively independently and get some clarity on what the current perception of the ordering was going to be.

It on its own doesn't require executing the block prior to consensus, but does move when you do the communication between state machine and application for communicating the block data.

I didn't understand this, can you clarify?

@ValarDragon
Copy link
Contributor

Yeah! ProcessProposal gives the application the block data at prevote time, and the application then can optionally do some validity checks before returning. I just meant that process proposal on its own doesn't enforce you execute the block then, and is useful with very quick (single-pass) checks on the data as well. (such as checking that every tx is well formed)

Agreed that ProcessProposal and VoteExtensions can be done in parallel. PrepareProposal can be done in parallel, but would need adapting again after VoteExtensions

@ebuchman
Copy link
Contributor

ebuchman commented May 7, 2021

Ah yes of course whether the full block is executed is up to the app during ProcessProposal.

Sounds good - sounds like we should pursue ProcessProposal and VoteExtensions and then PrepareProposal. Thanks

@cmwaters
Copy link
Contributor

Created a project board to track ongoing ABCI++ work: https://github.com/orgs/tendermint/projects/9

@github-actions github-actions bot added the stale for use by stalebot label Jul 19, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Jul 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C:abci Component: Application Blockchain Interface stale for use by stalebot T:tracking Tracking issue for other issues
Projects
None yet
Development

No branches or pull requests

4 participants