Skip to content

Feature: Visualize chain forks #121

@pk910

Description

@pk910

Dora currently provides a fork overview that fully backed by the heads of the connected clients.
This is useful to debug persistent forks that specific client types follow.
However, it is not very helpful to see actual chain splits that might have happened in past and is no longer followed by any client.

Background:
The new indexer introduced by #83 tracks chain forks internally (as it is needed for the canonical chain selection) and even persists a history of forks in DB.
A fork as tracked by the explorer consists of an increasing fork id, the base block slot/root, the leaf slot/root and the parent fork id.
Each chain split in the unfinalized slot range are tracked by 2 forks, so in a simple fork situation like this:

B  C
| /
A

there are 2 fork entries created:

  1. the first consists of parent A slot/root, leaf B slot/root & the forkId of A as parent forkId
  2. the second consists of parent A slot/root, leaf C slot/root & the forkId of A as parent forkId

Fork relationships can be resolved via the parent fork id of each entry.
Finalized blocks are assigned to forkId 0 and fork entries with finalized leaf roots are removed.

Feature Request:
This information should be made accessible on the UI via a separate chain forks page.
The page should be capable of:

  • Show the most recent forks up to the finalization checkpoint
  • Visualize nested forks (maybe reuse the graph / list approach from the slots page)
  • Show the amount of blocks in each fork
  • Show fork participation for forks in unfinalized epochs (information not available after finalization)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions