iota_types/
transaction_executor.rs1use std::collections::BTreeMap;
6
7use crate::{
8 base_types::ObjectID,
9 effects::{TransactionEffects, TransactionEvents},
10 error::IotaError,
11 object::Object,
12 quorum_driver_types::{
13 ExecuteTransactionRequestV1, ExecuteTransactionResponseV1, QuorumDriverError,
14 },
15 transaction::TransactionData,
16};
17
18#[async_trait::async_trait]
21pub trait TransactionExecutor: Send + Sync {
22 async fn execute_transaction(
23 &self,
24 request: ExecuteTransactionRequestV1,
25 client_addr: Option<std::net::SocketAddr>,
26 ) -> Result<ExecuteTransactionResponseV1, QuorumDriverError>;
27
28 fn simulate_transaction(
29 &self,
30 transaction: TransactionData,
31 ) -> Result<SimulateTransactionResult, IotaError>;
32}
33
34pub struct SimulateTransactionResult {
35 pub effects: TransactionEffects,
36 pub events: Option<TransactionEvents>,
37 pub input_objects: BTreeMap<ObjectID, Object>,
38 pub output_objects: BTreeMap<ObjectID, Object>,
39 pub mock_gas_id: Option<ObjectID>,
40}