refactor(evm): set prune modes optionally for the batch executor (#9176)

This commit is contained in:
Alexey Shekhirin
2024-07-03 12:05:02 +01:00
committed by GitHub
parent 71041b06a8
commit 8e5204c119
9 changed files with 83 additions and 69 deletions

View File

@ -93,14 +93,14 @@ where
self.eth_executor(db)
}
fn batch_executor<DB>(&self, db: DB, prune_modes: PruneModes) -> Self::BatchExecutor<DB>
fn batch_executor<DB>(&self, db: DB) -> Self::BatchExecutor<DB>
where
DB: Database<Error: Into<ProviderError> + Display>,
{
let executor = self.eth_executor(db);
EthBatchExecutor {
executor,
batch_record: BlockBatchRecord::new(prune_modes),
batch_record: BlockBatchRecord::default(),
stats: BlockExecutorStats::default(),
}
}
@ -451,6 +451,10 @@ where
self.batch_record.set_tip(tip);
}
fn set_prune_modes(&mut self, prune_modes: PruneModes) {
self.batch_record.set_prune_modes(prune_modes);
}
fn size_hint(&self) -> Option<usize> {
Some(self.executor.state.bundle_state.size_hint())
}
@ -634,7 +638,7 @@ mod tests {
// attempt to execute an empty block with parent beacon block root, this should not fail
provider
.batch_executor(StateProviderDatabase::new(&db), PruneModes::none())
.batch_executor(StateProviderDatabase::new(&db))
.execute_and_verify_one(
(
&BlockWithSenders {
@ -684,8 +688,7 @@ mod tests {
..Header::default()
};
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
// attempt to execute an empty block with parent beacon block root, this should not fail
executor
@ -728,8 +731,7 @@ mod tests {
let mut header = chain_spec.genesis_header();
let provider = executor_provider(chain_spec);
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
// attempt to execute the genesis block with non-zero parent beacon block root, expect err
header.parent_beacon_block_root = Some(B256::with_last_byte(0x69));
@ -816,8 +818,7 @@ mod tests {
let provider = executor_provider(chain_spec);
// execute header
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
// Now execute a block with the fixed header, ensure that it does not fail
executor
@ -884,8 +885,7 @@ mod tests {
);
let provider = executor_provider(chain_spec);
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
// construct the header for block one
let header = Header { timestamp: 1, number: 1, ..Header::default() };
@ -938,8 +938,7 @@ mod tests {
let header = chain_spec.genesis_header();
let provider = executor_provider(chain_spec);
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
// attempt to execute genesis block, this should not fail
executor
@ -996,8 +995,7 @@ mod tests {
..Header::default()
};
let provider = executor_provider(chain_spec);
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
// attempt to execute the fork activation block, this should not fail
executor
@ -1052,8 +1050,7 @@ mod tests {
);
let provider = executor_provider(chain_spec);
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
let header = Header {
parent_hash: B256::random(),
@ -1115,8 +1112,7 @@ mod tests {
let header_hash = header.hash_slow();
let provider = executor_provider(chain_spec);
let mut executor =
provider.batch_executor(StateProviderDatabase::new(&db), PruneModes::none());
let mut executor = provider.batch_executor(StateProviderDatabase::new(&db));
// attempt to execute the genesis block, this should not fail
executor