Bidder
SP1 Cluster includes a Bidder binary written in Rust that constantly listens for proof requests from the network and places bids. When scaling up your cluster, you have the option to tune relevant parameters. You can set these parameters in your docker-compose.yml file.
Throughput
The parameter BIDDER_THROUGHPUT_MGAS sets your cluster's maximum throughput capacity in millions of prover gas units (MPGUs) per second. This value represents the maximum computational capacity your cluster can handle per second. Higher values mean your cluster can process work.
This value should be set based on your hardware capabilities and your desired resource utilization. Setting it too high may lead to resource contention and slower individual proof times whereas setting it too low may underutilize your cluster's capacity.
Concurrent Proofs
The parameter BIDDER_MAX_CONCURRENT_PROOFS limits the maximum number of proof requests your cluster can work on simultaneously. Once the cluster is working on BIDDER_MAX_CONCURRENT_PROOFS proofs, the bidder will not bid on additional proofs until the number goes down.
The bidder assumes that each proof the cluster is working on will have BIDDER_THROUGHPUT_MGAS / BIDDER_MAX_CONCURRENT_PROOFS throughput, and will use this value to calculate whether there is enough time to fulfill new proofs. If there isn't enough time, it won't bid on these potential proofs.
Bid
Your main lever is BIDDER_USD_BID_TARGET, a USD-denominated bid target in µUSD per BPGU (1 BPGU = 10⁹ PGU). The bidder polls the latest PROVE/USD rate and converts your target to PROVE wei at submission time. Lower values increase your chances of winning bids but reduce profit margins. Higher values decrease competitiveness but increase potential profits per proof. Market dynamics will determine the optimal bid level.
Two knobs tune how the bidder keeps its PROVE/USD reading fresh:
BIDDER_USD_BID_REFRESH_INTERVAL_SECS(default:60): how often to refresh the PROVE/USD reading.BIDDER_USD_BID_STALENESS_MAX_SECS(default:1800): the maximum age the bidder will trust a reading before deferring to the safety bid (see below). In normal operation the reading is refreshed well within this window.
Safety bid
BIDDER_BID_AMOUNT is a static bid amount in wei per PGU. Under normal operation the bidder uses your USD-denominated target; it falls back to BIDDER_BID_AMOUNT only if you opt out of the dynamic path (BIDDER_USD_BID_ENABLED=false) or in the unlikely event the upstream PROVE/USD source becomes unreachable for long enough to exceed the staleness threshold above. Set it to a reasonable value as a safety net. The Succinct Prover Network uses a reverse auction; lower bids are more competitive.
Buffers and Modes
The bidder also uses time buffers and supports per-mode toggles to decide whether to bid on a request:
BIDDER_BUFFER_SEC(default: 30): Base safety buffer in seconds added to all requests to account for network latency and processing overhead.BIDDER_GROTH16_BUFFER_SEC(default: 30): Extra buffer applied only to Groth16 requests.BIDDER_PLONK_BUFFER_SEC(default: 80): Extra buffer applied only to Plonk requests.BIDDER_GROTH16_ENABLED(default: true): If false, the bidder will not bid on Groth16 requests.BIDDER_PLONK_ENABLED(default: true): If false, the bidder will not bid on Plonk requests.
Tuning these values helps ensure your cluster only bids on proofs it can complete before the deadline. If you experience frequent timeouts in a particular mode, consider increasing the corresponding buffer or disabling that mode temporarily.