Benchmark proving time
There are two types of benchmarks that can be used to get insight on the proving time necessary for each kind of proof generated by the proof server. The first type will generate STARK core proofs, and represents the time it takes to generate and prove execution of one of the programs. The second type will generate a SNARK proof that can be verified on-chain, and represents the end-to-end time it takes to generate a proof that can be verified directly on-chain. Due to the SNARK compression, the SNARK proofs take longer to generate and require more resources.
The worst case latency (described here) can be evaluated by running the end-to-end benchmark for each of the two proofs, and looking at the maximum of the time it took to genereate each proof.
The numbers we've measured using our production configuration are further detailed in the E2E Benchmarks section. They are included below as well for reference:
For STARKs:
{
"e2e_proving_time": 51489,
"inclusion_proof": {
"proving_time": 46636,
"request_response_proof_size": 22830628
},
"epoch_change_proof": {
"proving_time": 51489,
"request_response_proof_size": 25482668
}
}
For SNARKs:
{
"e2e_proving_time": 694809,
"inclusion_proof": {
"proving_time": 689228,
"request_response_proof_size": 18454
},
"epoch_change_proof": {
"proving_time": 694809,
"request_response_proof_size": 28661
}
}
Blob proofs on Ethereum
We're also working on a STARK verifier that could be used alongside Ethereum's new blob transactions, which can be used to drastically minimize the gas costs for large data such as STARK proofs. This is still experimental and an early work-in-progress, but preliminary benchmarks using an Ethereum-friendly hash function and compression show that proof generation could be achieved at around 6 to 7 minutes.
GPU acceleration
Currently, the Sphinx prover is CPU-only, and there is no GPU acceleration integrated yet. We are working on integrating future work for GPU acceleration as soon as we can to improve the overall proving time.