Struct ethers_middleware::transformer::ds_proxy::DsProxy
source · pub struct DsProxy { /* private fields */ }Expand description
Represents the DsProxy type that implements the Transformer trait.
Example
use ethers_middleware::{SignerMiddleware, transformer::DsProxy};
use ethers_signers::LocalWallet;
use ethers_providers::{Provider, Http};
use ethers_core::types::{Address, Bytes};
use std::{convert::TryFrom, sync::Arc};
type HttpWallet = SignerMiddleware<Provider<Http>, LocalWallet>;
// instantiate client that can sign transactions.
let wallet: LocalWallet = "380eb0f3d505f087e438eca80bc4df9a7faa24f868e69fc0440261a0fc0567dc"
.parse()?;
let provider = Provider::<Http>::try_from("http://localhost:8545")?;
let client = SignerMiddleware::new(provider, wallet);
// instantiate DsProxy by providing its address.
let ds_proxy = DsProxy::new(ds_proxy_addr);
// execute a transaction via the DsProxy instance.
let target = Address::random();
let calldata: Bytes = vec![0u8; 32].into();
let contract_call = ds_proxy.execute::<HttpWallet, Arc<HttpWallet>, Address>(
Arc::new(client),
target,
calldata,
)?;
let pending_tx = contract_call.send().await?;
let _tx_receipt = pending_tx.await?;
Implementations§
source§impl DsProxy
impl DsProxy
sourcepub async fn build<M: Middleware, C: Into<Arc<M>>>(
client: C,
factory: Option<Address>,
owner: Address
) -> Result<Self, ContractError<M>>
pub async fn build<M: Middleware, C: Into<Arc<M>>>( client: C, factory: Option<Address>, owner: Address ) -> Result<Self, ContractError<M>>
Deploys a new DsProxy contract to the Ethereum network.
source§impl DsProxy
impl DsProxy
sourcepub fn execute<M: Middleware, C: Into<Arc<M>>, T: Into<AddressOrBytes>>(
&self,
client: C,
target: T,
data: Bytes
) -> Result<ContractCall<M, Bytes>, ContractError<M>>
pub fn execute<M: Middleware, C: Into<Arc<M>>, T: Into<AddressOrBytes>>( &self, client: C, target: T, data: Bytes ) -> Result<ContractCall<M, Bytes>, ContractError<M>>
Execute a tx through the DsProxy instance. The target can either be a deployed smart
contract’s address, or bytecode of a compiled smart contract. Depending on the target, the
appropriate execute method is called, that is, either
execute(address,bytes)
or execute(bytes,bytes).
Trait Implementations§
source§impl Transformer for DsProxy
impl Transformer for DsProxy
source§fn transform(&self, tx: &mut TypedTransaction) -> Result<(), TransformerError>
fn transform(&self, tx: &mut TypedTransaction) -> Result<(), TransformerError>
Transforms a
transaction request into one that can be broadcasted and execute via the
proxy contract.Auto Trait Implementations§
impl RefUnwindSafe for DsProxy
impl Send for DsProxy
impl Sync for DsProxy
impl Unpin for DsProxy
impl UnwindSafe for DsProxy
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more