reth::providers

Trait EvmEnvProvider

pub trait EvmEnvProvider: Send + Sync {
    // Required methods
    fn fill_env_at<EvmConfig>(
        &self,
        cfg: &mut CfgEnvWithHandlerCfg,
        block_env: &mut BlockEnv,
        at: HashOrNumber,
        evm_config: EvmConfig,
    ) -> Result<(), ProviderError>
       where EvmConfig: ConfigureEvmEnv<Header = Header>;
    fn fill_env_with_header<EvmConfig>(
        &self,
        cfg: &mut CfgEnvWithHandlerCfg,
        block_env: &mut BlockEnv,
        header: &Header,
        evm_config: EvmConfig,
    ) -> Result<(), ProviderError>
       where EvmConfig: ConfigureEvmEnv<Header = Header>;
    fn fill_cfg_env_at<EvmConfig>(
        &self,
        cfg: &mut CfgEnvWithHandlerCfg,
        at: HashOrNumber,
        evm_config: EvmConfig,
    ) -> Result<(), ProviderError>
       where EvmConfig: ConfigureEvmEnv<Header = Header>;
    fn fill_cfg_env_with_header<EvmConfig>(
        &self,
        cfg: &mut CfgEnvWithHandlerCfg,
        header: &Header,
        evm_config: EvmConfig,
    ) -> Result<(), ProviderError>
       where EvmConfig: ConfigureEvmEnv<Header = Header>;

    // Provided method
    fn env_with_header<EvmConfig>(
        &self,
        header: &Header,
        evm_config: EvmConfig,
    ) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), ProviderError>
       where EvmConfig: ConfigureEvmEnv<Header = Header> { ... }
}
Expand description

A provider type that knows chain specific information required to configure a CfgEnvWithHandlerCfg.

This type is mainly used to provide required data to configure the EVM environment that is usually stored on disk.

Required Methods§

fn fill_env_at<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, block_env: &mut BlockEnv, at: HashOrNumber, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

Fills the CfgEnvWithHandlerCfg and BlockEnv fields with values specific to the given BlockHashOrNumber.

fn fill_env_with_header<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, block_env: &mut BlockEnv, header: &Header, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

Fills the CfgEnvWithHandlerCfg and BlockEnv fields with values specific to the given Header.

fn fill_cfg_env_at<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, at: HashOrNumber, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

Fills the CfgEnvWithHandlerCfg fields with values specific to the given BlockHashOrNumber.

fn fill_cfg_env_with_header<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, header: &Header, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

Fills the CfgEnvWithHandlerCfg fields with values specific to the given Header.

Provided Methods§

fn env_with_header<EvmConfig>( &self, header: &Header, evm_config: EvmConfig, ) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

Fills the default CfgEnvWithHandlerCfg and BlockEnv fields with values specific to the given Header.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl<'a, T> EvmEnvProvider for &'a T
where T: 'a + EvmEnvProvider + ?Sized, &'a T: Send + Sync,

§

fn fill_env_at<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, block_env: &mut BlockEnv, at: HashOrNumber, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn env_with_header<EvmConfig>( &self, header: &Header, evm_config: EvmConfig, ) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn fill_env_with_header<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, block_env: &mut BlockEnv, header: &Header, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn fill_cfg_env_at<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, at: HashOrNumber, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn fill_cfg_env_with_header<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, header: &Header, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

impl<T> EvmEnvProvider for Arc<T>
where T: EvmEnvProvider + ?Sized, Arc<T>: Send + Sync,

§

fn fill_env_at<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, block_env: &mut BlockEnv, at: HashOrNumber, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn env_with_header<EvmConfig>( &self, header: &Header, evm_config: EvmConfig, ) -> Result<(CfgEnvWithHandlerCfg, BlockEnv), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn fill_env_with_header<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, block_env: &mut BlockEnv, header: &Header, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn fill_cfg_env_at<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, at: HashOrNumber, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

§

fn fill_cfg_env_with_header<EvmConfig>( &self, cfg: &mut CfgEnvWithHandlerCfg, header: &Header, evm_config: EvmConfig, ) -> Result<(), ProviderError>
where EvmConfig: ConfigureEvmEnv<Header = Header>,

Implementors§