Skip to main content

ContractCallLocalQuery

Struct ContractCallLocalQuery 

Source
pub struct ContractCallLocalQuery {
    pub header: Option<QueryHeader>,
    pub contract_id: Option<ContractId>,
    pub gas: i64,
    pub function_parameters: Vec<u8>,
    pub max_result_size: i64,
    pub sender_id: Option<AccountId>,
}
Expand description

Call a view function of a given smart contract
The call must provide function parameter inputs as needed.
This is potentially useful for calling view functions that will not revert when executed in a static EVM context. Many such use cases will be better served by using a Mirror Node API, however.

This is performed locally on the particular node that the client is communicating with. Executing the call locally is faster and less costly, but imposes certain restrictions.
The call MUST NOT change the state of the contract instance. This also precludes any expenditure or transfer of HBAR or other tokens.
The call SHALL NOT have a separate consensus timestamp.
The call SHALL NOT generate a record nor a receipt.
The response SHALL contain the output returned by the function call.
Any contract call that would use the STATICCALL opcode MAY be called via contract call local with performance and cost benefits.

Unlike a ContractCall transaction, the node SHALL always consume the entire amount of offered “gas” in determining the fee for this query, so accurate gas estimation is important.

Fields§

§header: Option<QueryHeader>

Standard information sent with every query operation.
This includes the signed payment and what kind of response is requested (cost, state proof, both, or neither).

The payment MUST be sufficient for the base fees _and_ the full amount in the `gas` field.

§contract_id: Option<ContractId>

The ID of a smart contract to call.

§gas: i64

The amount of “gas” to use for this call.

This transaction SHALL consume all of the gas offered and charge the corresponding fee according to the current exchange rate between HBAR and "gas".

§function_parameters: Vec<u8>

The smart contract function to call, and the parameters to pass to that function.

These SHALL be presented in EVM bytecode function call format.

§max_result_size: i64
👎Deprecated

Do not use this field; it is ignored in the current software.

The maximum number of bytes that the result might include.
The call will fail if it would have returned more than this number of bytes.

§sender_id: Option<AccountId>

The account that is the “sender” for this contract call.

If this is not set it SHALL be interpreted as the accountId from the associated transactionId.
If this is set then either the associated transaction or the foreign transaction data MUST be signed by the referenced account.

Trait Implementations§

Source§

impl Clone for ContractCallLocalQuery

Source§

fn clone(&self) -> ContractCallLocalQuery

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 Debug for ContractCallLocalQuery

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ContractCallLocalQuery

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Message for ContractCallLocalQuery

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited( &self, buf: &mut impl BufMut, ) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for ContractCallLocalQuery

Source§

fn eq(&self, other: &ContractCallLocalQuery) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ContractCallLocalQuery

Auto Trait Implementations§

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> 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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
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 = !

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

fn try_from(value: U) -> Result<T, !>

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