filecoin-project/go-f3

Drop equivocations

anorth opened this issue · 3 comments

Prior versions of the protocol spec required a node to retain all equivocating messages (same instance, round, step and peer but different value). The code reflects this. The explicit justification removes that need, so the code should instead ignore equivocations. Change it to ignore all but the first message from a peer for each round and step (this will also help one angle of #12).

With luck, this can be done just by changing the quorum state data structures to be only able to represent one value per participant, and checking if such value has been received before updating.

Is this complete with #145 or do we have to do more?

I have not gone through it yet, though it may be complete after #145 . Will do that, but stuck with finishing touches on design docs.

I don't think it's done. At minimum requires a careful audit and then some tests demonstrating the ignoring of equivocating messages. This would probably be best as unit tests cc @masih