pub struct ContractsCallApi<'api> { /* private fields */ }
Implementations§
Source§impl<'api> ContractsCallApi<'api>
impl<'api> ContractsCallApi<'api>
Sourcepub fn call_old_weight(
&self,
dest: MultiAddress<AccountId, u32>,
value: u128,
gas_limit: OldWeight,
storage_deposit_limit: Option<Compact<u128>>,
data: Vec<u8>,
) -> Result<WrappedCall>
pub fn call_old_weight( &self, dest: MultiAddress<AccountId, u32>, value: u128, gas_limit: OldWeight, storage_deposit_limit: Option<Compact<u128>>, data: Vec<u8>, ) -> Result<WrappedCall>
Deprecated version if Self::call
for use in an in-storage Call
.
Sourcepub fn instantiate_with_code_old_weight(
&self,
value: u128,
gas_limit: OldWeight,
storage_deposit_limit: Option<Compact<u128>>,
code: Vec<u8>,
data: Vec<u8>,
salt: Vec<u8>,
) -> Result<WrappedCall>
pub fn instantiate_with_code_old_weight( &self, value: u128, gas_limit: OldWeight, storage_deposit_limit: Option<Compact<u128>>, code: Vec<u8>, data: Vec<u8>, salt: Vec<u8>, ) -> Result<WrappedCall>
Deprecated version if Self::instantiate_with_code
for use in an in-storage Call
.
Sourcepub fn instantiate_old_weight(
&self,
value: u128,
gas_limit: OldWeight,
storage_deposit_limit: Option<Compact<u128>>,
code_hash: H256,
data: Vec<u8>,
salt: Vec<u8>,
) -> Result<WrappedCall>
pub fn instantiate_old_weight( &self, value: u128, gas_limit: OldWeight, storage_deposit_limit: Option<Compact<u128>>, code_hash: H256, data: Vec<u8>, salt: Vec<u8>, ) -> Result<WrappedCall>
Deprecated version if Self::instantiate
for use in an in-storage Call
.
Sourcepub fn upload_code(
&self,
code: Vec<u8>,
storage_deposit_limit: Option<Compact<u128>>,
determinism: Determinism,
) -> Result<WrappedCall>
pub fn upload_code( &self, code: Vec<u8>, storage_deposit_limit: Option<Compact<u128>>, determinism: Determinism, ) -> Result<WrappedCall>
Upload new code
without instantiating a contract from it.
If the code does not already exist a deposit is reserved from the caller
and unreserved only when Self::remove_code
is called. The size of the reserve
depends on the instrumented size of the the supplied code
.
If the code already exists in storage it will still return Ok
and upgrades
the in storage version to the current
InstructionWeights::version
.
determinism
: If this is set to any other value but [Determinism::Deterministic
] then the only way to use this code is to delegate call into it from an offchain execution. Set to [Determinism::Deterministic
] if in doubt.
§Note
Anyone can instantiate a contract from any uploaded code and thus prevent its removal.
To avoid this situation a constructor could employ access control so that it can
only be instantiated by permissioned entities. The same is true when uploading
through Self::instantiate_with_code
.
Sourcepub fn remove_code(&self, code_hash: H256) -> Result<WrappedCall>
pub fn remove_code(&self, code_hash: H256) -> Result<WrappedCall>
Remove the code stored under code_hash
and refund the deposit to its owner.
A code can only be removed by its original uploader (its owner) and only if it is not used by any contract.
Sourcepub fn set_code(
&self,
dest: MultiAddress<AccountId, u32>,
code_hash: H256,
) -> Result<WrappedCall>
pub fn set_code( &self, dest: MultiAddress<AccountId, u32>, code_hash: H256, ) -> Result<WrappedCall>
Privileged function that changes the code of an existing contract.
This takes care of updating refcounts and all other necessary operations. Returns
an error if either the code_hash
or dest
do not exist.
§Note
This does not change the address of the contract in question. This means that the contract address is no longer derived from its code hash after calling this dispatchable.
Sourcepub fn call(
&self,
dest: MultiAddress<AccountId, u32>,
value: u128,
gas_limit: Weight,
storage_deposit_limit: Option<Compact<u128>>,
data: Vec<u8>,
) -> Result<WrappedCall>
pub fn call( &self, dest: MultiAddress<AccountId, u32>, value: u128, gas_limit: Weight, storage_deposit_limit: Option<Compact<u128>>, data: Vec<u8>, ) -> Result<WrappedCall>
Makes a call to an account, optionally transferring some balance.
§Parameters
-
dest
: Address of the contract to call. -
value
: The balance to transfer from theorigin
todest
. -
gas_limit
: The gas limit enforced when executing the constructor. -
storage_deposit_limit
: The maximum amount of balance that can be charged from the caller to pay for the storage consumed. -
data
: The input data to pass to the contract. -
If the account is a smart-contract account, the associated code will be executed and any value will be transferred.
-
If the account is a regular account, any value will be transferred.
-
If no account exists and the call value is not less than
existential_deposit
, a regular account will be created and any value will be transferred.
Sourcepub fn instantiate_with_code(
&self,
value: u128,
gas_limit: Weight,
storage_deposit_limit: Option<Compact<u128>>,
code: Vec<u8>,
data: Vec<u8>,
salt: Vec<u8>,
) -> Result<WrappedCall>
pub fn instantiate_with_code( &self, value: u128, gas_limit: Weight, storage_deposit_limit: Option<Compact<u128>>, code: Vec<u8>, data: Vec<u8>, salt: Vec<u8>, ) -> Result<WrappedCall>
Instantiates a new contract from the supplied code
optionally transferring
some balance.
This dispatchable has the same effect as calling Self::upload_code
+
Self::instantiate
. Bundling them together provides efficiency gains. Please
also check the documentation of Self::upload_code
.
§Parameters
value
: The balance to transfer from theorigin
to the newly created contract.gas_limit
: The gas limit enforced when executing the constructor.storage_deposit_limit
: The maximum amount of balance that can be charged/reserved from the caller to pay for the storage consumed.code
: The contract code to deploy in raw bytes.data
: The input data to pass to the contract constructor.salt
: Used for the address derivation. See [Pallet::contract_address
].
Instantiation is executed as follows:
- The supplied
code
is instrumented, deployed, and acode_hash
is created for that code. - If the
code_hash
already exists on the chain the underlyingcode
will be shared. - The destination address is computed based on the sender, code_hash and the salt.
- The smart-contract account is created at the computed address.
- The
value
is transferred to the new account. - The
deploy
function is executed in the context of the newly-created account.
Sourcepub fn instantiate(
&self,
value: u128,
gas_limit: Weight,
storage_deposit_limit: Option<Compact<u128>>,
code_hash: H256,
data: Vec<u8>,
salt: Vec<u8>,
) -> Result<WrappedCall>
pub fn instantiate( &self, value: u128, gas_limit: Weight, storage_deposit_limit: Option<Compact<u128>>, code_hash: H256, data: Vec<u8>, salt: Vec<u8>, ) -> Result<WrappedCall>
Instantiates a contract from a previously deployed wasm binary.
This function is identical to Self::instantiate_with_code
but without the
code deployment step. Instead, the code_hash
of an on-chain deployed wasm binary
must be supplied.
Trait Implementations§
Source§impl<'api> Clone for ContractsCallApi<'api>
impl<'api> Clone for ContractsCallApi<'api>
Source§fn clone(&self) -> ContractsCallApi<'api>
fn clone(&self) -> ContractsCallApi<'api>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<'api> Freeze for ContractsCallApi<'api>
impl<'api> !RefUnwindSafe for ContractsCallApi<'api>
impl<'api> Send for ContractsCallApi<'api>
impl<'api> Sync for ContractsCallApi<'api>
impl<'api> Unpin for ContractsCallApi<'api>
impl<'api> !UnwindSafe for ContractsCallApi<'api>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
impl<Src, Dest> IntoTuple<Dest> for Srcwhere
Dest: FromTuple<Src>,
fn into_tuple(self) -> Dest
Source§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
Source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
Source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
Source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moreSource§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
.Source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
Source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.