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

need solutions for leader replacement / failover #1112

Open
jchappelow opened this issue Dec 4, 2024 · 1 comment
Open

need solutions for leader replacement / failover #1112

jchappelow opened this issue Dec 4, 2024 · 1 comment

Comments

@jchappelow
Copy link
Member

jchappelow commented Dec 4, 2024

The network will be quite fragile if a leader needs to be replaced i.e. it cannot be brought back with the same private key. We need at least a simple solution for final release IMO.

Deterministically picking a replacement leader from the validator set should be relatively straightforward. For instance, it can be based on last block's app_hash. Deciding when to proceed with replacement is harder.

Alternatively, the new leader can be picked an specified with admin commands in an election process e.g. admin command: validators promote [desired new leader id].

Other challenges?

@jchappelow
Copy link
Member Author

jchappelow commented Dec 19, 2024

Say leader vaporizes, and there can be no blocks to make an on-chain election, I can see an admin command to force a leader change. For a validator that runs the command, they would accept block proposals signed by a new leader. When enough validators do the same, the chain moves again. I think this would necessitate a special case where the node itself becomes the leader, which would require a little work to have CE change roles on the fly.

To support sync from genesis on such a chain, there would need to be some other magic however. I'm thinking some p2p comms to propagate aggregate validators' approvals, which would then have to be recorded in the first block from the new leader. It would necessitate a special field in the block header. This could be subject to a supermajority as it amounts to a coup.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant