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

Take note of block proposals in the client without handling them. #2971

Open
afck opened this issue Nov 27, 2024 · 0 comments
Open

Take note of block proposals in the client without handling them. #2971

afck opened this issue Nov 27, 2024 · 0 comments
Milestone

Comments

@afck
Copy link
Contributor

afck commented Nov 27, 2024

The client currently asks validators for pending block proposals and then handles them locally. This serves two purposes:

  • If the proposal is in Round::Fast, it counts as locked, so the client must re-propose that same block in a later round.
  • If it is in Round::MultiLeader(r) and the client wants to propose a block, it should not do that in the same round, but it can make a proposal in round r + 1 without waiting for a timeout.

In the first case, the block cannot use any oracles.
In the second case, however, the block could be using oracles and therefore handling it locally could fail. On the other hand, we don't really care about the block itself there: We only need to know that a proposal was made, not which one.

Let's add a way for the client to keep track of proposals in the current round without executing them (but still checking the proposer's signature), so that the protocol works as intended in the second case even for blocks using oracles.

Alternative: Use Timeouts?

We could also just rely on timeouts instead, and by default configure all multi-leader rounds to have timeout 0. That requires one more round-trip in the second case, but simplifies the protocol and brings the multi leader mode in line with the single leader one.

@afck afck added this to the Testnet #2 milestone Nov 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

1 participant