Overview
In this section, we'll walk through how being a prover on the Succinct Prover Network actually works. We'll cover how provers participate in the network and some end-to-end examples of proving.
Prover Participation Workflow
Running a prover node on the Succinct Network involves several key stages:
1. Staking and Registration
Before your prover can do anything, you'll need to stake $PROVE. Staking is required to be eligible for auctions, and it also acts as collateral in case you fail to deliver a proof. If you miss a deadline, part of your stake will be slashed. The more you stake, the more auctions you can participate in concurrently. The protocol also supports delegated staking, where users can delegate their stake your prover as well.
2. Handling Proof Requests
Once your prover is running and staked, it connects to the off-chain auctioneer. This is a real-time service that broadcasts proof requests over RPC. Your prover listens for new requests as they come in. Each request includes details like the program to be proven, the proof deadline, and the maximum fee the requester is willing to pay. Your job is to monitor these requests and decide, in real time, whether it's profitable for you to bid.
The proof request contains critical information that helps you make bidding decisions:
- Program: The computation to be proven
- Inputs: The data to be used in the computation
- Maximum Prover Gas: A measure of computational complexity
- Fee: The maximum payment offered by the requester
- Deadline: When the proof must be delivered
- Verification Key: Required for proof verification
If your prover sees a proof request that looks worth doing, it submits a bid with the price it's willing to accept. This enters an off-chain sealed-bid auction. The lowest bid wins the right to fulfill the request.
If you win the auction, the request is assigned to your prover. From that point, you're liable for the proof. You need to generate and submit a valid proof before the deadline, or you'll lose your collateral. If you successfully submit the proof on time, the auctioneer marks the request as fulfilled and your balance is credited with the proving fee.
3. Withdrawing Earned Fees
Balances are not settled on-chain immediately. Instead, the auctioneer periodically generates a zero-knowledge proof of all recent state updates, including proof fulfillments, balance changes, and slashing events. This proof is then submitted to Ethereum, where it updates the network's on-chain state. That means your balance is technically updated off-chain, but cryptographically proven and verifiable on-chain.
Once your balance update is included in a settlement batch, you can withdraw your funds directly from the Ethereum smart contract. This does not require any permission from the auctioneer or off-chain components. Even if the auctioneer disappears, your funds are safe and fully withdrawable.
Walkthrough: Requesting and Fulfilling Proofs
To illustrate how the Succinct Prover Network works end-to-end, let's walk through an example from both the requester and prover perspectives.
Requesting Proofs
Requesting proofs is made easy with on-chain $PROVE payments that securely handle user funds and the off-chain backend that handles request data. Suppose that Alice runs a ZK rollup and wishes to request a proof. Alice's proof request requires at least 50 $PROVE to be staked in order to participate in the auction for her proof, for a maximum fee of 100 $PROVE. Alice sets a deadline of 10 minutes for the proof.
Alice can easily do this using the Succinct Prover Network:
- Alice transfers $PROVE to the settlement contract on Ethereum to pay for her proof.
- Alice initiates a proof request containing the program to be proven, the proof's deadline, and the maximum fee she is willing to pay, and sends it to the network's off-chain auctioneer via an RPC call.
- Alice's request is directed to the off-chain auctioneer, where it is matched to the cheapest prover willing to fulfill it.
- Alice receives the proof and the payment is transferred to the prover .
- The balance updates are settled on Ethereum as a single ZK proof, allowing Alice to independently verify the transaction was made correctly.
In addition to this simple user flow, the network makes it easy for Alice to withdraw funds from the smart contract without the permission of any off-chain actors. Even if the auctioneer is not live, Alice can easily withdraw her funds directly from Ethereum.
Fulfilling Proofs
It is similarly easy for provers to fulfill proof requests. Provers participate in auctions to compete on the price of proofs, and receive fees in $PROVE from users. Suppose Bob, Charlie, and Don are provers and are competing for the ability to fulfill Alice's proof request. We illustrate several cases:
- Bob has 100 $PROVE staked and Charlie has 150 $PROVE staked. Both of them are eligible to participate in the auction. Don, on the other hand, only has 25 $PROVE staked. He is ineligible to participate in the auction.
- Bob and Charlie submit bids of 50 $PROVE and 70 $PROVE to the off-chain auctioneer, respectively, to prove Alice's request.
- Bob wins the auction, and the proof request is assigned to him; from assignment, he has 10 minutes to fulfill the proof.
- Bob submits the fulfilled proof to the off-chain auctioneer within 10 minutes, and the payment of 50 $PROVE is transferred to him.
If Bob does not submit a proof that was assigned to him within 10 minutes, the proof request is cancelled and Bob's stake is slashed for 50 $PROVE.