Struct Schedule

Source
pub struct Schedule {
Show 58 fields pub exceptional_failed_code_deposit: bool, pub have_delegate_call: bool, pub have_create2: bool, pub have_revert: bool, pub have_extcodehash: bool, pub stack_limit: usize, pub max_depth: usize, pub tier_step_gas: [usize; 8], pub exp_gas: usize, pub exp_byte_gas: usize, pub sha3_gas: usize, pub sha3_word_gas: usize, pub sload_gas: usize, pub sstore_dirty_gas: Option<usize>, pub sstore_set_gas: usize, pub sstore_reset_gas: usize, pub sstore_refund_gas: usize, pub jumpdest_gas: usize, pub log_gas: usize, pub log_data_gas: usize, pub log_topic_gas: usize, pub create_gas: usize, pub call_gas: usize, pub call_stipend: usize, pub call_value_transfer_gas: usize, pub call_new_account_gas: usize, pub suicide_refund_gas: usize, pub memory_gas: usize, pub quad_coeff_div: usize, pub create_data_gas: usize, pub create_data_limit: usize, pub tx_gas: usize, pub tx_create_gas: usize, pub tx_data_zero_gas: usize, pub tx_data_non_zero_gas: usize, pub copy_gas: usize, pub extcodesize_gas: usize, pub extcodecopy_base_gas: usize, pub balance_gas: usize, pub extcodehash_gas: usize, pub suicide_gas: usize, pub suicide_to_new_account_cost: usize, pub sub_gas_cap_divisor: Option<usize>, pub no_empty: bool, pub kill_empty: bool, pub blockhash_gas: usize, pub have_static_call: bool, pub have_return_data: bool, pub have_bitwise_shifting: bool, pub have_chain_id: bool, pub have_selfbalance: bool, pub kill_dust: CleanDustMode, pub eip1283: bool, pub eip1706: bool, pub keep_unsigned_nonce: bool, pub latest_version: U256, pub versions: HashMap<U256, VersionedSchedule>, pub wasm: Option<WasmCosts>,
}
Expand description

Definition of the cost schedule and other parameterisations for the EVM.

Fields§

§exceptional_failed_code_deposit: bool

Does it support exceptional failed code deposit

§have_delegate_call: bool

Does it have a delegate cal

§have_create2: bool

Does it have a CREATE2 instruction

§have_revert: bool

Does it have a REVERT instruction

§have_extcodehash: bool

Does it have a EXTCODEHASH instruction

§stack_limit: usize

VM stack limit

§max_depth: usize

Max number of nested calls/creates

§tier_step_gas: [usize; 8]

Gas prices for instructions in all tiers

§exp_gas: usize

Gas price for EXP opcode

§exp_byte_gas: usize

Additional gas for EXP opcode for each byte of exponent

§sha3_gas: usize

Gas price for SHA3 opcode

§sha3_word_gas: usize

Additional gas for SHA3 opcode for each word of hashed memory

§sload_gas: usize

Gas price for loading from storage

§sstore_dirty_gas: Option<usize>

Special gas price for dirty gas of SSTORE, after net gas metering.

§sstore_set_gas: usize

Gas price for setting new value to storage (storage==0, new!=0)

§sstore_reset_gas: usize

Gas price for altering value in storage

§sstore_refund_gas: usize

Gas refund for SSTORE clearing (when storage!=0, new==0)

§jumpdest_gas: usize

Gas price for JUMPDEST opcode

§log_gas: usize

Gas price for LOG*

§log_data_gas: usize

Additional gas for data in LOG*

§log_topic_gas: usize

Additional gas for each topic in LOG*

§create_gas: usize

Gas price for CREATE opcode

§call_gas: usize

Gas price for *CALL* opcodes

§call_stipend: usize

Stipend for transfer for CALL|CALLCODE opcode when value>0

§call_value_transfer_gas: usize

Additional gas required for value transfer (CALL|CALLCODE)

§call_new_account_gas: usize

Additional gas for creating new account (CALL|CALLCODE)

§suicide_refund_gas: usize

Refund for SUICIDE

§memory_gas: usize

Gas for used memory

§quad_coeff_div: usize

Coefficient used to convert memory size to gas price for memory

§create_data_gas: usize

Cost for contract length when executing CREATE

§create_data_limit: usize

Maximum code size when creating a contract.

§tx_gas: usize

Transaction cost

§tx_create_gas: usize

CREATE transaction cost

§tx_data_zero_gas: usize

Additional cost for empty data transaction

§tx_data_non_zero_gas: usize

Additional cost for non-empty data transaction

§copy_gas: usize

Gas price for copying memory

§extcodesize_gas: usize

Price of EXTCODESIZE

§extcodecopy_base_gas: usize

Base price of EXTCODECOPY

§balance_gas: usize

Price of BALANCE

§extcodehash_gas: usize

Price of EXTCODEHASH

§suicide_gas: usize

Price of SUICIDE

§suicide_to_new_account_cost: usize

Amount of additional gas to pay when SUICIDE credits a non-existant account

§sub_gas_cap_divisor: Option<usize>

If Some(x): let limit = GAS * (x - 1) / x; let CALL’s gas = min(requested, limit). let CREATE’s gas = limit. If None: let CALL’s gas = (requested > GAS ? [OOG] : GAS). let CREATE’s gas = GAS

§no_empty: bool

Don’t ever make empty accounts; contracts start with nonce=1. Also, don’t charge 25k when sending/suicide zero-value.

§kill_empty: bool

Kill empty accounts if touched.

§blockhash_gas: usize

Blockhash instruction gas cost.

§have_static_call: bool

Static Call opcode enabled.

§have_return_data: bool

RETURNDATA and RETURNDATASIZE opcodes enabled.

§have_bitwise_shifting: bool

SHL, SHR, SAR opcodes enabled.

§have_chain_id: bool

CHAINID opcode enabled.

§have_selfbalance: bool

SELFBALANCE opcode enabled.

§kill_dust: CleanDustMode

Kill basic accounts below this balance if touched.

§eip1283: bool

Enable EIP-1283 rules

§eip1706: bool

Enable EIP-1706 rules

§keep_unsigned_nonce: bool

VM execution does not increase null signed address nonce if this field is true.

§latest_version: U256

Latest VM version for contract creation transaction.

§versions: HashMap<U256, VersionedSchedule>

All supported non-legacy VM versions.

§wasm: Option<WasmCosts>

Wasm extra schedule settings, if wasm activated

Implementations§

Source§

impl Schedule

Source

pub fn new_frontier() -> Schedule

Schedule for the Frontier-era of the Ethereum main net.

Source

pub fn new_homestead() -> Schedule

Schedule for the Homestead-era of the Ethereum main net.

Source

pub fn new_post_eip150( max_code_size: usize, fix_exp: bool, no_empty: bool, kill_empty: bool, ) -> Schedule

Schedule for the post-EIP-150-era of the Ethereum main net.

Source

pub fn new_byzantium() -> Schedule

Schedule for the Byzantium fork of the Ethereum main net.

Source

pub fn new_constantinople() -> Schedule

Schedule for the Constantinople fork of the Ethereum main net.

Source

pub fn new_istanbul() -> Schedule

Schedule for the Istanbul fork of the Ethereum main net.

Source

pub fn wasm(&self) -> &WasmCosts

Returns wasm schedule

May panic if there is no wasm schedule

Trait Implementations§

Source§

impl Debug for Schedule

Source§

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

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

impl Default for Schedule

Source§

fn default() -> Self

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

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V