-
Notifications
You must be signed in to change notification settings - Fork 15
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
feat: Equivocation in prevotes #309
Comments
|
started to work in branch i309-equivoc-prevotes but I am blocked now. Will resume after two weeks doing audits. |
Note: hidden lock means that a proposer hasn't seen a lock from a previous round. As a result the correct process with the lock won't prevote for the proposal, and we are stuck:
The run should show a scenario where this is broken right now:
|
|
Notice that a |
#103 deals with equivocation in precommit messages. There are also scenarios where equivocation in prevotes may lead to liveness issues. We need to add a similar flow as we did for
applyCommit
forapplyVote
(record evidence, generate event).It seams that that liveness of Tendermint is actually based on the following "gossip" property:
every message sent from a correct process to a correct process is reliably received (and timely after GST)
if a correct process sees a 2/3 quorum (of prevotes or precommits), then every correct process will eventually see the same quorum (and "timely" after GST)
The latter quorums may contain messages by Byzantine nodes. As we want to shield the votekeeper agains spamming from Byzantine nodes (and thus only store one message per round and height and step and sender), we propose a specific logic to 2/3 quorums. This is what applyCommit and applyVote should take care of.
The question remains what is the strategy to "gossip" the quorums. This is mostly a performance optimization (speed on the common case where this gossiping should be need at all, vs. delay if things go bad, where we need to explicitly gossip)
The text was updated successfully, but these errors were encountered: