From e7e76f5e511a669bc7b30c3de38eaf1568c61edf Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Wed, 11 Feb 2026 17:11:30 +0100 Subject: [PATCH 1/2] Add BlockException.GAS_USED_OVERFLOW mapping to ethrex exception mapper ethrex now returns "Block gas used overflow..." for EIP-7778 pre-refund gas accounting failures (Amsterdam+), distinct from the existing "Gas allowance exceeded..." transaction-level error. --- .../testing/src/execution_testing/client_clis/clis/ethrex.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/testing/src/execution_testing/client_clis/clis/ethrex.py b/packages/testing/src/execution_testing/client_clis/clis/ethrex.py index 66ec2ece331..f23b7c11cf4 100644 --- a/packages/testing/src/execution_testing/client_clis/clis/ethrex.py +++ b/packages/testing/src/execution_testing/client_clis/clis/ethrex.py @@ -116,6 +116,9 @@ class EthrexExceptionMapper(ExceptionMapper): TransactionException.GAS_ALLOWANCE_EXCEEDED: ( r"Gas allowance exceeded.*" ), + BlockException.GAS_USED_OVERFLOW: ( + r"Block gas used overflow.*" + ), TransactionException.TYPE_3_TX_BLOB_COUNT_EXCEEDED: ( r"Blob count exceeded.*" ), From 3a73bfbd5cafb5a95b47edbc0d12d170e322dbe2 Mon Sep 17 00:00:00 2001 From: Edgar Luque Date: Wed, 11 Feb 2026 18:23:43 +0100 Subject: [PATCH 2/2] Add BAL exception mappings to ethrex exception mapper Add mappings for Block Access List (EIP-7928) related exceptions: - INVALID_BLOCK_ACCESS_LIST - INVALID_BAL_HASH - INVALID_BAL_EXTRA_ACCOUNT - INVALID_BAL_MISSING_ACCOUNT - INCORRECT_BLOCK_FORMAT ethrex validates BAL by computing the hash and comparing against the header, so all BAL corruption types produce the same hash mismatch error. Additionally, index-out-of-bounds and RLP decode errors are mapped for INVALID_BLOCK_ACCESS_LIST and INCORRECT_BLOCK_FORMAT. --- .../client_clis/clis/ethrex.py | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/packages/testing/src/execution_testing/client_clis/clis/ethrex.py b/packages/testing/src/execution_testing/client_clis/clis/ethrex.py index f23b7c11cf4..e488237ea38 100644 --- a/packages/testing/src/execution_testing/client_clis/clis/ethrex.py +++ b/packages/testing/src/execution_testing/client_clis/clis/ethrex.py @@ -38,6 +38,22 @@ class EthrexExceptionMapper(ExceptionMapper): BlockException.INVALID_BASEFEE_PER_GAS: ( "Base fee per gas is incorrect" ), + BlockException.INVALID_BLOCK_ACCESS_LIST: ( + "Block access list hash does not match the one in " + "the header after executing" + ), + BlockException.INVALID_BAL_HASH: ( + "Block access list hash does not match the one in " + "the header after executing" + ), + BlockException.INVALID_BAL_EXTRA_ACCOUNT: ( + "Block access list hash does not match the one in " + "the header after executing" + ), + BlockException.INVALID_BAL_MISSING_ACCOUNT: ( + "Block access list hash does not match the one in " + "the header after executing" + ), } mapping_regex = { TransactionException.PRIORITY_GREATER_THAN_MAX_FEE_PER_GAS: ( @@ -116,9 +132,7 @@ class EthrexExceptionMapper(ExceptionMapper): TransactionException.GAS_ALLOWANCE_EXCEEDED: ( r"Gas allowance exceeded.*" ), - BlockException.GAS_USED_OVERFLOW: ( - r"Block gas used overflow.*" - ), + BlockException.GAS_USED_OVERFLOW: (r"Block gas used overflow.*"), TransactionException.TYPE_3_TX_BLOB_COUNT_EXCEEDED: ( r"Blob count exceeded.*" ), @@ -148,4 +162,16 @@ class EthrexExceptionMapper(ExceptionMapper): BlockException.RLP_BLOCK_LIMIT_EXCEEDED: ( r"Maximum block size exceeded.*" ), + BlockException.INVALID_BLOCK_ACCESS_LIST: ( + r"Block access list contains index \d+ " + r"exceeding max valid index \d+|" + r"Failed to RLP decode BAL" + ), + BlockException.INCORRECT_BLOCK_FORMAT: ( + r"Block access list hash does not match " + r"the one in the header after executing|" + r"Block access list contains index \d+ " + r"exceeding max valid index \d+|" + r"Failed to RLP decode BAL" + ), }