Skip to content

Commit

Permalink
Better way to pass genesis block period seconds to mining options
Browse files Browse the repository at this point in the history
Signed-off-by: Fabio Di Fabio <[email protected]>
  • Loading branch information
fab-10 committed Jan 22, 2024
1 parent 751b0af commit da6a9d1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 deletions.
16 changes: 7 additions & 9 deletions besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,6 @@ public class BesuCommand implements DefaultCommandValues, Runnable {
description = "Identification for this node in the Client ID",
arity = "1")
private final Optional<String> identityString = Optional.empty();

// P2P Discovery Option Group
@CommandLine.ArgGroup(validate = false, heading = "@|bold P2P Discovery Options|@%n")
P2PDiscoveryOptionGroup p2PDiscoveryOptionGroup = new P2PDiscoveryOptionGroup();
Expand Down Expand Up @@ -1451,7 +1450,6 @@ public void run() {
// Need to create vertx after cmdline has been parsed, such that metricsSystem is configurable
vertx = createVertx(createVertxOptions(metricsSystem.get()));

postCreationOptionSetup();
validateOptions();
configure();
configureNativeLibs();
Expand Down Expand Up @@ -1798,13 +1796,6 @@ private void configureNativeLibs() {
}
}

/** Use this method to pass data, that was not yet available, at options object creation time */
private void postCreationOptionSetup() {
// set the optional genesis block period time needed by mining options
final var actualGenesisOptions = getActualGenesisConfigOptions();
miningOptions.setGenesisBlockPeriodSeconds(getGenesisBlockPeriodSeconds(actualGenesisOptions));
}

private void validateOptions() {
validateRequiredOptions();
issueOptionWarnings();
Expand Down Expand Up @@ -2912,6 +2903,8 @@ private TransactionPoolConfiguration buildTransactionPoolConfiguration() {

private MiningParameters getMiningParameters() {
if (miningParameters == null) {
miningOptions.setGenesisBlockPeriodSeconds(
getGenesisBlockPeriodSeconds(getActualGenesisConfigOptions()));
miningParameters = miningOptions.toDomainObject();
}
return miningParameters;
Expand Down Expand Up @@ -3405,6 +3398,11 @@ private Optional<String> getEcCurveFromGenesisFile() {
return genesisConfigOptions.getEcCurve();
}

/**
* Return the genesis config options after applying any specified config overrides
*
* @return the genesis config options after applying any specified config overrides
*/
protected GenesisConfigOptions getActualGenesisConfigOptions() {
return Optional.ofNullable(genesisConfigOptions)
.orElseGet(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,12 @@ public static MiningOptions create() {
return new MiningOptions();
}

/**
* Set the optional genesis block period per seconds
*
* @param genesisBlockPeriodSeconds if the network is PoA then the block period in seconds
* specified in the genesis file, otherwise empty.
*/
public void setGenesisBlockPeriodSeconds(final OptionalInt genesisBlockPeriodSeconds) {
maybeGenesisBlockPeriodSeconds = genesisBlockPeriodSeconds;
}
Expand All @@ -220,10 +226,6 @@ public void validate(
final GenesisConfigOptions genesisConfigOptions,
final boolean isMergeEnabled,
final Logger logger) {
if (maybeGenesisBlockPeriodSeconds == null) {
throw new IllegalStateException(
"genesisBlockPeriodSeconds must be set before using this object");
}

if (Boolean.TRUE.equals(isMiningEnabled) && coinbase == null) {
throw new ParameterException(
Expand Down

0 comments on commit da6a9d1

Please sign in to comment.