Trait ConfigureEvmEnv
pub trait ConfigureEvmEnv:
Send
+ Sync
+ Unpin
+ Clone
+ 'static {
type Header: BlockHeader;
// Required methods
fn fill_tx_env(
&self,
tx_env: &mut TxEnv,
transaction: &TransactionSigned,
sender: Address,
);
fn fill_tx_env_system_contract_call(
&self,
env: &mut Env,
caller: Address,
contract: Address,
data: Bytes,
);
fn fill_cfg_env(
&self,
cfg_env: &mut CfgEnvWithHandlerCfg,
header: &Self::Header,
total_difficulty: Uint<256, 4>,
);
fn next_cfg_and_block_env(
&self,
parent: &Self::Header,
attributes: NextBlockEnvAttributes,
) -> (CfgEnvWithHandlerCfg, BlockEnv);
// Provided methods
fn tx_env(&self, transaction: &TransactionSignedEcRecovered) -> TxEnv { ... }
fn fill_block_env(
&self,
block_env: &mut BlockEnv,
header: &Self::Header,
after_merge: bool,
) { ... }
fn fill_cfg_and_block_env(
&self,
cfg: &mut CfgEnvWithHandlerCfg,
block_env: &mut BlockEnv,
header: &Self::Header,
total_difficulty: Uint<256, 4>,
) { ... }
}
Expand description
This represents the set of methods used to configure the EVM’s environment before block execution.
Default trait method implementation is done w.r.t. L1.
Required Associated Types§
type Header: BlockHeader
type Header: BlockHeader
The header type used by the EVM.
Required Methods§
fn fill_tx_env(
&self,
tx_env: &mut TxEnv,
transaction: &TransactionSigned,
sender: Address,
)
fn fill_tx_env( &self, tx_env: &mut TxEnv, transaction: &TransactionSigned, sender: Address, )
Fill transaction environment from a [TransactionSigned
] and the given sender address.
fn fill_tx_env_system_contract_call(
&self,
env: &mut Env,
caller: Address,
contract: Address,
data: Bytes,
)
fn fill_tx_env_system_contract_call( &self, env: &mut Env, caller: Address, contract: Address, data: Bytes, )
Fill transaction environment with a system contract call.
fn fill_cfg_env(
&self,
cfg_env: &mut CfgEnvWithHandlerCfg,
header: &Self::Header,
total_difficulty: Uint<256, 4>,
)
fn fill_cfg_env( &self, cfg_env: &mut CfgEnvWithHandlerCfg, header: &Self::Header, total_difficulty: Uint<256, 4>, )
Fill [CfgEnvWithHandlerCfg
] fields according to the chain spec and given header.
This must set the corresponding spec id in the handler cfg, based on timestamp or total difficulty
fn next_cfg_and_block_env(
&self,
parent: &Self::Header,
attributes: NextBlockEnvAttributes,
) -> (CfgEnvWithHandlerCfg, BlockEnv)
fn next_cfg_and_block_env( &self, parent: &Self::Header, attributes: NextBlockEnvAttributes, ) -> (CfgEnvWithHandlerCfg, BlockEnv)
Returns the configured [CfgEnvWithHandlerCfg
] and [BlockEnv
] for parent + 1
block.
This is intended for usage in block building after the merge and requires additional attributes that can’t be derived from the parent block: attributes that are determined by the CL, such as the timestamp, suggested fee recipient, and randomness value.
Provided Methods§
fn tx_env(&self, transaction: &TransactionSignedEcRecovered) -> TxEnv
fn tx_env(&self, transaction: &TransactionSignedEcRecovered) -> TxEnv
Returns a [TxEnv
] from a [TransactionSignedEcRecovered
].
fn fill_block_env(
&self,
block_env: &mut BlockEnv,
header: &Self::Header,
after_merge: bool,
)
fn fill_block_env( &self, block_env: &mut BlockEnv, header: &Self::Header, after_merge: bool, )
Fill [BlockEnv
] field according to the chain spec and given header
fn fill_cfg_and_block_env(
&self,
cfg: &mut CfgEnvWithHandlerCfg,
block_env: &mut BlockEnv,
header: &Self::Header,
total_difficulty: Uint<256, 4>,
)
fn fill_cfg_and_block_env( &self, cfg: &mut CfgEnvWithHandlerCfg, block_env: &mut BlockEnv, header: &Self::Header, total_difficulty: Uint<256, 4>, )
Convenience function to call both fill_cfg_env
and
ConfigureEvmEnv::fill_block_env
.
Note: Implementers should ensure that all fields are required fields are filled.