Proposer Lifecycle
The proposer service monitors the state of the L2 chain, requests proofs and submits them to the L1. Proofs are submitted to the Succinct Prover Network. Here's how the proposer service decides when to request range and aggregation proofs.
Range Proof Lifecycle
stateDiagram-v2 [*] --> Unrequested: New Request for Range of Blocks Unrequested --> WitnessGeneration: make_proof_request WitnessGeneration --> Execution: mock=true WitnessGeneration --> Prove: mock=false Execution --> Complete: generate_mock_range_proof Execution --> Failed: error Prove --> Complete: proof fulfilled Prove --> Failed: proof unfulfillable/error Failed --> Split: range AND (2+ failures OR unexecutable) Split --> Unrequested: two new smaller ranges Failed --> Unrequested: retry same range
Aggregation Proof Lifecycle
stateDiagram-v2 [*] --> Unrequested: Total interval of completed range proofs > submissionInterval. Unrequested --> WitnessGeneration: make_proof_request WitnessGeneration --> Execution: mock=true WitnessGeneration --> Prove: mock=false Execution --> Complete: generate_mock_agg_proof Execution --> Failed: error Prove --> Complete: proof fulfilled Prove --> Failed: proof unfulfillable/error Failed --> Unrequested: retry same range Complete --> Relayed: submit_agg_proofs
Proposer Operations
The proposer performs the following operations each loop:
- Validates that the requester config matches the contract configuration
- Logs proposer metrics like number of requests in each state
- Handles ongoing tasks by checking completed/failed tasks and cleaning them up
- Sets orphaned tasks (in WitnessGeneration/Execution but not in tasks map) to Failed status
- Gets proof statuses for all requests in proving state from the Prover Network
- Adds new range requests to cover gaps between latest proposed and finalized blocks. If a request failed, this is where the request is re-tried.
- Creates aggregation proofs from completed contiguous range proofs.
- Requests proofs for any unrequested proofs from the prover network/generates mock proofs.
- Submits any completed aggregation proofs to the L2 output oracle contract.