Skip to content

Fork Mechanics

Bitkincoin edited this page Mar 4, 2022 · 2 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 consensus algorithms focusing on availability rather than finality (such as PoW, round-robin PoS or coinage-based PoS), Sirius doesn't have "longest chain rule".

Sirius doesn't discard fork events, because they are valid BFT consensus messages, which contain information about misbehaving. When a fork event is connected, Sirius node doesn't "choose" only one "branch", it continues to normally store and process the whole graph of BFT consensus messages.

The Sirius 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