From c769991c6023b83b387490bb23f1d783c57ab902 Mon Sep 17 00:00:00 2001 From: Miroslav Kovar Date: Mon, 12 Jan 2026 11:34:35 +0100 Subject: [PATCH 1/3] Do not set up pre-execution and request processors for PoA networks Signed-off-by: Miroslav Kovar --- .../mainnet/MainnetProtocolSpecs.java | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java index ff9dfeaf463..a56867f2776 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecs.java @@ -866,7 +866,10 @@ static ProtocolSpecBuilder cancunDefinition( evm.getMaxInitcodeSize())) .precompileContractRegistryBuilder(MainnetPrecompiledContractRegistries::cancun) .blockHeaderValidatorBuilder(MainnetBlockHeaderValidator::blobAwareBlockHeaderValidator) - .preExecutionProcessor(new CancunPreExecutionProcessor()) + .preExecutionProcessor( + isPoAConsensus(genesisConfigOptions) + ? new FrontierPreExecutionProcessor() + : new CancunPreExecutionProcessor()) .hardforkId(CANCUN); } @@ -947,22 +950,36 @@ static ProtocolSpecBuilder pragueDefinition( new CodeDelegationService())) .build()) // EIP-2935 Blockhash processor - .preExecutionProcessor(new PraguePreExecutionProcessor()) + .preExecutionProcessor( + isPoAConsensus(genesisConfigOptions) + ? new FrontierPreExecutionProcessor() + : new PraguePreExecutionProcessor()) .hardforkId(PRAGUE); - try { - RequestContractAddresses requestContractAddresses = - RequestContractAddresses.fromGenesis(genesisConfigOptions); - - pragueSpecBuilder.requestProcessorCoordinator( - pragueRequestsProcessors(requestContractAddresses)); - } catch (NoSuchElementException nsee) { - LOG.warn("Prague definitions require system contract addresses in genesis"); - throw nsee; + if (isPoAConsensus(genesisConfigOptions)) { + LOG.debug( + "Skipping system contract request processors for PoA consensus (clique/ibft/qbft)."); + } else { + try { + RequestContractAddresses requestContractAddresses = + RequestContractAddresses.fromGenesis(genesisConfigOptions); + + pragueSpecBuilder.requestProcessorCoordinator( + pragueRequestsProcessors(requestContractAddresses)); + } catch (NoSuchElementException nsee) { + LOG.warn("Prague definitions require system contract addresses in genesis"); + throw nsee; + } } return pragueSpecBuilder; } + private static boolean isPoAConsensus(final GenesisConfigOptions genesisConfigOptions) { + return genesisConfigOptions.isClique() + || genesisConfigOptions.isIbft2() + || genesisConfigOptions.isQbft(); + } + static ProtocolSpecBuilder osakaDefinition( final Optional chainId, final boolean enableRevertReason, From fd43438cf24ae1cdb5b808b39bdf0216c8ce2033 Mon Sep 17 00:00:00 2001 From: Miroslav Kovar Date: Sun, 18 Jan 2026 17:32:28 +0100 Subject: [PATCH 2/3] Fix failing code delegation acceptance test by running node in PoS mode Signed-off-by: Miroslav Kovar --- .../tests/src/test/resources/dev/dev_prague.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/acceptance-tests/tests/src/test/resources/dev/dev_prague.json b/acceptance-tests/tests/src/test/resources/dev/dev_prague.json index f4551b261c5..fb9f5162f32 100644 --- a/acceptance-tests/tests/src/test/resources/dev/dev_prague.json +++ b/acceptance-tests/tests/src/test/resources/dev/dev_prague.json @@ -32,10 +32,7 @@ "baseFeeUpdateFraction": 5007716 } }, - "clique": { - "period": 5, - "epoch": 30000 - }, + "ethash": {}, "depositContractAddress": "0x4242424242424242424242424242424242424242", "withdrawalRequestContractAddress": "0x00A3ca265EBcb825B45F985A16CEFB49958cE017", "consolidationRequestContractAddress": "0x00b42dbF2194e931E80326D950320f7d9Dbeac02" @@ -44,7 +41,7 @@ "timestamp":"0x0", "extraData":"0x0000000000000000000000000000000000000000000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "gasLimit":"0x1C9C380", - "difficulty":"0x400000000", + "difficulty":"0x0", "mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase":"0x0000000000000000000000000000000000000000", "alloc":{ @@ -142,4 +139,4 @@ "gasUsed":"0x0", "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas":"0x7" -} \ No newline at end of file +} From 4e20dcbcf54992ecfd57b899ab2bc528d8c98638 Mon Sep 17 00:00:00 2001 From: Karim Taam Date: Mon, 19 Jan 2026 18:26:40 +0400 Subject: [PATCH 3/3] fix acceptances tests using ethash Signed-off-by: Karim Taam --- .../tests/src/test/resources/dev/dev_prague.json | 2 +- .../src/test/resources/jsonrpc/engine/osaka/genesis.json | 5 +---- .../src/test/resources/jsonrpc/engine/paris/genesis.json | 5 +---- .../src/test/resources/jsonrpc/engine/prague/genesis.json | 5 +---- .../src/test/resources/jsonrpc/engine/shanghai/genesis.json | 5 +---- .../src/test/resources/jsonrpc/eth/getBlockBy/genesis.json | 5 +---- 6 files changed, 6 insertions(+), 21 deletions(-) diff --git a/acceptance-tests/tests/src/test/resources/dev/dev_prague.json b/acceptance-tests/tests/src/test/resources/dev/dev_prague.json index fb9f5162f32..5290605428f 100644 --- a/acceptance-tests/tests/src/test/resources/dev/dev_prague.json +++ b/acceptance-tests/tests/src/test/resources/dev/dev_prague.json @@ -41,7 +41,7 @@ "timestamp":"0x0", "extraData":"0x0000000000000000000000000000000000000000000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "gasLimit":"0x1C9C380", - "difficulty":"0x0", + "difficulty":"0x400000000", "mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase":"0x0000000000000000000000000000000000000000", "alloc":{ diff --git a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/osaka/genesis.json b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/osaka/genesis.json index ab84fde2973..6733a2e0ae7 100644 --- a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/osaka/genesis.json +++ b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/osaka/genesis.json @@ -16,10 +16,7 @@ "cancunTime":0, "pragueTime":0, "osakaTime": 32, - "clique": { - "period": 5, - "epoch": 30000 - }, + "ethash": {}, "depositContractAddress": "0x4242424242424242424242424242424242424242", "withdrawalRequestContractAddress": "0x00A3ca265EBcb825B45F985A16CEFB49958cE017", "consolidationRequestContractAddress": "0x00b42dbF2194e931E80326D950320f7d9Dbeac02" diff --git a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/paris/genesis.json b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/paris/genesis.json index 085b69a1dd5..2bd120f4795 100644 --- a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/paris/genesis.json +++ b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/paris/genesis.json @@ -13,10 +13,7 @@ "berlinBlock":0, "londonBlock":0, "terminalTotalDifficulty":0, - "clique": { - "period": 5, - "epoch": 30000 - } + "ethash": {} }, "nonce":"0x42", "timestamp":"0x0", diff --git a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/prague/genesis.json b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/prague/genesis.json index ef3d2c1be4b..366815baf34 100644 --- a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/prague/genesis.json +++ b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/prague/genesis.json @@ -15,10 +15,7 @@ "terminalTotalDifficulty":0, "cancunTime":0, "pragueTime":20, - "clique": { - "period": 5, - "epoch": 30000 - }, + "ethash": {}, "depositContractAddress": "0x4242424242424242424242424242424242424242", "withdrawalRequestContractAddress": "0x00A3ca265EBcb825B45F985A16CEFB49958cE017", "consolidationRequestContractAddress": "0x00b42dbF2194e931E80326D950320f7d9Dbeac02" diff --git a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/shanghai/genesis.json b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/shanghai/genesis.json index 6b596fee607..0da01355734 100644 --- a/acceptance-tests/tests/src/test/resources/jsonrpc/engine/shanghai/genesis.json +++ b/acceptance-tests/tests/src/test/resources/jsonrpc/engine/shanghai/genesis.json @@ -14,10 +14,7 @@ "londonBlock":0, "terminalTotalDifficulty":0, "shanghaiTime":10, - "clique": { - "period": 5, - "epoch": 30000 - } + "ethash": {} }, "nonce":"0x42", "timestamp":"0x0", diff --git a/acceptance-tests/tests/src/test/resources/jsonrpc/eth/getBlockBy/genesis.json b/acceptance-tests/tests/src/test/resources/jsonrpc/eth/getBlockBy/genesis.json index 98a1201c9aa..92004dad9bb 100644 --- a/acceptance-tests/tests/src/test/resources/jsonrpc/eth/getBlockBy/genesis.json +++ b/acceptance-tests/tests/src/test/resources/jsonrpc/eth/getBlockBy/genesis.json @@ -13,10 +13,7 @@ "berlinBlock":0, "londonBlock":0, "shanghaiTime":10, - "clique": { - "period": 5, - "epoch": 30000 - }, + "ethash": {}, "terminalTotalDifficulty":0 }, "nonce":"0x42",