feat: configurable EVM execution limits (#21088)

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
This commit is contained in:
Rez
2026-01-27 02:27:09 +11:00
committed by GitHub
parent ab685579f0
commit b87cde5479
28 changed files with 458 additions and 366 deletions

View File

@@ -5,15 +5,16 @@
use reth_ethereum::{
chainspec::ChainSpec,
cli::interface::Cli,
evm::EthEvmConfig,
node::{
api::{BlockTy, FullNodeTypes, NodeTypes},
api::{FullNodeTypes, NodeTypes},
builder::{components::PoolBuilder, BuilderContext},
node::EthereumAddOns,
EthereumNode,
},
pool::{
blobstore::InMemoryBlobStore, CoinbaseTipOrdering, EthPooledTransaction,
EthTransactionPool, Pool, PoolConfig, TransactionValidationTaskExecutor,
blobstore::InMemoryBlobStore, CoinbaseTipOrdering, EthTransactionPool, Pool, PoolConfig,
TransactionValidationTaskExecutor,
},
provider::CanonStateSubscriptions,
EthPrimitives,
@@ -49,28 +50,24 @@ pub struct CustomPoolBuilder {
/// Implement the [`PoolBuilder`] trait for the custom pool builder
///
/// This will be used to build the transaction pool and its maintenance tasks during launch.
impl<Node> PoolBuilder<Node> for CustomPoolBuilder
impl<Node> PoolBuilder<Node, EthEvmConfig> for CustomPoolBuilder
where
Node: FullNodeTypes<Types: NodeTypes<ChainSpec = ChainSpec, Primitives = EthPrimitives>>,
{
type Pool = EthTransactionPool<
Node::Provider,
InMemoryBlobStore,
EthPooledTransaction,
BlockTy<Node::Types>,
>;
type Pool = EthTransactionPool<Node::Provider, InMemoryBlobStore>;
async fn build_pool(self, ctx: &BuilderContext<Node>) -> eyre::Result<Self::Pool> {
async fn build_pool(
self,
ctx: &BuilderContext<Node>,
evm_config: EthEvmConfig,
) -> eyre::Result<Self::Pool> {
let data_dir = ctx.config().datadir();
let blob_store = InMemoryBlobStore::default();
let validator = TransactionValidationTaskExecutor::eth_builder(ctx.provider().clone())
.with_head_timestamp(ctx.head().timestamp)
.kzg_settings(ctx.kzg_settings()?)
.with_additional_tasks(ctx.config().txpool.additional_validation_tasks)
.build_with_tasks::<_, _, _, BlockTy<Node::Types>>(
ctx.task_executor().clone(),
blob_store.clone(),
);
let validator =
TransactionValidationTaskExecutor::eth_builder(ctx.provider().clone(), evm_config)
.kzg_settings(ctx.kzg_settings()?)
.with_additional_tasks(ctx.config().txpool.additional_validation_tasks)
.build_with_tasks(ctx.task_executor().clone(), blob_store.clone());
let transaction_pool =
Pool::new(validator, CoinbaseTipOrdering::default(), blob_store, self.pool_config);