Detect and handle malice: IncorrectGenesis

Description

A node creates an event with Observation::Genesis. Their observation is in disagreement with my consensus list (either my Genesis::Observation or the genesis being consensused if I was added after genesis).

For example, here, Bob will accuse Alice of Malice::IncorrectGenesis(a_1) as her Genesis member list doesn't match his.

We also need to handle a couple of other scenarios where we're receiving our first request after joining a section.

Our Parsec will have been provided with a genesis group list when constructed via Parsec::from_existing(). We could now be given a malicious first request from a peer with one of the following problems:

  • The genesis group they give us does reach a consensus in their fake graph, but doesn't match the genesis group we were intialised with. This needs more discussion to see how we'll handle it. We need to avoid adding all these fake events to our graph and adding our malice votes for them (since the malicious guy has just massively increased our good graph in a single stroke).

  • After adding all the events in that initial request, we still don't see ourself as added to the section. These events probably can be added to the graph, since the message is probably just missing some of the latest events, and we'll soon get them from a good peer. But this too still needs discussion to check that's right, and to see how we'll record/report this malice.

Environment

None

Assignee

Unassigned

Reporter

Qi Ma

Start date

2018/08/10

End date

2018/08/10

Task progress

None

Baseline start date

None

Baseline end date

None

Components

Priority

Minor
Configure