Skip to content

Bootstrap SPO Module #389

@lowhung

Description

@lowhung

Context

The SPO State module manages stake pool registrations, parameters, retirements, and block production tracking. It currently expects incremental message processing from genesis via a number of subscriptions.

Problem

When bootstrapping from a snapshot (e.g., epoch 500), the SPO state module needs to initialize from parsed snapshot data sent by the bootstrapper. The SPO state module should receive everything needed to initialize.

For some added context, the bootstrapper parses NewEpochState CBOR (I believe this is from p_state and blocks_made) and sends initialization messages via the snapshot topic. This ticket may require some tinkering to the streaming_parser and you will need to implement the callback for this module in the bootstrapper.

Acceptance Criteria

  • Bootstrapper sends information required to bootstrap SPO state module
  • Module handles bootstrap message containing all required SPO state
  • Normal SPO state processing continues after bootstrap completes (via Mithril or Peer Networking / Upstream fetcher).

Testing Requirements

  • Bootstrap data validates against Blockfrost pools API

Definition of Done

  • SPO state initializes from snapshot without replaying chain history
  • All pool registrations, retirements, and block statistics accurate after bootstrap
  • Blockfrost API validation confirms correctness

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions