mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: make EvmEnvProvider methods aware of in-memory state (#10240)
This commit is contained in:
@ -849,7 +849,9 @@ where
|
|||||||
where
|
where
|
||||||
EvmConfig: ConfigureEvmEnv,
|
EvmConfig: ConfigureEvmEnv,
|
||||||
{
|
{
|
||||||
self.database.provider()?.fill_env_at(cfg, block_env, at, evm_config)
|
let hash = self.convert_number(at)?.ok_or(ProviderError::HeaderNotFound(at))?;
|
||||||
|
let header = self.header(&hash)?.ok_or(ProviderError::HeaderNotFound(at))?;
|
||||||
|
self.fill_env_with_header(cfg, block_env, &header, evm_config)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fill_env_with_header<EvmConfig>(
|
fn fill_env_with_header<EvmConfig>(
|
||||||
@ -862,7 +864,17 @@ where
|
|||||||
where
|
where
|
||||||
EvmConfig: ConfigureEvmEnv,
|
EvmConfig: ConfigureEvmEnv,
|
||||||
{
|
{
|
||||||
self.database.provider()?.fill_env_with_header(cfg, block_env, header, evm_config)
|
let total_difficulty = self
|
||||||
|
.header_td_by_number(header.number)?
|
||||||
|
.ok_or_else(|| ProviderError::HeaderNotFound(header.number.into()))?;
|
||||||
|
evm_config.fill_cfg_and_block_env(
|
||||||
|
cfg,
|
||||||
|
block_env,
|
||||||
|
&self.database.chain_spec(),
|
||||||
|
header,
|
||||||
|
total_difficulty,
|
||||||
|
);
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fill_cfg_env_at<EvmConfig>(
|
fn fill_cfg_env_at<EvmConfig>(
|
||||||
@ -874,7 +886,9 @@ where
|
|||||||
where
|
where
|
||||||
EvmConfig: ConfigureEvmEnv,
|
EvmConfig: ConfigureEvmEnv,
|
||||||
{
|
{
|
||||||
self.database.provider()?.fill_cfg_env_at(cfg, at, evm_config)
|
let hash = self.convert_number(at)?.ok_or(ProviderError::HeaderNotFound(at))?;
|
||||||
|
let header = self.header(&hash)?.ok_or(ProviderError::HeaderNotFound(at))?;
|
||||||
|
self.fill_cfg_env_with_header(cfg, &header, evm_config)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn fill_cfg_env_with_header<EvmConfig>(
|
fn fill_cfg_env_with_header<EvmConfig>(
|
||||||
@ -886,7 +900,11 @@ where
|
|||||||
where
|
where
|
||||||
EvmConfig: ConfigureEvmEnv,
|
EvmConfig: ConfigureEvmEnv,
|
||||||
{
|
{
|
||||||
self.database.provider()?.fill_cfg_env_with_header(cfg, header, evm_config)
|
let total_difficulty = self
|
||||||
|
.header_td_by_number(header.number)?
|
||||||
|
.ok_or_else(|| ProviderError::HeaderNotFound(header.number.into()))?;
|
||||||
|
evm_config.fill_cfg_env(cfg, &self.database.chain_spec(), header, total_difficulty);
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user