pub struct ReviveCallApi<'api> { /* private fields */ }Implementations§
Source§impl<'api> ReviveCallApi<'api>
impl<'api> ReviveCallApi<'api>
Sourcepub fn eth_transact(&self, payload: Vec<u8>) -> Result<WrappedCall>
pub fn eth_transact(&self, payload: Vec<u8>) -> Result<WrappedCall>
A raw EVM transaction, typically dispatched by an Ethereum JSON-RPC server.
§Parameters
payload: The encoded [crate::evm::TransactionSigned].
§Note
This call cannot be dispatched directly; attempting to do so will result in a failed
transaction. It serves as a wrapper for an Ethereum transaction. When submitted, the
runtime converts it into a [sp_runtime::generic::CheckedExtrinsic] by recovering the
signer and validating the transaction.
Sourcepub fn call(
&self,
dest: H160,
value: u128,
weight_limit: Weight,
storage_deposit_limit: u128,
data: Vec<u8>,
) -> Result<WrappedCall>
pub fn call( &self, dest: H160, value: u128, weight_limit: Weight, storage_deposit_limit: 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 theorigintodest. -
weight_limit: The weight 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(
&self,
value: u128,
weight_limit: Weight,
storage_deposit_limit: u128,
code_hash: H256,
data: Vec<u8>,
salt: Option<[u8; 32]>,
) -> Result<WrappedCall>
pub fn instantiate( &self, value: u128, weight_limit: Weight, storage_deposit_limit: u128, code_hash: H256, data: Vec<u8>, salt: Option<[u8; 32]>, ) -> Result<WrappedCall>
Instantiates a contract from a previously deployed vm 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 vm binary
must be supplied.
Sourcepub fn instantiate_with_code(
&self,
value: u128,
weight_limit: Weight,
storage_deposit_limit: u128,
code: Vec<u8>,
data: Vec<u8>,
salt: Option<[u8; 32]>,
) -> Result<WrappedCall>
pub fn instantiate_with_code( &self, value: u128, weight_limit: Weight, storage_deposit_limit: u128, code: Vec<u8>, data: Vec<u8>, salt: Option<[u8; 32]>, ) -> 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 theoriginto the newly created contract.weight_limit: The weight 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. IfSomeis supplied thenCREATE2semantics are used. IfNonethenCRATE1is used.
Instantiation is executed as follows:
- The supplied
codeis deployed, and acode_hashis created for that code. - If the
code_hashalready exists on the chain the underlyingcodewill 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
valueis transferred to the new account. - The
deployfunction is executed in the context of the newly-created account.
Sourcepub fn eth_instantiate_with_code(
&self,
value: U256,
weight_limit: Weight,
eth_gas_limit: U256,
code: Vec<u8>,
data: Vec<u8>,
transaction_encoded: Vec<u8>,
effective_gas_price: U256,
encoded_len: u32,
) -> Result<WrappedCall>
pub fn eth_instantiate_with_code( &self, value: U256, weight_limit: Weight, eth_gas_limit: U256, code: Vec<u8>, data: Vec<u8>, transaction_encoded: Vec<u8>, effective_gas_price: U256, encoded_len: u32, ) -> Result<WrappedCall>
Same as Self::instantiate_with_code, but intended to be dispatched only
by an EVM transaction through the EVM compatibility layer.
§Parameters
value: The balance to transfer from theoriginto the newly created contract.weight_limit: The gas limit used to derive the transaction weight for transaction paymenteth_gas_limit: The Ethereum gas limit governing the resource usage of the executioncode: The contract code to deploy in raw bytes.data: The input data to pass to the contract constructor.transaction_encoded: The RLP encoding of the signed Ethereum transaction, represented as [crate::evm::TransactionSigned], provided by the Ethereum wallet. This is used for building the Ethereum transaction root.- effective_gas_price: the price of a unit of gas
- encoded len: the byte code size of the
eth_transactextrinsic
Calling this dispatchable ensures that the origin’s nonce is bumped only once,
via the CheckNonce transaction extension. In contrast, Self::instantiate_with_code
also bumps the nonce after contract instantiation, since it may be invoked multiple
times within a batch call transaction.
Sourcepub fn eth_call(
&self,
dest: H160,
value: U256,
weight_limit: Weight,
eth_gas_limit: U256,
data: Vec<u8>,
transaction_encoded: Vec<u8>,
effective_gas_price: U256,
encoded_len: u32,
) -> Result<WrappedCall>
pub fn eth_call( &self, dest: H160, value: U256, weight_limit: Weight, eth_gas_limit: U256, data: Vec<u8>, transaction_encoded: Vec<u8>, effective_gas_price: U256, encoded_len: u32, ) -> Result<WrappedCall>
Same as Self::call, but intended to be dispatched only
by an EVM transaction through the EVM compatibility layer.
§Parameters
dest: The Ethereum address of the account to be calledvalue: The balance to transfer from theoriginto the newly created contract.weight_limit: The gas limit used to derive the transaction weight for transaction paymenteth_gas_limit: The Ethereum gas limit governing the resource usage of the executiondata: The input data to pass to the contract constructor.transaction_encoded: The RLP encoding of the signed Ethereum transaction, represented as [crate::evm::TransactionSigned], provided by the Ethereum wallet. This is used for building the Ethereum transaction root.- effective_gas_price: the price of a unit of gas
- encoded len: the byte code size of the
eth_transactextrinsic
Sourcepub fn eth_substrate_call(
&self,
call: RuntimeCall,
transaction_encoded: Vec<u8>,
) -> Result<WrappedCall>
pub fn eth_substrate_call( &self, call: RuntimeCall, transaction_encoded: Vec<u8>, ) -> Result<WrappedCall>
Executes a Substrate runtime call from an Ethereum transaction.
This dispatchable is intended to be called only through the EVM compatibility
layer. The provided call will be dispatched using RawOrigin::Signed.
§Parameters
origin: Must be an [Origin::EthTransaction] origin.call: The Substrate runtime call to execute.transaction_encoded: The RLP encoding of the Ethereum transaction,
Sourcepub fn upload_code(
&self,
code: Vec<u8>,
storage_deposit_limit: u128,
) -> Result<WrappedCall>
pub fn upload_code( &self, code: Vec<u8>, storage_deposit_limit: u128, ) -> 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
The size of the reserve depends on the size of the supplied code.
§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.
If the refcount of the code reaches zero after terminating the last contract that references this code, the code will be removed automatically.
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: H160, code_hash: H256) -> Result<WrappedCall>
pub fn set_code(&self, dest: H160, 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 map_account(&self) -> Result<WrappedCall>
pub fn map_account(&self) -> Result<WrappedCall>
Register the callers account id so that it can be used in contract interactions.
This will error if the origin is already mapped or is a eth native Address20. It will
take a deposit that can be released by calling Self::unmap_account.
Sourcepub fn unmap_account(&self) -> Result<WrappedCall>
pub fn unmap_account(&self) -> Result<WrappedCall>
Unregister the callers account id in order to free the deposit.
There is no reason to ever call this function other than freeing up the deposit. This is only useful when the account should no longer be used.
Sourcepub fn dispatch_as_fallback_account(
&self,
call: RuntimeCall,
) -> Result<WrappedCall>
pub fn dispatch_as_fallback_account( &self, call: RuntimeCall, ) -> Result<WrappedCall>
Dispatch an call with the origin set to the callers fallback address.
Every AccountId32 can control its corresponding fallback account. The fallback account
is the AccountId20 with the last 12 bytes set to 0xEE. This is essentially a
recovery function in case an AccountId20 was used without creating a mapping first.
Trait Implementations§
Source§impl<'api> Clone for ReviveCallApi<'api>
impl<'api> Clone for ReviveCallApi<'api>
Source§fn clone(&self) -> ReviveCallApi<'api>
fn clone(&self) -> ReviveCallApi<'api>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<'api> Freeze for ReviveCallApi<'api>
impl<'api> !RefUnwindSafe for ReviveCallApi<'api>
impl<'api> Send for ReviveCallApi<'api>
impl<'api> Sync for ReviveCallApi<'api>
impl<'api> Unpin for ReviveCallApi<'api>
impl<'api> UnsafeUnpin for ReviveCallApi<'api>
impl<'api> !UnwindSafe for ReviveCallApi<'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.