Trait evm::executor::stack::StackState
source · pub trait StackState<'config>: Backend {
Show 25 methods
// Required methods
fn metadata(&self) -> &StackSubstateMetadata<'config>;
fn metadata_mut(&mut self) -> &mut StackSubstateMetadata<'config>;
fn enter(&mut self, gas_limit: u64, is_static: bool);
fn exit_commit(&mut self) -> Result<(), ExitError>;
fn exit_revert(&mut self) -> Result<(), ExitError>;
fn exit_discard(&mut self) -> Result<(), ExitError>;
fn is_empty(&self, address: H160) -> bool;
fn deleted(&self, address: H160) -> bool;
fn is_cold(&self, address: H160) -> bool;
fn is_storage_cold(&self, address: H160, key: H256) -> bool;
fn inc_nonce(&mut self, address: H160) -> Result<(), ExitError>;
fn set_storage(&mut self, address: H160, key: H256, value: H256);
fn reset_storage(&mut self, address: H160);
fn log(&mut self, address: H160, topics: Vec<H256>, data: Vec<u8>);
fn set_deleted(&mut self, address: H160);
fn set_code(&mut self, address: H160, code: Vec<u8>);
fn transfer(&mut self, transfer: Transfer) -> Result<(), ExitError>;
fn reset_balance(&mut self, address: H160);
fn touch(&mut self, address: H160);
// Provided methods
fn code_size(&self, address: H160) -> U256 { ... }
fn code_hash(&self, address: H160) -> H256 { ... }
fn record_external_operation(
&mut self,
_op: ExternalOperation
) -> Result<(), ExitError> { ... }
fn record_external_dynamic_opcode_cost(
&mut self,
_opcode: Opcode,
_gas_cost: GasCost,
_target: StorageTarget
) -> Result<(), ExitError> { ... }
fn record_external_cost(
&mut self,
_ref_time: Option<u64>,
_proof_size: Option<u64>,
_storage_growth: Option<u64>
) -> Result<(), ExitError> { ... }
fn refund_external_cost(
&mut self,
_ref_time: Option<u64>,
_proof_size: Option<u64>
) { ... }
}
Required Methods§
fn metadata(&self) -> &StackSubstateMetadata<'config>
fn metadata_mut(&mut self) -> &mut StackSubstateMetadata<'config>
fn enter(&mut self, gas_limit: u64, is_static: bool)
fn exit_commit(&mut self) -> Result<(), ExitError>
fn exit_revert(&mut self) -> Result<(), ExitError>
fn exit_discard(&mut self) -> Result<(), ExitError>
fn is_empty(&self, address: H160) -> bool
fn deleted(&self, address: H160) -> bool
fn is_cold(&self, address: H160) -> bool
fn is_storage_cold(&self, address: H160, key: H256) -> bool
fn inc_nonce(&mut self, address: H160) -> Result<(), ExitError>
fn set_storage(&mut self, address: H160, key: H256, value: H256)
fn reset_storage(&mut self, address: H160)
fn log(&mut self, address: H160, topics: Vec<H256>, data: Vec<u8>)
fn set_deleted(&mut self, address: H160)
fn set_code(&mut self, address: H160, code: Vec<u8>)
fn transfer(&mut self, transfer: Transfer) -> Result<(), ExitError>
fn reset_balance(&mut self, address: H160)
fn touch(&mut self, address: H160)
Provided Methods§
sourcefn code_size(&self, address: H160) -> U256
fn code_size(&self, address: H160) -> U256
Fetch the code size of an address. Provide a default implementation by fetching the code, but can be customized to use a more performant approach that don’t need to fetch the code.
sourcefn code_hash(&self, address: H160) -> H256
fn code_hash(&self, address: H160) -> H256
Fetch the code hash of an address. Provide a default implementation by fetching the code, but can be customized to use a more performant approach that don’t need to fetch the code.