miden_client/transaction/
prover.rs

1use alloc::boxed::Box;
2
3use miden_objects::transaction::{ProvenTransaction, TransactionInputs};
4use miden_remote_prover_client::remote_prover::tx_prover::RemoteTransactionProver;
5use miden_tx::{LocalTransactionProver, TransactionProverError};
6
7#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
8#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
9pub trait TransactionProver {
10    async fn prove(
11        &self,
12        tx_result: TransactionInputs,
13    ) -> Result<ProvenTransaction, TransactionProverError>;
14}
15
16#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
17#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
18impl TransactionProver for LocalTransactionProver {
19    async fn prove(
20        &self,
21        witness: TransactionInputs,
22    ) -> Result<ProvenTransaction, TransactionProverError> {
23        LocalTransactionProver::prove(self, witness)
24    }
25}
26
27#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
28#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
29impl TransactionProver for RemoteTransactionProver {
30    async fn prove(
31        &self,
32        witness: TransactionInputs,
33    ) -> Result<ProvenTransaction, TransactionProverError> {
34        let fut = RemoteTransactionProver::prove(self, witness);
35        fut.await
36    }
37}