Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring - Group P2P options into its own class #7248

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.hyperledger.besu.ethereum.core.Util;
import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolConfiguration;
import org.hyperledger.besu.ethereum.p2p.config.NetworkingConfiguration;
import org.hyperledger.besu.ethereum.p2p.config.P2PConfiguration;
import org.hyperledger.besu.ethereum.p2p.rlpx.connections.netty.TLSConfiguration;
import org.hyperledger.besu.ethereum.permissioning.PermissioningConfiguration;
import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration;
Expand Down Expand Up @@ -94,8 +95,8 @@ public class BesuNode implements NodeConfiguration, RunnableNode, AutoCloseable
private final Path homeDirectory;
private KeyPair keyPair;
private final Properties portsProperties = new Properties();
private final Boolean p2pEnabled;
private final int p2pPort;

private final P2PConfiguration p2PConfiguration;
private final Optional<TLSConfiguration> tlsConfiguration;
private final NetworkingConfiguration networkingConfiguration;
private final boolean revertReasonEnabled;
Expand All @@ -116,7 +117,6 @@ public class BesuNode implements NodeConfiguration, RunnableNode, AutoCloseable
private final GenesisConfigurationProvider genesisConfigProvider;
private final boolean devMode;
private final NetworkName network;
private final boolean discoveryEnabled;
private final List<URI> bootnodes = new ArrayList<>();
private final boolean bootnodeEligible;
private final boolean secp256k1Native;
Expand All @@ -137,6 +137,7 @@ public class BesuNode implements NodeConfiguration, RunnableNode, AutoCloseable
public BesuNode(
final String name,
final Optional<Path> dataPath,
final P2PConfiguration p2PConfiguration,
final MiningParameters miningParameters,
final TransactionPoolConfiguration txPoolConfiguration,
final JsonRpcConfiguration jsonRpcConfiguration,
Expand All @@ -151,11 +152,8 @@ public BesuNode(
final boolean devMode,
final NetworkName network,
final GenesisConfigurationProvider genesisConfigProvider,
final boolean p2pEnabled,
final int p2pPort,
final Optional<TLSConfiguration> tlsConfiguration,
final NetworkingConfiguration networkingConfiguration,
final boolean discoveryEnabled,
final boolean bootnodeEligible,
final boolean revertReasonEnabled,
final boolean secp256k1Native,
Expand Down Expand Up @@ -200,11 +198,9 @@ public BesuNode(
this.genesisConfigProvider = genesisConfigProvider;
this.devMode = devMode;
this.network = network;
this.p2pEnabled = p2pEnabled;
this.p2pPort = p2pPort;
this.p2PConfiguration = p2PConfiguration;
this.tlsConfiguration = tlsConfiguration;
this.networkingConfiguration = networkingConfiguration;
this.discoveryEnabled = discoveryEnabled;
this.bootnodeEligible = bootnodeEligible;
this.revertReasonEnabled = revertReasonEnabled;
this.secp256k1Native = secp256k1Native;
Expand Down Expand Up @@ -290,7 +286,7 @@ public URI enodeUrl() {
}

public String getP2pPort() {
return String.valueOf(p2pPort);
return String.valueOf(p2PConfiguration.getPort());
}

private String getRuntimeP2pPort() {
Expand All @@ -301,6 +297,10 @@ private String getRuntimeP2pPort() {
return port;
}

public P2PConfiguration getP2PConfiguration() {
return p2PConfiguration;
}

private String getDiscoveryPort() {
final String port = portsProperties.getProperty("discovery");
if (port == null) {
Expand Down Expand Up @@ -647,7 +647,7 @@ public List<URI> getBootnodes() {

@Override
public boolean isP2pEnabled() {
return p2pEnabled;
return p2PConfiguration.isP2pEnabled();
}

public Optional<TLSConfiguration> getTLSConfiguration() {
Expand Down Expand Up @@ -716,7 +716,7 @@ public boolean isAltbn128Native() {

@Override
public boolean isDiscoveryEnabled() {
return discoveryEnabled;
return p2PConfiguration.isDiscoveryEnabled();
}

Optional<PermissioningConfiguration> getPermissioningConfiguration() {
Expand Down Expand Up @@ -769,8 +769,8 @@ public String toString() {
.add("name", name)
.add("homeDirectory", homeDirectory)
.add("keyPair", keyPair)
.add("p2pEnabled", p2pEnabled)
.add("discoveryEnabled", discoveryEnabled)
.add("p2pEnabled", p2PConfiguration.isP2pEnabled())
.add("discoveryEnabled", p2PConfiguration.isDiscoveryEnabled())
.add("privacyEnabled", privacyParameters.isEnabled())
.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.hyperledger.besu.ethereum.eth.sync.SynchronizerConfiguration;
import org.hyperledger.besu.ethereum.eth.transactions.ImmutableTransactionPoolConfiguration;
import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolConfiguration;
import org.hyperledger.besu.ethereum.p2p.config.P2PConfiguration;
import org.hyperledger.besu.ethereum.p2p.peers.EnodeURLImpl;
import org.hyperledger.besu.ethereum.storage.keyvalue.KeyValueStorageProvider;
import org.hyperledger.besu.ethereum.storage.keyvalue.KeyValueStorageProviderBuilder;
Expand Down Expand Up @@ -236,8 +237,6 @@ public void startNode(final BesuNode node) {
.transactionPoolValidatorService(transactionPoolValidatorServiceImpl)
.build();

final int maxPeers = 25;

builder
.synchronizerConfiguration(new SynchronizerConfiguration.Builder().build())
.dataDirectory(node.homeDirectory())
Expand All @@ -253,10 +252,8 @@ public void startNode(final BesuNode node) {
.storageProvider(storageProvider)
.gasLimitCalculator(GasLimitCalculator.constant())
.evmConfiguration(EvmConfiguration.DEFAULT)
.maxPeers(maxPeers)
.maxRemotelyInitiatedPeers(15)
.networkConfiguration(node.getNetworkingConfiguration())
.randomPeerPriority(false);
.p2PConfiguration(P2PConfiguration.createDefault());

node.getGenesisConfig()
.map(GenesisConfigFile::fromConfig)
Expand All @@ -276,9 +273,7 @@ public void startNode(final BesuNode node) {
.vertx(Vertx.vertx())
.besuController(besuController)
.ethNetworkConfig(ethNetworkConfig)
.discovery(node.isDiscoveryEnabled())
.p2pAdvertisedHost(node.getHostName())
.p2pListenPort(0)
.p2PConfiguration(node.getP2PConfiguration())
.networkingConfiguration(node.getNetworkingConfiguration())
.jsonRpcConfiguration(node.jsonRpcConfiguration())
.webSocketConfiguration(node.webSocketConfiguration())
Expand All @@ -287,7 +282,6 @@ public void startNode(final BesuNode node) {
.metricsSystem(metricsSystem)
.permissioningService(permissioningService)
.metricsConfiguration(node.getMetricsConfiguration())
.p2pEnabled(node.isP2pEnabled())
.p2pTLSConfiguration(node.getTLSConfiguration())
.graphQLConfiguration(GraphQLConfiguration.createDefault())
.staticNodes(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.hyperledger.besu.ethereum.core.PrivacyParameters;
import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolConfiguration;
import org.hyperledger.besu.ethereum.p2p.config.NetworkingConfiguration;
import org.hyperledger.besu.ethereum.p2p.config.P2PConfiguration;
import org.hyperledger.besu.ethereum.p2p.rlpx.connections.netty.TLSConfiguration;
import org.hyperledger.besu.ethereum.permissioning.PermissioningConfiguration;
import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration;
Expand Down Expand Up @@ -52,11 +53,9 @@ public class BesuNodeConfiguration {
private final Optional<String> keyFilePath;
private final boolean devMode;
private final GenesisConfigurationProvider genesisConfigProvider;
private final boolean p2pEnabled;
private final int p2pPort;
private final P2PConfiguration p2pConfiguration;
private final Optional<TLSConfiguration> tlsConfiguration;
private final NetworkingConfiguration networkingConfiguration;
private final boolean discoveryEnabled;
private final boolean bootnodeEligible;
private final boolean revertReasonEnabled;
private final boolean secp256k1Native;
Expand Down Expand Up @@ -89,11 +88,9 @@ public class BesuNodeConfiguration {
final boolean devMode,
final NetworkName network,
final GenesisConfigurationProvider genesisConfigProvider,
final boolean p2pEnabled,
final int p2pPort,
final P2PConfiguration p2pConfiguration,
final Optional<TLSConfiguration> tlsConfiguration,
final NetworkingConfiguration networkingConfiguration,
final boolean discoveryEnabled,
final boolean bootnodeEligible,
final boolean revertReasonEnabled,
final boolean secp256k1Native,
Expand Down Expand Up @@ -123,11 +120,9 @@ public class BesuNodeConfiguration {
this.devMode = devMode;
this.network = network;
this.genesisConfigProvider = genesisConfigProvider;
this.p2pEnabled = p2pEnabled;
this.p2pPort = p2pPort;
this.p2pConfiguration = p2pConfiguration;
this.tlsConfiguration = tlsConfiguration;
this.networkingConfiguration = networkingConfiguration;
this.discoveryEnabled = discoveryEnabled;
this.bootnodeEligible = bootnodeEligible;
this.revertReasonEnabled = revertReasonEnabled;
this.secp256k1Native = secp256k1Native;
Expand Down Expand Up @@ -199,20 +194,12 @@ public boolean isDevMode() {
return devMode;
}

public boolean isDiscoveryEnabled() {
return discoveryEnabled;
}

public GenesisConfigurationProvider getGenesisConfigProvider() {
return genesisConfigProvider;
}

public boolean isP2pEnabled() {
return p2pEnabled;
}

public int getP2pPort() {
return p2pPort;
public P2PConfiguration getP2PConfiguration() {
return p2pConfiguration;
}

public Optional<TLSConfiguration> getTLSConfiguration() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
import org.hyperledger.besu.ethereum.core.PrivacyParameters;
import org.hyperledger.besu.ethereum.eth.transactions.TransactionPoolConfiguration;
import org.hyperledger.besu.ethereum.p2p.config.NetworkingConfiguration;
import org.hyperledger.besu.ethereum.p2p.config.P2PConfiguration;
import org.hyperledger.besu.ethereum.p2p.rlpx.connections.netty.TLSConfiguration;
import org.hyperledger.besu.ethereum.permissioning.PermissioningConfiguration;
import org.hyperledger.besu.ethereum.worldstate.DataStorageConfiguration;
Expand Down Expand Up @@ -66,6 +67,7 @@ public class BesuNodeConfigurationBuilder {
.build();
private TransactionPoolConfiguration transactionPoolConfiguration =
TransactionPoolConfiguration.DEFAULT;
private P2PConfiguration p2pConfiguration = new P2PConfiguration.Builder().build();
private JsonRpcConfiguration jsonRpcConfiguration = JsonRpcConfiguration.createDefault();
private JsonRpcConfiguration engineRpcConfiguration = JsonRpcConfiguration.createEngineDefault();
private WebSocketConfiguration webSocketConfiguration = WebSocketConfiguration.createDefault();
Expand All @@ -78,11 +80,8 @@ public class BesuNodeConfigurationBuilder {
private String keyFilePath = null;
private boolean devMode = true;
private GenesisConfigurationProvider genesisConfigProvider = ignore -> Optional.empty();
private Boolean p2pEnabled = true;
private int p2pPort = 0;
private Optional<TLSConfiguration> tlsConfiguration = Optional.empty();
private final NetworkingConfiguration networkingConfiguration = NetworkingConfiguration.create();
private boolean discoveryEnabled = true;
private boolean bootnodeEligible = true;
private boolean revertReasonEnabled = false;
private NetworkName network = null;
Expand Down Expand Up @@ -246,6 +245,11 @@ public BesuNodeConfigurationBuilder jsonRpcAuthenticationUsingECDSA() throws URI
return this;
}

public BesuNodeConfigurationBuilder p2PConfiguration(final P2PConfiguration p2pConfiguration) {
this.p2pConfiguration = p2pConfiguration;
return this;
}

public BesuNodeConfigurationBuilder webSocketConfiguration(
final WebSocketConfiguration webSocketConfiguration) {
this.webSocketConfiguration = webSocketConfiguration;
Expand Down Expand Up @@ -359,16 +363,6 @@ public BesuNodeConfigurationBuilder genesisConfigProvider(
return this;
}

public BesuNodeConfigurationBuilder p2pEnabled(final Boolean p2pEnabled) {
this.p2pEnabled = p2pEnabled;
return this;
}

public BesuNodeConfigurationBuilder p2pPort(final int p2pPort) {
this.p2pPort = p2pPort;
return this;
}

private static Path toPath(final String path) throws Exception {
return Path.of(BesuNodeConfigurationBuilder.class.getResource(path).toURI());
}
Expand Down Expand Up @@ -427,11 +421,6 @@ public BesuNodeConfigurationBuilder p2pTLSEnabled(final String name, final Strin
return this;
}

public BesuNodeConfigurationBuilder discoveryEnabled(final boolean discoveryEnabled) {
this.discoveryEnabled = discoveryEnabled;
return this;
}

public BesuNodeConfigurationBuilder plugins(final List<String> plugins) {
this.plugins.clear();
this.plugins.addAll(plugins);
Expand Down Expand Up @@ -524,11 +513,9 @@ public BesuNodeConfiguration build() {
devMode,
network,
genesisConfigProvider,
p2pEnabled,
p2pPort,
p2pConfiguration,
tlsConfiguration,
networkingConfiguration,
discoveryEnabled,
bootnodeEligible,
revertReasonEnabled,
secp256K1Native,
Expand Down
Loading
Loading