Struct ethers_middleware::transformer::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
sourceimpl 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.
sourceimpl 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
sourceimpl Transformer for DsProxy
impl Transformer for DsProxy
sourcefn 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. Read moreAuto Trait Implementations
impl RefUnwindSafe for DsProxy
impl Send for DsProxy
impl Sync for DsProxy
impl Unpin for DsProxy
impl UnwindSafe for DsProxy
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more