Skip to content

DynamicFeeGlobalConfig: cross-chain id collision and secondsAgo never bootstraps #914

Description

@FonsSicca

Source: data-quality audit of deployment 8fcf9a8 (2026-07-07). Full findings: Notion audit.

What to build

Fix the two compounding defects that make DynamicFeeGlobalConfig the one unreliable entity in the schema.

  1. The id is the module address, shared across 6 chains, so only one row survives. Roughly 10 of 12 chains have no row.
  2. secondsAgo only writes on a SecondsAgoSet event, so constructor-set values never materialize.

Pool-level fees are unaffected: getSwapFee matches on-chain on 3 of 3 checks, and Pool.baseFee/currentFee are exact. This is about the config entity itself.

Acceptance criteria

  • The entity id is chain-scoped so every chain retains its own row.
  • secondsAgo bootstraps from the constructor/initial value, not only from SecondsAgoSet.
  • Per-chain rows are present after reindex.

Blocked by

None — can start immediately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions