use of org.hyperledger.besu.ethereum.api.jsonrpc.methods.JsonRpcMethodsFactory in project besu by hyperledger.
the class RunnerBuilder method jsonRpcMethods.
private Map<String, JsonRpcMethod> jsonRpcMethods(final ProtocolSchedule protocolSchedule, final ProtocolContext protocolContext, final BesuController besuController, final P2PNetwork network, final BlockchainQueries blockchainQueries, final Synchronizer synchronizer, final TransactionPool transactionPool, final MiningCoordinator miningCoordinator, final ObservableMetricsSystem metricsSystem, final Set<Capability> supportedCapabilities, final Collection<String> jsonRpcApis, final FilterManager filterManager, final Optional<AccountLocalConfigPermissioningController> accountAllowlistController, final Optional<NodeLocalConfigPermissioningController> nodeAllowlistController, final PrivacyParameters privacyParameters, final JsonRpcConfiguration jsonRpcConfiguration, final WebSocketConfiguration webSocketConfiguration, final MetricsConfiguration metricsConfiguration, final NatService natService, final Map<String, BesuPlugin> namedPlugins, final Path dataDir, final RpcEndpointServiceImpl rpcEndpointServiceImpl) {
final Map<String, JsonRpcMethod> methods = new JsonRpcMethodsFactory().methods(BesuInfo.nodeName(identityString), ethNetworkConfig.getNetworkId(), besuController.getGenesisConfigOptions(), network, blockchainQueries, synchronizer, protocolSchedule, protocolContext, filterManager, transactionPool, miningCoordinator, metricsSystem, supportedCapabilities, accountAllowlistController, nodeAllowlistController, jsonRpcApis, privacyParameters, jsonRpcConfiguration, webSocketConfiguration, metricsConfiguration, natService, namedPlugins, dataDir, besuController.getProtocolManager().ethContext().getEthPeers());
methods.putAll(besuController.getAdditionalJsonRpcMethods(jsonRpcApis));
var pluginMethods = rpcEndpointServiceImpl.getPluginMethods(jsonRpcConfiguration.getRpcApis());
var overriddenMethods = methods.keySet().stream().filter(pluginMethods::containsKey).collect(Collectors.toList());
if (overriddenMethods.size() > 0) {
throw new RuntimeException("You can not override built in methods " + overriddenMethods);
}
methods.putAll(pluginMethods);
return methods;
}
use of org.hyperledger.besu.ethereum.api.jsonrpc.methods.JsonRpcMethodsFactory in project besu by hyperledger.
the class JsonRpcHttpServiceLoginTest method initServerAndClient.
@BeforeClass
public static void initServerAndClient() throws Exception {
peerDiscoveryMock = mock(P2PNetwork.class);
blockchainQueries = mock(BlockchainQueries.class);
synchronizer = mock(Synchronizer.class);
final Set<Capability> supportedCapabilities = new HashSet<>();
supportedCapabilities.add(EthProtocol.ETH62);
supportedCapabilities.add(EthProtocol.ETH63);
final StubGenesisConfigOptions genesisConfigOptions = new StubGenesisConfigOptions().constantinopleBlock(0).chainId(CHAIN_ID);
rpcMethods = spy(new JsonRpcMethodsFactory().methods(CLIENT_VERSION, CHAIN_ID, genesisConfigOptions, peerDiscoveryMock, blockchainQueries, synchronizer, MainnetProtocolSchedule.fromConfig(genesisConfigOptions), mock(ProtocolContext.class), mock(FilterManager.class), mock(TransactionPool.class), mock(PoWMiningCoordinator.class), new NoOpMetricsSystem(), supportedCapabilities, Optional.empty(), Optional.empty(), JSON_RPC_APIS, mock(PrivacyParameters.class), mock(JsonRpcConfiguration.class), mock(WebSocketConfiguration.class), mock(MetricsConfiguration.class), natService, new HashMap<>(), folder.getRoot().toPath(), mock(EthPeers.class)));
service = createJsonRpcHttpService();
jwtAuth = service.authenticationService.get().getJwtAuthProvider();
service.start().join();
// Build an OkHttp client.
client = new OkHttpClient();
baseUrl = service.url();
}
use of org.hyperledger.besu.ethereum.api.jsonrpc.methods.JsonRpcMethodsFactory in project besu by hyperledger.
the class JsonRpcHttpServiceRpcApisTest method createJsonRpcHttpServiceWithRpcApis.
private JsonRpcHttpService createJsonRpcHttpServiceWithRpcApis(final JsonRpcConfiguration config) throws Exception {
final Set<Capability> supportedCapabilities = new HashSet<>();
supportedCapabilities.add(EthProtocol.ETH62);
supportedCapabilities.add(EthProtocol.ETH63);
final Map<String, JsonRpcMethod> rpcMethods = spy(new JsonRpcMethodsFactory().methods(CLIENT_VERSION, NETWORK_ID, new StubGenesisConfigOptions(), mock(P2PNetwork.class), blockchainQueries, mock(Synchronizer.class), ProtocolScheduleFixture.MAINNET, mock(ProtocolContext.class), mock(FilterManager.class), mock(TransactionPool.class), mock(PoWMiningCoordinator.class), new NoOpMetricsSystem(), supportedCapabilities, Optional.of(mock(AccountLocalConfigPermissioningController.class)), Optional.of(mock(NodeLocalConfigPermissioningController.class)), config.getRpcApis(), mock(PrivacyParameters.class), mock(JsonRpcConfiguration.class), mock(WebSocketConfiguration.class), mock(MetricsConfiguration.class), natService, new HashMap<>(), folder.getRoot().toPath(), mock(EthPeers.class)));
final JsonRpcHttpService jsonRpcHttpService = new JsonRpcHttpService(vertx, folder.newFolder().toPath(), config, new NoOpMetricsSystem(), natService, rpcMethods, HealthService.ALWAYS_HEALTHY, HealthService.ALWAYS_HEALTHY);
jsonRpcHttpService.start().join();
baseUrl = jsonRpcHttpService.url();
return jsonRpcHttpService;
}
use of org.hyperledger.besu.ethereum.api.jsonrpc.methods.JsonRpcMethodsFactory in project besu by hyperledger.
the class JsonRpcHttpServiceRpcApisTest method createJsonRpcHttpService.
private JsonRpcHttpService createJsonRpcHttpService(final JsonRpcConfiguration jsonRpcConfiguration, final WebSocketConfiguration webSocketConfiguration, final P2PNetwork p2pNetwork, final MetricsConfiguration metricsConfiguration, final NatService natService) throws Exception {
final Set<Capability> supportedCapabilities = new HashSet<>();
supportedCapabilities.add(EthProtocol.ETH62);
supportedCapabilities.add(EthProtocol.ETH63);
jsonRpcConfiguration.setPort(0);
webSocketConfiguration.setPort(0);
final Map<String, JsonRpcMethod> rpcMethods = spy(new JsonRpcMethodsFactory().methods(CLIENT_VERSION, NETWORK_ID, new StubGenesisConfigOptions(), p2pNetwork, blockchainQueries, mock(Synchronizer.class), ProtocolScheduleFixture.MAINNET, mock(ProtocolContext.class), mock(FilterManager.class), mock(TransactionPool.class), mock(PoWMiningCoordinator.class), new NoOpMetricsSystem(), supportedCapabilities, Optional.of(mock(AccountLocalConfigPermissioningController.class)), Optional.of(mock(NodeLocalConfigPermissioningController.class)), jsonRpcConfiguration.getRpcApis(), mock(PrivacyParameters.class), jsonRpcConfiguration, webSocketConfiguration, metricsConfiguration, natService, new HashMap<>(), folder.getRoot().toPath(), mock(EthPeers.class)));
final JsonRpcHttpService jsonRpcHttpService = new JsonRpcHttpService(vertx, folder.newFolder().toPath(), jsonRpcConfiguration, new NoOpMetricsSystem(), natService, rpcMethods, HealthService.ALWAYS_HEALTHY, HealthService.ALWAYS_HEALTHY);
jsonRpcHttpService.start().join();
baseUrl = jsonRpcHttpService.url();
return jsonRpcHttpService;
}
use of org.hyperledger.besu.ethereum.api.jsonrpc.methods.JsonRpcMethodsFactory 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));
}
Aggregations