From 7c0391b007ce39f077a0955ab14be323a364a3dc Mon Sep 17 00:00:00 2001 From: Santiago Palladino Date: Mon, 16 Mar 2026 11:21:09 -0300 Subject: [PATCH] fix(p2p): fall back to maxTxsPerCheckpoint for per-block tx validation Co-Authored-By: Claude Opus 4.6 (1M context) --- yarn-project/p2p/src/config.ts | 9 +++++++++ yarn-project/p2p/src/services/libp2p/libp2p_service.ts | 2 +- yarn-project/validator-client/src/factory.ts | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/yarn-project/p2p/src/config.ts b/yarn-project/p2p/src/config.ts index 74f0562addad..23b96dfabc00 100644 --- a/yarn-project/p2p/src/config.ts +++ b/yarn-project/p2p/src/config.ts @@ -43,6 +43,9 @@ export interface P2PConfig /** Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set. */ validateMaxTxsPerBlock?: number; + /** Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set. */ + validateMaxTxsPerCheckpoint?: number; + /** Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected. */ validateMaxL2BlockGas?: number; @@ -214,6 +217,12 @@ export const p2pConfigMappings: ConfigMappingsType = { 'Maximum transactions per block for validation. Overrides maxTxsPerBlock for gossip validation when set.', parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined), }, + validateMaxTxsPerCheckpoint: { + env: 'VALIDATOR_MAX_TX_PER_CHECKPOINT', + description: + 'Maximum transactions per checkpoint for validation. Used as fallback for maxTxsPerBlock when that is not set.', + parseEnv: (val: string) => (val ? parseInt(val, 10) : undefined), + }, validateMaxL2BlockGas: { env: 'VALIDATOR_MAX_L2_BLOCK_GAS', description: 'Maximum L2 gas per block for validation. When set, txs exceeding this limit are rejected.', diff --git a/yarn-project/p2p/src/services/libp2p/libp2p_service.ts b/yarn-project/p2p/src/services/libp2p/libp2p_service.ts index e59fbaa99b4c..6f89b66a5cf3 100644 --- a/yarn-project/p2p/src/services/libp2p/libp2p_service.ts +++ b/yarn-project/p2p/src/services/libp2p/libp2p_service.ts @@ -226,7 +226,7 @@ export class LibP2PService extends WithTracer implements P2PService { const proposalValidatorOpts = { txsPermitted: !config.disableTransactions, - maxTxsPerBlock: config.validateMaxTxsPerBlock, + maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint, }; this.blockProposalValidator = new BlockProposalValidator(epochCache, proposalValidatorOpts); this.checkpointProposalValidator = new CheckpointProposalValidator(epochCache, proposalValidatorOpts); diff --git a/yarn-project/validator-client/src/factory.ts b/yarn-project/validator-client/src/factory.ts index b7645d48c485..6c706c5dc855 100644 --- a/yarn-project/validator-client/src/factory.ts +++ b/yarn-project/validator-client/src/factory.ts @@ -29,7 +29,7 @@ export function createBlockProposalHandler( const metrics = new ValidatorMetrics(deps.telemetry); const blockProposalValidator = new BlockProposalValidator(deps.epochCache, { txsPermitted: !config.disableTransactions, - maxTxsPerBlock: config.validateMaxTxsPerBlock, + maxTxsPerBlock: config.validateMaxTxsPerBlock ?? config.validateMaxTxsPerCheckpoint, }); return new BlockProposalHandler( deps.checkpointsBuilder,