use of org.hyperledger.besu.ethereum.blockcreation.PoWMiningCoordinator in project besu by hyperledger.
the class MainnetBesuControllerBuilder method createMiningCoordinator.
@Override
protected MiningCoordinator createMiningCoordinator(final ProtocolSchedule protocolSchedule, final ProtocolContext protocolContext, final TransactionPool transactionPool, final MiningParameters miningParameters, final SyncState syncState, final EthProtocolManager ethProtocolManager) {
final PoWMinerExecutor executor = new PoWMinerExecutor(protocolContext, protocolSchedule, transactionPool.getPendingTransactions(), miningParameters, new DefaultBlockScheduler(MainnetBlockHeaderValidator.MINIMUM_SECONDS_SINCE_PARENT, MainnetBlockHeaderValidator.TIMESTAMP_TOLERANCE_S, clock), epochCalculator, miningParameters.getPowJobTimeToLive(), miningParameters.getMaxOmmerDepth());
final PoWMiningCoordinator miningCoordinator = new PoWMiningCoordinator(protocolContext.getBlockchain(), executor, syncState, miningParameters.getRemoteSealersLimit(), miningParameters.getRemoteSealersTimeToLive());
miningCoordinator.addMinedBlockObserver(ethProtocolManager);
miningCoordinator.setStratumMiningEnabled(miningParameters.isStratumMiningEnabled());
if (miningParameters.isMiningEnabled()) {
miningCoordinator.enable();
}
return miningCoordinator;
}
use of org.hyperledger.besu.ethereum.blockcreation.PoWMiningCoordinator in project besu by hyperledger.
the class AbstractJsonRpcHttpServiceTest method getRpcMethods.
protected Map<String, JsonRpcMethod> getRpcMethods(final JsonRpcConfiguration config, final BlockchainSetupUtil blockchainSetupUtil) {
final ProtocolContext protocolContext = mock(ProtocolContext.class);
final Synchronizer synchronizerMock = mock(Synchronizer.class);
final P2PNetwork peerDiscoveryMock = mock(P2PNetwork.class);
final TransactionPool transactionPoolMock = mock(TransactionPool.class);
final PoWMiningCoordinator miningCoordinatorMock = mock(PoWMiningCoordinator.class);
when(transactionPoolMock.addLocalTransaction(any(Transaction.class))).thenReturn(ValidationResult.valid());
// nonce too low tests uses a tx with nonce=16
when(transactionPoolMock.addLocalTransaction(argThat(tx -> tx.getNonce() == 16))).thenReturn(ValidationResult.invalid(TransactionInvalidReason.NONCE_TOO_LOW));
final GasPricePendingTransactionsSorter pendingTransactionsMock = mock(GasPricePendingTransactionsSorter.class);
when(transactionPoolMock.getPendingTransactions()).thenReturn(pendingTransactionsMock);
final PrivacyParameters privacyParameters = mock(PrivacyParameters.class);
final BlockchainQueries blockchainQueries = new BlockchainQueries(blockchainSetupUtil.getBlockchain(), blockchainSetupUtil.getWorldArchive());
final FilterIdGenerator filterIdGenerator = mock(FilterIdGenerator.class);
final FilterRepository filterRepository = new FilterRepository();
when(filterIdGenerator.nextId()).thenReturn("0x1");
filterManager = new FilterManagerBuilder().blockchainQueries(blockchainQueries).transactionPool(transactionPoolMock).filterIdGenerator(filterIdGenerator).filterRepository(filterRepository).build();
final Set<Capability> supportedCapabilities = new HashSet<>();
supportedCapabilities.add(EthProtocol.ETH62);
supportedCapabilities.add(EthProtocol.ETH63);
final NatService natService = new NatService(Optional.empty());
return new JsonRpcMethodsFactory().methods(CLIENT_VERSION, NETWORK_ID, new StubGenesisConfigOptions(), peerDiscoveryMock, blockchainQueries, synchronizerMock, blockchainSetupUtil.getProtocolSchedule(), protocolContext, filterManager, transactionPoolMock, miningCoordinatorMock, new NoOpMetricsSystem(), supportedCapabilities, Optional.empty(), Optional.empty(), JSON_RPC_APIS, privacyParameters, config, mock(WebSocketConfiguration.class), mock(MetricsConfiguration.class), natService, new HashMap<>(), folder.getRoot().toPath(), mock(EthPeers.class));
}
use of org.hyperledger.besu.ethereum.blockcreation.PoWMiningCoordinator in project besu by hyperledger.
the class GraphQLHttpServiceHostWhitelistTest method createGraphQLHttpService.
private GraphQLHttpService createGraphQLHttpService() throws Exception {
final BlockchainQueries blockchainQueries = Mockito.mock(BlockchainQueries.class);
final Synchronizer synchronizer = Mockito.mock(Synchronizer.class);
final PoWMiningCoordinator miningCoordinatorMock = Mockito.mock(PoWMiningCoordinator.class);
final Map<GraphQLContextType, Object> graphQLContextMap = Map.of(GraphQLContextType.BLOCKCHAIN_QUERIES, blockchainQueries, GraphQLContextType.TRANSACTION_POOL, Mockito.mock(TransactionPool.class), GraphQLContextType.MINING_COORDINATOR, miningCoordinatorMock, GraphQLContextType.SYNCHRONIZER, synchronizer);
final Set<Capability> supportedCapabilities = new HashSet<>();
supportedCapabilities.add(EthProtocol.ETH62);
supportedCapabilities.add(EthProtocol.ETH63);
final GraphQLDataFetchers dataFetchers = new GraphQLDataFetchers(supportedCapabilities);
final GraphQL graphQL = GraphQLProvider.buildGraphQL(dataFetchers);
return new GraphQLHttpService(vertx, folder.newFolder().toPath(), graphQLConfig, graphQL, graphQLContextMap, Mockito.mock(EthScheduler.class));
}
use of org.hyperledger.besu.ethereum.blockcreation.PoWMiningCoordinator in project besu by hyperledger.
the class StratumServerTest method stratumServerWithMocks.
private StratumServer stratumServerWithMocks(final ObservableMetricsSystem metrics) {
PoWMiningCoordinator mockPoW = Mockito.when(Mockito.mock(PoWMiningCoordinator.class).getEpochCalculator()).thenReturn(new EpochCalculator.DefaultEpochCalculator()).getMock();
StratumServer ss = new StratumServer(null, mockPoW, 0, "lo", "", metrics) {
@Override
public CompletableFuture<?> start() {
this.started.set(true);
return null;
}
};
ss.start();
return ss;
}
use of org.hyperledger.besu.ethereum.blockcreation.PoWMiningCoordinator in project besu by hyperledger.
the class JsonRpcTestMethodsFactory method methods.
public Map<String, JsonRpcMethod> methods() {
final P2PNetwork peerDiscovery = mock(P2PNetwork.class);
final EthPeers ethPeers = mock(EthPeers.class);
final TransactionPool transactionPool = mock(TransactionPool.class);
final PoWMiningCoordinator miningCoordinator = mock(PoWMiningCoordinator.class);
final ObservableMetricsSystem metricsSystem = new NoOpMetricsSystem();
final Optional<AccountLocalConfigPermissioningController> accountWhitelistController = Optional.of(mock(AccountLocalConfigPermissioningController.class));
final Optional<NodeLocalConfigPermissioningController> nodeWhitelistController = Optional.of(mock(NodeLocalConfigPermissioningController.class));
final PrivacyParameters privacyParameters = mock(PrivacyParameters.class);
final FilterManager filterManager = new FilterManagerBuilder().blockchainQueries(blockchainQueries).transactionPool(transactionPool).privacyParameters(privacyParameters).build();
final JsonRpcConfiguration jsonRpcConfiguration = mock(JsonRpcConfiguration.class);
final WebSocketConfiguration webSocketConfiguration = mock(WebSocketConfiguration.class);
final MetricsConfiguration metricsConfiguration = mock(MetricsConfiguration.class);
final NatService natService = new NatService(Optional.empty());
final List<String> apis = new ArrayList<>();
apis.add(RpcApis.ETH.name());
apis.add(RpcApis.NET.name());
apis.add(RpcApis.WEB3.name());
apis.add(RpcApis.PRIV.name());
apis.add(RpcApis.DEBUG.name());
final Path dataDir = mock(Path.class);
return new JsonRpcMethodsFactory().methods(CLIENT_VERSION, NETWORK_ID, new StubGenesisConfigOptions(), peerDiscovery, blockchainQueries, synchronizer, importer.getProtocolSchedule(), context, filterManager, transactionPool, miningCoordinator, metricsSystem, new HashSet<>(), accountWhitelistController, nodeWhitelistController, apis, privacyParameters, jsonRpcConfiguration, webSocketConfiguration, metricsConfiguration, natService, new HashMap<>(), dataDir, ethPeers);
}
Aggregations