IntersectMBO / IntersectMBO/mithril

Support an IVC follower aggregator joining the network at any time

Open
#3,446 0 comments 0 reactions 1 assignee Claimed by @jpraynaud View on GitHub
feature :rocket:
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.