Skip to content

Fork Mechanics

devintegral3 edited this page Mar 11, 2020 · 3 revisions

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 blockchains (with consensuses like PoW, round-robin PoS or coinage-based PoS), Lachesis stores and connects all the 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 a penalty.

See attack page for more detailed information on these and other protections related to forks.

Clone this wiki locally