From a0c605277841984d8d18a7a826ad97a70d734f2c Mon Sep 17 00:00:00 2001 From: Simon Dudley Date: Fri, 26 May 2023 10:21:44 +1000 Subject: [PATCH] Revert "Add plugin API to select Transactions (#5396)" (#5499) * Revert "Add plugin API to select Transactions (#5396)" This reverts commit 65bcc557e41cca2568588a21441aa5d8658a5e79. Signed-off-by: Simon Dudley --- .../tests/acceptance/dsl/node/BesuNode.java | 2 +- .../dsl/node/ThreadBesuNodeRunner.java | 39 ++------- .../node/configuration/BesuNodeFactory.java | 23 ----- .../org/hyperledger/besu/cli/BesuCommand.java | 29 +------ .../controller/BesuControllerBuilder.java | 30 +------ ...onsensusScheduleBesuControllerBuilder.java | 10 +-- .../TransitionBesuControllerBuilder.java | 10 +-- .../TransactionSelectionServiceImpl.java | 37 -------- .../besu/cli/CommandTestAbstract.java | 5 +- .../CliqueDifficultyCalculatorTest.java | 3 +- .../clique/NodeCanProduceNextBlockTest.java | 15 ++-- .../blockcreation/CliqueBlockCreatorTest.java | 3 +- .../CliqueMinerExecutorTest.java | 2 +- .../CliqueDifficultyValidationRuleTest.java | 3 +- .../CliqueExtraDataValidationRuleTest.java | 3 +- .../common/MigratingProtocolContext.java | 18 +--- .../common/MigratingProtocolContextTest.java | 4 +- .../BftCoinbaseValidationRuleTest.java | 5 +- .../BftCommitSealsValidationRuleTest.java | 11 ++- .../BftValidatorsValidationRuleTest.java | 12 +-- .../BftVanityDataValidationRuleTest.java | 5 +- .../ibft/support/TestContextBuilder.java | 3 +- .../tests/round/IbftRoundIntegrationTest.java | 3 +- ...ockHeaderValidationRulesetFactoryTest.java | 5 +- .../ibft/IbftProtocolScheduleTest.java | 4 +- .../blockcreation/BftBlockCreatorTest.java | 3 +- .../IbftBlockHeightManagerTest.java | 3 +- .../ibft/statemachine/IbftRoundTest.java | 3 +- .../ibft/validation/MessageValidatorTest.java | 5 +- .../blockcreation/MergeCoordinatorTest.java | 3 +- .../merge/blockcreation/MergeReorgTest.java | 3 +- .../qbft/support/TestContextBuilder.java | 3 +- .../test/round/QbftRoundIntegrationTest.java | 4 +- ...ockHeaderValidationRulesetFactoryTest.java | 3 +- .../qbft/QbftProtocolScheduleTest.java | 3 +- .../QbftValidatorsValidationRuleTest.java | 16 +--- .../QbftBlockHeightManagerTest.java | 3 +- .../qbft/statemachine/QbftRoundTest.java | 3 +- .../ProposalPayloadValidatorTest.java | 7 +- .../validation/ProposalValidatorTest.java | 3 +- .../RoundChangeMessageValidatorTest.java | 3 +- .../jsonrpc/JsonRpcTestMethodsFactory.java | 2 +- ...ckByNumberLatestDesyncIntegrationTest.java | 2 +- .../AbstractEthGraphQLHttpServiceTest.java | 2 +- .../blockcreation/AbstractBlockCreator.java | 3 +- .../BlockTransactionSelector.java | 87 +++++++++---------- .../AbstractBlockTransactionSelectorTest.java | 17 +--- .../blockcreation/BlockMinerTest.java | 4 +- .../besu/ethereum/ProtocolContext.java | 21 +---- .../ethereum/core/BlockchainSetupUtil.java | 4 +- .../core/ExecutionContextTestFixture.java | 3 +- .../bonsai/AbstractIsolationTests.java | 2 +- .../eth/transactions/PendingTransactions.java | 7 +- .../AbstractPendingTransactionsSorter.java | 1 - .../AbstractBlockPropagationManagerTest.java | 4 +- .../fullsync/FullSyncTargetManagerTest.java | 3 +- ...neCommonAncestorTaskParameterizedTest.java | 3 +- .../DetermineCommonAncestorTaskTest.java | 4 +- .../ethereum/eth/transactions/TestNode.java | 2 +- .../LayeredPendingTransactionsTest.java | 6 +- .../AbstractPendingTransactionsTestBase.java | 7 +- .../BlockchainReferenceTestCaseSpec.java | 3 +- .../ethereum/retesteth/RetestethContext.java | 2 +- plugin-api/build.gradle | 2 +- .../data/TransactionSelectionResult.java | 26 ------ .../services/TransactionSelectionService.java | 40 --------- .../txselection/TransactionSelector.java | 39 --------- .../TransactionSelectorFactory.java | 30 ------- 68 files changed, 144 insertions(+), 534 deletions(-) delete mode 100644 besu/src/main/java/org/hyperledger/besu/services/TransactionSelectionServiceImpl.java delete mode 100644 plugin-api/src/main/java/org/hyperledger/besu/plugin/data/TransactionSelectionResult.java delete mode 100644 plugin-api/src/main/java/org/hyperledger/besu/plugin/services/TransactionSelectionService.java delete mode 100644 plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelector.java delete mode 100644 plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelectorFactory.java 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 d822a21fb18..c336192b2b1 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 @@ -386,7 +386,7 @@ public String getHostName() { return LOCALHOST; } - public NodeRequests nodeRequests() { + private NodeRequests nodeRequests() { Optional websocketService = Optional.empty(); if (nodeRequests == null) { final Web3jService web3jService; 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 cea5b323210..bfa0ae2cbcf 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 @@ -45,9 +45,7 @@ import org.hyperledger.besu.plugin.services.PicoCLIOptions; import org.hyperledger.besu.plugin.services.SecurityModuleService; import org.hyperledger.besu.plugin.services.StorageService; -import org.hyperledger.besu.plugin.services.TransactionSelectionService; import org.hyperledger.besu.plugin.services.storage.rocksdb.RocksDBPlugin; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; import org.hyperledger.besu.services.BesuConfigurationImpl; import org.hyperledger.besu.services.BesuEventsImpl; import org.hyperledger.besu.services.BesuPluginContextImpl; @@ -56,7 +54,6 @@ import org.hyperledger.besu.services.RpcEndpointServiceImpl; import org.hyperledger.besu.services.SecurityModuleServiceImpl; import org.hyperledger.besu.services.StorageServiceImpl; -import org.hyperledger.besu.services.TransactionSelectionServiceImpl; import java.io.File; import java.nio.file.Path; @@ -66,7 +63,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -95,22 +91,14 @@ private BesuPluginContextImpl buildPluginContext( besuPluginContext.addService(StorageService.class, storageService); besuPluginContext.addService(SecurityModuleService.class, securityModuleService); besuPluginContext.addService(PicoCLIOptions.class, new PicoCLIOptionsImpl(commandLine)); - besuPluginContext.addService( - TransactionSelectionService.class, new TransactionSelectionServiceImpl()); - - final Path pluginsPath; - final String pluginDirEnv = System.getenv("besu.plugins.dir"); - if (pluginDirEnv == null || pluginDirEnv.isEmpty()) { - pluginsPath = node.homeDirectory().resolve("plugins"); - final File pluginsDirFile = pluginsPath.toFile(); - if (!pluginsDirFile.isDirectory()) { - pluginsDirFile.mkdirs(); - pluginsDirFile.deleteOnExit(); - } - } else { - pluginsPath = Path.of(pluginDirEnv); - System.setProperty("besu.plugins.dir", pluginsPath.toString()); + + final Path pluginsPath = node.homeDirectory().resolve("plugins"); + final File pluginsDirFile = pluginsPath.toFile(); + if (!pluginsDirFile.isDirectory()) { + pluginsDirFile.mkdirs(); + pluginsDirFile.deleteOnExit(); } + System.setProperty("besu.plugins.dir", pluginsPath.toString()); besuPluginContext.registerPlugins(pluginsPath); commandLine.parseArgs(node.getConfiguration().getExtraCLIOptions().toArray(new String[0])); @@ -181,9 +169,6 @@ public void startNode(final BesuNode node) { final int maxPeers = 25; - final Optional transactionSelectorFactory = - getTransactionSelectorFactory(besuPluginContext); - builder .synchronizerConfiguration(new SynchronizerConfiguration.Builder().build()) .dataDirectory(node.homeDirectory()) @@ -205,8 +190,7 @@ public void startNode(final BesuNode node) { .lowerBoundPeers(maxPeers) .maxRemotelyInitiatedPeers(15) .networkConfiguration(node.getNetworkingConfiguration()) - .randomPeerPriority(false) - .transactionSelectorFactory(transactionSelectorFactory); + .randomPeerPriority(false); node.getGenesisConfig() .map(GenesisConfigFile::fromConfig) @@ -315,11 +299,4 @@ public void startConsoleCapture() { public String getConsoleContents() { throw new RuntimeException("Console contents can only be captured in process execution"); } - - private Optional getTransactionSelectorFactory( - final BesuPluginContextImpl besuPluginContext) { - final Optional txSelectionService = - besuPluginContext.getService(TransactionSelectionService.class); - return txSelectionService.isPresent() ? txSelectionService.get().get() : Optional.empty(); - } } diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java index fb6ac5f1014..6f3c601fa37 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/configuration/BesuNodeFactory.java @@ -107,33 +107,10 @@ public BesuNode createMinerNode( return create(config); } - public BesuNode createMinerNodeWithExtraCliOptions( - final String name, - final UnaryOperator configModifier, - final List extraCliOptions) - throws IOException { - BesuNodeConfigurationBuilder builder = - new BesuNodeConfigurationBuilder() - .name(name) - .miningEnabled() - .jsonRpcEnabled() - .webSocketEnabled() - .extraCLIOptions(extraCliOptions); - builder = configModifier.apply(builder); - final BesuNodeConfiguration config = builder.build(); - - return create(config); - } - public BesuNode createMinerNode(final String name) throws IOException { return createMinerNode(name, UnaryOperator.identity()); } - public BesuNode createMinerNodeWithExtraCliOptions( - final String name, final List extraCliOptions) throws IOException { - return createMinerNodeWithExtraCliOptions(name, UnaryOperator.identity(), extraCliOptions); - } - public BesuNode createMinerNodeWithRevertReasonEnabled(final String name) throws IOException { return createMinerNode(name, BesuNodeConfigurationBuilder::revertReasonEnabled); } diff --git a/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java b/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java index b842392f03d..193ec5b2a81 100644 --- a/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java +++ b/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java @@ -167,14 +167,12 @@ import org.hyperledger.besu.plugin.services.SecurityModuleService; import org.hyperledger.besu.plugin.services.StorageService; import org.hyperledger.besu.plugin.services.TraceService; -import org.hyperledger.besu.plugin.services.TransactionSelectionService; import org.hyperledger.besu.plugin.services.exception.StorageException; import org.hyperledger.besu.plugin.services.metrics.MetricCategory; import org.hyperledger.besu.plugin.services.metrics.MetricCategoryRegistry; import org.hyperledger.besu.plugin.services.securitymodule.SecurityModule; import org.hyperledger.besu.plugin.services.storage.PrivacyKeyValueStorageFactory; import org.hyperledger.besu.plugin.services.storage.rocksdb.RocksDBPlugin; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; import org.hyperledger.besu.services.BesuEventsImpl; import org.hyperledger.besu.services.BesuPluginContextImpl; import org.hyperledger.besu.services.BlockchainServiceImpl; @@ -185,7 +183,6 @@ import org.hyperledger.besu.services.SecurityModuleServiceImpl; import org.hyperledger.besu.services.StorageServiceImpl; import org.hyperledger.besu.services.TraceServiceImpl; -import org.hyperledger.besu.services.TransactionSelectionServiceImpl; import org.hyperledger.besu.services.kvstore.InMemoryStoragePlugin; import org.hyperledger.besu.util.InvalidConfigurationException; import org.hyperledger.besu.util.LogConfigurator; @@ -237,7 +234,6 @@ import io.vertx.core.metrics.MetricsOptions; import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.units.bigints.UInt256; -import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import picocli.AutoComplete; import picocli.CommandLine; @@ -364,8 +360,6 @@ public class BesuCommand implements DefaultCommandValues, Runnable { @CommandLine.ArgGroup(validate = false, heading = "@|bold P2P Discovery Options|@%n") P2PDiscoveryOptionGroup p2PDiscoveryOptionGroup = new P2PDiscoveryOptionGroup(); - private final TransactionSelectionServiceImpl transactionSelectionServiceImpl; - static class P2PDiscoveryOptionGroup { // Public IP stored to prevent having to research it each time we need it. @@ -1386,8 +1380,7 @@ public BesuCommand( new PermissioningServiceImpl(), new PrivacyPluginServiceImpl(), new PkiBlockCreationConfigurationProvider(), - new RpcEndpointServiceImpl(), - new TransactionSelectionServiceImpl()); + new RpcEndpointServiceImpl()); } /** @@ -1407,7 +1400,6 @@ public BesuCommand( * @param privacyPluginService instance of PrivacyPluginServiceImpl * @param pkiBlockCreationConfigProvider instance of PkiBlockCreationConfigurationProvider * @param rpcEndpointServiceImpl instance of RpcEndpointServiceImpl - * @param transactionSelectionServiceImpl instance of TransactionSelectionServiceImpl */ @VisibleForTesting protected BesuCommand( @@ -1424,8 +1416,7 @@ protected BesuCommand( final PermissioningServiceImpl permissioningService, final PrivacyPluginServiceImpl privacyPluginService, final PkiBlockCreationConfigurationProvider pkiBlockCreationConfigProvider, - final RpcEndpointServiceImpl rpcEndpointServiceImpl, - final TransactionSelectionServiceImpl transactionSelectionServiceImpl) { + final RpcEndpointServiceImpl rpcEndpointServiceImpl) { this.besuComponent = besuComponent; this.logger = besuComponent.getBesuCommandLogger(); this.rlpBlockImporter = rlpBlockImporter; @@ -1443,7 +1434,6 @@ protected BesuCommand( besuPluginContext.addService(BesuConfiguration.class, pluginCommonConfiguration); this.pkiBlockCreationConfigProvider = pkiBlockCreationConfigProvider; this.rpcEndpointServiceImpl = rpcEndpointServiceImpl; - this.transactionSelectionServiceImpl = transactionSelectionServiceImpl; } /** @@ -1624,8 +1614,6 @@ private void preparePlugins() { besuPluginContext.addService(PermissioningService.class, permissioningService); besuPluginContext.addService(PrivacyPluginService.class, privacyPluginService); besuPluginContext.addService(RpcEndpointService.class, rpcEndpointServiceImpl); - besuPluginContext.addService( - TransactionSelectionService.class, transactionSelectionServiceImpl); // register built-in plugins rocksDBPlugin = new RocksDBPlugin(); @@ -1727,9 +1715,6 @@ private void startPlugins() { besuController.getProtocolContext().getWorldStateArchive()), besuController.getProtocolSchedule())); - besuPluginContext.addService( - TransactionSelectionService.class, new TransactionSelectionServiceImpl()); - besuController.getAdditionalPluginServices().appendPluginServices(besuPluginContext); besuPluginContext.startPlugins(); } @@ -2256,15 +2241,12 @@ public BesuController buildController() { */ public BesuControllerBuilder getControllerBuilder() { final KeyValueStorageProvider storageProvider = keyValueStorageProvider(keyValueStorageName); - final Optional transactionSelectorFactory = - getTransactionSelectorFactory(); return controllerBuilderFactory .fromEthNetworkConfig( updateNetworkConfig(network), genesisConfigOverrides, getDefaultSyncModeIfNotSet()) .synchronizerConfiguration(buildSyncConfig()) .ethProtocolConfiguration(unstableEthProtocolOptions.toDomainObject()) .networkConfiguration(unstableNetworkingOptions.toDomainObject()) - .transactionSelectorFactory(transactionSelectorFactory) .dataDirectory(dataDir()) .miningParameters( new MiningParameters.Builder() @@ -2314,13 +2296,6 @@ public BesuControllerBuilder getControllerBuilder() { .chainPruningConfiguration(unstableChainPruningOptions.toDomainObject()); } - @NotNull - private Optional getTransactionSelectorFactory() { - final Optional txSelectionService = - besuPluginContext.getService(TransactionSelectionService.class); - return txSelectionService.isPresent() ? txSelectionService.get().get() : Optional.empty(); - } - private GraphQLConfiguration graphQLConfiguration() { CommandLineUtils.checkOptionDependencies( diff --git a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java index 4b7bff0234f..7e66dda25d4 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java @@ -94,7 +94,6 @@ import org.hyperledger.besu.metrics.ObservableMetricsSystem; import org.hyperledger.besu.plugin.services.MetricsSystem; import org.hyperledger.besu.plugin.services.permissioning.NodeMessagePermissioningProvider; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; import java.io.Closeable; import java.math.BigInteger; @@ -180,7 +179,6 @@ public abstract class BesuControllerBuilder implements MiningParameterOverrides private NetworkingConfiguration networkingConfiguration; private Boolean randomPeerPriority; - private Optional transactionSelectorFactory = Optional.empty(); /** the Dagger configured context that can provide dependencies */ protected Optional besuComponent = Optional.empty(); @@ -524,18 +522,6 @@ public BesuControllerBuilder randomPeerPriority(final Boolean randomPeerPriority return this; } - /** - * sets the transactionSelectorFactory in the builder - * - * @param transactionSelectorFactory the optional transaction selector factory - * @return the besu controller builder - */ - public BesuControllerBuilder transactionSelectorFactory( - final Optional transactionSelectorFactory) { - this.transactionSelectorFactory = transactionSelectorFactory; - return this; - } - /** * Build besu controller. * @@ -589,11 +575,7 @@ public BesuController build() { final ProtocolContext protocolContext = createProtocolContext( - blockchain, - worldStateArchive, - protocolSchedule, - this::createConsensusContext, - transactionSelectorFactory); + blockchain, worldStateArchive, protocolSchedule, this::createConsensusContext); validateContext(protocolContext); if (chainPrunerConfiguration.getChainPruningEnabled()) { @@ -1009,21 +991,15 @@ protected EthProtocolManager createEthProtocolManager( * @param worldStateArchive the world state archive * @param protocolSchedule the protocol schedule * @param consensusContextFactory the consensus context factory - * @param transactionSelectorFactory optional transaction selector factory * @return the protocol context */ protected ProtocolContext createProtocolContext( final MutableBlockchain blockchain, final WorldStateArchive worldStateArchive, final ProtocolSchedule protocolSchedule, - final ConsensusContextFactory consensusContextFactory, - final Optional transactionSelectorFactory) { + final ConsensusContextFactory consensusContextFactory) { return ProtocolContext.init( - blockchain, - worldStateArchive, - protocolSchedule, - consensusContextFactory, - transactionSelectorFactory); + blockchain, worldStateArchive, protocolSchedule, consensusContextFactory); } private Optional createSnapProtocolManager( diff --git a/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java index 6d0d02b22f0..e4d5761dbf1 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/ConsensusScheduleBesuControllerBuilder.java @@ -62,7 +62,6 @@ import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.ObservableMetricsSystem; import org.hyperledger.besu.plugin.services.permissioning.NodeMessagePermissioningProvider; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; import java.math.BigInteger; import java.nio.file.Path; @@ -175,14 +174,9 @@ protected ProtocolContext createProtocolContext( final MutableBlockchain blockchain, final WorldStateArchive worldStateArchive, final ProtocolSchedule protocolSchedule, - final ConsensusContextFactory consensusContextFactory, - final Optional transactionSelectorFactory) { + final ConsensusContextFactory consensusContextFactory) { return MigratingProtocolContext.init( - blockchain, - worldStateArchive, - protocolSchedule, - consensusContextFactory, - transactionSelectorFactory); + blockchain, worldStateArchive, protocolSchedule, consensusContextFactory); } @Override diff --git a/besu/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java index 9323f3b81d6..b159992e0bf 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/TransitionBesuControllerBuilder.java @@ -60,7 +60,6 @@ import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.metrics.ObservableMetricsSystem; import org.hyperledger.besu.plugin.services.permissioning.NodeMessagePermissioningProvider; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; import java.math.BigInteger; import java.nio.file.Path; @@ -189,15 +188,10 @@ protected ProtocolContext createProtocolContext( final MutableBlockchain blockchain, final WorldStateArchive worldStateArchive, final ProtocolSchedule protocolSchedule, - final ConsensusContextFactory consensusContextFactory, - final Optional transactionSelectorFactory) { + final ConsensusContextFactory consensusContextFactory) { final ProtocolContext protocolContext = super.createProtocolContext( - blockchain, - worldStateArchive, - protocolSchedule, - consensusContextFactory, - transactionSelectorFactory); + blockchain, worldStateArchive, protocolSchedule, consensusContextFactory); transitionProtocolSchedule.setProtocolContext(protocolContext); return protocolContext; } diff --git a/besu/src/main/java/org/hyperledger/besu/services/TransactionSelectionServiceImpl.java b/besu/src/main/java/org/hyperledger/besu/services/TransactionSelectionServiceImpl.java deleted file mode 100644 index 42b1ae88a76..00000000000 --- a/besu/src/main/java/org/hyperledger/besu/services/TransactionSelectionServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright contributors to Hyperledger Besu. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - */ -package org.hyperledger.besu.services; - -import org.hyperledger.besu.plugin.services.TransactionSelectionService; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; - -import java.util.Optional; - -/** The Transaction Selection service implementation. */ -public class TransactionSelectionServiceImpl implements TransactionSelectionService { - - private Optional factory = Optional.empty(); - - @Override - public Optional get() { - return factory; - } - - @Override - public void registerTransactionSelectorFactory( - final TransactionSelectorFactory transactionSelectorFactory) { - factory = Optional.ofNullable(transactionSelectorFactory); - } -} diff --git a/besu/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java b/besu/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java index b5c31a34dee..fcce5353adc 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/CommandTestAbstract.java @@ -79,7 +79,6 @@ import org.hyperledger.besu.services.RpcEndpointServiceImpl; import org.hyperledger.besu.services.SecurityModuleServiceImpl; import org.hyperledger.besu.services.StorageServiceImpl; -import org.hyperledger.besu.services.TransactionSelectionServiceImpl; import org.hyperledger.besu.services.kvstore.InMemoryKeyValueStorage; import java.io.ByteArrayOutputStream; @@ -238,7 +237,6 @@ public void initMocks() throws Exception { when(mockControllerBuilder.lowerBoundPeers(anyInt())).thenReturn(mockControllerBuilder); when(mockControllerBuilder.maxRemotelyInitiatedPeers(anyInt())) .thenReturn(mockControllerBuilder); - when(mockControllerBuilder.transactionSelectorFactory(any())).thenReturn(mockControllerBuilder); when(mockControllerBuilder.besuComponent(any(BesuComponent.class))) .thenReturn(mockControllerBuilder); // doReturn used because of generic BesuController @@ -486,8 +484,7 @@ public static class TestBesuCommand extends BesuCommand { new PermissioningServiceImpl(), privacyPluginService, pkiBlockCreationConfigProvider, - rpcEndpointServiceImpl, - new TransactionSelectionServiceImpl()); + rpcEndpointServiceImpl); } @Override diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueDifficultyCalculatorTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueDifficultyCalculatorTest.java index 6f9c5c53e0e..6297ec6b6eb 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueDifficultyCalculatorTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueDifficultyCalculatorTest.java @@ -31,7 +31,6 @@ import java.math.BigInteger; import java.util.List; -import java.util.Optional; import com.google.common.collect.Lists; import org.junit.jupiter.api.BeforeEach; @@ -58,7 +57,7 @@ public void setup() { when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext); blockHeaderBuilder = new BlockHeaderTestFixture(); } diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/NodeCanProduceNextBlockTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/NodeCanProduceNextBlockTest.java index 486c1840fc9..0018f3d9e17 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/NodeCanProduceNextBlockTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/NodeCanProduceNextBlockTest.java @@ -37,7 +37,6 @@ import org.hyperledger.besu.ethereum.core.Util; import java.util.List; -import java.util.Optional; import com.google.common.collect.Lists; import org.junit.jupiter.api.BeforeEach; @@ -80,7 +79,7 @@ public void networkWithOneValidatorIsAllowedToCreateConsecutiveBlocks() { final ValidatorProvider validatorProvider = mock(ValidatorProvider.class); when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext); headerBuilder.number(1).parentHash(genesisBlock.getHash()); final Block block_1 = createEmptyBlock(proposerKeyPair); @@ -104,7 +103,7 @@ public void networkWithTwoValidatorsIsAllowedToProduceBlockIfNotPreviousBlockPro final ValidatorProvider validatorProvider = mock(ValidatorProvider.class); when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext); headerBuilder.number(1).parentHash(genesisBlock.getHash()); final Block block_1 = createEmptyBlock(proposerKeyPair); @@ -137,7 +136,7 @@ public void networkWithTwoValidatorsIsNotAllowedToProduceBlockIfIsPreviousBlockP final ValidatorProvider validatorProvider = mock(ValidatorProvider.class); when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext); headerBuilder.parentHash(genesisBlock.getHash()).number(1); final Block block_1 = createEmptyBlock(proposerKeyPair); @@ -166,7 +165,7 @@ public void withThreeValidatorsMustHaveOneBlockBetweenSignings() { final ValidatorProvider validatorProvider = mock(ValidatorProvider.class); when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext); headerBuilder.parentHash(genesisBlock.getHash()).number(1); final Block block_1 = createEmptyBlock(proposerKeyPair); @@ -210,7 +209,7 @@ public void signerIsValidIfInsufficientBlocksExistInHistory() { final ValidatorProvider validatorProvider = mock(ValidatorProvider.class); when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext); headerBuilder.parentHash(genesisBlock.getHash()).number(1); final Block block_1 = createEmptyBlock(otherNodeKeyPair); @@ -238,7 +237,7 @@ public void exceptionIsThrownIfOnAnOrphanedChain() { final ValidatorProvider validatorProvider = mock(ValidatorProvider.class); when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext); headerBuilder.parentHash(Hash.ZERO).number(3); final BlockHeader parentHeader = @@ -261,7 +260,7 @@ public void nonValidatorIsNotAllowedToCreateABlock() { final ValidatorProvider validatorProvider = mock(ValidatorProvider.class); when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(blockChain, null, cliqueContext); headerBuilder.parentHash(Hash.ZERO).number(3); final BlockHeader parentHeader = headerBuilder.buildHeader(); 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 76741501dc2..8f3709b1605 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 @@ -105,8 +105,7 @@ public void setup() { final Block genesis = GenesisState.fromConfig(GenesisConfigFile.mainnet(), protocolSchedule).getBlock(); blockchain = createInMemoryBlockchain(genesis); - protocolContext = - new ProtocolContext(blockchain, stateArchive, cliqueContext, Optional.empty()); + protocolContext = new ProtocolContext(blockchain, stateArchive, cliqueContext); epochManager = new EpochManager(10); // Add a block above the genesis 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 ab3e45abc59..76caf56f5d9 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 @@ -81,7 +81,7 @@ public void setup() { when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext); blockHeaderBuilder = new BlockHeaderTestFixture(); } diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueDifficultyValidationRuleTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueDifficultyValidationRuleTest.java index 7f7daf4eeab..56d511b4be1 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueDifficultyValidationRuleTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueDifficultyValidationRuleTest.java @@ -34,7 +34,6 @@ import org.hyperledger.besu.ethereum.core.Util; import java.util.List; -import java.util.Optional; import com.google.common.collect.Lists; import org.junit.jupiter.api.BeforeEach; @@ -58,7 +57,7 @@ public void setup() { when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext); blockHeaderBuilder = new BlockHeaderTestFixture(); } diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java index 72043c9cb9a..04657661776 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java @@ -35,7 +35,6 @@ import org.hyperledger.besu.ethereum.core.Util; import java.util.List; -import java.util.Optional; import com.google.common.collect.Lists; import org.apache.tuweni.bytes.Bytes; @@ -62,7 +61,7 @@ public void setup() { when(validatorProvider.getValidatorsAfterBlock(any())).thenReturn(validatorList); final CliqueContext cliqueContext = new CliqueContext(validatorProvider, null, blockInterface); - cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext, Optional.empty()); + cliqueProtocolContext = new ProtocolContext(null, null, cliqueContext); } @Test diff --git a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java index e4304a3dbd0..95ac7a010ca 100644 --- a/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java +++ b/consensus/common/src/main/java/org/hyperledger/besu/consensus/common/MigratingProtocolContext.java @@ -20,9 +20,6 @@ import org.hyperledger.besu.ethereum.chain.MutableBlockchain; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; - -import java.util.Optional; /** The Migrating protocol context. */ public class MigratingProtocolContext extends ProtocolContext { @@ -35,14 +32,12 @@ public class MigratingProtocolContext extends ProtocolContext { * @param blockchain the blockchain * @param worldStateArchive the world state archive * @param consensusContextSchedule the consensus context schedule - * @param transactionSelectorFactory the optional transaction selector factory */ public MigratingProtocolContext( final MutableBlockchain blockchain, final WorldStateArchive worldStateArchive, - final ForksSchedule consensusContextSchedule, - final Optional transactionSelectorFactory) { - super(blockchain, worldStateArchive, null, transactionSelectorFactory); + final ForksSchedule consensusContextSchedule) { + super(blockchain, worldStateArchive, null); this.consensusContextSchedule = consensusContextSchedule; } @@ -53,23 +48,18 @@ public MigratingProtocolContext( * @param worldStateArchive the world state archive * @param protocolSchedule the protocol schedule * @param consensusContextFactory the consensus context factory - * @param transactionSelectorFactory the optional transaction selector factory * @return the protocol context */ public static ProtocolContext init( final MutableBlockchain blockchain, final WorldStateArchive worldStateArchive, final ProtocolSchedule protocolSchedule, - final ConsensusContextFactory consensusContextFactory, - final Optional transactionSelectorFactory) { + final ConsensusContextFactory consensusContextFactory) { final ConsensusContext consensusContext = consensusContextFactory.create(blockchain, worldStateArchive, protocolSchedule); final MigratingContext migratingContext = consensusContext.as(MigratingContext.class); return new MigratingProtocolContext( - blockchain, - worldStateArchive, - migratingContext.getConsensusContextSchedule(), - transactionSelectorFactory); + blockchain, worldStateArchive, migratingContext.getConsensusContextSchedule()); } @Override diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/MigratingProtocolContextTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/MigratingProtocolContextTest.java index 21ba7638c40..84fc82da67c 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/MigratingProtocolContextTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/MigratingProtocolContextTest.java @@ -23,7 +23,6 @@ import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; import java.util.List; -import java.util.Optional; import org.junit.Test; import org.mockito.Mockito; @@ -44,8 +43,7 @@ public void returnsContextForSpecificChainHeight() { final ForksSchedule contextSchedule = new ForksSchedule<>(List.of(new ForkSpec<>(0L, context1), new ForkSpec<>(10L, context2))); final MigratingProtocolContext migratingProtocolContext = - new MigratingProtocolContext( - blockchain, worldStateArchive, contextSchedule, Optional.empty()); + new MigratingProtocolContext(blockchain, worldStateArchive, contextSchedule); assertThat(migratingProtocolContext.getConsensusContext(ConsensusContext.class)) .isSameAs(context1); diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCoinbaseValidationRuleTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCoinbaseValidationRuleTest.java index fcbea4954d8..d268c514467 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCoinbaseValidationRuleTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCoinbaseValidationRuleTest.java @@ -27,7 +27,6 @@ import org.hyperledger.besu.ethereum.core.Util; import java.util.List; -import java.util.Optional; import com.google.common.collect.Lists; import org.junit.Test; @@ -51,7 +50,7 @@ public void proposerInValidatorListPassesValidation() { final List
validators = Lists.newArrayList(proposerAddress); final ProtocolContext context = - new ProtocolContext(null, null, setupContextWithValidators(validators), Optional.empty()); + new ProtocolContext(null, null, setupContextWithValidators(validators)); final BftCoinbaseValidationRule coinbaseValidationRule = new BftCoinbaseValidationRule(); @@ -71,7 +70,7 @@ public void proposerNotInValidatorListFailsValidation() { final List
validators = Lists.newArrayList(otherValidatorNodeAddress); final ProtocolContext context = - new ProtocolContext(null, null, setupContextWithValidators(validators), Optional.empty()); + new ProtocolContext(null, null, setupContextWithValidators(validators)); final BftCoinbaseValidationRule coinbaseValidationRule = new BftCoinbaseValidationRule(); diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCommitSealsValidationRuleTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCommitSealsValidationRuleTest.java index 453b28a601c..cae209bd662 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCommitSealsValidationRuleTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftCommitSealsValidationRuleTest.java @@ -33,7 +33,6 @@ import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -58,7 +57,7 @@ public void correctlyConstructedHeaderPassesValidation() { .collect(Collectors.toList()); final BftContext bftContext = setupContextWithValidators(committerAddresses); - final ProtocolContext context = new ProtocolContext(null, null, bftContext, Optional.empty()); + final ProtocolContext context = new ProtocolContext(null, null, bftContext); when(bftContext.getBlockInterface().getCommitters(any())).thenReturn(committerAddresses); assertThat(commitSealsValidationRule.validate(blockHeader, null, context)).isTrue(); @@ -72,7 +71,7 @@ public void insufficientCommitSealsFailsValidation() { final List
validators = singletonList(committerAddress); final BftContext bftContext = setupContextWithValidators(validators); - final ProtocolContext context = new ProtocolContext(null, null, bftContext, Optional.empty()); + final ProtocolContext context = new ProtocolContext(null, null, bftContext); when(bftContext.getBlockInterface().getCommitters(any())).thenReturn(emptyList()); assertThat(commitSealsValidationRule.validate(blockHeader, null, context)).isFalse(); @@ -89,7 +88,7 @@ public void committerNotInValidatorListFailsValidation() { final NodeKey nonValidatorNodeKey = NodeKeyUtils.generate(); final BftContext bftContext = setupContextWithValidators(validators); - final ProtocolContext context = new ProtocolContext(null, null, bftContext, Optional.empty()); + final ProtocolContext context = new ProtocolContext(null, null, bftContext); when(bftContext.getBlockInterface().getCommitters(any())) .thenReturn(singletonList(Util.publicKeyToAddress(nonValidatorNodeKey.getPublicKey()))); @@ -136,7 +135,7 @@ public void headerContainsDuplicateSealsFailsValidation() { final List
validators = singletonList(committerAddress); final BftContext bftContext = setupContextWithValidators(validators); - final ProtocolContext context = new ProtocolContext(null, null, bftContext, Optional.empty()); + final ProtocolContext context = new ProtocolContext(null, null, bftContext); when(bftContext.getBlockInterface().getCommitters(any())) .thenReturn(List.of(committerAddress, committerAddress)); @@ -155,7 +154,7 @@ private boolean subExecution(final int validatorCount, final int committerCount) Collections.sort(validators); final BftContext bftContext = setupContextWithValidators(validators); - final ProtocolContext context = new ProtocolContext(null, null, bftContext, Optional.empty()); + final ProtocolContext context = new ProtocolContext(null, null, bftContext); when(bftContext.getBlockInterface().getCommitters(any())) .thenReturn(validators.subList(0, committerCount)); diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftValidatorsValidationRuleTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftValidatorsValidationRuleTest.java index 00b994295ca..048faa3ad88 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftValidatorsValidationRuleTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftValidatorsValidationRuleTest.java @@ -26,7 +26,6 @@ import org.hyperledger.besu.ethereum.core.BlockHeader; import java.util.List; -import java.util.Optional; import com.google.common.collect.Lists; import org.junit.Test; @@ -45,8 +44,7 @@ public void correctlyConstructedHeaderPassesValidation() { AddressHelpers.ofValue(1), AddressHelpers.ofValue(2), AddressHelpers.ofValue(3)); final ProtocolContext context = - new ProtocolContext( - null, null, setupContextWithBftExtraData(validators, bftExtraData), Optional.empty()); + new ProtocolContext(null, null, setupContextWithBftExtraData(validators, bftExtraData)); when(bftExtraData.getValidators()).thenReturn(validators); assertThat(validatorsValidationRule.validate(blockHeader, null, context)).isTrue(); @@ -60,8 +58,7 @@ public void validatorsInNonAscendingOrderFailValidation() { AddressHelpers.ofValue(1), AddressHelpers.ofValue(2), AddressHelpers.ofValue(3)); final ProtocolContext context = - new ProtocolContext( - null, null, setupContextWithBftExtraData(validators, bftExtraData), Optional.empty()); + new ProtocolContext(null, null, setupContextWithBftExtraData(validators, bftExtraData)); when(bftExtraData.getValidators()).thenReturn(Lists.reverse(validators)); assertThat(validatorsValidationRule.validate(blockHeader, null, context)).isFalse(); @@ -79,10 +76,7 @@ public void mismatchingReportedValidatorsVsLocallyStoredListFailsValidation() { final ProtocolContext context = new ProtocolContext( - null, - null, - setupContextWithBftExtraData(storedValidators, bftExtraData), - Optional.empty()); + null, null, setupContextWithBftExtraData(storedValidators, bftExtraData)); when(bftExtraData.getValidators()).thenReturn(Lists.reverse(reportedValidators)); assertThat(validatorsValidationRule.validate(blockHeader, null, context)).isFalse(); diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftVanityDataValidationRuleTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftVanityDataValidationRuleTest.java index cd148f8787a..548084f81cb 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftVanityDataValidationRuleTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/headervalidationrules/BftVanityDataValidationRuleTest.java @@ -24,8 +24,6 @@ import org.hyperledger.besu.ethereum.ProtocolContext; import org.hyperledger.besu.ethereum.core.BlockHeader; -import java.util.Optional; - import org.apache.tuweni.bytes.Bytes; import org.junit.Test; @@ -46,8 +44,7 @@ public boolean headerWithVanityDataOfSize(final int extraDataSize) { new BftExtraData(Bytes.wrap(new byte[extraDataSize]), emptyList(), empty(), 0, emptyList()); final ProtocolContext context = - new ProtocolContext( - null, null, setupContextWithBftExtraData(emptyList(), extraData), Optional.empty()); + new ProtocolContext(null, null, setupContextWithBftExtraData(emptyList(), extraData)); return validationRule.validate(blockHeader, null, context); } } 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 7d7778410cb..c0b85a434bf 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 @@ -328,8 +328,7 @@ private static ControllerAndState createControllerAndFinalState( new ProtocolContext( blockChain, worldStateArchive, - new BftContext(validatorProvider, epochManager, blockInterface), - Optional.empty()); + new BftContext(validatorProvider, epochManager, blockInterface)); final GasPricePendingTransactionsSorter pendingTransactions = new GasPricePendingTransactionsSorter( diff --git a/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/tests/round/IbftRoundIntegrationTest.java b/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/tests/round/IbftRoundIntegrationTest.java index ff9c47ab38c..88669b91504 100644 --- a/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/tests/round/IbftRoundIntegrationTest.java +++ b/consensus/ibft/src/integration-test/java/org/hyperledger/besu/consensus/ibft/tests/round/IbftRoundIntegrationTest.java @@ -118,8 +118,7 @@ public void setup() { new ProtocolContext( blockChain, worldStateArchive, - setupContextWithBftExtraDataEncoder(emptyList(), bftExtraDataEncoder), - Optional.empty()); + setupContextWithBftExtraDataEncoder(emptyList(), bftExtraDataEncoder)); } @Test diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftBlockHeaderValidationRulesetFactoryTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftBlockHeaderValidationRulesetFactoryTest.java index 40ad127eb5b..6c1bf8ed5db 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftBlockHeaderValidationRulesetFactoryTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/IbftBlockHeaderValidationRulesetFactoryTest.java @@ -48,10 +48,7 @@ public class IbftBlockHeaderValidationRulesetFactoryTest { private ProtocolContext protocolContext(final Collection
validators) { return new ProtocolContext( - null, - null, - setupContextWithBftExtraDataEncoder(validators, new IbftExtraDataCodec()), - Optional.empty()); + null, null, setupContextWithBftExtraDataEncoder(validators, new IbftExtraDataCodec())); } @Test 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 1ca3c0269a8..562d441d4d8 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 @@ -47,7 +47,6 @@ import java.math.BigInteger; import java.util.Collection; import java.util.List; -import java.util.Optional; import org.junit.Before; import org.junit.Test; @@ -120,7 +119,6 @@ private ProtocolContext protocolContext(final Collection
validators) { return new ProtocolContext( null, null, - setupContextWithBftExtraDataEncoder(BftContext.class, validators, bftExtraDataCodec), - Optional.empty()); + setupContextWithBftExtraDataEncoder(BftContext.class, validators, bftExtraDataCodec)); } } 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 c83f747f701..7ebfda0294f 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 @@ -113,8 +113,7 @@ public BlockHeaderValidator.Builder createBlockHeaderRuleset( new ProtocolContext( blockchain, createInMemoryWorldStateArchive(), - setupContextWithBftExtraDataEncoder(initialValidatorList, bftExtraDataEncoder), - Optional.empty()); + setupContextWithBftExtraDataEncoder(initialValidatorList, bftExtraDataEncoder)); final GasPricePendingTransactionsSorter pendingTransactions = new GasPricePendingTransactionsSorter( 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 54142aa8b4b..1fd93d61d97 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 @@ -151,8 +151,7 @@ public void setup() { .thenReturn(futureRoundProposalMessageValidator); when(messageValidatorFactory.createMessageValidator(any(), any())).thenReturn(messageValidator); - protocolContext = - new ProtocolContext(null, null, setupContextWithValidators(validators), Optional.empty()); + protocolContext = new ProtocolContext(null, null, setupContextWithValidators(validators)); // Ensure the created IbftRound has the valid ConsensusRoundIdentifier; when(roundFactory.createNewRound(any(), anyInt())) diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftRoundTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftRoundTest.java index af5156e531e..8023ff0a822 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftRoundTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/statemachine/IbftRoundTest.java @@ -106,8 +106,7 @@ public void setup() { new ProtocolContext( blockChain, worldStateArchive, - setupContextWithBftExtraDataEncoder(emptyList(), new IbftExtraDataCodec()), - Optional.empty()); + setupContextWithBftExtraDataEncoder(emptyList(), new IbftExtraDataCodec())); when(messageValidator.validateProposal(any())).thenReturn(true); when(messageValidator.validatePrepare(any())).thenReturn(true); diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/validation/MessageValidatorTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/validation/MessageValidatorTest.java index 9296f0419c8..909d30b73cb 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/validation/MessageValidatorTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/validation/MessageValidatorTest.java @@ -95,10 +95,7 @@ public void setup() { protocolContext = new ProtocolContext( - mock(MutableBlockchain.class), - mock(WorldStateArchive.class), - mockBftCtx, - Optional.empty()); + mock(MutableBlockchain.class), mock(WorldStateArchive.class), mockBftCtx); when(blockValidator.validateAndProcessBlock(any(), any(), any(), any())) .thenReturn(new BlockProcessingResult(Optional.empty())); diff --git a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java index d246711a2af..932b8130760 100644 --- a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java +++ b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeCoordinatorTest.java @@ -183,8 +183,7 @@ public void setUp() { .when(protocolSchedule) .getByBlockHeader(any(BlockHeader.class)); - protocolContext = - new ProtocolContext(blockchain, worldStateArchive, mergeContext, Optional.empty()); + protocolContext = new ProtocolContext(blockchain, worldStateArchive, mergeContext); var mutable = worldStateArchive.getMutable(); genesisState.writeStateTo(mutable); mutable.persist(null); diff --git a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeReorgTest.java b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeReorgTest.java index e4a1d7a4144..de75bffd145 100644 --- a/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeReorgTest.java +++ b/consensus/merge/src/test/java/org/hyperledger/besu/consensus/merge/blockcreation/MergeReorgTest.java @@ -45,7 +45,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.junit.Before; @@ -70,7 +69,7 @@ public class MergeReorgTest implements MergeGenesisConfigHelper { private final MutableBlockchain blockchain = createInMemoryBlockchain(genesisState.getBlock()); private final ProtocolContext protocolContext = - new ProtocolContext(blockchain, worldStateArchive, mergeContext, Optional.empty()); + new ProtocolContext(blockchain, worldStateArchive, mergeContext); private final Address coinbase = genesisAllocations(getPowGenesisConfigFile()).findFirst().get(); private final BlockHeaderTestFixture headerGenerator = new BlockHeaderTestFixture(); diff --git a/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/support/TestContextBuilder.java b/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/support/TestContextBuilder.java index 76c429d2124..0a6337de71f 100644 --- a/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/support/TestContextBuilder.java +++ b/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/support/TestContextBuilder.java @@ -456,8 +456,7 @@ private static ControllerAndState createControllerAndFinalState( new ProtocolContext( blockChain, worldStateArchive, - new QbftContext(validatorProvider, epochManager, blockInterface, Optional.empty()), - Optional.empty()); + new QbftContext(validatorProvider, epochManager, blockInterface, Optional.empty())); final GasPricePendingTransactionsSorter pendingTransactions = new GasPricePendingTransactionsSorter( diff --git a/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/test/round/QbftRoundIntegrationTest.java b/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/test/round/QbftRoundIntegrationTest.java index cd3af6ac15b..549717c59dc 100644 --- a/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/test/round/QbftRoundIntegrationTest.java +++ b/consensus/qbft/src/integration-test/java/org/hyperledger/besu/consensus/qbft/test/round/QbftRoundIntegrationTest.java @@ -55,7 +55,6 @@ import org.hyperledger.besu.util.Subscribers; import java.math.BigInteger; -import java.util.Optional; import org.apache.tuweni.bytes.Bytes; import org.junit.jupiter.api.BeforeEach; @@ -122,8 +121,7 @@ public void setup() { blockChain, worldStateArchive, setupContextWithBftExtraDataEncoder( - QbftContext.class, emptyList(), qbftExtraDataEncoder), - Optional.empty()); + QbftContext.class, emptyList(), qbftExtraDataEncoder)); } @Test diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactoryTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactoryTest.java index d17dabddf74..8c310d9700d 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactoryTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/QbftBlockHeaderValidationRulesetFactoryTest.java @@ -45,8 +45,7 @@ private ProtocolContext protocolContext(final Collection
validators) { null, null, setupContextWithBftExtraDataEncoder( - QbftContext.class, validators, new QbftExtraDataCodec()), - Optional.empty()); + QbftContext.class, validators, new QbftExtraDataCodec())); } @Test 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 704cc67f1fe..e090b0e6501 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 @@ -57,8 +57,7 @@ private ProtocolContext protocolContext(final Collection
validators) { null, null, setupContextWithBftExtraDataEncoder( - QbftContext.class, validators, new QbftExtraDataCodec()), - Optional.empty()); + QbftContext.class, validators, new QbftExtraDataCodec())); } @Test diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/headervalidationrules/QbftValidatorsValidationRuleTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/headervalidationrules/QbftValidatorsValidationRuleTest.java index 4e33d202c66..105e94af024 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/headervalidationrules/QbftValidatorsValidationRuleTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/headervalidationrules/QbftValidatorsValidationRuleTest.java @@ -46,8 +46,7 @@ public void validationPassesIfValidatorsAndVoteAreEmpty() { new ProtocolContext( null, null, - setupContextWithBftExtraData(QbftContext.class, Collections.emptyList(), bftExtraData), - Optional.empty()); + setupContextWithBftExtraData(QbftContext.class, Collections.emptyList(), bftExtraData)); when(bftExtraData.getValidators()).thenReturn(Collections.emptyList()); when(bftExtraData.getVote()).thenReturn(Optional.empty()); assertThat(qbftValidatorsValidationRule.validate(blockHeader, null, context)).isTrue(); @@ -63,10 +62,7 @@ public void validationIsDelegatedWhenConstructorFlagIsFalse() { final ProtocolContext context = new ProtocolContext( - null, - null, - setupContextWithBftExtraData(QbftContext.class, validators, bftExtraData), - Optional.empty()); + null, null, setupContextWithBftExtraData(QbftContext.class, validators, bftExtraData)); when(bftExtraData.getValidators()).thenReturn(validators); assertThat(qbftValidatorsValidationRule.validate(blockHeader, null, context)).isTrue(); } @@ -81,10 +77,7 @@ public void validationFailsIfValidatorsAreNotEmpty() { final ProtocolContext context = new ProtocolContext( - null, - null, - setupContextWithBftExtraData(QbftContext.class, validators, bftExtraData), - Optional.empty()); + null, null, setupContextWithBftExtraData(QbftContext.class, validators, bftExtraData)); when(bftExtraData.getValidators()).thenReturn(validators); assertThat(qbftValidatorsValidationRule.validate(blockHeader, null, context)).isFalse(); } @@ -97,8 +90,7 @@ public void validationFailsIfVoteIsPresent() { new ProtocolContext( null, null, - setupContextWithBftExtraData(QbftContext.class, Collections.emptyList(), bftExtraData), - Optional.empty()); + setupContextWithBftExtraData(QbftContext.class, Collections.emptyList(), bftExtraData)); when(bftExtraData.getValidators()).thenReturn(Collections.emptyList()); when(bftExtraData.getVote()).thenReturn(Optional.of(mock(Vote.class))); assertThat(qbftValidatorsValidationRule.validate(blockHeader, null, context)).isFalse(); diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftBlockHeightManagerTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftBlockHeightManagerTest.java index 12fb5cc486e..daf083c8fbe 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftBlockHeightManagerTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftBlockHeightManagerTest.java @@ -157,8 +157,7 @@ public void setup() { null, null, setupContextWithBftExtraDataEncoder( - QbftContext.class, validators, new QbftExtraDataCodec()), - Optional.empty()); + QbftContext.class, validators, new QbftExtraDataCodec())); // Ensure the created QbftRound has the valid ConsensusRoundIdentifier; when(roundFactory.createNewRound(any(), anyInt())) diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftRoundTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftRoundTest.java index 3dec991276b..3459e9110c9 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftRoundTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/statemachine/QbftRoundTest.java @@ -114,8 +114,7 @@ public void setup() { blockChain, worldStateArchive, setupContextWithBftExtraDataEncoder( - QbftContext.class, emptyList(), new QbftExtraDataCodec()), - Optional.empty()); + QbftContext.class, emptyList(), new QbftExtraDataCodec())); when(messageValidator.validateProposal(any())).thenReturn(true); when(messageValidator.validatePrepare(any())).thenReturn(true); diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalPayloadValidatorTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalPayloadValidatorTest.java index 9185dc11f8d..5e117cc6cf3 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalPayloadValidatorTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalPayloadValidatorTest.java @@ -86,8 +86,7 @@ public void setup() { new ProtocolContext( blockChain, worldStateArchive, - setupContextWithBftExtraDataEncoder(QbftContext.class, emptyList(), bftExtraDataCodec), - Optional.empty()); + setupContextWithBftExtraDataEncoder(QbftContext.class, emptyList(), bftExtraDataCodec)); } @Test @@ -240,7 +239,7 @@ public void validationForCmsFailsWhenCmsFailsValidation() { setupContextWithBftExtraDataEncoder(QbftContext.class, emptyList(), pkiQbftExtraDataCodec); final Bytes cms = Bytes.fromHexStringLenient("0x1"); final ProtocolContext protocolContext = - new ProtocolContext(blockChain, worldStateArchive, qbftContext, Optional.empty()); + new ProtocolContext(blockChain, worldStateArchive, qbftContext); final ProposalPayloadValidator payloadValidator = new ProposalPayloadValidator( @@ -275,7 +274,7 @@ public void validationForCmsPassesWhenCmsIsValid() { setupContextWithBftExtraDataEncoder(QbftContext.class, emptyList(), pkiQbftExtraDataCodec); final Bytes cms = Bytes.fromHexStringLenient("0x1"); final ProtocolContext protocolContext = - new ProtocolContext(blockChain, worldStateArchive, qbftContext, Optional.empty()); + new ProtocolContext(blockChain, worldStateArchive, qbftContext); final ProposalPayloadValidator payloadValidator = new ProposalPayloadValidator( diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalValidatorTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalValidatorTest.java index f2f984473ff..e173208e7f2 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalValidatorTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/ProposalValidatorTest.java @@ -97,8 +97,7 @@ public void setup() { blockChain, worldStateArchive, setupContextWithBftExtraDataEncoder( - QbftContext.class, emptyList(), bftExtraDataEncoder), - Optional.empty()); + QbftContext.class, emptyList(), bftExtraDataEncoder)); // typically tests require the blockValidation to be successful when(blockValidator.validateAndProcessBlock( diff --git a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/RoundChangeMessageValidatorTest.java b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/RoundChangeMessageValidatorTest.java index 9f88c0972e4..fe000758a40 100644 --- a/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/RoundChangeMessageValidatorTest.java +++ b/consensus/qbft/src/test/java/org/hyperledger/besu/consensus/qbft/validation/RoundChangeMessageValidatorTest.java @@ -81,8 +81,7 @@ public void setup() { blockChain, worldStateArchive, setupContextWithBftExtraDataEncoder( - QbftContext.class, emptyList(), bftExtraDataEncoder), - Optional.empty()); + QbftContext.class, emptyList(), bftExtraDataEncoder)); } @Test diff --git a/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcTestMethodsFactory.java b/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcTestMethodsFactory.java index 2a4021c7e96..5df625a4a82 100644 --- a/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcTestMethodsFactory.java +++ b/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcTestMethodsFactory.java @@ -76,7 +76,7 @@ public JsonRpcTestMethodsFactory(final BlockchainImporter importer) { this.blockchain = createInMemoryBlockchain(importer.getGenesisBlock()); this.stateArchive = createInMemoryWorldStateArchive(); this.importer.getGenesisState().writeStateTo(stateArchive.getMutable()); - this.context = new ProtocolContext(blockchain, stateArchive, null, Optional.empty()); + this.context = new ProtocolContext(blockchain, stateArchive, null); final ProtocolSchedule protocolSchedule = importer.getProtocolSchedule(); this.synchronizer = mock(Synchronizer.class); diff --git a/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/EthGetBlockByNumberLatestDesyncIntegrationTest.java b/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/EthGetBlockByNumberLatestDesyncIntegrationTest.java index 6d723844a2d..b9293d25de0 100644 --- a/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/EthGetBlockByNumberLatestDesyncIntegrationTest.java +++ b/ethereum/api/src/integration-test/java/org/hyperledger/besu/ethereum/api/jsonrpc/methods/EthGetBlockByNumberLatestDesyncIntegrationTest.java @@ -67,7 +67,7 @@ public static void setUpOnce() throws Exception { InMemoryKeyValueStorageProvider.createInMemoryBlockchain(importer.getGenesisBlock()); WorldStateArchive state = InMemoryKeyValueStorageProvider.createInMemoryWorldStateArchive(); importer.getGenesisState().writeStateTo(state.getMutable()); - ProtocolContext context = new ProtocolContext(chain, state, null, Optional.empty()); + ProtocolContext context = new ProtocolContext(chain, state, null); for (final Block block : importer.getBlocks()) { final ProtocolSchedule protocolSchedule = importer.getProtocolSchedule(); diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/AbstractEthGraphQLHttpServiceTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/AbstractEthGraphQLHttpServiceTest.java index bd6f39695d8..cb8c253ad3d 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/AbstractEthGraphQLHttpServiceTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/AbstractEthGraphQLHttpServiceTest.java @@ -156,7 +156,7 @@ public void setupTest() throws Exception { final MutableBlockchain blockchain = InMemoryKeyValueStorageProvider.createInMemoryBlockchain(GENESIS_BLOCK); - context = new ProtocolContext(blockchain, stateArchive, null, Optional.empty()); + context = new ProtocolContext(blockchain, stateArchive, null); final BlockchainQueries blockchainQueries = new BlockchainQueries( context.getBlockchain(), diff --git a/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreator.java b/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreator.java index 0f818716e54..d5e693220a9 100644 --- a/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreator.java +++ b/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/AbstractBlockCreator.java @@ -304,8 +304,7 @@ private BlockTransactionSelector.TransactionSelectionResults selectTransactions( dataGasPrice, protocolSpec.getFeeMarket(), protocolSpec.getGasCalculator(), - protocolSpec.getGasLimitCalculator(), - protocolContext.getTransactionSelectorFactory()); + protocolSpec.getGasLimitCalculator()); if (transactions.isPresent()) { return selector.evaluateTransactions(transactions.get()); diff --git a/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/BlockTransactionSelector.java b/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/BlockTransactionSelector.java index 83dd16d5119..9cc17b601d8 100644 --- a/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/BlockTransactionSelector.java +++ b/ethereum/blockcreation/src/main/java/org/hyperledger/besu/ethereum/blockcreation/BlockTransactionSelector.java @@ -23,6 +23,7 @@ import org.hyperledger.besu.ethereum.core.Transaction; import org.hyperledger.besu.ethereum.core.TransactionReceipt; import org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions; +import org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions.TransactionSelectionResult; import org.hyperledger.besu.ethereum.mainnet.AbstractBlockProcessor; import org.hyperledger.besu.ethereum.mainnet.MainnetTransactionProcessor; import org.hyperledger.besu.ethereum.mainnet.TransactionValidationParams; @@ -34,17 +35,13 @@ import org.hyperledger.besu.ethereum.vm.CachingBlockHashLookup; import org.hyperledger.besu.evm.gascalculator.GasCalculator; import org.hyperledger.besu.evm.worldstate.WorldUpdater; -import org.hyperledger.besu.plugin.data.TransactionSelectionResult; import org.hyperledger.besu.plugin.data.TransactionType; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelector; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; import java.util.ArrayList; import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.concurrent.CancellationException; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -74,7 +71,6 @@ * not cleared between executions of buildTransactionListForBlock(). */ public class BlockTransactionSelector { - public static class TransactionValidationResult { private final Transaction transaction; private final ValidationResult validationResult; @@ -222,9 +218,8 @@ public String toTraceLog() { private final FeeMarket feeMarket; private final GasCalculator gasCalculator; private final GasLimitCalculator gasLimitCalculator; - private final TransactionSelector transactionSelector; - private final TransactionSelectionResults transactionSelectionResults = + private final TransactionSelectionResults transactionSelectionResult = new TransactionSelectionResults(); public BlockTransactionSelector( @@ -241,8 +236,7 @@ public BlockTransactionSelector( final Wei dataGasPrice, final FeeMarket feeMarket, final GasCalculator gasCalculator, - final GasLimitCalculator gasLimitCalculator, - final Optional transactionSelectorFactory) { + final GasLimitCalculator gasLimitCalculator) { this.transactionProcessor = transactionProcessor; this.blockchain = blockchain; this.worldState = worldState; @@ -257,10 +251,6 @@ public BlockTransactionSelector( this.feeMarket = feeMarket; this.gasCalculator = gasCalculator; this.gasLimitCalculator = gasLimitCalculator; - this.transactionSelector = - transactionSelectorFactory.isPresent() - ? transactionSelectorFactory.get().create() - : new TransactionSelector() {}; } /* @@ -278,9 +268,9 @@ public TransactionSelectionResults buildTransactionListForBlock() { pendingTransaction -> evaluateTransaction(pendingTransaction, false)); LOG.atTrace() .setMessage("Transaction selection result result {}") - .addArgument(transactionSelectionResults::toTraceLog) + .addArgument(transactionSelectionResult::toTraceLog) .log(); - return transactionSelectionResults; + return transactionSelectionResult; } /** @@ -291,7 +281,7 @@ public TransactionSelectionResults buildTransactionListForBlock() { */ public TransactionSelectionResults evaluateTransactions(final List transactions) { transactions.forEach(transaction -> evaluateTransaction(transaction, true)); - return transactionSelectionResults; + return transactionSelectionResult; } /* @@ -346,43 +336,22 @@ private TransactionSelectionResult evaluateTransaction( dataGasPrice); if (!effectiveResult.isInvalid()) { - - final long gasUsedByTransaction = - transaction.getGasLimit() - effectiveResult.getGasRemaining(); - - final long cumulativeGasUsed = - transactionSelectionResults.getCumulativeGasUsed() + gasUsedByTransaction; - - final TransactionReceipt receipt = - transactionReceiptFactory.create( - transaction.getType(), effectiveResult, worldState, cumulativeGasUsed); - - final TransactionSelectionResult transactionSelectionResult = - transactionSelector.selectTransaction(transaction, receipt); - - if (transactionSelectionResult == TransactionSelectionResult.CONTINUE) { - final long dataGasUsed = gasCalculator.dataGasCost(transaction.getBlobCount()); - - transactionSelectionResults.update(transaction, receipt, gasUsedByTransaction, dataGasUsed); - - worldStateUpdater.commit(); - LOG.atTrace() - .setMessage("Selected {} for block creation") - .addArgument(transaction::toTraceLog) - .log(); - } - - return transactionSelectionResult; + worldStateUpdater.commit(); + LOG.atTrace() + .setMessage("Selected {} for block creation") + .addArgument(transaction::toTraceLog) + .log(); + updateTransactionResultTracking(transaction, effectiveResult); } else { - final boolean isIncorrectNonce = isIncorrectNonce(effectiveResult.getValidationResult()); if (!isIncorrectNonce || reportFutureNonceTransactionsAsInvalid) { - transactionSelectionResults.updateWithInvalidTransaction( + transactionSelectionResult.updateWithInvalidTransaction( transaction, effectiveResult.getValidationResult()); } return transactionSelectionResultForInvalidResult( transaction, effectiveResult.getValidationResult()); } + return TransactionSelectionResult.CONTINUE; } private boolean transactionDataPriceBelowMin(final Transaction transaction) { @@ -449,6 +418,28 @@ private boolean isTransientValidationError(final TransactionInvalidReason invali || invalidReason.equals(TransactionInvalidReason.NONCE_TOO_HIGH); } + /* + Responsible for updating the state maintained between transaction validation (i.e. receipts, + cumulative gas, world state root hash.). + */ + private void updateTransactionResultTracking( + final Transaction transaction, final TransactionProcessingResult result) { + + final long gasUsedByTransaction = transaction.getGasLimit() - result.getGasRemaining(); + + final long cumulativeGasUsed = + transactionSelectionResult.getCumulativeGasUsed() + gasUsedByTransaction; + + final long dataGasUsed = gasCalculator.dataGasCost(transaction.getBlobCount()); + + transactionSelectionResult.update( + transaction, + transactionReceiptFactory.create( + transaction.getType(), result, worldState, cumulativeGasUsed), + gasUsedByTransaction, + dataGasUsed); + } + private boolean isIncorrectNonce(final ValidationResult result) { return result.getInvalidReason().equals(TransactionInvalidReason.NONCE_TOO_HIGH); } @@ -458,17 +449,17 @@ private boolean transactionTooLargeForBlock(final Transaction transaction) { if (dataGasUsed > gasLimitCalculator.currentDataGasLimit() - - transactionSelectionResults.getCumulativeDataGasUsed()) { + - transactionSelectionResult.getCumulativeDataGasUsed()) { return true; } return transaction.getGasLimit() + dataGasUsed - > processableBlockHeader.getGasLimit() - transactionSelectionResults.getCumulativeGasUsed(); + > processableBlockHeader.getGasLimit() - transactionSelectionResult.getCumulativeGasUsed(); } private boolean blockOccupancyAboveThreshold() { final double gasAvailable = processableBlockHeader.getGasLimit(); - final double gasUsed = transactionSelectionResults.getCumulativeGasUsed(); + final double gasUsed = transactionSelectionResult.getCumulativeGasUsed(); final double occupancyRatio = gasUsed / gasAvailable; LOG.trace( "Min block occupancy ratio {}, gas used {}, available {}, used/available {}", 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 dbc4d1bb930..b52cdab9a8e 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 @@ -56,10 +56,8 @@ import org.hyperledger.besu.evm.internal.EvmConfiguration; import org.hyperledger.besu.evm.worldstate.WorldState; import org.hyperledger.besu.metrics.noop.NoOpMetricsSystem; -import org.hyperledger.besu.plugin.data.TransactionSelectionResult; import org.hyperledger.besu.plugin.data.TransactionType; import org.hyperledger.besu.plugin.services.MetricsSystem; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelector; import org.hyperledger.besu.testutil.TestClock; import java.math.BigInteger; @@ -82,15 +80,6 @@ public abstract class AbstractBlockTransactionSelectorTest { protected static final KeyPair keyPair = SignatureAlgorithmFactory.getInstance().generateKeyPair(); - public static final TransactionSelector DO_NOTHING_TRANSACTION_SELECTOR = - new TransactionSelector() { - @Override - public TransactionSelectionResult selectTransaction( - final org.hyperledger.besu.plugin.data.Transaction transaction, - final org.hyperledger.besu.plugin.data.TransactionReceipt receipt) { - return TransactionSelectionResult.CONTINUE; - } - }; protected final MetricsSystem metricsSystem = new NoOpMetricsSystem(); protected final Blockchain blockchain = new ReferenceTestBlockchain(); @@ -273,8 +262,7 @@ public void useSingleGasSpaceForAllTransactions() { Wei.ZERO, FeeMarket.london(0L), new LondonGasCalculator(), - GasLimitCalculator.constant(), - Optional.empty()); + GasLimitCalculator.constant()); // this should fill up all the block space final Transaction fillingLegacyTx = @@ -479,8 +467,7 @@ protected BlockTransactionSelector createBlockSelector( dataGasPrice, getFeeMarket(), new LondonGasCalculator(), - GasLimitCalculator.constant(), - Optional.empty()); + GasLimitCalculator.constant()); return selector; } diff --git a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/BlockMinerTest.java b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/BlockMinerTest.java index feb784f89e0..e687ab0b8b2 100644 --- a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/BlockMinerTest.java +++ b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/BlockMinerTest.java @@ -54,7 +54,7 @@ public void blockCreatedIsAddedToBlockChain() throws InterruptedException { new Block( headerBuilder.buildHeader(), new BlockBody(Lists.newArrayList(), Lists.newArrayList())); - final ProtocolContext protocolContext = new ProtocolContext(null, null, null, Optional.empty()); + final ProtocolContext protocolContext = new ProtocolContext(null, null, null); final PoWBlockCreator blockCreator = mock(PoWBlockCreator.class); final Function blockCreatorSupplier = @@ -95,7 +95,7 @@ public void failureToImportDoesNotTriggerObservers() throws InterruptedException new Block( headerBuilder.buildHeader(), new BlockBody(Lists.newArrayList(), Lists.newArrayList())); - final ProtocolContext protocolContext = new ProtocolContext(null, null, null, Optional.empty()); + final ProtocolContext protocolContext = new ProtocolContext(null, null, null); final PoWBlockCreator blockCreator = mock(PoWBlockCreator.class); final Function blockCreatorSupplier = diff --git a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java index 8c0fc460dc2..1a8a80a8e25 100644 --- a/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java +++ b/ethereum/core/src/main/java/org/hyperledger/besu/ethereum/ProtocolContext.java @@ -18,7 +18,6 @@ import org.hyperledger.besu.ethereum.core.Synchronizer; import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; import org.hyperledger.besu.ethereum.worldstate.WorldStateArchive; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; import java.util.Optional; @@ -31,7 +30,6 @@ public class ProtocolContext { private final MutableBlockchain blockchain; private final WorldStateArchive worldStateArchive; private final ConsensusContext consensusContext; - private final Optional transactionSelectorFactory; private Optional synchronizer; @@ -39,32 +37,21 @@ public ProtocolContext( final MutableBlockchain blockchain, final WorldStateArchive worldStateArchive, final ConsensusContext consensusContext) { - this(blockchain, worldStateArchive, consensusContext, Optional.empty()); - } - - public ProtocolContext( - final MutableBlockchain blockchain, - final WorldStateArchive worldStateArchive, - final ConsensusContext consensusContext, - final Optional transactionSelectorFactory) { this.blockchain = blockchain; this.worldStateArchive = worldStateArchive; this.consensusContext = consensusContext; this.synchronizer = Optional.empty(); - this.transactionSelectorFactory = transactionSelectorFactory; } public static ProtocolContext init( final MutableBlockchain blockchain, final WorldStateArchive worldStateArchive, final ProtocolSchedule protocolSchedule, - final ConsensusContextFactory consensusContextFactory, - final Optional transactionSelectorFactory) { + final ConsensusContextFactory consensusContextFactory) { return new ProtocolContext( blockchain, worldStateArchive, - consensusContextFactory.create(blockchain, worldStateArchive, protocolSchedule), - transactionSelectorFactory); + consensusContextFactory.create(blockchain, worldStateArchive, protocolSchedule)); } public Optional getSynchronizer() { @@ -92,8 +79,4 @@ public Optional safeConsensusContext(final Class .filter(c -> klass.isAssignableFrom(c.getClass())) .map(klass::cast); } - - public Optional getTransactionSelectorFactory() { - return transactionSelectorFactory; - } } 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 5b9fc1fb01a..e2f40e81280 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 @@ -48,7 +48,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Optional; import com.google.common.base.Charsets; import com.google.common.io.Resources; @@ -152,8 +151,7 @@ private static ProtocolContext mainnetProtocolContextProvider( public C as(final Class klass) { return null; } - }, - Optional.empty()); + }); } private static BlockchainSetupUtil create( 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 e712139f29c..c2903e92fef 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 @@ -34,7 +34,6 @@ import org.hyperledger.besu.services.kvstore.InMemoryKeyValueStorage; import java.math.BigInteger; -import java.util.Optional; import java.util.function.Function; public class ExecutionContextTestFixture { @@ -62,7 +61,7 @@ keyValueStorage, new MainnetBlockHeaderFunctions()), 0); this.stateArchive = createInMemoryWorldStateArchive(); this.protocolSchedule = protocolSchedule; - this.protocolContext = new ProtocolContext(blockchain, stateArchive, null, Optional.empty()); + this.protocolContext = new ProtocolContext(blockchain, stateArchive, null); genesisState.writeStateTo(stateArchive.getMutable()); } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/bonsai/AbstractIsolationTests.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/bonsai/AbstractIsolationTests.java index 79c11099e52..9e6bef815d8 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/bonsai/AbstractIsolationTests.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/bonsai/AbstractIsolationTests.java @@ -143,7 +143,7 @@ public void createStorage() { null); var ws = archive.getMutable(); genesisState.writeStateTo(ws); - protocolContext = new ProtocolContext(blockchain, archive, null, Optional.empty()); + protocolContext = new ProtocolContext(blockchain, archive, null); } // storage provider which uses a temporary directory based rocksdb diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransactions.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransactions.java index b8474d3d50b..1b00e82f64d 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransactions.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/PendingTransactions.java @@ -20,7 +20,6 @@ import org.hyperledger.besu.ethereum.core.Transaction; import org.hyperledger.besu.ethereum.mainnet.feemarket.FeeMarket; import org.hyperledger.besu.evm.account.Account; -import org.hyperledger.besu.plugin.data.TransactionSelectionResult; import java.util.Collection; import java.util.List; @@ -86,6 +85,12 @@ default void signalInvalidAndRemoveDependentTransactions(final Transaction trans boolean isLocalSender(Address sender); + enum TransactionSelectionResult { + DELETE_TRANSACTION_AND_CONTINUE, + CONTINUE, + COMPLETE_OPERATION + } + @FunctionalInterface interface TransactionSelector { TransactionSelectionResult evaluateTransaction(Transaction transaction); diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsSorter.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsSorter.java index 1b925086b5e..530175934ed 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsSorter.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsSorter.java @@ -36,7 +36,6 @@ import org.hyperledger.besu.evm.account.Account; import org.hyperledger.besu.evm.account.AccountState; import org.hyperledger.besu.metrics.BesuMetricCategory; -import org.hyperledger.besu.plugin.data.TransactionSelectionResult; import org.hyperledger.besu.plugin.services.MetricsSystem; import org.hyperledger.besu.plugin.services.metrics.Counter; import org.hyperledger.besu.plugin.services.metrics.LabelledMetric; diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java index 25ff8ab4b46..a2cc12dc329 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/AbstractBlockPropagationManagerTest.java @@ -65,7 +65,6 @@ import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.function.Supplier; @@ -105,8 +104,7 @@ protected void setup(final DataStorageFormat dataStorageFormat) { new ProtocolContext( blockchain, tempProtocolContext.getWorldStateArchive(), - tempProtocolContext.getConsensusContext(ConsensusContext.class), - Optional.empty()); + tempProtocolContext.getConsensusContext(ConsensusContext.class)); ethProtocolManager = EthProtocolManagerTestUtil.create( protocolSchedule, diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java index 29d9baca5e0..495cbfd203d 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java @@ -40,7 +40,6 @@ import java.util.Arrays; import java.util.Collection; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.junit.After; @@ -81,7 +80,7 @@ public void setup() { final ProtocolSchedule protocolSchedule = ProtocolScheduleFixture.MAINNET; final ProtocolContext protocolContext = - new ProtocolContext(localBlockchain, localWorldState, null, Optional.empty()); + new ProtocolContext(localBlockchain, localWorldState, null); ethProtocolManager = EthProtocolManagerTestUtil.create( protocolSchedule, diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java index 74cddc5e569..b3abf90364a 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java @@ -45,7 +45,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @@ -161,7 +160,7 @@ public void searchesAgainstNetwork() { final EthContext ethContext = ethProtocolManager.ethContext(); final ProtocolContext protocolContext = - new ProtocolContext(localBlockchain, worldStateArchive, null, Optional.empty()); + new ProtocolContext(localBlockchain, worldStateArchive, null); final EthTask task = DetermineCommonAncestorTask.create( diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java index 8e2fd6cbae0..2976facbe6c 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskTest.java @@ -54,7 +54,6 @@ import org.hyperledger.besu.util.ExceptionUtils; import java.util.List; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicReference; @@ -87,8 +86,7 @@ public void setup() { mock(TransactionPool.class), EthProtocolConfiguration.defaultConfig()); ethContext = ethProtocolManager.ethContext(); - protocolContext = - new ProtocolContext(localBlockchain, worldStateArchive, null, Optional.empty()); + protocolContext = new ProtocolContext(localBlockchain, worldStateArchive, null); } @Test 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 111fa072297..914536960e5 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 @@ -123,7 +123,7 @@ public TestNode( final WorldStateArchive worldStateArchive = createInMemoryWorldStateArchive(); genesisState.writeStateTo(worldStateArchive.getMutable()); final ProtocolContext protocolContext = - new ProtocolContext(blockchain, worldStateArchive, null, Optional.empty()); + new ProtocolContext(blockchain, worldStateArchive, null); final SyncState syncState = mock(SyncState.class); final SynchronizerConfiguration syncConfig = mock(SynchronizerConfiguration.class); diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayeredPendingTransactionsTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayeredPendingTransactionsTest.java index 1fe331ef13b..f864eb1dc25 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayeredPendingTransactionsTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayeredPendingTransactionsTest.java @@ -15,15 +15,15 @@ package org.hyperledger.besu.ethereum.eth.transactions.layered; import static org.assertj.core.api.Assertions.assertThat; +import static org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions.TransactionSelectionResult.COMPLETE_OPERATION; +import static org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions.TransactionSelectionResult.CONTINUE; +import static org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions.TransactionSelectionResult.DELETE_TRANSACTION_AND_CONTINUE; import static org.hyperledger.besu.ethereum.eth.transactions.TransactionAddedResult.ADDED; import static org.hyperledger.besu.ethereum.eth.transactions.TransactionAddedResult.ALREADY_KNOWN; import static org.hyperledger.besu.ethereum.eth.transactions.TransactionAddedResult.NONCE_TOO_FAR_IN_FUTURE_FOR_SENDER; import static org.hyperledger.besu.ethereum.eth.transactions.TransactionAddedResult.REJECTED_UNDERPRICED_REPLACEMENT; import static org.hyperledger.besu.ethereum.eth.transactions.layered.TransactionsLayer.RemovalReason.DROPPED; import static org.hyperledger.besu.ethereum.eth.transactions.layered.TransactionsLayer.RemovalReason.REPLACED; -import static org.hyperledger.besu.plugin.data.TransactionSelectionResult.COMPLETE_OPERATION; -import static org.hyperledger.besu.plugin.data.TransactionSelectionResult.CONTINUE; -import static org.hyperledger.besu.plugin.data.TransactionSelectionResult.DELETE_TRANSACTION_AND_CONTINUE; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsTestBase.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsTestBase.java index 602cccdb121..c138779373d 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsTestBase.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/sorter/AbstractPendingTransactionsTestBase.java @@ -15,11 +15,11 @@ package org.hyperledger.besu.ethereum.eth.transactions.sorter; import static org.assertj.core.api.Assertions.assertThat; +import static org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions.TransactionSelectionResult.CONTINUE; +import static org.hyperledger.besu.ethereum.eth.transactions.PendingTransactions.TransactionSelectionResult.DELETE_TRANSACTION_AND_CONTINUE; import static org.hyperledger.besu.ethereum.eth.transactions.TransactionAddedResult.ADDED; import static org.hyperledger.besu.ethereum.eth.transactions.TransactionAddedResult.ALREADY_KNOWN; import static org.hyperledger.besu.ethereum.eth.transactions.TransactionAddedResult.REJECTED_UNDERPRICED_REPLACEMENT; -import static org.hyperledger.besu.plugin.data.TransactionSelectionResult.CONTINUE; -import static org.hyperledger.besu.plugin.data.TransactionSelectionResult.DELETE_TRANSACTION_AND_CONTINUE; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; @@ -43,7 +43,6 @@ import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolConfiguration; import org.hyperledger.besu.evm.account.Account; import org.hyperledger.besu.metrics.StubMetricsSystem; -import org.hyperledger.besu.plugin.data.TransactionSelectionResult; import org.hyperledger.besu.testutil.TestClock; import java.time.Clock; @@ -315,7 +314,7 @@ public void selectTransactionsUntilSelectorRequestsNoMore() { transactions.selectTransactions( transaction -> { parsedTransactions.add(transaction); - return TransactionSelectionResult.COMPLETE_OPERATION; + return PendingTransactions.TransactionSelectionResult.COMPLETE_OPERATION; }); assertThat(parsedTransactions.size()).isEqualTo(1); diff --git a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/BlockchainReferenceTestCaseSpec.java b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/BlockchainReferenceTestCaseSpec.java index 0cdb6854853..55eec26fd2f 100644 --- a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/BlockchainReferenceTestCaseSpec.java +++ b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/BlockchainReferenceTestCaseSpec.java @@ -106,8 +106,7 @@ public BlockchainReferenceTestCaseSpec( this.worldStateArchive = buildWorldStateArchive(accounts); this.blockchain = buildBlockchain(genesisBlockHeader); this.sealEngine = sealEngine; - this.protocolContext = - new ProtocolContext(this.blockchain, this.worldStateArchive, null, Optional.empty()); + this.protocolContext = new ProtocolContext(this.blockchain, this.worldStateArchive, null); } public String getNetwork() { diff --git a/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java b/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java index bbfb1fba786..62c8b031a2c 100644 --- a/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java +++ b/ethereum/retesteth/src/main/java/org/hyperledger/besu/ethereum/retesteth/RetestethContext.java @@ -168,7 +168,7 @@ private boolean buildContext( genesisState.writeStateTo(worldState); blockchain = createInMemoryBlockchain(genesisState.getBlock()); - protocolContext = new ProtocolContext(blockchain, worldStateArchive, null, Optional.empty()); + protocolContext = new ProtocolContext(blockchain, worldStateArchive, null); blockchainQueries = new BlockchainQueries(blockchain, worldStateArchive, ethScheduler); diff --git a/plugin-api/build.gradle b/plugin-api/build.gradle index 8612d449d07..a465d64b0f6 100644 --- a/plugin-api/build.gradle +++ b/plugin-api/build.gradle @@ -69,7 +69,7 @@ Calculated : ${currentHash} tasks.register('checkAPIChanges', FileStateChecker) { description = "Checks that the API for the Plugin-API project does not change without deliberate thought" files = sourceSets.main.allJava.files - knownHash = 'p757auCgPIb5l/MEk8XPpJOkvEabVmkWUqEcq+NRtS4=' + knownHash = '3/qsZ9+jA10YbctpPtQ5Rn7cvYHwKRWBv6jXa+7WQMY=' } check.dependsOn('checkAPIChanges') diff --git a/plugin-api/src/main/java/org/hyperledger/besu/plugin/data/TransactionSelectionResult.java b/plugin-api/src/main/java/org/hyperledger/besu/plugin/data/TransactionSelectionResult.java deleted file mode 100644 index 40e7b469151..00000000000 --- a/plugin-api/src/main/java/org/hyperledger/besu/plugin/data/TransactionSelectionResult.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright Hyperledger Besu Contributors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.hyperledger.besu.plugin.data; - -/** Enum for the transaction selection result */ -public enum TransactionSelectionResult { - /** remove transaction from pool and continue block building */ - DELETE_TRANSACTION_AND_CONTINUE, - /** continue block building */ - CONTINUE, - /** stop block building */ - COMPLETE_OPERATION -} diff --git a/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/TransactionSelectionService.java b/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/TransactionSelectionService.java deleted file mode 100644 index 1a46e71f306..00000000000 --- a/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/TransactionSelectionService.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Hyperledger Besu Contributors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.hyperledger.besu.plugin.services; - -import org.hyperledger.besu.plugin.Unstable; -import org.hyperledger.besu.plugin.services.txselection.TransactionSelectorFactory; - -import java.util.Optional; - -/** Transaction selection service interface */ -@Unstable -public interface TransactionSelectionService extends BesuService { - - /** - * Returns the (Optional) transaction selector factory - * - * @return the transaction selector factory - */ - Optional get(); - - /** - * Registers the transaction selector factory with the service - * - * @param transactionSelectorFactory transaction selector factory to be used - */ - void registerTransactionSelectorFactory(TransactionSelectorFactory transactionSelectorFactory); -} diff --git a/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelector.java b/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelector.java deleted file mode 100644 index eb416cf9aa8..00000000000 --- a/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelector.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright Hyperledger Besu Contributors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.hyperledger.besu.plugin.services.txselection; - -import org.hyperledger.besu.plugin.Unstable; -import org.hyperledger.besu.plugin.data.Transaction; -import org.hyperledger.besu.plugin.data.TransactionReceipt; -import org.hyperledger.besu.plugin.data.TransactionSelectionResult; - -/** Interface for the transaction selector */ -@Unstable -public interface TransactionSelector { - - /** - * Method called to decide whether a transaction is added to a block. The method can also indicate - * that no further transactions can be added to the block. - * - * @param transaction candidate transaction - * @param receipt receipt for the candidate transaction - * @return TransactionSelectionResult that indicates whether to include the transaction - */ - default TransactionSelectionResult selectTransaction( - final Transaction transaction, final TransactionReceipt receipt) { - return TransactionSelectionResult.CONTINUE; - } -} diff --git a/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelectorFactory.java b/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelectorFactory.java deleted file mode 100644 index 1d4234acc9e..00000000000 --- a/plugin-api/src/main/java/org/hyperledger/besu/plugin/services/txselection/TransactionSelectorFactory.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright Hyperledger Besu Contributors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on - * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.hyperledger.besu.plugin.services.txselection; - -import org.hyperledger.besu.plugin.Unstable; - -/** Interface for a factory that creates transaction selectors */ -@Unstable -public interface TransactionSelectorFactory { - - /** - * Create a transaction selector - * - * @return the transaction selector - */ - TransactionSelector create(); -}