Skip to content

feat(aggregator): replace cexplorer pools ticker retriever with a blockfrost based implementation#2896

Merged
Alenar merged 14 commits into
mainfrom
djo/2878/aggregator-replace-spo-ticker
Jan 13, 2026
Merged

feat(aggregator): replace cexplorer pools ticker retriever with a blockfrost based implementation#2896
Alenar merged 14 commits into
mainfrom
djo/2878/aggregator-replace-spo-ticker

Conversation

@Alenar

@Alenar Alenar commented Jan 8, 2026

Copy link
Copy Markdown
Collaborator

Content

This PR replace the service responsible for fetching pools ticker and name from a cexplorer based implementation to a blockfrost based one.

CExplorer removed the file from their server that was used to fetch this data, instead they now propose to use an api but it's not yet stable.
Blockfrost already propose an api endpoint, /pools/extended, that expose the data we need, plus their current api limits (50 000 requests per day / max 500 per seconds recharging at a rate of 50 each second) allow us to fetch all pools data without hitting their limit.

Note

Following discussion on this PR it have been decided to do further modification on the configuration necessitating a new Secret wrapper type, this will be done in another PR so some TODO were added.

Details

Mithril aggregator

  • tools::signer_importer:
    • refactor the module:
      • promote it to a directory (from a file)
      • split it into isolated parts: api.rs for the traits and main structure definition, one dedicated file for each retriever and persister impl
      • better types scoping: rework it's exported types so they are scoped into tools::signer_importer instead of being reexported at the crate root.
    • add BlockfrostSignerRetriever, leveraging the blockfrost crate.
    • remove CExplorerSignerRetriever, as it's not working anymore there's no justification to keep it
  • Configuration:
    • define BlockfrostParameters struct to hold all blockfrost related configs (:pencil2: for security blockfrost project id is not directly stored, instead a env var name were it should be fetched is given)
    • add blockfrost_parameters key
    • remove cexplorer_pools_url key
  • Update Dependency injection and serve command to use the new BlockfrostSignerRetriever

Misc

  • upgrade serde_json to 1.0.149 (needed by the blockfrost crate)
  • mithril-cli-helper: add serde_deserialization::string_or_struct_optional to support deserialing into optional types string that contains a configuration as a json
  • Update infrastructure
  • Update documentation

Pre-submit checklist

  • Branch
    • Tests are provided (if possible)
    • Crates versions are updated (if relevant)
    • CHANGELOG file is updated (if relevant)
    • Commit sequence broadly makes sense
    • Key commits have useful messages
  • PR
    • All check jobs of the CI have succeeded
    • Self-reviewed the diff
    • Useful pull request description
    • Reviewer requested
  • Documentation
    • Update documentation website (if relevant)
    • No new TODOs introduced

Issue(s)

Relates to #2878

@Alenar
Alenar requested a review from jpraynaud January 8, 2026 14:23
@Alenar Alenar self-assigned this Jan 8, 2026
@github-actions

github-actions Bot commented Jan 8, 2026

Copy link
Copy Markdown

Test Results

    4 files  ± 0    169 suites  ±0   22m 5s ⏱️ +5s
2 306 tests +13  2 306 ✅ +13  0 💤 ±0  0 ❌ ±0 
7 253 runs  +52  7 253 ✅ +52  0 💤 ±0  0 ❌ ±0 

Results for commit 56a682f. ± Comparison against base commit 3b3f465.

♻️ This comment has been updated with latest results.

@Alenar
Alenar force-pushed the djo/2878/aggregator-replace-spo-ticker branch from 39f6d3b to 3e37316 Compare January 8, 2026 15:50
@Alenar
Alenar temporarily deployed to testing-preview January 8, 2026 17:00 — with GitHub Actions Inactive
Comment thread docs/website/root/manual/develop/nodes/mithril-aggregator.md Outdated
Comment thread docs/website/root/manual/operate/run-aggregator-node.md Outdated
Comment thread docs/website/root/manual/operate/run-aggregator-node.md Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread docs/website/root/manual/operate/run-aggregator-node.md Outdated
Comment thread mithril-aggregator/src/configuration.rs
Comment thread .github/workflows/pre-release.yml Outdated
Comment thread .github/workflows/release.yml Outdated
Comment thread mithril-aggregator/src/tools/signer_importer/api.rs
@Alenar
Alenar force-pushed the djo/2878/aggregator-replace-spo-ticker branch 3 times, most recently from c4c7754 to 41fb6c1 Compare January 9, 2026 17:59
Alenar added 14 commits January 12, 2026 17:51
…ectory

preliminary step to split it in several, isolated, parts
Export their module instead of re-exporting the types.
To fetch the hashmap of pool id / pool ticker + name from Blockfrost
An alternative to the existing `string_or_struct` helper but that can be
applied to optional fields.
Which is supersede by `BlockfrostSignerRetriever`
instead of the removed cexplorer retriever
Note: all doc changes are foward looking, the actual configuration
strucute will be modified in another PR, in the meantime the blockfrost
configuration won't be enabled.
…` version

* mithril-cli-helper from `0.0.7` to `0.0.8`
* mithril-aggregator from `0.8.6` to `0.8.7`
* mithril-infra/assets/infra.version from `0.4.13` to `0.4.14`
@Alenar
Alenar force-pushed the djo/2878/aggregator-replace-spo-ticker branch from 41fb6c1 to cf414d7 Compare January 12, 2026 17:03
@Alenar
Alenar temporarily deployed to testing-preview January 12, 2026 17:17 — with GitHub Actions Inactive
@Alenar
Alenar force-pushed the djo/2878/aggregator-replace-spo-ticker branch from cf414d7 to 56a682f Compare January 12, 2026 17:19
@Alenar
Alenar requested a review from jpraynaud January 12, 2026 17:33
@Alenar
Alenar temporarily deployed to testing-preview January 12, 2026 17:34 — with GitHub Actions Inactive

@jpraynaud jpraynaud left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍

@Alenar
Alenar merged commit de25786 into main Jan 13, 2026
55 checks passed
@Alenar
Alenar deleted the djo/2878/aggregator-replace-spo-ticker branch January 13, 2026 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants