|
1 | | -use sp1_sdk::ProverClient; |
| 1 | +use sp1_sdk::{network::FulfillmentStrategy, ProverClient}; |
2 | 2 | #[cfg(feature = "remote-prover")] |
3 | | -use sp1_sdk::{ |
4 | | - network::{FulfillmentStrategy, B256}, |
5 | | - SP1ProofMode, |
6 | | -}; |
| 3 | +use sp1_sdk::{network::B256, SP1ProofMode}; |
7 | 4 | #[cfg(feature = "remote-prover")] |
8 | 5 | use zkaleido::ZkVmRemoteProver; |
9 | 6 | use zkaleido::{ |
@@ -52,6 +49,30 @@ impl ZkVmProver for SP1Host { |
52 | 49 | std::env::set_var("SP1_PROVER", "mock"); |
53 | 50 | } |
54 | 51 |
|
| 52 | + if std::env::var("SP1_PROVER").is_ok() { |
| 53 | + let prover_client = ProverClient::builder().network().build(); |
| 54 | + let strategy = std::env::var("SP1_PROOF_STRATEGY") |
| 55 | + .ok() |
| 56 | + .and_then(|s| FulfillmentStrategy::from_str_name(&s.to_ascii_uppercase())) |
| 57 | + .unwrap_or(FulfillmentStrategy::Hosted); |
| 58 | + |
| 59 | + let network_prover_builder = prover_client |
| 60 | + .prove(&self.proving_key, &prover_input) |
| 61 | + .strategy(strategy); |
| 62 | + |
| 63 | + let network_prover = match proof_type { |
| 64 | + ProofType::Compressed => network_prover_builder.compressed(), |
| 65 | + ProofType::Core => network_prover_builder.core(), |
| 66 | + ProofType::Groth16 => network_prover_builder.groth16(), |
| 67 | + }; |
| 68 | + |
| 69 | + let proof_info = network_prover |
| 70 | + .run() |
| 71 | + .map_err(|e| ZkVmError::ProofGenerationError(e.to_string()))?; |
| 72 | + |
| 73 | + return Ok(proof_info.into()); |
| 74 | + } |
| 75 | + |
55 | 76 | let client = ProverClient::from_env(); |
56 | 77 | let mut prover = client.prove(&self.proving_key, &prover_input); |
57 | 78 |
|
|
0 commit comments