Struct ink_e2e::Client

source ·
pub struct Client<C, E>where
    C: Config,
    E: Environment,{ /* private fields */ }
Expand description

The Client takes care of communicating with the node.

This node’s RPC interface will be used for instantiating the contract and interacting with it .

Implementations§

source§

impl<C, E> Client<C, E>where C: Config, C::AccountId: From<PublicKey> + Codec + DeserializeOwned + Debug, C::Address: From<PublicKey>, C::Signature: From<Signature>, <C::ExtrinsicParams as ExtrinsicParams<C::Hash>>::OtherParams: Default, E: Environment, E::AccountId: Debug, E::Balance: Debug + HasCompact + Serialize, E::Hash: Debug + Encode,

source

pub async fn new( client: OnlineClient<C>, contracts: impl IntoIterator<Item = &str> ) -> Self

Creates a new Client instance using a subxt client.

source

pub async fn create_and_fund_account( &self, origin: &Keypair, amount: E::Balance ) -> Keypairwhere E::Balance: Clone, C::AccountId: Clone + Display + Debug,

Generate a new keypair and fund with the given amount from the origin account.

Because many tests may execute this in parallel, transfers may fail due to a race condition with account indices. Therefore this will reattempt transfers a number of times.

source

pub async fn instantiate<ContractRef, Args, R>( &mut self, contract_name: &str, signer: &Keypair, constructor: CreateBuilder<E, ContractRef, Unset<<E as Environment>::Hash>, Unset<u64>, Unset<<E as Environment>::Balance>, Set<ExecutionInput<Args>>, Unset<Salt>, Set<ReturnType<R>>>, value: E::Balance, storage_deposit_limit: Option<E::Balance> ) -> Result<InstantiationResult<C, E>, Error<C, E>>where Args: Encode,

This function extracts the metadata of the contract at the file path target/ink/$contract_name.contract.

The function subsequently uploads and instantiates an instance of the contract.

Calling this function multiple times is idempotent, the contract is newly instantiated each time using a unique salt. No existing contract instance is reused!

source

pub async fn instantiate_dry_run<ContractRef, Args, R>( &mut self, contract_name: &str, signer: &Keypair, constructor: CreateBuilder<E, ContractRef, Unset<<E as Environment>::Hash>, Unset<u64>, Unset<<E as Environment>::Balance>, Set<ExecutionInput<Args>>, Unset<Salt>, Set<ReturnType<R>>>, value: E::Balance, storage_deposit_limit: Option<E::Balance> ) -> ContractInstantiateResult<C::AccountId, E::Balance, ()>where Args: Encode,

Dry run contract instantiation using the given constructor.

source

pub async fn upload( &mut self, contract_name: &str, signer: &Keypair, storage_deposit_limit: Option<E::Balance> ) -> Result<UploadResult<C, E>, Error<C, E>>

This function extracts the Wasm of the contract for the specified contract.

The function subsequently uploads and instantiates an instance of the contract.

Calling this function multiple times is idempotent, the contract is newly instantiated each time using a unique salt. No existing contract instance is reused!

source

pub async fn exec_upload( &mut self, signer: &Keypair, code: Vec<u8>, storage_deposit_limit: Option<E::Balance> ) -> Result<UploadResult<C, E>, Error<C, E>>

Executes an upload call and captures the resulting events.

source

pub async fn call<RetType>( &mut self, signer: &Keypair, message: Message<E, RetType>, value: E::Balance, storage_deposit_limit: Option<E::Balance> ) -> Result<CallResult<C, E, RetType>, Error<C, E>>where RetType: Decode,

Executes a call for the contract at account_id.

Returns when the transaction is included in a block. The return value contains all events that are associated with this transaction.

source

pub async fn runtime_call<'a>( &mut self, signer: &Keypair, pallet_name: &'a str, call_name: &'a str, call_data: Vec<Value> ) -> Result<ExtrinsicEvents<C>, Error<C, E>>

Executes a runtime call call_name for the pallet_name. The call_data is a Vec<Value>

Note:

  • pallet_name must be in camel case, for example Balances.
  • call_name must be snake case, for example force_transfer.
  • call_data is a Vec<subxt::dynamic::Value> that holds a representation of some value.

Returns when the transaction is included in a block. The return value contains all events that are associated with this transaction.

source

pub async fn call_dry_run<RetType>( &mut self, signer: &Keypair, message: &Message<E, RetType>, value: E::Balance, storage_deposit_limit: Option<E::Balance> ) -> CallDryRunResult<E, RetType>where RetType: Decode,

Executes a dry-run call.

Returns the result of the dry run, together with the decoded return value of the invoked message.

source

pub async fn balance( &self, account_id: E::AccountId ) -> Result<E::Balance, Error<C, E>>where E::Balance: TryFrom<u128>,

Returns the balance of account_id.

Auto Trait Implementations§

§

impl<C, E> !RefUnwindSafe for Client<C, E>

§

impl<C, E> Send for Client<C, E>

§

impl<C, E> Sync for Client<C, E>

§

impl<C, E> Unpin for Client<C, E>where C: Unpin,

§

impl<C, E> !UnwindSafe for Client<C, E>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CheckedConversion for T

source§

fn checked_from<T>(t: T) -> Option<Self>where Self: TryFrom<T>,

Convert from a value of T into an equivalent instance of Option<Self>. Read more
source§

fn checked_into<T>(self) -> Option<T>where Self: TryInto<T>,

Consume self to return Some equivalent value of Option<T>. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> Twhere Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,

source§

fn from_ref(outer: &Outer) -> &T

Get a reference to the inner from the outer.

source§

fn from_mut(outer: &mut Outer) -> &mut T

Get a mutable reference to the inner from the outer.

§

impl<T> Pipe for Twhere T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> Rwhere Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> Rwhere Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
§

impl<T> SaturatedConversion for T

§

fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,

Convert from a value of T into an equivalent instance of Self. Read more
§

fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,

Consume self to return an equivalent value of T. Read more
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,

source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
§

impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,

§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
§

impl<T> JsonSchemaMaybe for T

§

impl<T> MaybeSend for Twhere T: Send,