iotaledger / iotaledger/notarization
[PoI] : Persist authenticated committee history in the PoI CLI
- Dominant language
- Rust
- Stars
- 5
- Forks
- 7
- Avg merge
- 10h 34m
- Merged PRs (30d)
- 11
Description
## Problem
The `poi verify` command currently constructs committee resolution with a fresh in-memory cache. Every invocation therefore repeats the authenticated committee walk from genesis to the proof epoch, and any committees authenticated before a transient failure are discarded when the process exits.
## Proposed scope
- Provide a file-backed `CommitteeCache` adapter that can be reused by the CLI and the advanced committee-cache example.
- Store committee entries under the IOTA configuration directory, for example `poi/committee-cache//epoch-.bcs`.
- Preserve the complete `CommitteeCacheKey`, including the trusted genesis `ChainIdentifier` and epoch.
- Write authenticated committees atomically and never overwrite a conflicting entry.
- Configure `poi verify` with `CommitteeResolution::from_genesis_with_cache` for both managed-network and explicit-genesis verification.
- Document the cache location and that deleting it is safe but makes the next verification slower.
## Acceptance criteria
- A later CLI invocation reuses committees authenticated by an earlier invocation.
- Mainnet, testnet, devnet, and custom genesis files cannot collide in one backend.
- A failed or interrupted walk preserves committees stored before the failure.
- Malformed or conflicting cache entries fail closed with a useful error.
- No new CLI flag is required for the default behavior.
## Out of scope
- Concurrent epoch-summary prefetching for the first cold walk.
- Network retry or backoff policy.
- Genesis download pinning and validation tracked by H2.
Contributor guide
Research direction
Start at the poi verify command and the CommitteeResolution::from_genesis_with_cache integration, then inspect the advanced committee-cache example. Trace how managed-network and explicit-genesis verification currently construct their caches. Done means a file-backed cache is reused across invocations, isolates chain identifiers and epochs, preserves entries through failures, rejects malformed or conflicting data, and documents safe deletion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100