Struct tetsy_vm::Schedule[][src]

pub struct Schedule {
    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>,
}

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

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

impl Schedule[src]

pub fn new_frontier() -> Schedule[src]

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

pub fn new_homestead() -> Schedule[src]

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

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

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

pub fn new_byzantium() -> Schedule[src]

Schedule for the Byzantium fork of the Vapory main net.

pub fn new_constantinople() -> Schedule[src]

Schedule for the Constantinople fork of the Vapory main net.

pub fn new_istanbul() -> Schedule[src]

Schedule for the Istanbul fork of the Vapory main net.

pub fn wasm(&self) -> &WasmCosts[src]

Returns wasm schedule

May panic if there is no wasm schedule

Trait Implementations

impl Debug for Schedule[src]

impl Default for Schedule[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> MaybeDebug for T where
    T: Debug

impl<T> MaybeDebug for T where
    T: Debug

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

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