-
Notifications
You must be signed in to change notification settings - Fork 1
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
Proposal: do not vote on empty hash #4
Comments
In the tagged PR, if the candidate does exist and it arrives with a delay then it's collected by the node regardless of NIL votes already sent for it. |
Meaning the node can potentially generate two votes for the same block: one NIL and one hash (if the block is valid). |
No, an elected provisioner may send two votes one for a valid candidate and one for an empty hash. (this is not two votes for the same block) |
It is, if it's for the same round and step. Nodes can choose either vote when counting for Reduction |
This is assuming we do not (currently) distinguish between voting NIL for an invalid candidate and voting NIL on a missing candidate. |
As an additional motivation for this DIP, voting on an empty hash cannot distinguish among forks: if a fork exists, and we receive a NIL vote on empty hash for round R and step S, we couldn't tell which fork it refers to. |
IMO, this is pretty rare situation without any significant impact. |
I think the impact is quite relevant, since the same vote can be counted for two different blocks and it can produce an non-deterministic situation. I agree that including |
Implementation-wise, regardless of any NIL vote received, current implementation (PR) does the following:
NB: Former iterations means any iteration from 1st to the current one. Not to be confused with previous iteration which includes only the (current_iteration -1 ) |
Summary
See here
Currently, when a provisioner does not receive a candidate within the timeout, it votes NIL. However, this is somewhat similar to not accepting votes for previous iterations: it's perfectly possible that the candidate exists and we just don't know it (yet).
This DIP proposes the following behavior:
This is also related to having votes expressed in a separate field from the block hash (this could be included in this dip or in a separate one).
The text was updated successfully, but these errors were encountered: