Skip to content
This repository has been archived by the owner on Feb 23, 2022. It is now read-only.

Expose proposer selection over ABCI with new field in ResponseEndBlock #193

Closed
ebuchman opened this issue Feb 8, 2019 · 3 comments
Closed
Labels
C:abci Component: ABCI C:consensus Component: Consensus S:proposal Status: Proposal T:enhancement Type: Enhancement

Comments

@ebuchman
Copy link
Contributor

ebuchman commented Feb 8, 2019

We have recently done a lot of work on getting the proposer selection algorithm right in tendermint. See for instance tendermint/tendermint#3049, tendermint/tendermint#3140, tendermint/tendermint#3222. There are still some open issues and a new proposer-selection label to tag them, but it seems we've addressed most of the concerns and have settled on a reasonably fair algorithm that can handle large validator set changes. Great work team!

One thing we have discussed is exposing the proposer selection to the applications. Currently, the only control apps have is to change the validator set, but otherwise all selection is left to Tendermint.

We should consider adding a new field to ResponseEndBlock which gives applications more control over proposer selection. This could be a list of {PubKey, Priority}, for instance, that would otherwise use the same Tendermint algorithm, but where the app specifies with every block who can be a proposer for the next block and what their respective initial priorities are.

This will need more design work and an ADR, and we need to specify when and how the default behaviour kicks in. But otherwise could be quite valuable to applications, and would for instance allow them to implement randomness in their proposer selection before we do it in Tendermint (#763), and would allow for proposers who aren't even in the validator set, which might be useful for certain configurations.

@ebuchman ebuchman changed the title expose proposer selection to apps Expose proposer selection over ABCI with new field in ResponseEndBlock Feb 8, 2019
@tac0turtle tac0turtle transferred this issue from tendermint/tendermint Oct 26, 2020
@tac0turtle tac0turtle added C:abci Component: ABCI C:consensus Component: Consensus S:proposal Status: Proposal T:enhancement Type: Enhancement labels Oct 26, 2020
@tac0turtle tac0turtle added this to Triage in ABCI Proposals Oct 26, 2020
@hxrts
Copy link
Contributor

hxrts commented Nov 12, 2020

linking to the Tendermint issue mentioned above for discoverability https://github.com/tendermint/tendermint/issues/763

@hxrts
Copy link
Contributor

hxrts commented Nov 25, 2020

also related f-o-a-m/kepler#123

@cmwaters
Copy link
Contributor

I think it's better that Tendermint implements one good protocol for leader election than allow a way for the application to control it. For me this is an abstraction that lies completely on the Tendermint side of the fence. I'm going to close this but speak up if you disagree

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
C:abci Component: ABCI C:consensus Component: Consensus S:proposal Status: Proposal T:enhancement Type: Enhancement
Projects
Development

No branches or pull requests

4 participants