Skip to content

Commit

Permalink
feat: add eth_simulateV1 (alloy-rs#1323)
Browse files Browse the repository at this point in the history
  • Loading branch information
mattsse authored and lwedge99 committed Oct 8, 2024
1 parent d3136d3 commit 31dfc38
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions crates/provider/src/provider/trait.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ use alloy_primitives::{
};
use alloy_rpc_client::{ClientRef, NoParams, PollerBuilder, WeakClient};
use alloy_rpc_types_eth::{
simulate::{SimulatePayload, SimulatedBlock},
AccessListResult, BlockId, BlockNumberOrTag, EIP1186AccountProofResponse, FeeHistory, Filter,
FilterChanges, Log, SyncStatus,
};
Expand Down Expand Up @@ -155,6 +156,17 @@ pub trait Provider<T: Transport + Clone = BoxTransport, N: Network = Ethereum>:
EthCall::new(self.weak_client(), tx)
}

/// Executes an arbitrary number of transactions on top of the requested state.
///
/// The transactions are packed into individual blocks. Overrides can be provided.
#[doc(alias = "eth_simulateV1")]
fn simulate<'req>(
&self,
payload: &'req SimulatePayload,
) -> RpcWithBlock<T, &'req SimulatePayload, Vec<SimulatedBlock<N::BlockResponse>>> {
self.client().request("eth_simulateV1", payload).into()
}

/// Gets the chain ID.
fn get_chain_id(&self) -> ProviderCall<T, NoParams, U64, u64> {
self.client()
Expand Down

0 comments on commit 31dfc38

Please sign in to comment.