Struct 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 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_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 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 kill_dust: CleanDustMode,
    pub eip86: bool,
    pub wasm: Option<WasmCosts>,
}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 CREATE_P2SH instruction
have_revert: bool
                           Does it have a REVERT 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_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
                           Aditional 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
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.
kill_dust: CleanDustMode
                           Kill basic accounts below this balance if touched.
eip86: bool
                           Enable EIP-86 rules
wasm: Option<WasmCosts>
                           Wasm extra schedule settings, if wasm activated
Methods
impl Schedule[src] 
impl Schedulepub fn new_frontier() -> Schedule[src] 
pub fn new_frontier() -> ScheduleSchedule for the Frontier-era of the Ethereum main net.
pub fn new_homestead() -> Schedule[src] 
pub fn new_homestead() -> ScheduleSchedule for the Homestead-era of the Ethereum main net.
pub fn new_post_eip150(
    max_code_size: usize, 
    fix_exp: bool, 
    no_empty: bool, 
    kill_empty: bool
) -> Schedule[src] 
pub fn new_post_eip150(
    max_code_size: usize, 
    fix_exp: bool, 
    no_empty: bool, 
    kill_empty: bool
) -> ScheduleSchedule for the post-EIP-150-era of the Ethereum main net.
pub fn new_byzantium() -> Schedule[src] 
pub fn new_byzantium() -> ScheduleSchedule for the Byzantium fork of the Ethereum main net.
pub fn new_constantinople() -> Schedule[src] 
pub fn new_constantinople() -> ScheduleSchedule for the Constantinople fork of the Ethereum main net.
pub fn wasm(&self) -> &WasmCosts[src] 
pub fn wasm(&self) -> &WasmCostsReturns wasm schedule
May panic if there is no wasm schedule