-
Notifications
You must be signed in to change notification settings - Fork 282
Fork Mechanics
Fork pair is a pair of fork events {a, b}, such that:
a != b AND a.Seq == b.Seq && a.Epoch == b.Epoch && a.Creator == b.Creator
The creator of a fork pair is called cheater
. In other words, cheater is a Byzantine participant.
Simply said, the fork event is created when validator doesn't use his last event as self-parent.
Unlike consensus algorithms focusing on availability rather than finality (such as PoW, round-robin PoS or coinage-based PoS), Lachesis doesn't have "longest chain rule".
Lachesis doesn't discard fork events, because they are valid BFT consensus messages, which contain information about misbehaving. When a fork event is connected, Lachesis node doesn't "choose" only one "branch", it continues to normally store and process the whole graph of BFT consensus messages.
The Lachesis consensus will result into the exact same blocks regardless of fork events, unless more than 1/3W are Byzantine.
To protect the consensus from forks, the stricter forklessCause
relation is used in Atropos election instead of happened-before
relation.
When a fork pair gets confirmed, the validator gets slashed.
See attack page for more detailed information on these and other protections related to forks.