Skip to content

Fork Mechanics

uprendis edited this page Mar 25, 2021 · 1 revision

Fork definitions

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.

No "longest chain rule"

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.

Protections

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.

Clone this wiki locally