pub enum Malice<T: NetworkEvent, P: PublicId> {
UnexpectedGenesis(EventHash),
DuplicateVote(EventHash, EventHash),
MissingGenesis(EventHash),
IncorrectGenesis(Box<PackedEvent<T, P>>),
Fork(EventHash),
InvalidAccusation(EventHash),
OtherParentBySameCreator(Box<PackedEvent<T, P>>),
SelfParentByDifferentCreator(Box<PackedEvent<T, P>>),
InvalidRequest(Box<PackedEvent<T, P>>),
InvalidResponse(Box<PackedEvent<T, P>>),
Unprovable(UnprovableMalice),
Accomplice(EventHash, Box<Malice<T, P>>),
}Expand description
Type of malicious behaviour.
Variants§
UnexpectedGenesis(EventHash)
Event carries a vote for Observation::Genesis, but shouldn’t.
DuplicateVote(EventHash, EventHash)
Two or more votes with the same observation by the same creator.
MissingGenesis(EventHash)
Event should be carrying a vote for Observation::Genesis, but doesn’t
IncorrectGenesis(Box<PackedEvent<T, P>>)
Event carries a vote for Observation::Genesis which doesn’t correspond to what we know.
Fork(EventHash)
More than one events having this event as its self_parent.
InvalidAccusation(EventHash)
A node incorrectly accused other node of malice. Contains hash of the invalid Accusation event.
OtherParentBySameCreator(Box<PackedEvent<T, P>>)
Event’s creator is the same to its other_parent’s creator. The accusation contains the original event so other peers can verify the accusation directly.
SelfParentByDifferentCreator(Box<PackedEvent<T, P>>)
Event’s creator is different to its self_parent’s creator. The accusation contains the original event so other peers can verify the accusation directly.
InvalidRequest(Box<PackedEvent<T, P>>)
The event should be a request with other_parent as a requesting event specifying this peer, but isn’t.
InvalidResponse(Box<PackedEvent<T, P>>)
The event should be a response to a request made to the peer, but isn’t.
Unprovable(UnprovableMalice)
Detectable but unprovable malice. Relies on consensus.
Accomplice(EventHash, Box<Malice<T, P>>)
A node is not reporting malice when it should.