Skip to content

Bootstrap Epochs Module #381

@lowhung

Description

@lowhung

Context

The Epochs state module tracks epoch-level statistics including epoch fees, block production by pool operators, and other epoch activity metrics. At the end of each epoch, it publishes an EpochActivityMessage used by accounts state for rewards calculation. We probably don't want to publish this message because we would assume the accounts state will have the right fees populated from it's own bootstrap message handling.

Problem

Currently, the epochs module starts from genesis, and accumulates state block-by-block. When bootstrapping from a snapshot (e.g., epoch 500), the module needs to initialize its epoch state from the snapshot read by the bootstrapper rather than replaying blocks from genesis.

Acceptance Criteria

  • Epochs state initializes from NewEpochState snapshot during bootstrap.
  • Normal epoch transitions work correctly after bootstrap (i.e it can follow-up the bootstrap with a Mithril fetcher or the Peer Networking).

Testing Requirements

  • Could leverage Blockfrost endpoints to ensure data correctness

Definition of Done

  • Epochs module initializes from snapshot without block replay
  • Epoch state is correct for specific epoch we are bootstrapping to.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions