Skip to content

Commit ca2bc86

Browse files
perf: aggregation-mode sp1 prover setup (#1862)
1 parent b41ad31 commit ca2bc86

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

aggregation_mode/src/aggregators/sp1_aggregator.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1+
use std::sync::LazyLock;
2+
13
use alloy::primitives::Keccak256;
24
use sp1_aggregation_program::{ProofInput, SP1ProofInput};
35
use sp1_sdk::{
4-
HashableKey, Prover, ProverClient, SP1ProofWithPublicValues, SP1Stdin, SP1VerifyingKey,
6+
EnvProver, HashableKey, Prover, ProverClient, SP1ProofWithPublicValues, SP1Stdin,
7+
SP1VerifyingKey,
58
};
69

710
use super::lib::{AggregatedProof, ProgramOutput, ProofAggregationError};
811

912
const PROGRAM_ELF: &[u8] =
1013
include_bytes!("../../aggregation_programs/sp1/elf/sp1_aggregator_program");
1114

15+
static SP1_PROVER_CLIENT: LazyLock<EnvProver> = LazyLock::new(ProverClient::from_env);
16+
1217
pub struct SP1ProofWithPubValuesAndElf {
1318
pub proof_with_pub_values: SP1ProofWithPublicValues,
1419
pub elf: Vec<u8>,
@@ -66,7 +71,7 @@ pub(crate) fn aggregate_proofs(
6671
}
6772

6873
#[cfg(feature = "prove")]
69-
let client = ProverClient::from_env();
74+
let client = &*SP1_PROVER_CLIENT;
7075
// If not in prove mode, create a mock proof via mock client
7176
#[cfg(not(feature = "prove"))]
7277
let client = ProverClient::builder().mock().build();
@@ -102,7 +107,7 @@ pub enum AlignedSP1VerificationError {
102107
pub(crate) fn verify(
103108
sp1_proof_with_pub_values_and_elf: &SP1ProofWithPubValuesAndElf,
104109
) -> Result<(), AlignedSP1VerificationError> {
105-
let client = ProverClient::from_env();
110+
let client = &*SP1_PROVER_CLIENT;
106111

107112
let (_pk, vk) = client.setup(&sp1_proof_with_pub_values_and_elf.elf);
108113

@@ -122,7 +127,7 @@ pub(crate) fn verify(
122127
}
123128

124129
pub fn vk_from_elf(elf: &[u8]) -> SP1VerifyingKey {
125-
let prover = ProverClient::builder().cpu().build();
130+
let prover = &*SP1_PROVER_CLIENT;
126131
let (_, vk) = prover.setup(elf);
127132
vk
128133
}

0 commit comments

Comments
 (0)