Skip to content

💡 Switch GovTool metadata fetching to Blockfrost IPFS gateway (preview, preprod, mainnet) #4119

@bosko-m

Description

@bosko-m

Area

Other

Is there new design needed?

No

What?

Update GovTool’s metadata service and link resolver to use the Blockfrost IPFS gateway as the primary source for fetching metadata files instead of public gateways. Apply this across preview, preprod, and mainnet.

Why?

Public IPFS gateways are intermittently unavailable, which leads GovTool to show “data missing” even when metadata exists on IPFS. Using the Blockfrost IPFS gateway improves reliability and availability, reducing false error states and improving user trust.

How?

  • Primary gateway: Resolve ipfs://<CID> (and bare CIDs) to the Blockfrost gateway URL
  • Client fetches: Route all frontend and backend metadata fetches through the Blockfrost gateway
  • Graceful fallback (optional but recommended):
    • If the Blockfrost request fails (timeout / 5xx), retry once and then fall back to a secondary gateway (configurable) before declaring “data missing”

(Optional) User Story with acceptance criteria

As a GovTool user,
I want metadata to load reliably even when public IPFS gateways are flaky,
so that I don’t see “data missing” when the files actually exist.

Acceptance Criteria

  • All metadata fetches (preview, preprod, mainnet) use the Blockfrost IPFS gateway by default.
  • ipfs:// and raw CIDs are correctly rewritten to the Blockfrost gateway URL.
  • (If enabled) Fallback to a secondary gateway occurs after a failed primary attempt; errors are logged to Sentry with env tags.
  • No regressions in Live Voting, Outcomes, Proposal Discussion Forum, or Budget Proposals metadata rendering.
  • Configuration is environment-driven (no hardcoded domains in code).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    To do

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions