IntersectMBO / IntersectMBO/mithril
Support an IVC follower aggregator joining the network at any time
- Dominant language
- Rust
- Stars
- 154
- Forks
- 51
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 38
Description
## Why
An IVC follower aggregator can currently only produce certificates on a chain that has been IVC since its genesis: the recursion is seeded from the parent certificate, and the synchronizer mirrors the leader's certificates whatever their proof system. Behind a Concatenation leader, an IVC follower therefore never produces a certificate, and the only bootstrap window (the epoch right after a genesis) can be missed depending on synchronization timing. An analysis has been led in #3389.
## What
Make a follower aggregator able to join the network and start producing certificates at any time, for the following topologies:
| # | Follower | Leader for signers | Source for certificates | Certification start |
|---|---|---|---|---|
| 1 | IvcSnark | Concatenation leader | Concatenation leader | At the epoch after the next re-genesis, once the follower is warmed up |
| 2 | IvcSnark | Concatenation leader | Caught-up IVC follower aggregator | At any epoch, by inheriting the rolling state from the synchronized parent certificate |
| 3 | Concatenation | Concatenation leader | Concatenation leader | Unchanged current behavior (warm follower: next epoch; cold follower: two epochs after genesis) |
| 4 | Concatenation | Concatenation leader | Caught-up Concatenation follower aggregator | Same as case 3, with the certificate chain synchronized from the intermediate follower |
## How
- [x] Add an integration test checking that a warm follower signs at the epoch immediately after the genesis even when it synchronizes the genesis certificate only at that epoch
- [x] Fetch the parent of a certificate that certifies the full certificate chain, as its verification stops early, so the synchronized chain stays contiguous down to the genesis certificate
- [x] Support following one aggregator for the signer registrations and, optionally when specified, another one for the certificate chain (which defaults to the aforementioned)
- [x] Add the optional certificate chain aggregator endpoint to the configuration, the command line and the documentation
- [x] Instantiate a second aggregator client on that endpoint for the certificate chain synchronizer and its certificate verifier
- [x] Add the endpoint to the infrastructure (Terraform variable, aggregator environment, follower docker compose override)
- [x] Add the endpoint to the deployment workflows
- [x] Adapt the end-to-end test to support a follower of follower topology for the certificate chain
- [ ] Evaluate a self-hosted runner if the run exceeds the limits of the GitHub-hosted runners
Contributor guide
Assessment
This issue has not been assessed yet.