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,
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,
sourcepub async fn new(
client: OnlineClient<C>,
contracts: impl IntoIterator<Item = &str>
) -> Self
pub async fn new( client: OnlineClient<C>, contracts: impl IntoIterator<Item = &str> ) -> Self
Creates a new Client
instance using a subxt
client.
sourcepub async fn create_and_fund_account(
&self,
origin: &Keypair,
amount: E::Balance
) -> Keypairwhere
E::Balance: Clone,
C::AccountId: Clone + Display + Debug,
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.
sourcepub 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,
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!
sourcepub 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,
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.
sourcepub async fn upload(
&mut self,
contract_name: &str,
signer: &Keypair,
storage_deposit_limit: Option<E::Balance>
) -> Result<UploadResult<C, E>, Error<C, E>>
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!
sourcepub async fn exec_upload(
&mut self,
signer: &Keypair,
code: Vec<u8>,
storage_deposit_limit: Option<E::Balance>
) -> Result<UploadResult<C, E>, Error<C, E>>
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.
sourcepub 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,
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.
sourcepub 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>>
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 exampleBalances
.call_name
must be snake case, for exampleforce_transfer
.call_data
is aVec<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.
sourcepub 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,
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.
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> 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
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
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,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
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,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§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,
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,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
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,
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,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
T
. Read more§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
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,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
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,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.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,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.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,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.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,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.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,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for Swhere
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.