Skip to main content

ReviveCallApi

Struct ReviveCallApi 

Source
pub struct ReviveCallApi<'api> { /* private fields */ }

Implementations§

Source§

impl<'api> ReviveCallApi<'api>

Source

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.

Source

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 the origin to dest.

  • 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.

Source

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.

Source

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 the origin to 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. If Some is supplied then CREATE2 semantics are used. If None then CRATE1 is used.

Instantiation is executed as follows:

  • The supplied code is deployed, and a code_hash is created for that code.
  • If the code_hash already exists on the chain the underlying code 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.
Source

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 the origin to the newly created contract.
  • weight_limit: The gas limit used to derive the transaction weight for transaction payment
  • eth_gas_limit: The Ethereum gas limit governing the resource usage of the execution
  • code: 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_transact extrinsic

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.

Source

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 called
  • value: The balance to transfer from the origin to the newly created contract.
  • weight_limit: The gas limit used to derive the transaction weight for transaction payment
  • eth_gas_limit: The Ethereum gas limit governing the resource usage of the execution
  • 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_transact extrinsic
Source

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,
Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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>

Source§

fn clone(&self) -> ReviveCallApi<'api>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'api> From<&'api Api> for ReviveCallApi<'api>

Source§

fn from(api: &'api Api) -> Self

Converts to this type from the input type.

Auto 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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where 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
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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 T
where 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<Src, Dest> IntoTuple<Dest> for Src
where Dest: FromTuple<Src>,

Source§

fn into_tuple(self) -> Dest

Source§

impl<T, Outer> IsWrappedBy<Outer> for T
where 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.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatedConversion for T

Source§

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

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

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

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

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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 T
where U: TryFrom<T>,

Source§

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 S
where T: UncheckedFrom<S>,

Source§

fn unchecked_into(self) -> T

The counterpart to unchecked_from.
Source§

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

Source§

fn unique_saturated_into(self) -> T

Consume self to return an equivalent value of T.
Source§

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

Source§

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
Source§

impl<T> JsonSchemaMaybe for T

Source§

impl<T> MaybeSend for T
where T: Send,