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..5290605428f 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" @@ -142,4 +139,4 @@ "gasUsed":"0x0", "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000", "baseFeePerGas":"0x7" -} \ No newline at end of file +} 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", 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,