From f0509bc6a4e9982bf706cd8f3b19c92262fff13a Mon Sep 17 00:00:00 2001 From: kkaur01 Date: Sat, 21 Feb 2026 11:18:53 +1000 Subject: [PATCH 1/2] refactor: move isRevertReasonEnabled into DataStorageConfiguration Closes #7597 - Add `revertReasonEnabled` field to `DataStorageConfiguration` (alongside existing storage concerns like `receiptCompactionEnabled`) - Move `--revert-reason-enabled` CLI option from `BesuCommand` into `DataStorageOptions` so it is serialised/deserialised with the rest of the data-storage group automatically - Replace the two standalone boolean params `enableRevertReason` and `isParallelTxProcessingEnabled` in `MainnetProtocolSpecs`, `MainnetProtocolSpecFactory`, `ProtocolScheduleBuilder`, `MainnetProtocolSchedule` and all consensus schedule builders with a single `DataStorageConfiguration` object - Remove now-redundant `isRevertReasonEnabled` / `isParallelTxProcessingEnabled` fields and setters from `BesuControllerBuilder`; all controller builders pass `dataStorageConfiguration` directly - Fix `ProcessBesuNodeRunner` duplicate-flag bug: `--revert-reason-enabled` was being added both by `DataStorageOptions.getCLIOptions()` and explicitly; removed the explicit addition Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: kkaur01 --- .../tests/acceptance/dsl/node/BesuNode.java | 4 +- .../dsl/node/ProcessBesuNodeRunner.java | 4 - .../dsl/node/ThreadBesuNodeRunner.java | 1 - .../org/hyperledger/besu/cli/BesuCommand.java | 13 -- .../options/storage/DataStorageOptions.java | 9 + .../controller/BesuControllerBuilder.java | 31 ---- .../CliqueBesuControllerBuilder.java | 3 +- ...onsensusScheduleBesuControllerBuilder.java | 17 -- .../controller/IbftBesuControllerBuilder.java | 3 +- .../IbftLegacyBesuControllerBuilder.java | 2 +- .../MainnetBesuControllerBuilder.java | 3 +- .../MergeBesuControllerBuilder.java | 3 +- .../controller/QbftBesuControllerBuilder.java | 3 +- .../TransitionBesuControllerBuilder.java | 13 -- .../besu/ForkIdsNetworkConfigTest.java | 6 +- .../besu/cli/CommandTestAbstract.java | 3 - .../clique/CliqueProtocolSchedule.java | 10 +- .../clique/CliqueProtocolScheduleTest.java | 16 +- .../blockcreation/CliqueBlockCreatorTest.java | 4 +- .../CliqueMinerExecutorTest.java | 4 +- .../bft/BaseBftProtocolScheduleBuilder.java | 10 +- .../CombinedProtocolScheduleFactoryTest.java | 4 +- .../BaseBftProtocolScheduleBuilderTest.java | 4 +- .../ibft/support/TestContextBuilder.java | 3 +- .../ibft/IbftProtocolScheduleBuilder.java | 48 +---- .../ibft/IbftProtocolScheduleTest.java | 4 +- .../blockcreation/BftBlockCreatorTest.java | 13 +- .../IbftBlockHeightManagerTest.java | 4 +- .../ibftlegacy/IbftProtocolSchedule.java | 8 +- .../merge/MergeProtocolSchedule.java | 10 +- .../merge/MergeProtocolScheduleTest.java | 19 +- .../MergeGenesisConfigHelper.java | 4 +- .../qbft/core/support/TestContextBuilder.java | 3 +- .../qbft/QbftProtocolScheduleBuilder.java | 48 +---- .../qbft/QbftProtocolScheduleTest.java | 4 +- .../api/jsonrpc/BlockchainImporter.java | 3 +- .../JsonRpcHttpServiceHostAllowlistTest.java | 3 +- .../jsonrpc/JsonRpcHttpServiceLoginTest.java | 3 +- .../jsonrpc/JsonRpcHttpServiceTestBase.java | 3 +- .../JsonRpcHttpServiceTlsClientAuthTest.java | 3 +- ...RpcHttpServiceTlsMisconfigurationTest.java | 3 +- .../jsonrpc/JsonRpcHttpServiceTlsTest.java | 3 +- .../internal/methods/DebugTraceBlockTest.java | 4 +- .../methods/EthSimulateV1TrielogTest.java | 3 +- .../methods/JsonRpcMethodsFactoryTest.java | 5 +- .../websocket/WebSocketServiceLoginTest.java | 3 +- .../AbstractBlockCreatorTest.java | 4 +- .../AbstractBlockTransactionSelectorTest.java | 1 - ...FeeMarketBlockTransactionSelectorTest.java | 4 +- ...FeeMarketBlockTransactionSelectorTest.java | 4 +- .../components/ProtocolScheduleModule.java | 10 +- .../components/ProtocolSpecModule.java | 7 +- .../FixedDifficultyProtocolSchedule.java | 11 +- .../mainnet/MainnetProtocolSchedule.java | 44 +++-- .../mainnet/MainnetProtocolSpecFactory.java | 88 ++++----- .../mainnet/MainnetProtocolSpecs.java | 173 +++++++----------- .../mainnet/ProtocolScheduleBuilder.java | 13 +- .../worldstate/DataStorageConfiguration.java | 6 + .../ethereum/core/BlockchainSetupUtil.java | 3 +- .../core/ExecutionContextTestFixture.java | 4 +- .../core/ProtocolScheduleFixture.java | 6 +- .../fixed/FixedProtocolScheduleTest.java | 1 - .../mainnet/DefaultProtocolScheduleTest.java | 5 +- .../mainnet/MainnetProtocolScheduleTest.java | 7 +- .../mainnet/MainnetProtocolSpecsTest.java | 29 ++- .../mainnet/ProtocolScheduleBuilderTest.java | 7 +- .../bonsai/AbstractIsolationTests.java | 2 +- .../eth/messages/BlockBodiesMessageTest.java | 2 - .../eth/messages/BlockHeadersMessageTest.java | 2 - .../eth/sync/ChainHeadTrackerTest.java | 2 - .../backwardsync/BackwardSyncContextTest.java | 3 +- .../backwardsync/BackwardSyncStepTest.java | 3 +- .../backwardsync/ForwardSyncStepTest.java | 3 +- .../AbstractTransactionPoolTestBase.java | 4 +- .../ethereum/eth/transactions/TestNode.java | 2 - .../TransactionPoolFactoryTest.java | 4 +- .../evmtool/MainnetGenesisFileModule.java | 11 +- .../ReferenceTestProtocolSchedules.java | 4 +- 78 files changed, 304 insertions(+), 539 deletions(-) diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/BesuNode.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/BesuNode.java index 3421072ff09..2eadd662d19 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/BesuNode.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/BesuNode.java @@ -35,6 +35,7 @@ import org.hyperledger.besu.ethereum.p2p.config.NetworkingConfiguration; import org.hyperledger.besu.ethereum.permissioning.PermissioningConfiguration; import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; +import org.hyperledger.besu.ethereum.worldstate.ImmutableDataStorageConfiguration; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.plugin.services.storage.KeyValueStorageFactory; import org.hyperledger.besu.tests.acceptance.dsl.condition.Condition; @@ -743,7 +744,8 @@ public void setTransactionPoolConfiguration( } public DataStorageConfiguration getDataStorageConfiguration() { - return dataStorageConfiguration; + return ImmutableDataStorageConfiguration.copyOf(dataStorageConfiguration) + .withRevertReasonEnabled(revertReasonEnabled); } public boolean isDevMode() { diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ProcessBesuNodeRunner.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ProcessBesuNodeRunner.java index 1cd5b4f8c48..967f36ba2dc 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ProcessBesuNodeRunner.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ProcessBesuNodeRunner.java @@ -341,10 +341,6 @@ private List commandlineArgs(final BesuNode node, final Path dataDir) { params.addAll(networkConfigParams); } - if (node.isRevertReasonEnabled()) { - params.add("--revert-reason-enabled"); - } - params.add("--Xsecp256k1-native-enabled=" + node.isSecp256k1Native()); params.add("--Xaltbn128-native-enabled=" + node.isAltbn128Native()); diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ThreadBesuNodeRunner.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ThreadBesuNodeRunner.java index cc5bfaecbe8..fb5a1718951 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ThreadBesuNodeRunner.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/ThreadBesuNodeRunner.java @@ -175,7 +175,6 @@ public void startNode(final BesuNode node) { .ifPresent(networkConfigBuilder::setGenesisConfig); final EthNetworkConfig ethNetworkConfig = networkConfigBuilder.build(); final BesuControllerBuilder builder = component.besuControllerBuilder(); - builder.isRevertReasonEnabled(node.isRevertReasonEnabled()); builder.networkConfiguration(node.getNetworkingConfiguration()); builder.dataDirectory(dataDir); diff --git a/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java b/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java index b15a1e45798..86ccd0192b4 100644 --- a/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java +++ b/app/src/main/java/org/hyperledger/besu/cli/BesuCommand.java @@ -591,12 +591,6 @@ void setNetwork(final String inputNetwork) { @CommandLine.ArgGroup(validate = false, heading = "@|bold Permissions Options|@%n") PermissionsOptions permissionsOptions = new PermissionsOptions(); - @Option( - names = {"--revert-reason-enabled"}, - description = - "Enable passing the revert reason back through TransactionReceipts (default: ${DEFAULT-VALUE})") - private final Boolean isRevertReasonEnabled = false; - @Option( names = {"--required-blocks", "--required-block"}, paramLabel = "BLOCK=HASH", @@ -2132,7 +2126,6 @@ public BesuControllerBuilder setupControllerBuilder() { .metricsSystem((ObservableMetricsSystem) besuComponent.getMetricsSystem()) .messagePermissioningProviders(permissioningService.getMessagePermissioningProviders()) .clock(Clock.systemUTC()) - .isRevertReasonEnabled(isRevertReasonEnabled) .storageProvider(storageProvider) .isEarlyRoundChangeEnabled(unstableQbftOptions.isEarlyRoundChangeEnabled()) .requiredBlocks(requiredBlocks) @@ -2149,12 +2142,6 @@ public BesuControllerBuilder setupControllerBuilder() { .apiConfiguration(apiConfiguration) .balConfiguration(balConfiguration) .besuComponent(besuComponent); - if (DataStorageFormat.BONSAI.equals(getDataStorageConfiguration().getDataStorageFormat())) { - final PathBasedExtraStorageConfiguration subStorageConfiguration = - getDataStorageConfiguration().getPathBasedExtraStorageConfiguration(); - besuControllerBuilder.isParallelTxProcessingEnabled( - subStorageConfiguration.getParallelTxProcessingEnabled()); - } return besuControllerBuilder; } diff --git a/app/src/main/java/org/hyperledger/besu/cli/options/storage/DataStorageOptions.java b/app/src/main/java/org/hyperledger/besu/cli/options/storage/DataStorageOptions.java index b7fd5ca0bea..da12e14a13c 100644 --- a/app/src/main/java/org/hyperledger/besu/cli/options/storage/DataStorageOptions.java +++ b/app/src/main/java/org/hyperledger/besu/cli/options/storage/DataStorageOptions.java @@ -15,6 +15,7 @@ package org.hyperledger.besu.cli.options.storage; import static org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration.DEFAULT_RECEIPT_COMPACTION_ENABLED; +import static org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration.DEFAULT_REVERT_REASON_ENABLED; import org.hyperledger.besu.cli.options.CLIOptions; import org.hyperledger.besu.cli.util.CommandLineUtils; @@ -54,6 +55,12 @@ public class DataStorageOptions implements CLIOptions "Convenience option to enable online history pruning and configure BlobDB garbage collection settings (default: ${DEFAULT-VALUE}). \"--history-expiry-prune\" is deprecated and will be removed in a future release.") private Boolean historyExpiryPrune = false; + @Option( + names = {"--revert-reason-enabled"}, + description = + "Enable passing the revert reason back through TransactionReceipts (default: ${DEFAULT-VALUE})") + private Boolean revertReasonEnabled = DEFAULT_REVERT_REASON_ENABLED; + /** * Options specific to path-based storage modes. Holds the necessary parameters to configure * path-based storage, such as the Bonsai mode or Verkle in the future. @@ -97,6 +104,7 @@ public static DataStorageOptions fromConfig(final DataStorageConfiguration domai PathBasedExtraStorageOptions.fromConfig( domainObject.getPathBasedExtraStorageConfiguration()); dataStorageOptions.historyExpiryPrune = domainObject.getHistoryExpiryPruneEnabled(); + dataStorageOptions.revertReasonEnabled = domainObject.getRevertReasonEnabled(); return dataStorageOptions; } @@ -107,6 +115,7 @@ public DataStorageConfiguration toDomainObject() { .dataStorageFormat(dataStorageFormat) .receiptCompactionEnabled(receiptCompactionEnabled) .historyExpiryPruneEnabled(historyExpiryPrune) + .revertReasonEnabled(revertReasonEnabled) .pathBasedExtraStorageConfiguration(pathBasedExtraStorageOptions.toDomainObject()); return builder.build(); } diff --git a/app/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java index 4898eb7989a..77a1ccd11d8 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java @@ -170,9 +170,6 @@ public abstract class BesuControllerBuilder implements MiningConfigurationOverri /** The Node key. */ protected NodeKey nodeKey; - /** The Is revert reason enabled. */ - protected boolean isRevertReasonEnabled; - /** The Storage provider. */ protected StorageProvider storageProvider; @@ -214,9 +211,6 @@ public abstract class BesuControllerBuilder implements MiningConfigurationOverri private int numberOfBlockHeadersToCache = 0; private boolean isCacheLastBlockHeadersPreloadEnabled; - /** whether parallel transaction processing is enabled or not */ - protected boolean isParallelTxProcessingEnabled; - /** Configuration flags related to block access lists. */ protected BalConfiguration balConfiguration = BalConfiguration.DEFAULT; @@ -406,17 +400,6 @@ public BesuControllerBuilder transactionPoolConfiguration( return this; } - /** - * Is revert reason enabled besu controller builder. - * - * @param isRevertReasonEnabled the is revert reason enabled - * @return the besu controller builder - */ - public BesuControllerBuilder isRevertReasonEnabled(final boolean isRevertReasonEnabled) { - this.isRevertReasonEnabled = isRevertReasonEnabled; - return this; - } - /** * Required blocks besu controller builder. * @@ -554,20 +537,6 @@ public BesuControllerBuilder randomPeerPriority(final Boolean randomPeerPriority return this; } - /** - * Sets whether parallel transaction processing is enabled. When parallel transaction processing - * is enabled, transactions within a block can be processed in parallel and potentially improving - * performance - * - * @param isParallelTxProcessingEnabled true to enable parallel transaction - * @return the besu controller - */ - public BesuControllerBuilder isParallelTxProcessingEnabled( - final boolean isParallelTxProcessingEnabled) { - this.isParallelTxProcessingEnabled = isParallelTxProcessingEnabled; - return this; - } - /** * Sets configuration for functionality related to block-level access lists. * diff --git a/app/src/main/java/org/hyperledger/besu/controller/CliqueBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/CliqueBesuControllerBuilder.java index 29d8298cf90..b77aca3b4b0 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/CliqueBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/CliqueBesuControllerBuilder.java @@ -131,11 +131,10 @@ protected ProtocolSchedule createProtocolSchedule() { genesisConfigOptions, forksSchedule, nodeKey, - isRevertReasonEnabled, + dataStorageConfiguration, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } diff --git a/app/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java index fc2b47901eb..fd8f1061e52 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java @@ -396,23 +396,6 @@ public BesuControllerBuilder transactionPoolConfiguration( return super.transactionPoolConfiguration(transactionPoolConfiguration); } - @Override - public BesuControllerBuilder isRevertReasonEnabled(final boolean isRevertReasonEnabled) { - besuControllerBuilderSchedule - .values() - .forEach(b -> b.isRevertReasonEnabled(isRevertReasonEnabled)); - return super.isRevertReasonEnabled(isRevertReasonEnabled); - } - - @Override - public BesuControllerBuilder isParallelTxProcessingEnabled( - final boolean isParallelTxProcessingEnabled) { - besuControllerBuilderSchedule - .values() - .forEach(b -> b.isParallelTxProcessingEnabled(isParallelTxProcessingEnabled)); - return super.isParallelTxProcessingEnabled(isParallelTxProcessingEnabled); - } - @Override public BesuControllerBuilder balConfiguration(final BalConfiguration balConfiguration) { besuControllerBuilderSchedule.values().forEach(b -> b.balConfiguration(balConfiguration)); diff --git a/app/src/main/java/org/hyperledger/besu/controller/IbftBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/IbftBesuControllerBuilder.java index 5c702d3a490..bd17af52353 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/IbftBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/IbftBesuControllerBuilder.java @@ -300,12 +300,11 @@ protected ProtocolSchedule createProtocolSchedule() { return IbftProtocolScheduleBuilder.create( genesisConfigOptions, forksSchedule, - isRevertReasonEnabled, + dataStorageConfiguration, bftExtraDataCodec, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } diff --git a/app/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java index cec5c6a1192..db88ffe52b6 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/IbftLegacyBesuControllerBuilder.java @@ -65,7 +65,7 @@ protected MiningCoordinator createMiningCoordinator( @Override protected ProtocolSchedule createProtocolSchedule() { return IbftProtocolSchedule.create( - genesisConfigOptions, isRevertReasonEnabled, evmConfiguration, metricsSystem); + genesisConfigOptions, dataStorageConfiguration, evmConfiguration, metricsSystem); } @Override diff --git a/app/src/main/java/org/hyperledger/besu/controller/MainnetBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/MainnetBesuControllerBuilder.java index 008bd852e26..5b13dfcf51f 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/MainnetBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/MainnetBesuControllerBuilder.java @@ -91,11 +91,10 @@ protected PluginServiceFactory createAdditionalPluginServices( protected ProtocolSchedule createProtocolSchedule() { return MainnetProtocolSchedule.fromConfig( genesisConfigOptions, - Optional.of(isRevertReasonEnabled), + dataStorageConfiguration, Optional.of(evmConfiguration), super.miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } diff --git a/app/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java index d67144ccc3b..ba0e025a1a3 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/MergeBesuControllerBuilder.java @@ -172,10 +172,9 @@ protected MiningCoordinator createTransitionMiningCoordinator( protected ProtocolSchedule createProtocolSchedule() { return MergeProtocolSchedule.create( genesisConfigOptions, - isRevertReasonEnabled, + dataStorageConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem, evmConfiguration); diff --git a/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java index 88cabd5a0a4..65e4782bbe5 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/QbftBesuControllerBuilder.java @@ -362,12 +362,11 @@ protected ProtocolSchedule createProtocolSchedule() { return QbftProtocolScheduleBuilder.create( genesisConfigOptions, qbftForksSchedule, - isRevertReasonEnabled, + dataStorageConfiguration, qbftExtraDataCodec, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } diff --git a/app/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java b/app/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java index 879599a89fd..a02f4106cda 100644 --- a/app/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java +++ b/app/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java @@ -373,19 +373,6 @@ public BesuControllerBuilder transactionPoolConfiguration( return propagateConfig(z -> z.transactionPoolConfiguration(transactionPoolConfiguration)); } - @Override - public BesuControllerBuilder isRevertReasonEnabled(final boolean isRevertReasonEnabled) { - super.isRevertReasonEnabled(isRevertReasonEnabled); - return propagateConfig(z -> z.isRevertReasonEnabled(isRevertReasonEnabled)); - } - - @Override - public BesuControllerBuilder isParallelTxProcessingEnabled( - final boolean isParallelTxProcessingEnabled) { - super.isParallelTxProcessingEnabled(isParallelTxProcessingEnabled); - return propagateConfig(z -> z.isParallelTxProcessingEnabled(isParallelTxProcessingEnabled)); - } - @Override public BesuControllerBuilder balConfiguration(final BalConfiguration balConfiguration) { super.balConfiguration(balConfiguration); diff --git a/app/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java b/app/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java index a8196f07469..fc9e7918f7d 100644 --- a/app/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java +++ b/app/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java @@ -38,6 +38,7 @@ import org.hyperledger.besu.ethereum.mainnet.DefaultProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSchedule; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.cache.CodeCache; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -165,9 +166,9 @@ private static MilestoneStreamingTransitionProtocolSchedule createSchedule( (DefaultProtocolSchedule) MainnetProtocolSchedule.fromConfig( configOptions, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem())); MilestoneStreamingProtocolSchedule postMergeProtocolSchedule = @@ -175,10 +176,9 @@ private static MilestoneStreamingTransitionProtocolSchedule createSchedule( (DefaultProtocolSchedule) MergeProtocolSchedule.create( configOptions, - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT)); diff --git a/app/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java b/app/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java index bc1b45c2140..23f17deee38 100644 --- a/app/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java +++ b/app/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java @@ -293,9 +293,6 @@ public void initMocks() throws Exception { when(mockControllerBuilder.messagePermissioningProviders(any())) .thenReturn(mockControllerBuilder); when(mockControllerBuilder.clock(any())).thenReturn(mockControllerBuilder); - when(mockControllerBuilder.isRevertReasonEnabled(false)).thenReturn(mockControllerBuilder); - when(mockControllerBuilder.isParallelTxProcessingEnabled(false)) - .thenReturn(mockControllerBuilder); when(mockControllerBuilder.isEarlyRoundChangeEnabled(false)).thenReturn(mockControllerBuilder); when(mockControllerBuilder.storageProvider(any())).thenReturn(mockControllerBuilder); when(mockControllerBuilder.requiredBlocks(any())).thenReturn(mockControllerBuilder); diff --git a/consensus/clique/src/main/java/org/hyperledger/besu/consensus/clique/CliqueProtocolSchedule.java b/consensus/clique/src/main/java/org/hyperledger/besu/consensus/clique/CliqueProtocolSchedule.java index 758455d1acc..df07fd8f4b2 100644 --- a/consensus/clique/src/main/java/org/hyperledger/besu/consensus/clique/CliqueProtocolSchedule.java +++ b/consensus/clique/src/main/java/org/hyperledger/besu/consensus/clique/CliqueProtocolSchedule.java @@ -35,6 +35,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecBuilder; import org.hyperledger.besu.ethereum.mainnet.feemarket.BaseFeeMarket; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -58,11 +59,10 @@ public class CliqueProtocolSchedule { * @param config the config * @param forksSchedule the transitions * @param nodeKey the node key - * @param isRevertReasonEnabled the is revert reason enabled + * @param dataStorageConfiguration the data storage configuration * @param evmConfiguration the evm configuration * @param miningConfiguration the mining configuration * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled * @param balConfiguration configuration related to block-level access lists * @param metricsSystem A metricSystem instance to be able to expose metrics in the underlying * calls @@ -72,11 +72,10 @@ public static ProtocolSchedule create( final GenesisConfigOptions config, final ForksSchedule forksSchedule, final NodeKey nodeKey, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { @@ -110,11 +109,10 @@ public static ProtocolSchedule create( config, Optional.of(DEFAULT_CHAIN_ID), specAdapters, - isRevertReasonEnabled, + dataStorageConfiguration, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem) .createProtocolSchedule(); diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java index 52724ffcee7..a96905c6772 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java @@ -38,6 +38,7 @@ import org.hyperledger.besu.ethereum.mainnet.HeaderValidationMode; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -68,11 +69,10 @@ public void protocolSpecsAreCreatedAtBlockDefinedInJson() { config, new ForksSchedule<>(List.of()), NODE_KEY, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); @@ -95,11 +95,10 @@ public void parametersAlignWithMainnetWithAdjustments() { GenesisConfig.DEFAULT.getConfigOptions(), forksSchedule, NODE_KEY, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .getByBlockHeader(blockHeader(0)); @@ -122,11 +121,10 @@ public void zeroEpochLengthThrowsException() { genesisConfig, new ForksSchedule<>(List.of()), NODE_KEY, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem())) .isInstanceOf(IllegalArgumentException.class) @@ -145,11 +143,10 @@ public void negativeEpochLengthThrowsException() { genesisConfig, new ForksSchedule<>(List.of()), NODE_KEY, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem())) .isInstanceOf(IllegalArgumentException.class) @@ -172,11 +169,10 @@ public void shouldValidateBaseFeeMarketTransition() { config, forksSchedule, NODE_KEY, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java index e9f0884b82f..149376d1110 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java @@ -65,6 +65,7 @@ import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.cache.CodeCache; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -114,11 +115,10 @@ void setup() { GenesisConfig.DEFAULT.getConfigOptions(), new ForksSchedule<>(List.of()), proposerNodeKey, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueMinerExecutorTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueMinerExecutorTest.java index 953421b3653..ece81c9697f 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueMinerExecutorTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueMinerExecutorTest.java @@ -58,6 +58,7 @@ import org.hyperledger.besu.ethereum.eth.transactions.sorter.GasPricePendingTransactionsSorter; import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -121,11 +122,10 @@ public void setup() { GENESIS_CONFIG_OPTIONS, new ForksSchedule<>(List.of()), proposerNodeKey, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); cliqueEthContext = mock(EthContext.class, RETURNS_DEEP_STUBS); diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilder.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilder.java index c0a407a29c0..7f0e82671e6 100644 --- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilder.java +++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilder.java @@ -32,6 +32,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecBuilder; import org.hyperledger.besu.ethereum.mainnet.WithdrawalsValidator; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -54,12 +55,11 @@ protected BaseBftProtocolScheduleBuilder() {} * * @param config the config * @param forksSchedule the forks schedule - * @param isRevertReasonEnabled the is revert reason enabled + * @param dataStorageConfiguration the data storage configuration * @param bftExtraDataCodec the bft extra data codec * @param evmConfiguration the evm configuration * @param miningConfiguration the mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. * @param balConfiguration configuration related to block access lists. * @param metricsSystem metricsSystem A metricSystem instance to be able to expose metrics in the * underlying calls @@ -68,12 +68,11 @@ protected BaseBftProtocolScheduleBuilder() {} public BftProtocolSchedule createProtocolSchedule( final GenesisConfigOptions config, final ForksSchedule forksSchedule, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BftExtraDataCodec bftExtraDataCodec, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { final Map> specMap = new HashMap<>(); @@ -93,11 +92,10 @@ public BftProtocolSchedule createProtocolSchedule( config, Optional.of(DEFAULT_CHAIN_ID), specAdapters, - isRevertReasonEnabled, + dataStorageConfiguration, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem) .createProtocolSchedule(); diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/CombinedProtocolScheduleFactoryTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/CombinedProtocolScheduleFactoryTest.java index 7ae64f6d89b..063589d6a7c 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/CombinedProtocolScheduleFactoryTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/CombinedProtocolScheduleFactoryTest.java @@ -34,6 +34,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -182,11 +183,10 @@ private BftProtocolSchedule createProtocolSchedule( genesisConfigOptions, Optional.of(BigInteger.ONE), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilderTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilderTest.java index 443879a9261..f9c199d9453 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilderTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/BaseBftProtocolScheduleBuilderTest.java @@ -39,6 +39,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.mainnet.WithdrawalsValidator; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -257,12 +258,11 @@ protected BlockHeaderValidator.Builder createBlockHeaderRuleset( return bftProtocolSchedule.createProtocolSchedule( genesisConfig, new ForksSchedule<>(forks), - false, + DataStorageConfiguration.DEFAULT_CONFIG, bftExtraDataCodec, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } diff --git a/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/support/TestContextBuilder.java b/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/support/TestContextBuilder.java index d751839e07b..e880c4bc7c2 100644 --- a/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/support/TestContextBuilder.java +++ b/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/support/TestContextBuilder.java @@ -95,6 +95,7 @@ import org.hyperledger.besu.ethereum.eth.transactions.sorter.GasPricePendingTransactionsSorter; import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.p2p.rlpx.wire.Message; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -336,11 +337,11 @@ private static ControllerAndState createControllerAndFinalState( IbftProtocolScheduleBuilder.create( genesisConfigOptions, forksSchedule, + DataStorageConfiguration.DEFAULT_CONFIG, IBFT_EXTRA_DATA_ENCODER, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/consensus/ibft/src/main/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleBuilder.java b/consensus/ibft/src/main/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleBuilder.java index 29c39ac6c75..bdd3d65aba4 100644 --- a/consensus/ibft/src/main/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleBuilder.java +++ b/consensus/ibft/src/main/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleBuilder.java @@ -26,6 +26,7 @@ import org.hyperledger.besu.ethereum.mainnet.BlockHeaderValidator; import org.hyperledger.besu.ethereum.mainnet.feemarket.BaseFeeMarket; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -42,12 +43,11 @@ protected IbftProtocolScheduleBuilder() {} * * @param config the config * @param forksSchedule the forks schedule - * @param isRevertReasonEnabled the is revert reason enabled + * @param dataStorageConfiguration the data storage configuration * @param bftExtraDataCodec the bft extra data codec * @param evmConfiguration the evm configuration * @param miningConfiguration the mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled * @param balConfiguration configuration related to block-level access lists * @param metricsSystem A metricSystem instance to be able to expose metrics in the underlying * calls @@ -56,66 +56,26 @@ protected IbftProtocolScheduleBuilder() {} public static BftProtocolSchedule create( final GenesisConfigOptions config, final ForksSchedule forksSchedule, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BftExtraDataCodec bftExtraDataCodec, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return new IbftProtocolScheduleBuilder() .createProtocolSchedule( config, forksSchedule, - isRevertReasonEnabled, + dataStorageConfiguration, bftExtraDataCodec, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } - /** - * Create protocol schedule. - * - * @param config the config - * @param forksSchedule the forks schedule - * @param bftExtraDataCodec the bft extra data codec - * @param evmConfiguration the evm configuration - * @param miningConfiguration the mining parameters - * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. - * @param balConfiguration configuration related to block-level access lists - * @param metricsSystem A metricSystem instance to be able to expose metrics in the underlying - * calls - * @return the protocol schedule - */ - public static BftProtocolSchedule create( - final GenesisConfigOptions config, - final ForksSchedule forksSchedule, - final BftExtraDataCodec bftExtraDataCodec, - final EvmConfiguration evmConfiguration, - final MiningConfiguration miningConfiguration, - final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, - final BalConfiguration balConfiguration, - final MetricsSystem metricsSystem) { - return create( - config, - forksSchedule, - false, - bftExtraDataCodec, - evmConfiguration, - miningConfiguration, - badBlockManager, - isParallelTxProcessingEnabled, - balConfiguration, - metricsSystem); - } - @Override protected BlockHeaderValidator.Builder createBlockHeaderRuleset( final BftConfigOptions config, final FeeMarket feeMarket) { diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleTest.java index 63b90c55ab8..f03ed4f4ac1 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftProtocolScheduleTest.java @@ -44,6 +44,7 @@ import org.hyperledger.besu.ethereum.core.components.EthereumCoreComponent; import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.mainnet.HeaderValidationMode; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -123,12 +124,11 @@ private BftProtocolSchedule createProtocolSchedule( return IbftProtocolScheduleBuilder.create( genesisConfig, forkSched, - false, + DataStorageConfiguration.DEFAULT_CONFIG, bftExtraDataCodec, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/blockcreation/BftBlockCreatorTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/blockcreation/BftBlockCreatorTest.java index 51d8a41962d..e6998399ba7 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/blockcreation/BftBlockCreatorTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/blockcreation/BftBlockCreatorTest.java @@ -59,6 +59,7 @@ import org.hyperledger.besu.ethereum.mainnet.HeaderValidationMode; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -118,12 +119,11 @@ public BlockHeaderValidator.Builder createBlockHeaderRuleset( bftProtocolSchedule.createProtocolSchedule( configOptions, forksSchedule, - false, + DataStorageConfiguration.DEFAULT_CONFIG, bftExtraDataEncoder, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); final ProtocolContext protContext = @@ -265,12 +265,11 @@ public BlockHeaderValidator.Builder createBlockHeaderRuleset( bftProtocolSchedule.createProtocolSchedule( configOptions, forksSchedule, - false, + DataStorageConfiguration.DEFAULT_CONFIG, bftExtraDataEncoder, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); final ProtocolContext protContext = @@ -399,12 +398,11 @@ public BlockHeaderValidator.Builder createBlockHeaderRuleset( bftProtocolSchedule.createProtocolSchedule( configOptions, forksSchedule, - false, + DataStorageConfiguration.DEFAULT_CONFIG, bftExtraDataEncoder, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); final ProtocolContext protContext = @@ -534,12 +532,11 @@ public BlockHeaderValidator.Builder createBlockHeaderRuleset( bftProtocolSchedule.createProtocolSchedule( configOptions, forksSchedule, - false, + DataStorageConfiguration.DEFAULT_CONFIG, bftExtraDataEncoder, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); final ProtocolContext protContext = diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftBlockHeightManagerTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftBlockHeightManagerTest.java index 3404b4c7395..29f08d5daf7 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftBlockHeightManagerTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftBlockHeightManagerTest.java @@ -78,6 +78,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; import org.hyperledger.besu.ethereum.p2p.rlpx.wire.MessageData; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.util.Subscribers; @@ -187,11 +188,10 @@ public void setup() { new StubGenesisConfigOptions(), Optional.empty(), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java index 28c878bab05..06dba697f72 100644 --- a/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java +++ b/consensus/ibftlegacy/src/main/java/org/hyperledger/besu/consensus/ibftlegacy/IbftProtocolSchedule.java @@ -29,6 +29,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecBuilder; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -49,14 +50,14 @@ public IbftProtocolSchedule() {} * Create protocol schedule. * * @param config the config - * @param isRevertReasonEnabled the is revert reason enabled + * @param dataStorageConfiguration the data storage configuration * @param evmConfiguration the evm configuration * @param metricsSystem the metrics system * @return the protocol schedule */ public static ProtocolSchedule create( final GenesisConfigOptions config, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final EvmConfiguration evmConfiguration, final MetricsSystem metricsSystem) { final IbftLegacyConfigOptions ibftConfig = config.getIbftLegacyConfigOptions(); @@ -66,11 +67,10 @@ public static ProtocolSchedule create( config, Optional.of(DEFAULT_CHAIN_ID), ProtocolSpecAdapters.create(0, builder -> applyIbftChanges(blockPeriod, builder)), - isRevertReasonEnabled, + dataStorageConfiguration, evmConfiguration, null, new BadBlockManager(), - false, BalConfiguration.DEFAULT, metricsSystem) .createProtocolSchedule(); diff --git a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeProtocolSchedule.java b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeProtocolSchedule.java index c92e605ca1d..450e9bf42ee 100644 --- a/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeProtocolSchedule.java +++ b/consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/MergeProtocolSchedule.java @@ -28,6 +28,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecBuilder; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.MainnetEVMs; import org.hyperledger.besu.evm.gascalculator.GasCalculator; import org.hyperledger.besu.evm.internal.EvmConfiguration; @@ -52,19 +53,17 @@ public class MergeProtocolSchedule { * Create protocol schedule. * * @param config the config - * @param isRevertReasonEnabled the is revert reason enabled + * @param dataStorageConfiguration the data storage configuration * @param miningConfiguration the mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. * @param evmConfiguration the evm configuration * @return the protocol schedule */ public static ProtocolSchedule create( final GenesisConfigOptions config, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem, final EvmConfiguration evmConfiguration) { @@ -82,11 +81,10 @@ public static ProtocolSchedule create( config, Optional.of(DEFAULT_CHAIN_ID), new ProtocolSpecAdapters(postMergeModifications), - isRevertReasonEnabled, + dataStorageConfiguration, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem) .createProtocolSchedule(); diff --git a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/MergeProtocolScheduleTest.java b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/MergeProtocolScheduleTest.java index 867d5d723f3..0c84e588f5a 100644 --- a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/MergeProtocolScheduleTest.java +++ b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/MergeProtocolScheduleTest.java @@ -31,6 +31,7 @@ import org.hyperledger.besu.ethereum.mainnet.MainnetBlockProcessor; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.evm.operation.InvalidOperation; import org.hyperledger.besu.evm.operation.PrevRanDaoOperation; @@ -56,10 +57,9 @@ public void protocolSpecsAreCreatedAtBlockDefinedInJson() { final ProtocolSchedule protocolSchedule = MergeProtocolSchedule.create( config, - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT); @@ -79,10 +79,9 @@ public void mergeSpecificModificationsAreUnappliedForShanghai() { final ProtocolSchedule protocolSchedule = MergeProtocolSchedule.create( config, - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT); @@ -122,10 +121,9 @@ public void mergeSpecificModificationsAreUnappliedForCancun_whenShanghaiNotConfi final ProtocolSchedule protocolSchedule = MergeProtocolSchedule.create( config, - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT); @@ -157,10 +155,9 @@ public void mergeSpecificModificationsAreUnappliedForAllMainnetForksAfterParis() final ProtocolSchedule protocolSchedule = MergeProtocolSchedule.create( config, - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT); @@ -193,10 +190,9 @@ public void parametersAlignWithMainnetWithAdjustments() { final ProtocolSpec london = MergeProtocolSchedule.create( GenesisConfig.DEFAULT.getConfigOptions(), - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT) @@ -249,10 +245,9 @@ public void amsterdamHasBlockAccessListFactoryWithForkActivated() { final ProtocolSchedule protocolSchedule = MergeProtocolSchedule.create( config, - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT); diff --git a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeGenesisConfigHelper.java b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeGenesisConfigHelper.java index 4662a3a8c88..22e79dde728 100644 --- a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeGenesisConfigHelper.java +++ b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeGenesisConfigHelper.java @@ -22,6 +22,7 @@ import org.hyperledger.besu.ethereum.core.MiningConfiguration; import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -57,10 +58,9 @@ default Stream
genesisAllocations(final GenesisConfig configFile) { default ProtocolSchedule getMergeProtocolSchedule() { return MergeProtocolSchedule.create( getPosGenesisConfig().getConfigOptions(), - false, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem(), EvmConfiguration.DEFAULT); diff --git a/consensus/qbft-core/src/integration-test/java/org/hyperledger/besu/consensus/qbft/core/support/TestContextBuilder.java b/consensus/qbft-core/src/integration-test/java/org/hyperledger/besu/consensus/qbft/core/support/TestContextBuilder.java index 10cf90c4e61..a08ba58ac53 100644 --- a/consensus/qbft-core/src/integration-test/java/org/hyperledger/besu/consensus/qbft/core/support/TestContextBuilder.java +++ b/consensus/qbft-core/src/integration-test/java/org/hyperledger/besu/consensus/qbft/core/support/TestContextBuilder.java @@ -123,6 +123,7 @@ import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; import org.hyperledger.besu.ethereum.trie.forest.ForestWorldStateArchive; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.cache.CodeCache; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -468,11 +469,11 @@ private static ControllerAndState createControllerAndFinalState( QbftProtocolScheduleBuilder.create( genesisConfigOptions, forksSchedule, + DataStorageConfiguration.DEFAULT_CONFIG, BFT_EXTRA_DATA_ENCODER, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleBuilder.java b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleBuilder.java index e3b6605c40b..fbf42b29922 100644 --- a/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleBuilder.java +++ b/consensus/qbft/src/main/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleBuilder.java @@ -29,6 +29,7 @@ import org.hyperledger.besu.ethereum.mainnet.BlockHeaderValidator; import org.hyperledger.besu.ethereum.mainnet.feemarket.BaseFeeMarket; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -45,12 +46,11 @@ public class QbftProtocolScheduleBuilder extends BaseBftProtocolScheduleBuilder * * @param config the config * @param qbftForksSchedule the qbft forks schedule - * @param isRevertReasonEnabled the is revert reason enabled + * @param dataStorageConfiguration the data storage configuration * @param bftExtraDataCodec the bft extra data codec * @param evmConfiguration the evm configuration * @param miningConfiguration The mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. * @param balConfiguration configuration related to block-level access lists * @param metricsSystem A metricSystem instance to be able to expose metrics in the underlying * calls @@ -59,66 +59,26 @@ public class QbftProtocolScheduleBuilder extends BaseBftProtocolScheduleBuilder public static BftProtocolSchedule create( final GenesisConfigOptions config, final ForksSchedule qbftForksSchedule, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BftExtraDataCodec bftExtraDataCodec, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return new QbftProtocolScheduleBuilder() .createProtocolSchedule( config, qbftForksSchedule, - isRevertReasonEnabled, + dataStorageConfiguration, bftExtraDataCodec, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } - /** - * Create protocol schedule. - * - * @param config the config - * @param qbftForksSchedule the qbft forks schedule - * @param bftExtraDataCodec the bft extra data codec - * @param evmConfiguration the evm configuration - * @param miningConfiguration The mining parameters - * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. - * @param balConfiguration configuration related to block-level access lists - * @param metricsSystem A metricSystem instance to be able to expose metrics in the underlying - * calls - * @return the protocol schedule - */ - public static BftProtocolSchedule create( - final GenesisConfigOptions config, - final ForksSchedule qbftForksSchedule, - final BftExtraDataCodec bftExtraDataCodec, - final EvmConfiguration evmConfiguration, - final MiningConfiguration miningConfiguration, - final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, - final BalConfiguration balConfiguration, - final MetricsSystem metricsSystem) { - return create( - config, - qbftForksSchedule, - false, - bftExtraDataCodec, - evmConfiguration, - miningConfiguration, - badBlockManager, - isParallelTxProcessingEnabled, - balConfiguration, - metricsSystem); - } - @Override protected BlockHeaderValidator.Builder createBlockHeaderRuleset( final BftConfigOptions config, final FeeMarket feeMarket) { diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleTest.java index e5d31312252..7df55813c51 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftProtocolScheduleTest.java @@ -40,6 +40,7 @@ import org.hyperledger.besu.ethereum.core.Util; import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.mainnet.HeaderValidationMode; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -134,12 +135,11 @@ private BftProtocolSchedule createProtocolSchedule( return QbftProtocolScheduleBuilder.create( genesisConfig, new ForksSchedule<>(forks), - false, + DataStorageConfiguration.DEFAULT_CONFIG, bftExtraDataCodec, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } diff --git a/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/BlockchainImporter.java b/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/BlockchainImporter.java index e178d2d20d5..8864dfd6392 100644 --- a/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/BlockchainImporter.java +++ b/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/BlockchainImporter.java @@ -26,6 +26,7 @@ import org.hyperledger.besu.ethereum.mainnet.ScheduleBasedBlockHeaderFunctions; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.cache.CodeCache; import org.hyperledger.besu.ethereum.util.RawBlockIterator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import java.net.URL; @@ -48,9 +49,9 @@ public BlockchainImporter(final URL blocksUrl, final String genesisJson) throws protocolSchedule = MainnetProtocolSchedule.fromConfig( GenesisConfig.fromConfig(genesisJson).getConfigOptions(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.newDefault(), new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); final BlockHeaderFunctions blockHeaderFunctions = diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceHostAllowlistTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceHostAllowlistTest.java index 6d64541b144..f4b5fc67582 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceHostAllowlistTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceHostAllowlistTest.java @@ -46,6 +46,7 @@ import org.hyperledger.besu.ethereum.permissioning.AccountLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.permissioning.NodeLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.nat.NatService; @@ -125,9 +126,9 @@ public void initServerAndClient() throws Exception { synchronizer, MainnetProtocolSchedule.fromConfig( new StubGenesisConfigOptions().constantinopleBlock(0).chainId(CHAIN_ID), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()), mock(ProtocolContext.class), diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceLoginTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceLoginTest.java index 81de3798145..46e696ce6c6 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceLoginTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceLoginTest.java @@ -51,6 +51,7 @@ import org.hyperledger.besu.ethereum.p2p.network.P2PNetwork; import org.hyperledger.besu.ethereum.p2p.rlpx.wire.Capability; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.nat.NatService; @@ -156,9 +157,9 @@ public static void initServerAndClient() throws Exception { synchronizer, MainnetProtocolSchedule.fromConfig( genesisConfigOptions, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()), mock(ProtocolContext.class), diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTestBase.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTestBase.java index 6b77976af35..1a745b2ff62 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTestBase.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTestBase.java @@ -45,6 +45,7 @@ import org.hyperledger.besu.ethereum.permissioning.AccountLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.permissioning.NodeLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; @@ -133,7 +134,7 @@ public static void initServerAndClient() throws Exception { EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, + DataStorageConfiguration.DEFAULT_CONFIG, BalConfiguration.DEFAULT, new NoOpMetricsSystem()), mock(ProtocolContext.class), diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsClientAuthTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsClientAuthTest.java index e0d04548e52..9cb1b37cef0 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsClientAuthTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsClientAuthTest.java @@ -53,6 +53,7 @@ import org.hyperledger.besu.ethereum.permissioning.AccountLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.permissioning.NodeLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.nat.NatService; @@ -141,9 +142,9 @@ public void initServer() throws Exception { synchronizer, MainnetProtocolSchedule.fromConfig( new StubGenesisConfigOptions().constantinopleBlock(0).chainId(CHAIN_ID), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()), mock(ProtocolContext.class), diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsMisconfigurationTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsMisconfigurationTest.java index e713b7e7173..30d7ac05af8 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsMisconfigurationTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsMisconfigurationTest.java @@ -52,6 +52,7 @@ import org.hyperledger.besu.ethereum.permissioning.AccountLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.permissioning.NodeLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.nat.NatService; @@ -125,9 +126,9 @@ public void beforeEach() { synchronizer, MainnetProtocolSchedule.fromConfig( new StubGenesisConfigOptions().constantinopleBlock(0).chainId(CHAIN_ID), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()), mock(ProtocolContext.class), diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsTest.java index 6bcea5274e3..44cf470cad8 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceTlsTest.java @@ -52,6 +52,7 @@ import org.hyperledger.besu.ethereum.permissioning.AccountLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.permissioning.NodeLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.nat.NatService; @@ -128,9 +129,9 @@ public void initServer() throws Exception { synchronizer, MainnetProtocolSchedule.fromConfig( new StubGenesisConfigOptions().constantinopleBlock(0).chainId(CHAIN_ID), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()), mock(ProtocolContext.class), diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java index c3d25b2f2f7..eb44450be7a 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/DebugTraceBlockTest.java @@ -43,6 +43,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; import org.hyperledger.besu.ethereum.mainnet.TransactionValidatorFactory; import org.hyperledger.besu.ethereum.mainnet.WithdrawalsProcessor; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.ObservableMetricsSystem; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -99,11 +100,10 @@ public void setUp() { genesisConfig.getConfigOptions(), Optional.of(BigInteger.valueOf(42)), protocolSpecAdapters, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .createProtocolSchedule()) diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSimulateV1TrielogTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSimulateV1TrielogTest.java index ddda0cc705e..84b7fb5461b 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSimulateV1TrielogTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/EthSimulateV1TrielogTest.java @@ -42,6 +42,7 @@ import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.BonsaiWorldStateProvider; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.cache.CodeCache; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import java.util.List; @@ -59,9 +60,9 @@ public class EthSimulateV1TrielogTest { protected final ProtocolSchedule protocolSchedule = MainnetProtocolSchedule.fromConfig( GenesisConfig.fromResource("/dev.json").getConfigOptions(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactoryTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactoryTest.java index 7ba9801e9a9..895d95a6c50 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactoryTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/JsonRpcMethodsFactoryTest.java @@ -47,6 +47,7 @@ import org.hyperledger.besu.ethereum.permissioning.AccountLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.permissioning.NodeLocalConfigPermissioningController; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.nat.NatService; @@ -101,11 +102,9 @@ public void setup() { pragueAllMilestonesZeroProtocolSchedule = MainnetProtocolSchedule.fromConfig( getPragueAllZeroMilestonesConfigOptions(), - Optional.empty(), - Optional.empty(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.newDefault(), new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/websocket/WebSocketServiceLoginTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/websocket/WebSocketServiceLoginTest.java index dd17945703a..9e86b3f9bc0 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/websocket/WebSocketServiceLoginTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/websocket/WebSocketServiceLoginTest.java @@ -59,6 +59,7 @@ import org.hyperledger.besu.ethereum.p2p.network.P2PNetwork; import org.hyperledger.besu.ethereum.p2p.rlpx.wire.Capability; import org.hyperledger.besu.ethereum.transaction.TransactionSimulator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.metrics.prometheus.MetricsConfiguration; import org.hyperledger.besu.nat.NatService; @@ -192,9 +193,9 @@ public void before() throws URISyntaxException { synchronizer, MainnetProtocolSchedule.fromConfig( genesisConfigOptions, + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()), mock(ProtocolContext.class), diff --git a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreatorTest.java b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreatorTest.java index 2bb39de434c..f3121b79f3e 100644 --- a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreatorTest.java +++ b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreatorTest.java @@ -86,6 +86,7 @@ import org.hyperledger.besu.ethereum.mainnet.systemcall.BlockProcessingContext; import org.hyperledger.besu.ethereum.transaction.TransactionInvalidReason; import org.hyperledger.besu.ethereum.util.TrustedSetupClassLoaderExtension; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.account.Account; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -424,11 +425,10 @@ private CreateOn createBlockCreator(final ProtocolSpecAdapters protocolSpecAdapt genesisConfig.getConfigOptions(), Optional.of(BigInteger.valueOf(42)), protocolSpecAdapters, - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, ImmutableBalConfiguration.builder().build(), new NoOpMetricsSystem()) .createProtocolSchedule()) diff --git a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockTransactionSelectorTest.java b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockTransactionSelectorTest.java index 3fb4dff71da..1101c85d05f 100644 --- a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockTransactionSelectorTest.java +++ b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockTransactionSelectorTest.java @@ -235,7 +235,6 @@ public void emptyPendingTransactionsResultsInEmptyVettingResult() { EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); final MainnetTransactionProcessor mainnetTransactionProcessor = diff --git a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LegacyFeeMarketBlockTransactionSelectorTest.java b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LegacyFeeMarketBlockTransactionSelectorTest.java index 5804de313e7..154da502f11 100644 --- a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LegacyFeeMarketBlockTransactionSelectorTest.java +++ b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LegacyFeeMarketBlockTransactionSelectorTest.java @@ -36,6 +36,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.testutil.TestClock; @@ -62,11 +63,10 @@ protected ProtocolSchedule createProtocolSchedule() { genesisConfig.getConfigOptions(), Optional.of(CHAIN_ID), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .createProtocolSchedule(); diff --git a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LondonFeeMarketBlockTransactionSelectorTest.java b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LondonFeeMarketBlockTransactionSelectorTest.java index 9e8c0402bee..bcfeaca3715 100644 --- a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LondonFeeMarketBlockTransactionSelectorTest.java +++ b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/LondonFeeMarketBlockTransactionSelectorTest.java @@ -45,6 +45,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; import org.hyperledger.besu.ethereum.mainnet.ValidationResult; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.plugin.data.TransactionSelectionResult; @@ -72,11 +73,10 @@ protected ProtocolSchedule createProtocolSchedule() { genesisConfig.getConfigOptions(), Optional.of(CHAIN_ID), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .createProtocolSchedule(); diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolScheduleModule.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolScheduleModule.java index 0b92a4cf5f6..368a324ec27 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolScheduleModule.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolScheduleModule.java @@ -22,6 +22,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -44,10 +45,9 @@ public ProtocolScheduleModule() {} * * @param config the genesis config options * @param protocolSpecAdapters the protocol spec adapters - * @param isRevertReasonEnabled whether revert reason is enabled + * @param dataStorageConfiguration the data storage configuration * @param evmConfiguration the EVM configuration * @param badBlockManager the bad block manager - * @param isParallelTxProcessingEnabled whether parallel tx processing is enabled * @param balConfiguration configuration for block-level access lists * @param metricsSystem the metrics system * @param miningConfiguration the mining parameters @@ -58,10 +58,9 @@ public ProtocolScheduleModule() {} public ProtocolScheduleBuilder provideProtocolScheduleBuilder( final GenesisConfigOptions config, final ProtocolSpecAdapters protocolSpecAdapters, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final EvmConfiguration evmConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem, final MiningConfiguration miningConfiguration) { @@ -71,11 +70,10 @@ public ProtocolScheduleBuilder provideProtocolScheduleBuilder( config, config.getChainId(), protocolSpecAdapters, - isRevertReasonEnabled, + dataStorageConfiguration, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolSpecModule.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolSpecModule.java index 0ec9c596eab..c217803994b 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolSpecModule.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/components/ProtocolSpecModule.java @@ -18,6 +18,7 @@ import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSpecs; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecBuilder; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -38,7 +39,7 @@ public ProtocolSpecModule() {} * * @param genesisConfigOptions the genesis config options * @param evmConfiguration the EVM configuration - * @param isParallelTxEnabled whether parallel tx processing is enabled + * @param dataStorageConfiguration the data storage configuration * @param metricsSystem the metrics system * @param balConfiguration configuration for block-level access lists * @return the protocol spec for the frontier network fork @@ -48,13 +49,13 @@ public ProtocolSpecModule() {} public ProtocolSpecBuilder frontierProtocolSpec( final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return MainnetProtocolSpecs.frontierDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedDifficultyProtocolSchedule.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedDifficultyProtocolSchedule.java index f68cb1b413d..fa8225c9285 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedDifficultyProtocolSchedule.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedDifficultyProtocolSchedule.java @@ -21,6 +21,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -34,11 +35,10 @@ public class FixedDifficultyProtocolSchedule { public static ProtocolSchedule create( final GenesisConfigOptions config, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return new ProtocolScheduleBuilder( @@ -48,11 +48,10 @@ public static ProtocolSchedule create( 0, builder -> builder.difficultyCalculator(FixedDifficultyCalculators.calculator(config))), - isRevertReasonEnabled, + dataStorageConfiguration, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem) .createProtocolSchedule(); @@ -63,16 +62,14 @@ public static ProtocolSchedule create( final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return create( config, - false, + DataStorageConfiguration.DEFAULT_CONFIG, evmConfiguration, miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSchedule.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSchedule.java index 7049a344f03..0062538bcf7 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSchedule.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSchedule.java @@ -19,6 +19,7 @@ import org.hyperledger.besu.ethereum.core.MiningConfiguration; import org.hyperledger.besu.ethereum.difficulty.fixed.FixedDifficultyCalculators; import org.hyperledger.besu.ethereum.difficulty.fixed.FixedDifficultyProtocolSchedule; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -36,32 +37,29 @@ public class MainnetProtocolSchedule { * * @param config {@link GenesisConfigOptions} containing the config options for the milestone * starting points - * @param isRevertReasonEnabled whether storing the revert reason is for failed transactions + * @param dataStorageConfiguration configuration for data storage * @param evmConfiguration how to configure the EVMs jumpdest cache * @param miningConfiguration the mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled * @param balConfiguration configuration related to block access lists * @param metricsSystem A metricSystem instance to expose metrics in the underlying calls * @return A configured mainnet protocol schedule */ public static ProtocolSchedule fromConfig( final GenesisConfigOptions config, - final Optional isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final Optional evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { if (FixedDifficultyCalculators.isFixedDifficultyInConfig(config)) { return FixedDifficultyProtocolSchedule.create( config, - isRevertReasonEnabled.orElse(false), + dataStorageConfiguration, evmConfiguration.orElse(EvmConfiguration.DEFAULT), miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } @@ -69,11 +67,10 @@ public static ProtocolSchedule fromConfig( config, Optional.of(DEFAULT_CHAIN_ID), ProtocolSpecAdapters.create(0, Function.identity()), - isRevertReasonEnabled.orElse(false), + dataStorageConfiguration, evmConfiguration.orElse(EvmConfiguration.DEFAULT), miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem) .createProtocolSchedule(); @@ -84,29 +81,28 @@ public static ProtocolSchedule fromConfig( * * @param config {@link GenesisConfigOptions} containing the config options for the milestone * starting points - * @param isRevertReasonEnabled whether storing the revert reason is for failed transactions + * @param dataStorageConfiguration configuration for data storage * @param evmConfiguration how to configure the EVMs jumpdest cache * @param miningConfiguration the mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. + * @param balConfiguration configuration related to block access lists + * @param metricsSystem A metricSystem instance to expose metrics in the underlying calls * @return A configured mainnet protocol schedule */ public static ProtocolSchedule fromConfig( final GenesisConfigOptions config, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return fromConfig( config, - Optional.of(isRevertReasonEnabled), + dataStorageConfiguration, Optional.of(evmConfiguration), miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } @@ -116,10 +112,12 @@ public static ProtocolSchedule fromConfig( * * @param config {@link GenesisConfigOptions} containing the config options for the milestone * starting points - * @param evmConfiguration size of + * @param dataStorageConfiguration configuration for data storage + * @param evmConfiguration how to configure the EVMs jumpdest cache * @param miningConfiguration the mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. + * @param balConfiguration configuration related to block access lists + * @param metricsSystem A metricSystem instance to expose metrics in the underlying calls * @return A configured mainnet protocol schedule */ public static ProtocolSchedule fromConfig( @@ -127,16 +125,15 @@ public static ProtocolSchedule fromConfig( final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return fromConfig( config, - Optional.empty(), + dataStorageConfiguration, Optional.of(evmConfiguration), miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } @@ -146,25 +143,26 @@ public static ProtocolSchedule fromConfig( * * @param config {@link GenesisConfigOptions} containing the config options for the milestone * starting points + * @param dataStorageConfiguration configuration for data storage * @param miningConfiguration the mining parameters * @param badBlockManager the cache to use to keep invalid blocks - * @param isParallelTxProcessingEnabled indicates whether parallel transaction is enabled. + * @param balConfiguration configuration related to block access lists + * @param metricsSystem A metricSystem instance to expose metrics in the underlying calls * @return A configured mainnet protocol schedule */ public static ProtocolSchedule fromConfig( final GenesisConfigOptions config, + final DataStorageConfiguration dataStorageConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return fromConfig( config, - Optional.empty(), + dataStorageConfiguration, Optional.empty(), miningConfiguration, badBlockManager, - isParallelTxProcessingEnabled, balConfiguration, metricsSystem); } diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java index e106f53d3f8..613f13a6628 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecFactory.java @@ -16,6 +16,7 @@ import org.hyperledger.besu.config.GenesisConfigOptions; import org.hyperledger.besu.ethereum.core.MiningConfiguration; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -25,29 +26,26 @@ public class MainnetProtocolSpecFactory { private final Optional chainId; - private final boolean isRevertReasonEnabled; private final GenesisConfigOptions genesisConfigOptions; private final EvmConfiguration evmConfiguration; private final MiningConfiguration miningConfiguration; - private final boolean isParallelTxProcessingEnabled; + private final DataStorageConfiguration dataStorageConfiguration; private final BalConfiguration balConfiguration; private final MetricsSystem metricsSystem; public MainnetProtocolSpecFactory( final Optional chainId, - final boolean isRevertReasonEnabled, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { this.chainId = chainId; - this.isRevertReasonEnabled = isRevertReasonEnabled; this.genesisConfigOptions = genesisConfigOptions; this.evmConfiguration = evmConfiguration; this.miningConfiguration = miningConfiguration; - this.isParallelTxProcessingEnabled = isParallelTxProcessingEnabled; + this.dataStorageConfiguration = dataStorageConfiguration; this.balConfiguration = balConfiguration; this.metricsSystem = metricsSystem; } @@ -56,7 +54,7 @@ public ProtocolSpecBuilder frontierDefinition() { return MainnetProtocolSpecs.frontierDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -65,7 +63,7 @@ public ProtocolSpecBuilder homesteadDefinition() { return MainnetProtocolSpecs.homesteadDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -74,7 +72,7 @@ public ProtocolSpecBuilder daoRecoveryInitDefinition() { return MainnetProtocolSpecs.daoRecoveryInitDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -83,7 +81,7 @@ public ProtocolSpecBuilder daoRecoveryTransitionDefinition() { return MainnetProtocolSpecs.daoRecoveryTransitionDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -92,7 +90,7 @@ public ProtocolSpecBuilder tangerineWhistleDefinition() { return MainnetProtocolSpecs.tangerineWhistleDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -102,7 +100,7 @@ public ProtocolSpecBuilder spuriousDragonDefinition() { chainId, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -110,10 +108,9 @@ public ProtocolSpecBuilder spuriousDragonDefinition() { public ProtocolSpecBuilder byzantiumDefinition() { return MainnetProtocolSpecs.byzantiumDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -121,10 +118,9 @@ public ProtocolSpecBuilder byzantiumDefinition() { public ProtocolSpecBuilder constantinopleDefinition() { return MainnetProtocolSpecs.constantinopleDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -132,10 +128,9 @@ public ProtocolSpecBuilder constantinopleDefinition() { public ProtocolSpecBuilder petersburgDefinition() { return MainnetProtocolSpecs.petersburgDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -143,10 +138,9 @@ public ProtocolSpecBuilder petersburgDefinition() { public ProtocolSpecBuilder istanbulDefinition() { return MainnetProtocolSpecs.istanbulDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -154,10 +148,9 @@ public ProtocolSpecBuilder istanbulDefinition() { public ProtocolSpecBuilder muirGlacierDefinition() { return MainnetProtocolSpecs.muirGlacierDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -165,10 +158,9 @@ public ProtocolSpecBuilder muirGlacierDefinition() { public ProtocolSpecBuilder berlinDefinition() { return MainnetProtocolSpecs.berlinDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -176,11 +168,10 @@ public ProtocolSpecBuilder berlinDefinition() { public ProtocolSpecBuilder londonDefinition() { return MainnetProtocolSpecs.londonDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -188,11 +179,10 @@ public ProtocolSpecBuilder londonDefinition() { public ProtocolSpecBuilder arrowGlacierDefinition() { return MainnetProtocolSpecs.arrowGlacierDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -200,11 +190,10 @@ public ProtocolSpecBuilder arrowGlacierDefinition() { public ProtocolSpecBuilder grayGlacierDefinition() { return MainnetProtocolSpecs.grayGlacierDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -212,11 +201,10 @@ public ProtocolSpecBuilder grayGlacierDefinition() { public ProtocolSpecBuilder parisDefinition() { return MainnetProtocolSpecs.parisDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -224,11 +212,10 @@ public ProtocolSpecBuilder parisDefinition() { public ProtocolSpecBuilder shanghaiDefinition() { return MainnetProtocolSpecs.shanghaiDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -236,11 +223,10 @@ public ProtocolSpecBuilder shanghaiDefinition() { public ProtocolSpecBuilder cancunDefinition() { return MainnetProtocolSpecs.cancunDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -248,11 +234,10 @@ public ProtocolSpecBuilder cancunDefinition() { public ProtocolSpecBuilder pragueDefinition() { return MainnetProtocolSpecs.pragueDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -260,11 +245,10 @@ public ProtocolSpecBuilder pragueDefinition() { public ProtocolSpecBuilder osakaDefinition() { return MainnetProtocolSpecs.osakaDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -272,11 +256,10 @@ public ProtocolSpecBuilder osakaDefinition() { public ProtocolSpecBuilder bpo1Definition() { return MainnetProtocolSpecs.bpo1Definition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -284,11 +267,10 @@ public ProtocolSpecBuilder bpo1Definition() { public ProtocolSpecBuilder bpo2Definition() { return MainnetProtocolSpecs.bpo2Definition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -296,11 +278,10 @@ public ProtocolSpecBuilder bpo2Definition() { public ProtocolSpecBuilder bpo3Definition() { return MainnetProtocolSpecs.bpo3Definition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -308,11 +289,10 @@ public ProtocolSpecBuilder bpo3Definition() { public ProtocolSpecBuilder bpo4Definition() { return MainnetProtocolSpecs.bpo4Definition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -320,11 +300,10 @@ public ProtocolSpecBuilder bpo4Definition() { public ProtocolSpecBuilder bpo5Definition() { return MainnetProtocolSpecs.bpo5Definition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -332,11 +311,10 @@ public ProtocolSpecBuilder bpo5Definition() { public ProtocolSpecBuilder amsterdamDefinition() { return MainnetProtocolSpecs.amsterdamDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -354,11 +332,10 @@ public ProtocolSpecBuilder amsterdamDefinition() { public ProtocolSpecBuilder futureEipsDefinition() { return MainnetProtocolSpecs.futureEipsDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } @@ -375,11 +352,10 @@ public ProtocolSpecBuilder futureEipsDefinition() { public ProtocolSpecBuilder experimentalEipsDefinition() { return MainnetProtocolSpecs.experimentalEipsDefinition( chainId, - isRevertReasonEnabled, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); } 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 8ab739a1077..2c77ab3cefc 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 @@ -80,6 +80,7 @@ import org.hyperledger.besu.ethereum.mainnet.staterootcommitter.StateRootCommitterFactoryBal; import org.hyperledger.besu.ethereum.mainnet.transactionpool.OsakaTransactionPoolPreProcessor; import org.hyperledger.besu.ethereum.processing.TransactionProcessingResult; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.MainnetEVMs; import org.hyperledger.besu.evm.account.MutableAccount; import org.hyperledger.besu.evm.contractvalidation.MaxCodeSizeRule; @@ -161,7 +162,7 @@ private MainnetProtocolSpecs() {} public static ProtocolSpecBuilder frontierDefinition( final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return new ProtocolSpecBuilder() @@ -208,7 +209,9 @@ public static ProtocolSpecBuilder frontierDefinition( .skipZeroBlockRewards(false) .balConfiguration(balConfiguration) .blockProcessorBuilder( - isParallelTxProcessingEnabled + dataStorageConfiguration + .getPathBasedExtraStorageConfiguration() + .getParallelTxProcessingEnabled() ? new MainnetParallelBlockProcessor.ParallelBlockProcessorBuilder(metricsSystem) : new MainnetBlockProcessor.MainnetBlockProcessorBuilder(metricsSystem)) .blockValidatorBuilder(MainnetBlockValidatorBuilder::frontier) @@ -252,13 +255,13 @@ public static PoWHasher powHasher(final PowAlgorithm powAlgorithm) { public static ProtocolSpecBuilder homesteadDefinition( final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return frontierDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .gasCalculator(HomesteadGasCalculator::new) @@ -278,13 +281,13 @@ public static ProtocolSpecBuilder homesteadDefinition( public static ProtocolSpecBuilder daoRecoveryInitDefinition( final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return homesteadDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .blockHeaderValidatorBuilder( @@ -299,7 +302,9 @@ public static ProtocolSpecBuilder daoRecoveryInitDefinition( protocolSchedule, balConfig) -> new DaoBlockProcessor( - isParallelTxProcessingEnabled + dataStorageConfiguration + .getPathBasedExtraStorageConfiguration() + .getParallelTxProcessingEnabled() ? new MainnetParallelBlockProcessor( transactionProcessor, transactionReceiptFactory, @@ -324,17 +329,19 @@ public static ProtocolSpecBuilder daoRecoveryInitDefinition( public static ProtocolSpecBuilder daoRecoveryTransitionDefinition( final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return daoRecoveryInitDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .blockProcessorBuilder( - isParallelTxProcessingEnabled + dataStorageConfiguration + .getPathBasedExtraStorageConfiguration() + .getParallelTxProcessingEnabled() ? new MainnetParallelBlockProcessor.ParallelBlockProcessorBuilder(metricsSystem) : new MainnetBlockProcessor.MainnetBlockProcessorBuilder(metricsSystem)) .hardforkId(DAO_RECOVERY_TRANSITION); @@ -343,13 +350,13 @@ public static ProtocolSpecBuilder daoRecoveryTransitionDefinition( public static ProtocolSpecBuilder tangerineWhistleDefinition( final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return homesteadDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .gasCalculator(TangerineWhistleGasCalculator::new) @@ -360,13 +367,13 @@ public static ProtocolSpecBuilder spuriousDragonDefinition( final Optional chainId, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return tangerineWhistleDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .isReplayProtectionSupported(true) @@ -412,42 +419,41 @@ public static ProtocolSpecBuilder spuriousDragonDefinition( public static ProtocolSpecBuilder byzantiumDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return spuriousDragonDefinition( chainId, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .gasCalculator(ByzantiumGasCalculator::new) .evmBuilder(MainnetEVMs::byzantium) .precompileContractRegistryBuilder(MainnetPrecompiledContractRegistries::byzantium) .difficultyCalculator(MainnetDifficultyCalculators.BYZANTIUM) - .transactionReceiptFactory(new ByzantiumTransactionReceiptFactory(enableRevertReason)) + .transactionReceiptFactory( + new ByzantiumTransactionReceiptFactory( + dataStorageConfiguration.getRevertReasonEnabled())) .blockReward(BYZANTIUM_BLOCK_REWARD) .hardforkId(BYZANTIUM); } public static ProtocolSpecBuilder constantinopleDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return byzantiumDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .difficultyCalculator(MainnetDifficultyCalculators.CONSTANTINOPLE) @@ -459,18 +465,16 @@ public static ProtocolSpecBuilder constantinopleDefinition( public static ProtocolSpecBuilder petersburgDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return constantinopleDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .gasCalculator(PetersburgGasCalculator::new) @@ -479,18 +483,16 @@ public static ProtocolSpecBuilder petersburgDefinition( public static ProtocolSpecBuilder istanbulDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return petersburgDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .gasCalculator(IstanbulGasCalculator::new) @@ -512,18 +514,16 @@ public static ProtocolSpecBuilder istanbulDefinition( static ProtocolSpecBuilder muirGlacierDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return istanbulDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .difficultyCalculator(MainnetDifficultyCalculators.MUIR_GLACIER) @@ -532,18 +532,16 @@ static ProtocolSpecBuilder muirGlacierDefinition( static ProtocolSpecBuilder berlinDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return muirGlacierDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .gasCalculator(BerlinGasCalculator::new) @@ -555,27 +553,26 @@ static ProtocolSpecBuilder berlinDefinition( true, chainId, Set.of(TransactionType.FRONTIER, TransactionType.ACCESS_LIST))) - .transactionReceiptFactory(new BerlinTransactionReceiptFactory(enableRevertReason)) + .transactionReceiptFactory( + new BerlinTransactionReceiptFactory(dataStorageConfiguration.getRevertReasonEnabled())) .hardforkId(BERLIN); } static ProtocolSpecBuilder londonDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { final long londonForkBlockNumber = genesisConfigOptions.getLondonBlockNumber().orElse(Long.MAX_VALUE); return berlinDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .feeMarketBuilder( @@ -649,20 +646,18 @@ static ProtocolSpecBuilder londonDefinition( static ProtocolSpecBuilder arrowGlacierDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return londonDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .difficultyCalculator(MainnetDifficultyCalculators.ARROW_GLACIER) @@ -671,20 +666,18 @@ static ProtocolSpecBuilder arrowGlacierDefinition( static ProtocolSpecBuilder grayGlacierDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return arrowGlacierDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .difficultyCalculator(MainnetDifficultyCalculators.GRAY_GLACIER) @@ -693,21 +686,19 @@ static ProtocolSpecBuilder grayGlacierDefinition( static ProtocolSpecBuilder parisDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return grayGlacierDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .evmBuilder( @@ -724,20 +715,18 @@ static ProtocolSpecBuilder parisDefinition( static ProtocolSpecBuilder shanghaiDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return parisDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) // gas calculator has new code to support EIP-3860 limit and meter initcode @@ -787,22 +776,20 @@ static ProtocolSpecBuilder shanghaiDefinition( static ProtocolSpecBuilder cancunDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { final long londonForkBlockNumber = genesisConfigOptions.getLondonBlockNumber().orElse(0L); return shanghaiDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .feeMarketBuilder( @@ -883,21 +870,19 @@ static ProtocolSpecBuilder cancunDefinition( static ProtocolSpecBuilder pragueDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { ProtocolSpecBuilder pragueSpecBuilder = cancunDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .blobSchedule( @@ -991,22 +976,20 @@ private static boolean isPoAConsensus(final GenesisConfigOptions genesisConfigOp static ProtocolSpecBuilder osakaDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { final long londonForkBlockNumber = genesisConfigOptions.getLondonBlockNumber().orElse(0L); return pragueDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .gasCalculator(OsakaGasCalculator::new) @@ -1046,21 +1029,19 @@ static ProtocolSpecBuilder osakaDefinition( static ProtocolSpecBuilder bpo1Definition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { ProtocolSpecBuilder builder = osakaDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); return applyBlobSchedule(builder, genesisConfigOptions, BlobScheduleOptions::getBpo1, BPO1); @@ -1068,21 +1049,19 @@ static ProtocolSpecBuilder bpo1Definition( static ProtocolSpecBuilder bpo2Definition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { ProtocolSpecBuilder builder = bpo1Definition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); return applyBlobSchedule(builder, genesisConfigOptions, BlobScheduleOptions::getBpo2, BPO2); @@ -1090,21 +1069,19 @@ static ProtocolSpecBuilder bpo2Definition( static ProtocolSpecBuilder bpo3Definition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { ProtocolSpecBuilder builder = bpo2Definition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); return applyBlobSchedule(builder, genesisConfigOptions, BlobScheduleOptions::getBpo3, BPO3); @@ -1112,21 +1089,19 @@ static ProtocolSpecBuilder bpo3Definition( static ProtocolSpecBuilder bpo4Definition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { ProtocolSpecBuilder builder = bpo3Definition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); return applyBlobSchedule(builder, genesisConfigOptions, BlobScheduleOptions::getBpo4, BPO4); @@ -1134,21 +1109,19 @@ static ProtocolSpecBuilder bpo4Definition( static ProtocolSpecBuilder bpo5Definition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { ProtocolSpecBuilder builder = bpo4Definition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); return applyBlobSchedule(builder, genesisConfigOptions, BlobScheduleOptions::getBpo5, BPO5); @@ -1156,20 +1129,18 @@ static ProtocolSpecBuilder bpo5Definition( static ProtocolSpecBuilder amsterdamDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return bpo5Definition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) // EIP-7708: Override evmBuilder to use Amsterdam EVM with transfer logging @@ -1241,20 +1212,18 @@ private static ProtocolSpecBuilder applyBlobSchedule( static ProtocolSpecBuilder futureEipsDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return amsterdamDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .precompileContractRegistryBuilder(MainnetPrecompiledContractRegistries::futureEips) @@ -1263,21 +1232,19 @@ static ProtocolSpecBuilder futureEipsDefinition( static ProtocolSpecBuilder experimentalEipsDefinition( final Optional chainId, - final boolean enableRevertReason, final GenesisConfigOptions genesisConfigOptions, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, - final boolean isParallelTxProcessingEnabled, + final DataStorageConfiguration dataStorageConfiguration, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { return futureEipsDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem) .evmBuilder( diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java index 141cd14fea8..0684642b078 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilder.java @@ -21,6 +21,7 @@ import org.hyperledger.besu.ethereum.mainnet.milestones.MilestoneDefinition; import org.hyperledger.besu.ethereum.mainnet.milestones.MilestoneDefinitions; import org.hyperledger.besu.ethereum.mainnet.milestones.MilestoneType; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.plugin.services.MetricsSystem; @@ -45,10 +46,9 @@ public class ProtocolScheduleBuilder { private final GenesisConfigOptions config; private final Optional defaultChainId; private final ProtocolSpecAdapters protocolSpecAdapters; - private final boolean isRevertReasonEnabled; + private final DataStorageConfiguration dataStorageConfiguration; private final EvmConfiguration evmConfiguration; private final BadBlockManager badBlockManager; - private final boolean isParallelTxProcessingEnabled; private final BalConfiguration balConfiguration; private final MetricsSystem metricsSystem; private final MiningConfiguration miningConfiguration; @@ -57,20 +57,18 @@ public ProtocolScheduleBuilder( final GenesisConfigOptions config, final Optional defaultChainId, final ProtocolSpecAdapters protocolSpecAdapters, - final boolean isRevertReasonEnabled, + final DataStorageConfiguration dataStorageConfiguration, final EvmConfiguration evmConfiguration, final MiningConfiguration miningConfiguration, final BadBlockManager badBlockManager, - final boolean isParallelTxProcessingEnabled, final BalConfiguration balConfiguration, final MetricsSystem metricsSystem) { this.config = config; this.protocolSpecAdapters = protocolSpecAdapters; - this.isRevertReasonEnabled = isRevertReasonEnabled; + this.dataStorageConfiguration = dataStorageConfiguration; this.evmConfiguration = evmConfiguration; this.defaultChainId = defaultChainId; this.badBlockManager = badBlockManager; - this.isParallelTxProcessingEnabled = isParallelTxProcessingEnabled; this.balConfiguration = balConfiguration; this.metricsSystem = metricsSystem; this.miningConfiguration = miningConfiguration; @@ -88,12 +86,11 @@ public void initSchedule(final ProtocolSchedule protocolSchedule) { final MainnetProtocolSpecFactory specFactory = new MainnetProtocolSpecFactory( protocolSchedule.getChainId(), - isRevertReasonEnabled, config, evmConfiguration.overrides( config.getContractSizeLimit(), OptionalInt.empty(), config.getEvmStackSize()), miningConfiguration, - isParallelTxProcessingEnabled, + dataStorageConfiguration, balConfiguration, metricsSystem); diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/worldstate/DataStorageConfiguration.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/worldstate/DataStorageConfiguration.java index 159ecc6fffb..83f6d79d94b 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/worldstate/DataStorageConfiguration.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/worldstate/DataStorageConfiguration.java @@ -25,6 +25,7 @@ public interface DataStorageConfiguration { boolean DEFAULT_RECEIPT_COMPACTION_ENABLED = true; boolean DEFAULT_HISTORY_EXPIRY_PRUNE_ENABLED = false; + boolean DEFAULT_REVERT_REASON_ENABLED = false; DataStorageConfiguration DEFAULT_CONFIG = ImmutableDataStorageConfiguration.builder() @@ -70,4 +71,9 @@ default boolean getReceiptCompactionEnabled() { default boolean getHistoryExpiryPruneEnabled() { return DEFAULT_HISTORY_EXPIRY_PRUNE_ENABLED; } + + @Value.Default + default boolean getRevertReasonEnabled() { + return DEFAULT_REVERT_REASON_ENABLED; + } } diff --git a/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/BlockchainSetupUtil.java b/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/BlockchainSetupUtil.java index 55ef2fd23ad..3ed71c06740 100644 --- a/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/BlockchainSetupUtil.java +++ b/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/BlockchainSetupUtil.java @@ -37,6 +37,7 @@ import org.hyperledger.besu.ethereum.mainnet.ScheduleBasedBlockHeaderFunctions; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.cache.CodeCache; import org.hyperledger.besu.ethereum.util.RawBlockIterator; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -170,7 +171,7 @@ private static ProtocolSchedule mainnetProtocolScheduleProvider( EvmConfiguration.DEFAULT, MiningConfiguration.newDefault(), new BadBlockManager(), - false, + DataStorageConfiguration.DEFAULT_CONFIG, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } diff --git a/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ExecutionContextTestFixture.java b/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ExecutionContextTestFixture.java index a0990d02e7d..b0757d8ef41 100644 --- a/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ExecutionContextTestFixture.java +++ b/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ExecutionContextTestFixture.java @@ -31,6 +31,7 @@ import org.hyperledger.besu.ethereum.storage.keyvalue.KeyValueStoragePrefixedKeyBlockchainStorage; import org.hyperledger.besu.ethereum.storage.keyvalue.VariablesKeyValueStorage; import org.hyperledger.besu.ethereum.trie.pathbased.bonsai.cache.CodeCache; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -161,11 +162,10 @@ public ExecutionContextTestFixture build() { genesisConfig.getConfigOptions(), Optional.of(BigInteger.valueOf(42)), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, ImmutableBalConfiguration.builder().build(), new NoOpMetricsSystem()) .createProtocolSchedule(); diff --git a/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ProtocolScheduleFixture.java b/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ProtocolScheduleFixture.java index 6828f3ceb74..a9dd46266e2 100644 --- a/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ProtocolScheduleFixture.java +++ b/ethereum/core/src/test-support/java/org/hyperledger/besu/ethereum/core/ProtocolScheduleFixture.java @@ -23,10 +23,10 @@ import org.hyperledger.besu.ethereum.mainnet.BalConfiguration; import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import java.io.IOException; -import java.util.Optional; import com.fasterxml.jackson.core.JsonFactory; import com.fasterxml.jackson.core.JsonParser; @@ -38,11 +38,9 @@ public class ProtocolScheduleFixture { public static final ProtocolSchedule MAINNET = MainnetProtocolSchedule.fromConfig( getMainnetConfigOptions(), - Optional.empty(), - Optional.empty(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.newDefault(), new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedProtocolScheduleTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedProtocolScheduleTest.java index 67316e41099..f180877089a 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedProtocolScheduleTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/difficulty/fixed/FixedProtocolScheduleTest.java @@ -39,7 +39,6 @@ public void reportedDifficultyForAllBlocksIsAFixedValue() { EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/DefaultProtocolScheduleTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/DefaultProtocolScheduleTest.java index 41f55ed3d7e..2fbc001b6d7 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/DefaultProtocolScheduleTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/DefaultProtocolScheduleTest.java @@ -31,6 +31,7 @@ import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.core.BlockHeaderTestFixture; import org.hyperledger.besu.ethereum.core.MiningConfiguration; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -58,17 +59,15 @@ public class DefaultProtocolScheduleTest { public void setup() { config = new StubGenesisConfigOptions(); config.chainId(DEFAULT_CHAIN_ID); - boolean isRevertReasonEnabled = false; builder = new ProtocolScheduleBuilder( config, Optional.of(DEFAULT_CHAIN_ID), ProtocolSpecAdapters.create(FIRST_TIMESTAMP_FORK, modifier), - isRevertReasonEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, evmConfiguration, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolScheduleTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolScheduleTest.java index fd47df78121..c17c1c86b63 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolScheduleTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolScheduleTest.java @@ -36,6 +36,7 @@ import org.hyperledger.besu.ethereum.core.BlockHeaderTestFixture; import org.hyperledger.besu.ethereum.core.MiningConfiguration; import org.hyperledger.besu.ethereum.core.ProtocolScheduleFixture; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -92,7 +93,7 @@ public void shouldOnlyUseFrontierWhenEmptyJsonConfigIsUsed() { EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, + DataStorageConfiguration.DEFAULT_CONFIG, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); Assertions.assertThat(sched.getByBlockHeader(blockHeader(1L)).getHardforkId()) @@ -111,7 +112,7 @@ public void createFromConfigWithSettings() { EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, + DataStorageConfiguration.DEFAULT_CONFIG, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); Assertions.assertThat(sched.getByBlockHeader(blockHeader(1)).getHardforkId()) @@ -150,7 +151,7 @@ public void outOfOrderConstantinoplesFail() { EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, + DataStorageConfiguration.DEFAULT_CONFIG, BalConfiguration.DEFAULT, new NoOpMetricsSystem())); } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecsTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecsTest.java index e3892488233..e36286db67c 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecsTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/MainnetProtocolSpecsTest.java @@ -28,6 +28,7 @@ import org.hyperledger.besu.ethereum.chain.BadBlockManager; import org.hyperledger.besu.ethereum.core.ImmutableMiningConfiguration; import org.hyperledger.besu.ethereum.core.MiningConfiguration; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -62,8 +63,6 @@ public class MainnetProtocolSpecsTest { private final EvmConfiguration evmConfiguration = EvmConfiguration.DEFAULT; private final NoOpMetricsSystem metricsSystem = new NoOpMetricsSystem(); private final Optional chainId = Optional.of(BigInteger.ONE); - private final boolean enableRevertReason = false; - private final boolean isParallelTxProcessingEnabled = false; private final BalConfiguration balConfiguration = BalConfiguration.DEFAULT; private final long londonForkBlockNumber = 0L; @@ -93,11 +92,10 @@ public void pragueDefinitionShouldThrowExceptionWhenAllContractAddressesAreMissi () -> MainnetProtocolSpecs.pragueDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, MiningConfiguration.newDefault(), - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem)) .withMessageContaining("Withdrawal Request Contract Address not found"); @@ -117,11 +115,10 @@ public void pragueDefinitionShouldThrowExceptionWhenWithdrawalRequestContractAdd () -> MainnetProtocolSpecs.pragueDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, MiningConfiguration.newDefault(), - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem)) .withMessageContaining("Withdrawal Request Contract Address not found"); @@ -142,11 +139,10 @@ public void pragueDefinitionShouldThrowExceptionWhenDepositContractAddressIsMiss () -> MainnetProtocolSpecs.pragueDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, MiningConfiguration.newDefault(), - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem)) .withMessageContaining("Deposit Contract Address not found"); @@ -168,11 +164,10 @@ public void pragueDefinitionShouldThrowExceptionWhenDepositContractAddressIsMiss () -> MainnetProtocolSpecs.pragueDefinition( chainId, - enableRevertReason, genesisConfigOptions, evmConfiguration, MiningConfiguration.newDefault(), - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem)) .withMessageContaining("Consolidation Request Contract Address not found"); @@ -193,7 +188,7 @@ public void genesisCliqueBlockPeriodIsReturnedAsSlotTime() { MainnetProtocolSpecs.frontierDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem) .badBlocksManager(badBlockManager) @@ -214,7 +209,7 @@ public void genesisQbftBlockPeriodIsReturnedAsSlotTime() { MainnetProtocolSpecs.frontierDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem) .badBlocksManager(badBlockManager) @@ -235,7 +230,7 @@ public void genesisIbft2BlockPeriodIsReturnedAsSlotTime() { MainnetProtocolSpecs.frontierDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem) .badBlocksManager(badBlockManager) @@ -250,7 +245,7 @@ public void defaultToPowEstimatedSlotTimePrePos() { MainnetProtocolSpecs.frontierDefinition( genesisConfigOptions, evmConfiguration, - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem) .badBlocksManager(badBlockManager) @@ -265,11 +260,10 @@ public void posSlotTimeIsReturnedFromParisOnward() { final var protocolSpec = MainnetProtocolSpecs.parisDefinition( Optional.of(BigInteger.ONE), - true, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem) .badBlocksManager(badBlockManager) @@ -288,11 +282,10 @@ public void changeDefaultPosSlotTimeByConfiguration() { final var protocolSpec = MainnetProtocolSpecs.cancunDefinition( Optional.of(BigInteger.ONE), - true, genesisConfigOptions, evmConfiguration, miningConfiguration, - isParallelTxProcessingEnabled, + DataStorageConfiguration.DEFAULT_CONFIG, balConfiguration, metricsSystem) .badBlocksManager(badBlockManager) diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilderTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilderTest.java index b270cdb970c..3a625e6fd17 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilderTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/ProtocolScheduleBuilderTest.java @@ -46,6 +46,7 @@ import org.hyperledger.besu.ethereum.core.BlockHeaderTestFixture; import org.hyperledger.besu.ethereum.core.MilestoneStreamingProtocolSchedule; import org.hyperledger.besu.ethereum.core.MiningConfiguration; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -77,11 +78,10 @@ public void setup() { configOptions, Optional.of(CHAIN_ID), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } @@ -357,11 +357,10 @@ private MilestoneStreamingProtocolSchedule createScheduleModifiedAt(final int bl configOptions, Optional.of(CHAIN_ID), ProtocolSpecAdapters.create(blockNumber, modifier), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/trie/pathbased/bonsai/AbstractIsolationTests.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/trie/pathbased/bonsai/AbstractIsolationTests.java index 755fdf989fa..2f60c7de439 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/trie/pathbased/bonsai/AbstractIsolationTests.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/trie/pathbased/bonsai/AbstractIsolationTests.java @@ -109,9 +109,9 @@ public abstract class AbstractIsolationTests { protected final ProtocolSchedule protocolSchedule = MainnetProtocolSchedule.fromConfig( GenesisConfig.fromResource("/dev.json").getConfigOptions(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); protected final GenesisState genesisState = diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockBodiesMessageTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockBodiesMessageTest.java index 82f0d669f05..f6f70db1440 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockBodiesMessageTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockBodiesMessageTest.java @@ -67,11 +67,9 @@ public void setup() { protocolSchedule = FixedDifficultyProtocolSchedule.create( GenesisConfig.fromResource("/dev.json").getConfigOptions(), - false, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockHeadersMessageTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockHeadersMessageTest.java index 35544992c19..bf493be04c8 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockHeadersMessageTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/messages/BlockHeadersMessageTest.java @@ -67,11 +67,9 @@ public void blockHeadersRoundTrip() throws IOException { message.getHeaders( FixedDifficultyProtocolSchedule.create( GenesisConfig.fromResource("/dev.json").getConfigOptions(), - false, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem())); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java index e9730197ac7..752fb57f5b4 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java @@ -63,11 +63,9 @@ public class ChainHeadTrackerTest { private final ProtocolSchedule protocolSchedule = FixedDifficultyProtocolSchedule.create( GenesisConfig.fromResource("/dev.json").getConfigOptions(), - false, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncContextTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncContextTest.java index f2ede6e0054..b9c1cca3974 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncContextTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncContextTest.java @@ -58,6 +58,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.referencetests.ForestReferenceTestWorldState; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.plugin.services.MetricsSystem; import org.hyperledger.besu.services.kvstore.InMemoryKeyValueStorage; @@ -106,9 +107,9 @@ public class BackwardSyncContextTest { private ProtocolSchedule protocolSchedule = MainnetProtocolSchedule.fromConfig( new StubGenesisConfigOptions(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStepTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStepTest.java index 40341b833bc..812d2031d88 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStepTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/BackwardSyncStepTest.java @@ -47,6 +47,7 @@ import org.hyperledger.besu.ethereum.mainnet.MainnetBlockHeaderFunctions; import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.services.kvstore.InMemoryKeyValueStorage; import org.hyperledger.besu.testutil.DeterministicEthScheduler; @@ -83,9 +84,9 @@ public class BackwardSyncStepTest { private final ProtocolSchedule protocolSchedule = MainnetProtocolSchedule.fromConfig( new StubGenesisConfigOptions(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/ForwardSyncStepTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/ForwardSyncStepTest.java index 43f446e9a06..4e8fddf351b 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/ForwardSyncStepTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/backwardsync/ForwardSyncStepTest.java @@ -46,6 +46,7 @@ import org.hyperledger.besu.ethereum.mainnet.MainnetProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.referencetests.ForestReferenceTestWorldState; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; import org.hyperledger.besu.services.kvstore.InMemoryKeyValueStorage; @@ -87,9 +88,9 @@ public class ForwardSyncStepTest { private final ProtocolSchedule protocolSchedule = MainnetProtocolSchedule.fromConfig( new StubGenesisConfigOptions(), + DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); private MutableBlockchain localBlockchain; diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/AbstractTransactionPoolTestBase.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/AbstractTransactionPoolTestBase.java index 2551035be52..ea04a547245 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/AbstractTransactionPoolTestBase.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/AbstractTransactionPoolTestBase.java @@ -72,6 +72,7 @@ import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; import org.hyperledger.besu.ethereum.transaction.TransactionInvalidReason; import org.hyperledger.besu.ethereum.util.TrustedSetupClassLoaderExtension; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.account.Account; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -182,11 +183,10 @@ protected static ExecutionContextTestFixture createExecutionContextTestFixtureBa genesisConfigFile.getConfigOptions(), Optional.of(BigInteger.valueOf(1)), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .createProtocolSchedule(); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java index ebbe00492db..3904a01ca05 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TestNode.java @@ -133,11 +133,9 @@ public TestNode( final ProtocolSchedule protocolSchedule = FixedDifficultyProtocolSchedule.create( GenesisConfig.fromResource("/dev.json").getConfigOptions(), - false, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java index 9bcd06f4fef..122133b14d6 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolFactoryTest.java @@ -56,6 +56,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -375,11 +376,10 @@ private void setupScheduleWith(final StubGenesisConfigOptions config) { config, Optional.of(DEFAULT_CHAIN_ID), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .createProtocolSchedule(); diff --git a/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/MainnetGenesisFileModule.java b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/MainnetGenesisFileModule.java index 66f5d3a4f5f..efdaad10f24 100644 --- a/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/MainnetGenesisFileModule.java +++ b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/MainnetGenesisFileModule.java @@ -27,6 +27,8 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; +import org.hyperledger.besu.ethereum.worldstate.ImmutableDataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -78,12 +80,16 @@ ProtocolSchedule provideProtocolSchedule( } } + DataStorageConfiguration dataStorageConfiguration = + ImmutableDataStorageConfiguration.builder() + .revertReasonEnabled(revertReasonEnabled) + .build(); return MainnetProtocolSchedule.fromConfig( configOptions, evmConfiguration, MiningConfiguration.newDefault(), new BadBlockManager(), - false, + dataStorageConfiguration, BalConfiguration.DEFAULT, new NoOpMetricsSystem()); } @@ -206,11 +212,10 @@ private static Supplier createSchedule(final GenesisConfigOpti options, options.getChainId(), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .createProtocolSchedule(); diff --git a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java index 652bdd45f07..1125240d34e 100644 --- a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java +++ b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java @@ -26,6 +26,7 @@ import org.hyperledger.besu.ethereum.mainnet.ProtocolScheduleBuilder; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; import org.hyperledger.besu.ethereum.mainnet.ProtocolSpecAdapters; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.evm.precompile.KZGPointEvalPrecompiledContract; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; @@ -209,11 +210,10 @@ private static ProtocolSchedule createSchedule( options, Optional.of(CHAIN_ID), ProtocolSpecAdapters.create(0, Function.identity()), - false, + DataStorageConfiguration.DEFAULT_CONFIG, evmConfiguration, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), - false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) .createProtocolSchedule(); From 8794453d9f718d636df306396405e20482e8a22f Mon Sep 17 00:00:00 2001 From: kkaur01 Date: Sat, 21 Feb 2026 12:43:22 +1000 Subject: [PATCH 2/2] refactor: update DifficultyCalculatorTests to use DataStorageConfiguration Replace old boolean isRevertReasonEnabled param with DataStorageConfiguration in all MainnetProtocolSchedule.fromConfig() calls. Co-Authored-By: Claude Sonnet 4.6 Signed-off-by: kkaur01 --- .../mainnet/DifficultyCalculatorTests.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/mainnet/DifficultyCalculatorTests.java b/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/mainnet/DifficultyCalculatorTests.java index 51860a2ab1e..fc1a48a07a2 100644 --- a/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/mainnet/DifficultyCalculatorTests.java +++ b/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/mainnet/DifficultyCalculatorTests.java @@ -28,6 +28,7 @@ import org.hyperledger.besu.ethereum.core.BlockHeaderBuilder; import org.hyperledger.besu.ethereum.core.Difficulty; import org.hyperledger.besu.ethereum.core.MiningConfiguration; +import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration; import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.datatypes.LogsBloomFilter; @@ -63,64 +64,65 @@ public static Stream getTestParametersForConfig() throws IOException MainnetProtocolSchedule.fromConfig( GenesisConfig.mainnet() .withOverrides(postMergeOverrides).getConfigOptions(), - EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem())), + DataStorageConfiguration.DEFAULT_CONFIG, + EvmConfiguration.DEFAULT, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem())), Arguments.of( "/DifficultyTests/dfGrayGlacier/difficultyGrayGlacierForkBlock.json", MainnetProtocolSchedule.fromConfig( - new StubGenesisConfigOptions().grayGlacierBlock(15050000), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + new StubGenesisConfigOptions().grayGlacierBlock(15050000), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfGrayGlacier/difficultyGrayGlacierTimeDiff1.json", MainnetProtocolSchedule.fromConfig( - new StubGenesisConfigOptions().grayGlacierBlock(15050000), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + new StubGenesisConfigOptions().grayGlacierBlock(15050000), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfGrayGlacier/difficultyGrayGlacierTimeDiff2.json", MainnetProtocolSchedule.fromConfig( - new StubGenesisConfigOptions().grayGlacierBlock(15050000), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + new StubGenesisConfigOptions().grayGlacierBlock(15050000), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfArrowGlacier/difficultyArrowGlacierForkBlock.json", MainnetProtocolSchedule.fromConfig( - new StubGenesisConfigOptions().arrowGlacierBlock(13773000), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + new StubGenesisConfigOptions().arrowGlacierBlock(13773000), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfArrowGlacier/difficultyArrowGlacierTimeDiff1.json", MainnetProtocolSchedule.fromConfig( - new StubGenesisConfigOptions().arrowGlacierBlock(13773000), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + new StubGenesisConfigOptions().arrowGlacierBlock(13773000), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfArrowGlacier/difficultyArrowGlacierTimeDiff2.json", MainnetProtocolSchedule.fromConfig( - new StubGenesisConfigOptions().arrowGlacierBlock(13773000), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + new StubGenesisConfigOptions().arrowGlacierBlock(13773000), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfByzantium/difficultyByzantium.json", - MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().byzantiumBlock(0), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().byzantiumBlock(0), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfConstantinople/difficultyConstantinople.json", - MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().constantinopleBlock(0), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().constantinopleBlock(0), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfEIP2384/difficultyEIP2384.json", - MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().muirGlacierBlock(0), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().muirGlacierBlock(0), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfEIP2384/difficultyEIP2384_random.json", - MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().muirGlacierBlock(0), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().muirGlacierBlock(0), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfEIP2384/difficultyEIP2384_random_to20M.json", - MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().muirGlacierBlock(0), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().muirGlacierBlock(0), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfFrontier/difficultyFrontier.json", - MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions(), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions(), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) ), Arguments.of( "/DifficultyTests/dfHomestead/difficultyHomestead.json", - MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().homesteadBlock(0), MiningConfiguration.MINING_DISABLED, new BadBlockManager(), false, BalConfiguration.DEFAULT, new NoOpMetricsSystem()) + MainnetProtocolSchedule.fromConfig(new StubGenesisConfigOptions().homesteadBlock(0), DataStorageConfiguration.DEFAULT_CONFIG, MiningConfiguration.MINING_DISABLED, new BadBlockManager(), BalConfiguration.DEFAULT, new NoOpMetricsSystem()) )); }