pub struct VMLimitConfig {
Show 26 fields pub max_gas_burnt: u64, pub max_stack_height: u32, pub stack_limiter_version: StackLimiterVersion, pub initial_memory_pages: u32, pub max_memory_pages: u32, pub registers_memory_limit: u64, pub max_register_size: u64, pub max_number_registers: u64, pub max_number_logs: u64, pub max_total_log_length: u64, pub max_total_prepaid_gas: u64, pub max_actions_per_receipt: u64, pub max_number_bytes_method_names: u64, pub max_length_method_name: u64, pub max_arguments_length: u64, pub max_length_returned_data: u64, pub max_contract_size: u64, pub max_transaction_size: u64, pub max_length_storage_key: u64, pub max_length_storage_value: u64, pub max_promises_per_function_call_action: u64, pub max_number_input_data_dependencies: u64, pub max_functions_number_per_contract: Option<u64>, pub wasmer2_stack_limit: i32, pub max_locals_per_contract: Option<u64>, pub account_id_validity_rules_version: AccountIdValidityRulesVersion,
}
Expand description

Describes limits for VM and Runtime. TODO #4139: consider switching to strongly-typed wrappers instead of raw quantities

Fields§

§max_gas_burnt: u64

Max amount of gas that can be used, excluding gas attached to promises.

§max_stack_height: u32

How tall the stack is allowed to grow?

See https://wiki.parity.io/WebAssembly-StackHeight to find out how the stack frame cost is calculated.

§stack_limiter_version: StackLimiterVersion

Whether a legacy version of stack limiting should be used, see StackLimiterVersion.

§initial_memory_pages: u32

The initial number of memory pages. NOTE: It’s not a limiter itself, but it’s a value we use for initial_memory_pages.

§max_memory_pages: u32

What is the maximal memory pages amount is allowed to have for a contract.

§registers_memory_limit: u64

Limit of memory used by registers.

§max_register_size: u64

Maximum number of bytes that can be stored in a single register.

§max_number_registers: u64

Maximum number of registers that can be used simultaneously.

Note that due to an implementation quirk [read: a bug] in VMLogic, if we have this number of registers, no subsequent writes to the registers will succeed even if they replace an existing register.

§max_number_logs: u64

Maximum number of log entries.

§max_total_log_length: u64

Maximum total length in bytes of all log messages.

§max_total_prepaid_gas: u64

Max total prepaid gas for all function call actions per receipt.

§max_actions_per_receipt: u64

Max number of actions per receipt.

§max_number_bytes_method_names: u64

Max total length of all method names (including terminating character) for a function call permission access key.

§max_length_method_name: u64

Max length of any method name (without terminating character).

§max_arguments_length: u64

Max length of arguments in a function call action.

§max_length_returned_data: u64

Max length of returned data

§max_contract_size: u64

Max contract size

§max_transaction_size: u64

Max transaction size

§max_length_storage_key: u64

Max storage key size

§max_length_storage_value: u64

Max storage value size

§max_promises_per_function_call_action: u64

Max number of promises that a function call can create

§max_number_input_data_dependencies: u64

Max number of input data dependencies

§max_functions_number_per_contract: Option<u64>

If present, stores max number of functions in one contract

§wasmer2_stack_limit: i32

If present, stores the secondary stack limit as implemented by wasmer2.

This limit should never be hit normally.

§max_locals_per_contract: Option<u64>

If present, stores max number of locals declared globally in one contract

§account_id_validity_rules_version: AccountIdValidityRulesVersion

Whether to enforce account_id well-formedness where it wasn’t enforced historically.

Implementations§

Trait Implementations§

source§

impl Clone for VMLimitConfig

source§

fn clone(&self) -> VMLimitConfig

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for VMLimitConfig

source§

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

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

impl<'de> Deserialize<'de> for VMLimitConfig

source§

fn deserialize<__D>( __deserializer: __D ) -> Result<VMLimitConfig, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for VMLimitConfig

source§

fn hash<__H>(&self, state: &mut __H)where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq<VMLimitConfig> for VMLimitConfig

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for VMLimitConfig

source§

fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for VMLimitConfig

source§

impl StructuralEq for VMLimitConfig

source§

impl StructuralPartialEq for VMLimitConfig

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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 Twhere U: From<T>,

const: unstable · 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> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

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

§

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> DeserializeOwned for Twhere T: for<'de> Deserialize<'de>,