Skip to content

Commit

Permalink
reuse Prover between requests
Browse files Browse the repository at this point in the history
  • Loading branch information
gswirski committed Feb 27, 2025
1 parent f704e21 commit f1b9b36
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 8 deletions.
2 changes: 1 addition & 1 deletion bin/proving-service/src/api/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ impl ProverApi for ProverRpcApi {
request: Request<ProveTransactionRequest>,
) -> Result<Response<ProveTransactionResponse>, tonic::Status> {
// Try to acquire a permit without waiting
let prover = self
let mut prover = self
.local_prover
.try_lock()
.map_err(|_| Status::resource_exhausted("Server is busy handling another request"))?;
Expand Down
2 changes: 1 addition & 1 deletion crates/miden-proving-service-client/src/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ impl RemoteTransactionProver {
#[async_trait::async_trait(?Send)]
impl TransactionProver for RemoteTransactionProver {
async fn prove(
&self,
&mut self,
tx_witness: TransactionWitness,
) -> Result<ProvenTransaction, TransactionProverError> {
use miden_objects::utils::Serializable;
Expand Down
10 changes: 6 additions & 4 deletions crates/miden-tx/src/prover/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ pub trait TransactionProver {
/// - If the transaction result is corrupt.
#[maybe_async]
fn prove(
&self,
&mut self,
tx_witness: TransactionWitness,
) -> Result<ProvenTransaction, TransactionProverError>;
}
Expand All @@ -43,6 +43,7 @@ pub trait TransactionProver {
///
/// Local Transaction Prover implements the [TransactionProver] trait.
pub struct LocalTransactionProver {
prover: Prover,
mast_store: Arc<TransactionMastStore>,
proof_options: ProvingOptions,
}
Expand All @@ -51,6 +52,7 @@ impl LocalTransactionProver {
/// Creates a new [LocalTransactionProver] instance.
pub fn new(proof_options: ProvingOptions) -> Self {
Self {
prover: Prover::new(),
mast_store: Arc::new(TransactionMastStore::new()),
proof_options,
}
Expand All @@ -68,6 +70,7 @@ impl LocalTransactionProver {
impl Default for LocalTransactionProver {
fn default() -> Self {
Self {
prover: Prover::new(),
mast_store: Arc::new(TransactionMastStore::new()),
proof_options: Default::default(),
}
Expand All @@ -78,7 +81,7 @@ impl Default for LocalTransactionProver {
impl TransactionProver for LocalTransactionProver {
#[maybe_async]
fn prove(
&self,
&mut self,
tx_witness: TransactionWitness,
) -> Result<ProvenTransaction, TransactionProverError> {
let TransactionWitness {
Expand Down Expand Up @@ -114,8 +117,7 @@ impl TransactionProver for LocalTransactionProver {
)
.map_err(TransactionProverError::TransactionHostCreationFailed)?;

let mut prover = Prover::new();
let (stack_outputs, proof) = maybe_await!(prover.prove(
let (stack_outputs, proof) = maybe_await!(self.prover.prove(
&TransactionKernel::main(),
stack_inputs,
&mut host,
Expand Down
2 changes: 1 addition & 1 deletion crates/miden-tx/src/tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ fn prove_witness_and_verify() {
let executed_transaction_id = executed_transaction.id();

let proof_options = ProvingOptions::default();
let prover = LocalTransactionProver::new(proof_options);
let mut prover = LocalTransactionProver::new(proof_options);
let proven_transaction = prover.prove(executed_transaction.into()).unwrap();

assert_eq!(proven_transaction.id(), executed_transaction_id);
Expand Down
2 changes: 1 addition & 1 deletion crates/miden-tx/tests/integration/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ pub fn prove_and_verify_transaction(
// Prove the transaction

let proof_options = ProvingOptions::default();
let prover = LocalTransactionProver::new(proof_options);
let mut prover = LocalTransactionProver::new(proof_options);
let proven_transaction = prover.prove(executed_transaction.into()).unwrap();

assert_eq!(proven_transaction.id(), executed_transaction_id);
Expand Down

0 comments on commit f1b9b36

Please sign in to comment.