-
Notifications
You must be signed in to change notification settings - Fork 10
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
Module for Validator Set Managment #252
Comments
this is something that I know (embarrassingly) little about so I would follow your lead on the "what is it supposed to do" part and reserve my comments for the code itself. Is this module that you're describing responsible for updating the state needed for block proposal and tendermint consensus to work? Ive never really understood how our example applications work since we run a tendermint docker image out of the box with no modifications... |
it might be worth proposing in this issue the concrete message and storage types though |
This module would basically do two things:
To your question, yes this is basically the minimum you need to be able to make changes to how Tendermint does consensus (who is allowed to propose / who has to sign off on new blocks). The actual proposer selection is currently handled within Tenermint through a round robin scheme, but there is some discussion of making that available to applications through ABCI (tendermint/spec#193), which this module could be extended to support / expose to other modules via the keeper. As for the concrete types, I'm not sure what you mean there. There won't be any external transactions, so no check/deliver tx, and the only Message types that would be needed would be for wrappers around the multi arg keeper/query functions. I'll try to code this up this weekend so we have something less abstract to look at. |
With #247 merged, Application developers can update the validator set through the EndBlock handler. Given that any system for dynamic validator sets will have some common components, it may be worth making a module for these in the SDK.
This is my basic draft for what I think would be useful Validator module:
This could be optionally extended to store historical changes too, by replacing QueuedUpdates with a [Map Pubkey Natural], indexed by block height, but that might be a lot of state space for chains with lots of changes, and almost certainly wouldn't be needed by all chains. (Likewise for historical validator sets)
The text was updated successfully, but these errors were encountered: