private static List<MilestoneDefinition> createMainnetTimestampMilestones(
      final MainnetProtocolSpecFactory specFactory, final GenesisConfigOptions config) {
    return List.of(
        createTimestampMilestone(
            MainnetHardforkId.SHANGHAI,
            config.getShanghaiTime(),
            () -> specFactory.shanghaiDefinition(config)),
        createTimestampMilestone(
            MainnetHardforkId.CANCUN,
            config.getCancunTime(),
            () -> specFactory.cancunDefinition(config)),
        createTimestampMilestone(
            MainnetHardforkId.CANCUN_EOF,
            config.getCancunEOFTime(),
            () -> specFactory.cancunEOFDefinition(config)),
        createTimestampMilestone(
            MainnetHardforkId.PRAGUE,
            config.getPragueTime(),
            () -> specFactory.pragueDefinition(config)),
        createTimestampMilestone(
            MainnetHardforkId.OSAKA,
            config.getOsakaTime(),
            () -> specFactory.osakaDefinition(config)),
        createTimestampMilestone(
            MainnetHardforkId.BPO1, config.getBpo1Time(), () -> specFactory.bpo1Definition(config)),
        createTimestampMilestone(
            MainnetHardforkId.BPO2, config.getBpo2Time(), () -> specFactory.bpo2Definition(config)),
        createTimestampMilestone(
            MainnetHardforkId.BPO3, config.getBpo3Time(), () -> specFactory.bpo3Definition(config)),
        createTimestampMilestone(
            MainnetHardforkId.BPO4, config.getBpo4Time(), () -> specFactory.bpo4Definition(config)),
        createTimestampMilestone(
            MainnetHardforkId.BPO5, config.getBpo5Time(), () -> specFactory.bpo5Definition(config)),
        createTimestampMilestone(
            MainnetHardforkId.FUTURE_EIPS,
            config.getFutureEipsTime(),
            () -> specFactory.futureEipsDefinition(config)),
        createTimestampMilestone(
            MainnetHardforkId.EXPERIMENTAL_EIPS,
            config.getExperimentalEipsTime(),
            () -> specFactory.experimentalEipsDefinition(config)));
  }
Creates timestamp milestones for the Mainnet.

@param specFactory the protocol spec factory
@param config the genesis config options
@return a list of timestamp milestones
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/mainnet/milestones/MilestoneDefinitions.java