Certificate chain optimization

Open
#3,672 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
rust
Domain
backend, database

Research direction

The issue names no files, so start from the existing epoch-based retention for stake pools, epoch settings and signer registrations, and look for how the aggregator's certificate table is read and written. Decide which signed entity types are protected, such as Cardano stake distributions, and which can be pruned after N epochs. Done means eligible certificates are removed after a configurable N, protected ones remain, and tests cover both cases.

Written by the indexing model from the issue text.

Description

roadmap :compass:

Why

The Mithril certificate chain grows without bound. Every epoch produces multiple certificates ( one per signed entity type) and none are ever removed. On the aggregator side, no pruning mechanism exists for certificates, unlike stake pools, epoch settings, and signer registrations which all have epoch-based retention policies.
This means the certificate table grows permanently, increasing storage requirements and query latency over time.

Not all certificates have the same retention requirements. Some must be kept indefinitely. For example, Cardano stake distribution certificates are referenced by other systems and cannot be discarded. Others, such as Cardano database snapshot certificates or Cardano transaction certificates, are only relevant for a limited time window and can be safely removed after a configurable number of epochs.

The goal of this MVP is to deliver production-ready certificate chain pruning on the aggregator: certificates for eligible signed entity types are automatically removed after N epochs (where N is configurable), while certificates for protected entity types such as Cardano stake distributions are retained indefinitely. This bounds the aggregator's storage growth and reduces query latency.

Dominant language
Rust
Stars
155
Forks
52
Avg merge
2d 17h
Merged PRs (30d)
37

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from IntersectMBO/mithril

All issues in IntersectMBO/mithril

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.