Commit f7078830 authored by Joshua Gutow's avatar Joshua Gutow Committed by GitHub

op-node: Add flag categories (#9629)

* op-node: Add flag categories

* op-node: Order categories & move some beacon flags to L1 RPC
parent af1d4829
...@@ -130,7 +130,7 @@ func init() { ...@@ -130,7 +130,7 @@ func init() {
optionalFlags = append(optionalFlags, oppprof.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, oppprof.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, txmgr.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, txmgr.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, compressor.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, compressor.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, plasma.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, plasma.CLIFlags(EnvVarPrefix, "")...)
Flags = append(requiredFlags, optionalFlags...) Flags = append(requiredFlags, optionalFlags...)
} }
......
...@@ -13,8 +13,8 @@ import ( ...@@ -13,8 +13,8 @@ import (
const envVarPrefix = "OP_BOOTNODE" const envVarPrefix = "OP_BOOTNODE"
var Flags = []cli.Flag{ var Flags = []cli.Flag{
opflags.CLINetworkFlag(envVarPrefix), opflags.CLINetworkFlag(envVarPrefix, ""),
opflags.CLIRollupConfigFlag(envVarPrefix), opflags.CLIRollupConfigFlag(envVarPrefix, ""),
} }
func init() { func init() {
......
...@@ -112,7 +112,7 @@ func init() { ...@@ -112,7 +112,7 @@ func init() {
optionalFlags = append(optionalFlags, oplog.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, oplog.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, opmetrics.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, opmetrics.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, oppprof.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, oppprof.CLIFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, opflags.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, opflags.CLIFlags(EnvVarPrefix, "")...)
Flags = append(requiredFlags, optionalFlags...) Flags = append(requiredFlags, optionalFlags...)
} }
......
...@@ -18,7 +18,7 @@ var Subcommands = []*cli.Command{ ...@@ -18,7 +18,7 @@ var Subcommands = []*cli.Command{
Name: "dump-rollup-config", Name: "dump-rollup-config",
Usage: "Dumps network configs", Usage: "Dumps network configs",
Flags: []cli.Flag{ Flags: []cli.Flag{
opflags.CLINetworkFlag(flags.EnvVarPrefix), opflags.CLINetworkFlag(flags.EnvVarPrefix, ""),
}, },
Action: func(ctx *cli.Context) error { Action: func(ctx *cli.Context) error {
logCfg := oplog.ReadCLIConfig(ctx) logCfg := oplog.ReadCLIConfig(ctx)
......
...@@ -19,6 +19,21 @@ import ( ...@@ -19,6 +19,21 @@ import (
const EnvVarPrefix = "OP_NODE" const EnvVarPrefix = "OP_NODE"
const (
RollupCategory = "1. ROLLUP"
L1RPCCategory = "2. L1 RPC"
SequencerCategory = "3. SEQUENCER"
OperationsCategory = "4. LOGGING, METRICS, DEBUGGING, AND API"
P2PCategory = "5. PEER-TO-PEER"
PlasmaCategory = "6. PLASMA (EXPERIMENTAL)"
MiscCategory = "7. MISC"
)
func init() {
cli.HelpFlag.(*cli.BoolFlag).Category = MiscCategory
cli.VersionFlag.(*cli.BoolFlag).Category = MiscCategory
}
func prefixEnvVars(name string) []string { func prefixEnvVars(name string) []string {
return []string{EnvVarPrefix + "_" + name} return []string{EnvVarPrefix + "_" + name}
} }
...@@ -26,15 +41,17 @@ func prefixEnvVars(name string) []string { ...@@ -26,15 +41,17 @@ func prefixEnvVars(name string) []string {
var ( var (
/* Required Flags */ /* Required Flags */
L1NodeAddr = &cli.StringFlag{ L1NodeAddr = &cli.StringFlag{
Name: "l1", Name: "l1",
Usage: "Address of L1 User JSON-RPC endpoint to use (eth namespace required)", Usage: "Address of L1 User JSON-RPC endpoint to use (eth namespace required)",
Value: "http://127.0.0.1:8545", Value: "http://127.0.0.1:8545",
EnvVars: prefixEnvVars("L1_ETH_RPC"), EnvVars: prefixEnvVars("L1_ETH_RPC"),
Category: RollupCategory,
} }
L2EngineAddr = &cli.StringFlag{ L2EngineAddr = &cli.StringFlag{
Name: "l2", Name: "l2",
Usage: "Address of L2 Engine JSON-RPC endpoints to use (engine and eth namespace required)", Usage: "Address of L2 Engine JSON-RPC endpoints to use (engine and eth namespace required)",
EnvVars: prefixEnvVars("L2_ENGINE_RPC"), EnvVars: prefixEnvVars("L2_ENGINE_RPC"),
Category: RollupCategory,
} }
L2EngineJWTSecret = &cli.StringFlag{ L2EngineJWTSecret = &cli.StringFlag{
Name: "l2.jwt-secret", Name: "l2.jwt-secret",
...@@ -42,25 +59,29 @@ var ( ...@@ -42,25 +59,29 @@ var (
EnvVars: prefixEnvVars("L2_ENGINE_AUTH"), EnvVars: prefixEnvVars("L2_ENGINE_AUTH"),
Value: "", Value: "",
Destination: new(string), Destination: new(string),
Category: RollupCategory,
} }
/* Optional Flags */
BeaconAddr = &cli.StringFlag{ BeaconAddr = &cli.StringFlag{
Name: "l1.beacon", Name: "l1.beacon",
Usage: "Address of L1 Beacon-node HTTP endpoint to use.", Usage: "Address of L1 Beacon-node HTTP endpoint to use.",
Required: false, Required: false,
EnvVars: prefixEnvVars("L1_BEACON"), EnvVars: prefixEnvVars("L1_BEACON"),
Category: RollupCategory,
} }
/* Optional Flags */
BeaconHeader = &cli.StringFlag{ BeaconHeader = &cli.StringFlag{
Name: "l1.beacon-header", Name: "l1.beacon-header",
Usage: "Optional HTTP header to add to all requests to the L1 Beacon endpoint. Format: 'X-Key: Value'", Usage: "Optional HTTP header to add to all requests to the L1 Beacon endpoint. Format: 'X-Key: Value'",
Required: false, Required: false,
EnvVars: prefixEnvVars("L1_BEACON_HEADER"), EnvVars: prefixEnvVars("L1_BEACON_HEADER"),
Category: L1RPCCategory,
} }
BeaconArchiverAddr = &cli.StringFlag{ BeaconArchiverAddr = &cli.StringFlag{
Name: "l1.beacon-archiver", Name: "l1.beacon-archiver",
Usage: "Address of L1 Beacon-node compatible HTTP endpoint to use. This is used to fetch blobs that the --l1.beacon does not have (i.e expired blobs).", Usage: "Address of L1 Beacon-node compatible HTTP endpoint to use. This is used to fetch blobs that the --l1.beacon does not have (i.e expired blobs).",
Required: false, Required: false,
EnvVars: prefixEnvVars("L1_BEACON_ARCHIVER"), EnvVars: prefixEnvVars("L1_BEACON_ARCHIVER"),
Category: L1RPCCategory,
} }
BeaconCheckIgnore = &cli.BoolFlag{ BeaconCheckIgnore = &cli.BoolFlag{
Name: "l1.beacon.ignore", Name: "l1.beacon.ignore",
...@@ -68,6 +89,7 @@ var ( ...@@ -68,6 +89,7 @@ var (
Required: false, Required: false,
Value: false, Value: false,
EnvVars: prefixEnvVars("L1_BEACON_IGNORE"), EnvVars: prefixEnvVars("L1_BEACON_IGNORE"),
Category: L1RPCCategory,
} }
BeaconFetchAllSidecars = &cli.BoolFlag{ BeaconFetchAllSidecars = &cli.BoolFlag{
Name: "l1.beacon.fetch-all-sidecars", Name: "l1.beacon.fetch-all-sidecars",
...@@ -75,6 +97,7 @@ var ( ...@@ -75,6 +97,7 @@ var (
Required: false, Required: false,
Value: false, Value: false,
EnvVars: prefixEnvVars("L1_BEACON_FETCH_ALL_SIDECARS"), EnvVars: prefixEnvVars("L1_BEACON_FETCH_ALL_SIDECARS"),
Category: L1RPCCategory,
} }
SyncModeFlag = &cli.GenericFlag{ SyncModeFlag = &cli.GenericFlag{
Name: "syncmode", Name: "syncmode",
...@@ -84,33 +107,39 @@ var ( ...@@ -84,33 +107,39 @@ var (
out := sync.CLSync out := sync.CLSync
return &out return &out
}(), }(),
Category: RollupCategory,
} }
RPCListenAddr = &cli.StringFlag{ RPCListenAddr = &cli.StringFlag{
Name: "rpc.addr", Name: "rpc.addr",
Usage: "RPC listening address", Usage: "RPC listening address",
EnvVars: prefixEnvVars("RPC_ADDR"), EnvVars: prefixEnvVars("RPC_ADDR"),
Value: "127.0.0.1", Value: "127.0.0.1",
Category: OperationsCategory,
} }
RPCListenPort = &cli.IntFlag{ RPCListenPort = &cli.IntFlag{
Name: "rpc.port", Name: "rpc.port",
Usage: "RPC listening port", Usage: "RPC listening port",
EnvVars: prefixEnvVars("RPC_PORT"), EnvVars: prefixEnvVars("RPC_PORT"),
Value: 9545, // Note: op-service/rpc/cli.go uses 8545 as the default. Value: 9545, // Note: op-service/rpc/cli.go uses 8545 as the default.
Category: OperationsCategory,
} }
RPCEnableAdmin = &cli.BoolFlag{ RPCEnableAdmin = &cli.BoolFlag{
Name: "rpc.enable-admin", Name: "rpc.enable-admin",
Usage: "Enable the admin API (experimental)", Usage: "Enable the admin API (experimental)",
EnvVars: prefixEnvVars("RPC_ENABLE_ADMIN"), EnvVars: prefixEnvVars("RPC_ENABLE_ADMIN"),
Category: OperationsCategory,
} }
RPCAdminPersistence = &cli.StringFlag{ RPCAdminPersistence = &cli.StringFlag{
Name: "rpc.admin-state", Name: "rpc.admin-state",
Usage: "File path used to persist state changes made via the admin API so they persist across restarts. Disabled if not set.", Usage: "File path used to persist state changes made via the admin API so they persist across restarts. Disabled if not set.",
EnvVars: prefixEnvVars("RPC_ADMIN_STATE"), EnvVars: prefixEnvVars("RPC_ADMIN_STATE"),
Category: OperationsCategory,
} }
L1TrustRPC = &cli.BoolFlag{ L1TrustRPC = &cli.BoolFlag{
Name: "l1.trustrpc", Name: "l1.trustrpc",
Usage: "Trust the L1 RPC, sync faster at risk of malicious/buggy RPC providing bad or inconsistent L1 data", Usage: "Trust the L1 RPC, sync faster at risk of malicious/buggy RPC providing bad or inconsistent L1 data",
EnvVars: prefixEnvVars("L1_TRUST_RPC"), EnvVars: prefixEnvVars("L1_TRUST_RPC"),
Category: L1RPCCategory,
} }
L1RPCProviderKind = &cli.GenericFlag{ L1RPCProviderKind = &cli.GenericFlag{
Name: "l1.rpckind", Name: "l1.rpckind",
...@@ -121,124 +150,146 @@ var ( ...@@ -121,124 +150,146 @@ var (
out := sources.RPCKindStandard out := sources.RPCKindStandard
return &out return &out
}(), }(),
Category: L1RPCCategory,
} }
L1RethDBPath = &cli.StringFlag{ L1RethDBPath = &cli.StringFlag{
Name: "l1.rethdb", Name: "l1.rethdb",
Usage: "The L1 RethDB path, used to fetch receipts for L1 blocks. Only applicable when using the `reth_db` RPC kind with `l1.rpckind`.", Usage: "The L1 RethDB path, used to fetch receipts for L1 blocks. Only applicable when using the `reth_db` RPC kind with `l1.rpckind`.",
EnvVars: prefixEnvVars("L1_RETHDB"), EnvVars: prefixEnvVars("L1_RETHDB"),
Hidden: true, Hidden: true,
Category: L1RPCCategory,
} }
L1RPCMaxConcurrency = &cli.IntFlag{ L1RPCMaxConcurrency = &cli.IntFlag{
Name: "l1.max-concurrency", Name: "l1.max-concurrency",
Usage: "Maximum number of concurrent RPC requests to make to the L1 RPC provider.", Usage: "Maximum number of concurrent RPC requests to make to the L1 RPC provider.",
EnvVars: prefixEnvVars("L1_MAX_CONCURRENCY"), EnvVars: prefixEnvVars("L1_MAX_CONCURRENCY"),
Value: 10, Value: 10,
Category: L1RPCCategory,
} }
L1RPCRateLimit = &cli.Float64Flag{ L1RPCRateLimit = &cli.Float64Flag{
Name: "l1.rpc-rate-limit", Name: "l1.rpc-rate-limit",
Usage: "Optional self-imposed global rate-limit on L1 RPC requests, specified in requests / second. Disabled if set to 0.", Usage: "Optional self-imposed global rate-limit on L1 RPC requests, specified in requests / second. Disabled if set to 0.",
EnvVars: prefixEnvVars("L1_RPC_RATE_LIMIT"), EnvVars: prefixEnvVars("L1_RPC_RATE_LIMIT"),
Value: 0, Value: 0,
Category: L1RPCCategory,
} }
L1RPCMaxBatchSize = &cli.IntFlag{ L1RPCMaxBatchSize = &cli.IntFlag{
Name: "l1.rpc-max-batch-size", Name: "l1.rpc-max-batch-size",
Usage: "Maximum number of RPC requests to bundle, e.g. during L1 blocks receipt fetching. The L1 RPC rate limit counts this as N items, but allows it to burst at once.", Usage: "Maximum number of RPC requests to bundle, e.g. during L1 blocks receipt fetching. The L1 RPC rate limit counts this as N items, but allows it to burst at once.",
EnvVars: prefixEnvVars("L1_RPC_MAX_BATCH_SIZE"), EnvVars: prefixEnvVars("L1_RPC_MAX_BATCH_SIZE"),
Value: 20, Value: 20,
Category: L1RPCCategory,
} }
L1HTTPPollInterval = &cli.DurationFlag{ L1HTTPPollInterval = &cli.DurationFlag{
Name: "l1.http-poll-interval", Name: "l1.http-poll-interval",
Usage: "Polling interval for latest-block subscription when using an HTTP RPC provider. Ignored for other types of RPC endpoints.", Usage: "Polling interval for latest-block subscription when using an HTTP RPC provider. Ignored for other types of RPC endpoints.",
EnvVars: prefixEnvVars("L1_HTTP_POLL_INTERVAL"), EnvVars: prefixEnvVars("L1_HTTP_POLL_INTERVAL"),
Value: time.Second * 12, Value: time.Second * 12,
Category: L1RPCCategory,
} }
VerifierL1Confs = &cli.Uint64Flag{ VerifierL1Confs = &cli.Uint64Flag{
Name: "verifier.l1-confs", Name: "verifier.l1-confs",
Usage: "Number of L1 blocks to keep distance from the L1 head before deriving L2 data from. Reorgs are supported, but may be slow to perform.", Usage: "Number of L1 blocks to keep distance from the L1 head before deriving L2 data from. Reorgs are supported, but may be slow to perform.",
EnvVars: prefixEnvVars("VERIFIER_L1_CONFS"), EnvVars: prefixEnvVars("VERIFIER_L1_CONFS"),
Value: 0, Value: 0,
Category: L1RPCCategory,
} }
SequencerEnabledFlag = &cli.BoolFlag{ SequencerEnabledFlag = &cli.BoolFlag{
Name: "sequencer.enabled", Name: "sequencer.enabled",
Usage: "Enable sequencing of new L2 blocks. A separate batch submitter has to be deployed to publish the data for verifiers.", Usage: "Enable sequencing of new L2 blocks. A separate batch submitter has to be deployed to publish the data for verifiers.",
EnvVars: prefixEnvVars("SEQUENCER_ENABLED"), EnvVars: prefixEnvVars("SEQUENCER_ENABLED"),
Category: SequencerCategory,
} }
SequencerStoppedFlag = &cli.BoolFlag{ SequencerStoppedFlag = &cli.BoolFlag{
Name: "sequencer.stopped", Name: "sequencer.stopped",
Usage: "Initialize the sequencer in a stopped state. The sequencer can be started using the admin_startSequencer RPC", Usage: "Initialize the sequencer in a stopped state. The sequencer can be started using the admin_startSequencer RPC",
EnvVars: prefixEnvVars("SEQUENCER_STOPPED"), EnvVars: prefixEnvVars("SEQUENCER_STOPPED"),
Category: SequencerCategory,
} }
SequencerMaxSafeLagFlag = &cli.Uint64Flag{ SequencerMaxSafeLagFlag = &cli.Uint64Flag{
Name: "sequencer.max-safe-lag", Name: "sequencer.max-safe-lag",
Usage: "Maximum number of L2 blocks for restricting the distance between L2 safe and unsafe. Disabled if 0.", Usage: "Maximum number of L2 blocks for restricting the distance between L2 safe and unsafe. Disabled if 0.",
EnvVars: prefixEnvVars("SEQUENCER_MAX_SAFE_LAG"), EnvVars: prefixEnvVars("SEQUENCER_MAX_SAFE_LAG"),
Value: 0, Value: 0,
Category: SequencerCategory,
} }
SequencerL1Confs = &cli.Uint64Flag{ SequencerL1Confs = &cli.Uint64Flag{
Name: "sequencer.l1-confs", Name: "sequencer.l1-confs",
Usage: "Number of L1 blocks to keep distance from the L1 head as a sequencer for picking an L1 origin.", Usage: "Number of L1 blocks to keep distance from the L1 head as a sequencer for picking an L1 origin.",
EnvVars: prefixEnvVars("SEQUENCER_L1_CONFS"), EnvVars: prefixEnvVars("SEQUENCER_L1_CONFS"),
Value: 4, Value: 4,
Category: SequencerCategory,
} }
L1EpochPollIntervalFlag = &cli.DurationFlag{ L1EpochPollIntervalFlag = &cli.DurationFlag{
Name: "l1.epoch-poll-interval", Name: "l1.epoch-poll-interval",
Usage: "Poll interval for retrieving new L1 epoch updates such as safe and finalized block changes. Disabled if 0 or negative.", Usage: "Poll interval for retrieving new L1 epoch updates such as safe and finalized block changes. Disabled if 0 or negative.",
EnvVars: prefixEnvVars("L1_EPOCH_POLL_INTERVAL"), EnvVars: prefixEnvVars("L1_EPOCH_POLL_INTERVAL"),
Value: time.Second * 12 * 32, Value: time.Second * 12 * 32,
Category: L1RPCCategory,
} }
RuntimeConfigReloadIntervalFlag = &cli.DurationFlag{ RuntimeConfigReloadIntervalFlag = &cli.DurationFlag{
Name: "l1.runtime-config-reload-interval", Name: "l1.runtime-config-reload-interval",
Usage: "Poll interval for reloading the runtime config, useful when config events are not being picked up. Disabled if 0 or negative.", Usage: "Poll interval for reloading the runtime config, useful when config events are not being picked up. Disabled if 0 or negative.",
EnvVars: prefixEnvVars("L1_RUNTIME_CONFIG_RELOAD_INTERVAL"), EnvVars: prefixEnvVars("L1_RUNTIME_CONFIG_RELOAD_INTERVAL"),
Value: time.Minute * 10, Value: time.Minute * 10,
Category: L1RPCCategory,
} }
MetricsEnabledFlag = &cli.BoolFlag{ MetricsEnabledFlag = &cli.BoolFlag{
Name: "metrics.enabled", Name: "metrics.enabled",
Usage: "Enable the metrics server", Usage: "Enable the metrics server",
EnvVars: prefixEnvVars("METRICS_ENABLED"), EnvVars: prefixEnvVars("METRICS_ENABLED"),
Category: OperationsCategory,
} }
MetricsAddrFlag = &cli.StringFlag{ MetricsAddrFlag = &cli.StringFlag{
Name: "metrics.addr", Name: "metrics.addr",
Usage: "Metrics listening address", Usage: "Metrics listening address",
Value: "0.0.0.0", // TODO(CLI-4159): Switch to 127.0.0.1 Value: "0.0.0.0", // TODO(CLI-4159): Switch to 127.0.0.1
EnvVars: prefixEnvVars("METRICS_ADDR"), EnvVars: prefixEnvVars("METRICS_ADDR"),
Category: OperationsCategory,
} }
MetricsPortFlag = &cli.IntFlag{ MetricsPortFlag = &cli.IntFlag{
Name: "metrics.port", Name: "metrics.port",
Usage: "Metrics listening port", Usage: "Metrics listening port",
Value: 7300, Value: 7300,
EnvVars: prefixEnvVars("METRICS_PORT"), EnvVars: prefixEnvVars("METRICS_PORT"),
Category: OperationsCategory,
} }
SnapshotLog = &cli.StringFlag{ SnapshotLog = &cli.StringFlag{
Name: "snapshotlog.file", Name: "snapshotlog.file",
Usage: "Path to the snapshot log file", Usage: "Path to the snapshot log file",
EnvVars: prefixEnvVars("SNAPSHOT_LOG"), EnvVars: prefixEnvVars("SNAPSHOT_LOG"),
Category: OperationsCategory,
} }
HeartbeatEnabledFlag = &cli.BoolFlag{ HeartbeatEnabledFlag = &cli.BoolFlag{
Name: "heartbeat.enabled", Name: "heartbeat.enabled",
Usage: "Enables or disables heartbeating", Usage: "Enables or disables heartbeating",
EnvVars: prefixEnvVars("HEARTBEAT_ENABLED"), EnvVars: prefixEnvVars("HEARTBEAT_ENABLED"),
Category: OperationsCategory,
} }
HeartbeatMonikerFlag = &cli.StringFlag{ HeartbeatMonikerFlag = &cli.StringFlag{
Name: "heartbeat.moniker", Name: "heartbeat.moniker",
Usage: "Sets a moniker for this node", Usage: "Sets a moniker for this node",
EnvVars: prefixEnvVars("HEARTBEAT_MONIKER"), EnvVars: prefixEnvVars("HEARTBEAT_MONIKER"),
Category: OperationsCategory,
} }
HeartbeatURLFlag = &cli.StringFlag{ HeartbeatURLFlag = &cli.StringFlag{
Name: "heartbeat.url", Name: "heartbeat.url",
Usage: "Sets the URL to heartbeat to", Usage: "Sets the URL to heartbeat to",
EnvVars: prefixEnvVars("HEARTBEAT_URL"), EnvVars: prefixEnvVars("HEARTBEAT_URL"),
Value: "https://heartbeat.optimism.io", Value: "https://heartbeat.optimism.io",
Category: OperationsCategory,
} }
RollupHalt = &cli.StringFlag{ RollupHalt = &cli.StringFlag{
Name: "rollup.halt", Name: "rollup.halt",
Usage: "Opt-in option to halt on incompatible protocol version requirements of the given level (major/minor/patch/none), as signaled onchain in L1", Usage: "Opt-in option to halt on incompatible protocol version requirements of the given level (major/minor/patch/none), as signaled onchain in L1",
EnvVars: prefixEnvVars("ROLLUP_HALT"), EnvVars: prefixEnvVars("ROLLUP_HALT"),
Category: RollupCategory,
} }
RollupLoadProtocolVersions = &cli.BoolFlag{ RollupLoadProtocolVersions = &cli.BoolFlag{
Name: "rollup.load-protocol-versions", Name: "rollup.load-protocol-versions",
Usage: "Load protocol versions from the superchain L1 ProtocolVersions contract (if available), and report in logs and metrics", Usage: "Load protocol versions from the superchain L1 ProtocolVersions contract (if available), and report in logs and metrics",
EnvVars: prefixEnvVars("ROLLUP_LOAD_PROTOCOL_VERSIONS"), EnvVars: prefixEnvVars("ROLLUP_LOAD_PROTOCOL_VERSIONS"),
Category: RollupCategory,
} }
/* Deprecated Flags */ /* Deprecated Flags */
L2EngineSyncEnabled = &cli.BoolFlag{ L2EngineSyncEnabled = &cli.BoolFlag{
...@@ -276,22 +327,25 @@ var ( ...@@ -276,22 +327,25 @@ var (
Hidden: true, Hidden: true,
} }
ConductorEnabledFlag = &cli.BoolFlag{ ConductorEnabledFlag = &cli.BoolFlag{
Name: "conductor.enabled", Name: "conductor.enabled",
Usage: "Enable the conductor service", Usage: "Enable the conductor service",
EnvVars: prefixEnvVars("CONDUCTOR_ENABLED"), EnvVars: prefixEnvVars("CONDUCTOR_ENABLED"),
Value: false, Value: false,
Category: SequencerCategory,
} }
ConductorRpcFlag = &cli.StringFlag{ ConductorRpcFlag = &cli.StringFlag{
Name: "conductor.rpc", Name: "conductor.rpc",
Usage: "Conductor service rpc endpoint", Usage: "Conductor service rpc endpoint",
EnvVars: prefixEnvVars("CONDUCTOR_RPC"), EnvVars: prefixEnvVars("CONDUCTOR_RPC"),
Value: "http://127.0.0.1:8547", Value: "http://127.0.0.1:8547",
Category: SequencerCategory,
} }
ConductorRpcTimeoutFlag = &cli.DurationFlag{ ConductorRpcTimeoutFlag = &cli.DurationFlag{
Name: "conductor.rpc-timeout", Name: "conductor.rpc-timeout",
Usage: "Conductor service rpc timeout", Usage: "Conductor service rpc timeout",
EnvVars: prefixEnvVars("CONDUCTOR_RPC_TIMEOUT"), EnvVars: prefixEnvVars("CONDUCTOR_RPC_TIMEOUT"),
Value: time.Second * 1, Value: time.Second * 1,
Category: SequencerCategory,
} }
) )
...@@ -355,11 +409,11 @@ var Flags []cli.Flag ...@@ -355,11 +409,11 @@ var Flags []cli.Flag
func init() { func init() {
DeprecatedFlags = append(DeprecatedFlags, deprecatedP2PFlags(EnvVarPrefix)...) DeprecatedFlags = append(DeprecatedFlags, deprecatedP2PFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, P2PFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, P2PFlags(EnvVarPrefix)...)
optionalFlags = append(optionalFlags, oplog.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, oplog.CLIFlagsWithCategory(EnvVarPrefix, OperationsCategory)...)
optionalFlags = append(optionalFlags, oppprof.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, oppprof.CLIFlagsWithCategory(EnvVarPrefix, OperationsCategory)...)
optionalFlags = append(optionalFlags, DeprecatedFlags...) optionalFlags = append(optionalFlags, DeprecatedFlags...)
optionalFlags = append(optionalFlags, opflags.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, opflags.CLIFlags(EnvVarPrefix, RollupCategory)...)
optionalFlags = append(optionalFlags, plasma.CLIFlags(EnvVarPrefix)...) optionalFlags = append(optionalFlags, plasma.CLIFlags(EnvVarPrefix, PlasmaCategory)...)
Flags = append(requiredFlags, optionalFlags...) Flags = append(requiredFlags, optionalFlags...)
} }
......
...@@ -62,6 +62,7 @@ func deprecatedP2PFlags(envPrefix string) []cli.Flag { ...@@ -62,6 +62,7 @@ func deprecatedP2PFlags(envPrefix string) []cli.Flag {
Usage: fmt.Sprintf("Deprecated: Use %v instead", ScoringName), Usage: fmt.Sprintf("Deprecated: Use %v instead", ScoringName),
Required: false, Required: false,
Hidden: true, Hidden: true,
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: PeerScoreBandsName, Name: PeerScoreBandsName,
...@@ -69,12 +70,14 @@ func deprecatedP2PFlags(envPrefix string) []cli.Flag { ...@@ -69,12 +70,14 @@ func deprecatedP2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "", Value: "",
Hidden: true, Hidden: true,
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: TopicScoringName, Name: TopicScoringName,
Usage: fmt.Sprintf("Deprecated: Use %v instead", ScoringName), Usage: fmt.Sprintf("Deprecated: Use %v instead", ScoringName),
Required: false, Required: false,
Hidden: true, Hidden: true,
Category: P2PCategory,
}, },
} }
} }
...@@ -88,12 +91,14 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -88,12 +91,14 @@ func P2PFlags(envPrefix string) []cli.Flag {
Usage: "Completely disable the P2P stack", Usage: "Completely disable the P2P stack",
Required: false, Required: false,
EnvVars: p2pEnv(envPrefix, "DISABLE"), EnvVars: p2pEnv(envPrefix, "DISABLE"),
Category: P2PCategory,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: NoDiscoveryName, Name: NoDiscoveryName,
Usage: "Disable Discv5 (node discovery)", Usage: "Disable Discv5 (node discovery)",
Required: false, Required: false,
EnvVars: p2pEnv(envPrefix, "NO_DISCOVERY"), EnvVars: p2pEnv(envPrefix, "NO_DISCOVERY"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: ScoringName, Name: ScoringName,
...@@ -101,6 +106,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -101,6 +106,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "light", Value: "light",
EnvVars: p2pEnv(envPrefix, "PEER_SCORING"), EnvVars: p2pEnv(envPrefix, "PEER_SCORING"),
Category: P2PCategory,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
// Banning Flag - whether or not we want to act on the scoring // Banning Flag - whether or not we want to act on the scoring
...@@ -109,6 +115,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -109,6 +115,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Value: true, Value: true,
Required: false, Required: false,
EnvVars: p2pEnv(envPrefix, "PEER_BANNING"), EnvVars: p2pEnv(envPrefix, "PEER_BANNING"),
Category: P2PCategory,
}, },
&cli.Float64Flag{ &cli.Float64Flag{
Name: BanningThresholdName, Name: BanningThresholdName,
...@@ -116,6 +123,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -116,6 +123,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: -100, Value: -100,
EnvVars: p2pEnv(envPrefix, "PEER_BANNING_THRESHOLD"), EnvVars: p2pEnv(envPrefix, "PEER_BANNING_THRESHOLD"),
Category: P2PCategory,
}, },
&cli.DurationFlag{ &cli.DurationFlag{
Name: BanningDurationName, Name: BanningDurationName,
...@@ -123,6 +131,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -123,6 +131,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 1 * time.Hour, Value: 1 * time.Hour,
EnvVars: p2pEnv(envPrefix, "PEER_BANNING_DURATION"), EnvVars: p2pEnv(envPrefix, "PEER_BANNING_DURATION"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: P2PPrivPathName, Name: P2PPrivPathName,
...@@ -132,6 +141,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -132,6 +141,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Value: "opnode_p2p_priv.txt", Value: "opnode_p2p_priv.txt",
EnvVars: p2pEnv(envPrefix, "PRIV_PATH"), EnvVars: p2pEnv(envPrefix, "PRIV_PATH"),
TakesFile: true, TakesFile: true,
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
// sometimes it may be ok to not persist the peer priv key as file, and instead pass it directly. // sometimes it may be ok to not persist the peer priv key as file, and instead pass it directly.
...@@ -141,6 +151,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -141,6 +151,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true, Hidden: true,
Value: "", Value: "",
EnvVars: p2pEnv(envPrefix, "PRIV_RAW"), EnvVars: p2pEnv(envPrefix, "PRIV_RAW"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: ListenIPName, Name: ListenIPName,
...@@ -148,6 +159,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -148,6 +159,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "0.0.0.0", Value: "0.0.0.0",
EnvVars: p2pEnv(envPrefix, "LISTEN_IP"), EnvVars: p2pEnv(envPrefix, "LISTEN_IP"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: ListenTCPPortName, Name: ListenTCPPortName,
...@@ -155,6 +167,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -155,6 +167,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 9222, Value: 9222,
EnvVars: p2pEnv(envPrefix, "LISTEN_TCP_PORT"), EnvVars: p2pEnv(envPrefix, "LISTEN_TCP_PORT"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: ListenUDPPortName, Name: ListenUDPPortName,
...@@ -162,6 +175,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -162,6 +175,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 0, // can simply match the TCP libp2p port Value: 0, // can simply match the TCP libp2p port
EnvVars: p2pEnv(envPrefix, "LISTEN_UDP_PORT"), EnvVars: p2pEnv(envPrefix, "LISTEN_UDP_PORT"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: AdvertiseIPName, Name: AdvertiseIPName,
...@@ -169,8 +183,9 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -169,8 +183,9 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
// Ignored by default, nodes can discover their own external IP in the happy case, // Ignored by default, nodes can discover their own external IP in the happy case,
// by communicating with bootnodes. Fixed IP is recommended for faster bootstrap though. // by communicating with bootnodes. Fixed IP is recommended for faster bootstrap though.
Value: "", Value: "",
EnvVars: p2pEnv(envPrefix, "ADVERTISE_IP"), EnvVars: p2pEnv(envPrefix, "ADVERTISE_IP"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: AdvertiseTCPPortName, Name: AdvertiseTCPPortName,
...@@ -178,6 +193,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -178,6 +193,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 0, Value: 0,
EnvVars: p2pEnv(envPrefix, "ADVERTISE_TCP"), EnvVars: p2pEnv(envPrefix, "ADVERTISE_TCP"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: AdvertiseUDPPortName, Name: AdvertiseUDPPortName,
...@@ -185,6 +201,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -185,6 +201,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 0, Value: 0,
EnvVars: p2pEnv(envPrefix, "ADVERTISE_UDP"), EnvVars: p2pEnv(envPrefix, "ADVERTISE_UDP"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: BootnodesName, Name: BootnodesName,
...@@ -192,6 +209,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -192,6 +209,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "", Value: "",
EnvVars: p2pEnv(envPrefix, "BOOTNODES"), EnvVars: p2pEnv(envPrefix, "BOOTNODES"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: StaticPeersName, Name: StaticPeersName,
...@@ -200,12 +218,14 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -200,12 +218,14 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "", Value: "",
EnvVars: p2pEnv(envPrefix, "STATIC"), EnvVars: p2pEnv(envPrefix, "STATIC"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: NetRestrictName, Name: NetRestrictName,
Usage: "Comma-separated list of CIDR masks. P2P will only try to connect on these networks", Usage: "Comma-separated list of CIDR masks. P2P will only try to connect on these networks",
Required: false, Required: false,
EnvVars: p2pEnv(envPrefix, "NETRESTRICT"), EnvVars: p2pEnv(envPrefix, "NETRESTRICT"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: HostMuxName, Name: HostMuxName,
...@@ -214,6 +234,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -214,6 +234,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "yamux,mplex", Value: "yamux,mplex",
EnvVars: p2pEnv(envPrefix, "MUX"), EnvVars: p2pEnv(envPrefix, "MUX"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: HostSecurityName, Name: HostSecurityName,
...@@ -222,6 +243,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -222,6 +243,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "noise", Value: "noise",
EnvVars: p2pEnv(envPrefix, "SECURITY"), EnvVars: p2pEnv(envPrefix, "SECURITY"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: PeersLoName, Name: PeersLoName,
...@@ -229,6 +251,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -229,6 +251,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 20, Value: 20,
EnvVars: p2pEnv(envPrefix, "PEERS_LO"), EnvVars: p2pEnv(envPrefix, "PEERS_LO"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: PeersHiName, Name: PeersHiName,
...@@ -236,6 +259,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -236,6 +259,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 30, Value: 30,
EnvVars: p2pEnv(envPrefix, "PEERS_HI"), EnvVars: p2pEnv(envPrefix, "PEERS_HI"),
Category: P2PCategory,
}, },
&cli.DurationFlag{ &cli.DurationFlag{
Name: PeersGraceName, Name: PeersGraceName,
...@@ -243,12 +267,14 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -243,12 +267,14 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 30 * time.Second, Value: 30 * time.Second,
EnvVars: p2pEnv(envPrefix, "PEERS_GRACE"), EnvVars: p2pEnv(envPrefix, "PEERS_GRACE"),
Category: P2PCategory,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: NATName, Name: NATName,
Usage: "Enable NAT traversal with PMP/UPNP devices to learn external IP.", Usage: "Enable NAT traversal with PMP/UPNP devices to learn external IP.",
Required: false, Required: false,
EnvVars: p2pEnv(envPrefix, "NAT"), EnvVars: p2pEnv(envPrefix, "NAT"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: UserAgentName, Name: UserAgentName,
...@@ -257,6 +283,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -257,6 +283,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "optimism", Value: "optimism",
EnvVars: p2pEnv(envPrefix, "AGENT"), EnvVars: p2pEnv(envPrefix, "AGENT"),
Category: P2PCategory,
}, },
&cli.DurationFlag{ &cli.DurationFlag{
Name: TimeoutNegotiationName, Name: TimeoutNegotiationName,
...@@ -265,6 +292,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -265,6 +292,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 10 * time.Second, Value: 10 * time.Second,
EnvVars: p2pEnv(envPrefix, "TIMEOUT_NEGOTIATION"), EnvVars: p2pEnv(envPrefix, "TIMEOUT_NEGOTIATION"),
Category: P2PCategory,
}, },
&cli.DurationFlag{ &cli.DurationFlag{
Name: TimeoutAcceptName, Name: TimeoutAcceptName,
...@@ -273,6 +301,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -273,6 +301,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 10 * time.Second, Value: 10 * time.Second,
EnvVars: p2pEnv(envPrefix, "TIMEOUT_ACCEPT"), EnvVars: p2pEnv(envPrefix, "TIMEOUT_ACCEPT"),
Category: P2PCategory,
}, },
&cli.DurationFlag{ &cli.DurationFlag{
Name: TimeoutDialName, Name: TimeoutDialName,
...@@ -281,6 +310,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -281,6 +310,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: 10 * time.Second, Value: 10 * time.Second,
EnvVars: p2pEnv(envPrefix, "TIMEOUT_DIAL"), EnvVars: p2pEnv(envPrefix, "TIMEOUT_DIAL"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: PeerstorePathName, Name: PeerstorePathName,
...@@ -291,6 +321,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -291,6 +321,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
TakesFile: true, TakesFile: true,
Value: "opnode_peerstore_db", Value: "opnode_peerstore_db",
EnvVars: p2pEnv(envPrefix, "PEERSTORE_PATH"), EnvVars: p2pEnv(envPrefix, "PEERSTORE_PATH"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: DiscoveryPathName, Name: DiscoveryPathName,
...@@ -299,6 +330,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -299,6 +330,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
TakesFile: true, TakesFile: true,
Value: "opnode_discovery_db", Value: "opnode_discovery_db",
EnvVars: p2pEnv(envPrefix, "DISCOVERY_PATH"), EnvVars: p2pEnv(envPrefix, "DISCOVERY_PATH"),
Category: P2PCategory,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: SequencerP2PKeyName, Name: SequencerP2PKeyName,
...@@ -306,6 +338,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -306,6 +338,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Value: "", Value: "",
EnvVars: p2pEnv(envPrefix, "SEQUENCER_KEY"), EnvVars: p2pEnv(envPrefix, "SEQUENCER_KEY"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: GossipMeshDName, Name: GossipMeshDName,
...@@ -314,6 +347,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -314,6 +347,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true, Hidden: true,
Value: p2p.DefaultMeshD, Value: p2p.DefaultMeshD,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_D"), EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_D"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: GossipMeshDloName, Name: GossipMeshDloName,
...@@ -322,6 +356,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -322,6 +356,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true, Hidden: true,
Value: p2p.DefaultMeshDlo, Value: p2p.DefaultMeshDlo,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DLO"), EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DLO"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: GossipMeshDhiName, Name: GossipMeshDhiName,
...@@ -330,6 +365,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -330,6 +365,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true, Hidden: true,
Value: p2p.DefaultMeshDhi, Value: p2p.DefaultMeshDhi,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DHI"), EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DHI"),
Category: P2PCategory,
}, },
&cli.UintFlag{ &cli.UintFlag{
Name: GossipMeshDlazyName, Name: GossipMeshDlazyName,
...@@ -338,6 +374,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -338,6 +374,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Hidden: true, Hidden: true,
Value: p2p.DefaultMeshDlazy, Value: p2p.DefaultMeshDlazy,
EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DLAZY"), EnvVars: p2pEnv(envPrefix, "GOSSIP_MESH_DLAZY"),
Category: P2PCategory,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: GossipFloodPublishName, Name: GossipFloodPublishName,
...@@ -345,6 +382,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -345,6 +382,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Required: false, Required: false,
Hidden: true, Hidden: true,
EnvVars: p2pEnv(envPrefix, "GOSSIP_FLOOD_PUBLISH"), EnvVars: p2pEnv(envPrefix, "GOSSIP_FLOOD_PUBLISH"),
Category: P2PCategory,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: SyncReqRespName, Name: SyncReqRespName,
...@@ -352,6 +390,7 @@ func P2PFlags(envPrefix string) []cli.Flag { ...@@ -352,6 +390,7 @@ func P2PFlags(envPrefix string) []cli.Flag {
Value: true, Value: true,
Required: false, Required: false,
EnvVars: p2pEnv(envPrefix, "SYNC_REQ_RESP"), EnvVars: p2pEnv(envPrefix, "SYNC_REQ_RESP"),
Category: P2PCategory,
}, },
} }
} }
...@@ -17,24 +17,27 @@ func plasmaEnv(envprefix, v string) []string { ...@@ -17,24 +17,27 @@ func plasmaEnv(envprefix, v string) []string {
return []string{envprefix + "_PLASMA_" + v} return []string{envprefix + "_PLASMA_" + v}
} }
func CLIFlags(envPrefix string) []cli.Flag { func CLIFlags(envPrefix string, category string) []cli.Flag {
return []cli.Flag{ return []cli.Flag{
&cli.BoolFlag{ &cli.BoolFlag{
Name: EnabledFlagName, Name: EnabledFlagName,
Usage: "Enable plasma mode", Usage: "Enable plasma mode",
Value: false, Value: false,
EnvVars: plasmaEnv(envPrefix, "ENABLED"), EnvVars: plasmaEnv(envPrefix, "ENABLED"),
Category: category,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: DaServerAddressFlagName, Name: DaServerAddressFlagName,
Usage: "HTTP address of a DA Server", Usage: "HTTP address of a DA Server",
EnvVars: plasmaEnv(envPrefix, "DA_SERVER"), EnvVars: plasmaEnv(envPrefix, "DA_SERVER"),
Category: category,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: VerifyOnReadFlagName, Name: VerifyOnReadFlagName,
Usage: "Verify input data matches the commitments from the DA storage service", Usage: "Verify input data matches the commitments from the DA storage service",
Value: true, Value: true,
EnvVars: plasmaEnv(envPrefix, "VERIFY_ON_READ"), EnvVars: plasmaEnv(envPrefix, "VERIFY_ON_READ"),
Category: category,
}, },
} }
} }
......
...@@ -18,44 +18,49 @@ const ( ...@@ -18,44 +18,49 @@ const (
EcotoneOverrideFlagName = "override.ecotone" EcotoneOverrideFlagName = "override.ecotone"
) )
func CLIFlags(envPrefix string) []cli.Flag { func CLIFlags(envPrefix string, category string) []cli.Flag {
return []cli.Flag{ return []cli.Flag{
&cli.Uint64Flag{ &cli.Uint64Flag{
Name: CanyonOverrideFlagName, Name: CanyonOverrideFlagName,
Usage: "Manually specify the Canyon fork timestamp, overriding the bundled setting", Usage: "Manually specify the Canyon fork timestamp, overriding the bundled setting",
EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_CANYON"), EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_CANYON"),
Hidden: false, Hidden: false,
Category: category,
}, },
&cli.Uint64Flag{ &cli.Uint64Flag{
Name: DeltaOverrideFlagName, Name: DeltaOverrideFlagName,
Usage: "Manually specify the Delta fork timestamp, overriding the bundled setting", Usage: "Manually specify the Delta fork timestamp, overriding the bundled setting",
EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_DELTA"), EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_DELTA"),
Hidden: false, Hidden: false,
Category: category,
}, },
&cli.Uint64Flag{ &cli.Uint64Flag{
Name: EcotoneOverrideFlagName, Name: EcotoneOverrideFlagName,
Usage: "Manually specify the Ecotone fork timestamp, overriding the bundled setting", Usage: "Manually specify the Ecotone fork timestamp, overriding the bundled setting",
EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_ECOTONE"), EnvVars: opservice.PrefixEnvVar(envPrefix, "OVERRIDE_ECOTONE"),
Hidden: false, Hidden: false,
Category: category,
}, },
CLINetworkFlag(envPrefix), CLINetworkFlag(envPrefix, category),
CLIRollupConfigFlag(envPrefix), CLIRollupConfigFlag(envPrefix, category),
} }
} }
func CLINetworkFlag(envPrefix string) cli.Flag { func CLINetworkFlag(envPrefix string, category string) cli.Flag {
return &cli.StringFlag{ return &cli.StringFlag{
Name: NetworkFlagName, Name: NetworkFlagName,
Usage: fmt.Sprintf("Predefined network selection. Available networks: %s", strings.Join(chaincfg.AvailableNetworks(), ", ")), Usage: fmt.Sprintf("Predefined network selection. Available networks: %s", strings.Join(chaincfg.AvailableNetworks(), ", ")),
EnvVars: opservice.PrefixEnvVar(envPrefix, "NETWORK"), EnvVars: opservice.PrefixEnvVar(envPrefix, "NETWORK"),
Category: category,
} }
} }
func CLIRollupConfigFlag(envPrefix string) cli.Flag { func CLIRollupConfigFlag(envPrefix string, category string) cli.Flag {
return &cli.StringFlag{ return &cli.StringFlag{
Name: RollupConfigFlagName, Name: RollupConfigFlagName,
Usage: "Rollup chain parameters", Usage: "Rollup chain parameters",
EnvVars: opservice.PrefixEnvVar(envPrefix, "ROLLUP_CONFIG"), EnvVars: opservice.PrefixEnvVar(envPrefix, "ROLLUP_CONFIG"),
Category: category,
} }
} }
......
...@@ -22,27 +22,34 @@ const ( ...@@ -22,27 +22,34 @@ const (
ColorFlagName = "log.color" ColorFlagName = "log.color"
) )
// CLIFlags creates flag definitions for the logging utils. func CLIFlags(envPrefix string) []cli.Flag {
return CLIFlagsWithCategory(envPrefix, "")
}
// CLIFlagsWithCategory creates flag definitions for the logging utils.
// Warning: flags are not safe to reuse due to an upstream urfave default-value mutation bug in GenericFlag. // Warning: flags are not safe to reuse due to an upstream urfave default-value mutation bug in GenericFlag.
// Use cliapp.ProtectFlags(flags) to create a copy before passing it into an App if the app runs more than once. // Use cliapp.ProtectFlags(flags) to create a copy before passing it into an App if the app runs more than once.
func CLIFlags(envPrefix string) []cli.Flag { func CLIFlagsWithCategory(envPrefix string, category string) []cli.Flag {
return []cli.Flag{ return []cli.Flag{
&cli.GenericFlag{ &cli.GenericFlag{
Name: LevelFlagName, Name: LevelFlagName,
Usage: "The lowest log level that will be output", Usage: "The lowest log level that will be output",
Value: NewLevelFlagValue(log.LevelInfo), Value: NewLevelFlagValue(log.LevelInfo),
EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_LEVEL"), EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_LEVEL"),
Category: category,
}, },
&cli.GenericFlag{ &cli.GenericFlag{
Name: FormatFlagName, Name: FormatFlagName,
Usage: "Format the log output. Supported formats: 'text', 'terminal', 'logfmt', 'json', 'json-pretty',", Usage: "Format the log output. Supported formats: 'text', 'terminal', 'logfmt', 'json', 'json-pretty',",
Value: NewFormatFlagValue(FormatText), Value: NewFormatFlagValue(FormatText),
EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_FORMAT"), EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_FORMAT"),
Category: category,
}, },
&cli.BoolFlag{ &cli.BoolFlag{
Name: ColorFlagName, Name: ColorFlagName,
Usage: "Color the log output if in terminal mode", Usage: "Color the log output if in terminal mode",
EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_COLOR"), EnvVars: opservice.PrefixEnvVar(envPrefix, "LOG_COLOR"),
Category: category,
}, },
} }
} }
......
...@@ -61,29 +61,37 @@ func DefaultCLIConfig() CLIConfig { ...@@ -61,29 +61,37 @@ func DefaultCLIConfig() CLIConfig {
} }
func CLIFlags(envPrefix string) []cli.Flag { func CLIFlags(envPrefix string) []cli.Flag {
return CLIFlagsWithCategory(envPrefix, "")
}
func CLIFlagsWithCategory(envPrefix string, category string) []cli.Flag {
return []cli.Flag{ return []cli.Flag{
&cli.BoolFlag{ &cli.BoolFlag{
Name: EnabledFlagName, Name: EnabledFlagName,
Usage: "Enable the pprof server", Usage: "Enable the pprof server",
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_ENABLED"), EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_ENABLED"),
Category: category,
}, },
&cli.StringFlag{ &cli.StringFlag{
Name: ListenAddrFlagName, Name: ListenAddrFlagName,
Usage: "pprof listening address", Usage: "pprof listening address",
Value: defaultListenAddr, // TODO(CLI-4159): Switch to 127.0.0.1 Value: defaultListenAddr, // TODO(CLI-4159): Switch to 127.0.0.1
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_ADDR"), EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_ADDR"),
Category: category,
}, },
&cli.IntFlag{ &cli.IntFlag{
Name: PortFlagName, Name: PortFlagName,
Usage: "pprof listening port", Usage: "pprof listening port",
Value: defaultListenPort, Value: defaultListenPort,
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_PORT"), EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_PORT"),
Category: category,
}, },
&cli.GenericFlag{ &cli.GenericFlag{
Name: ProfilePathFlagName, Name: ProfilePathFlagName,
Usage: "pprof file path. If it is a directory, the path is {dir}/{profileType}.prof", Usage: "pprof file path. If it is a directory, the path is {dir}/{profileType}.prof",
Value: new(flags.PathFlag), Value: new(flags.PathFlag),
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_PATH"), EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_PATH"),
Category: category,
}, },
&cli.GenericFlag{ &cli.GenericFlag{
Name: ProfileTypeFlagName, Name: ProfileTypeFlagName,
...@@ -92,7 +100,8 @@ func CLIFlags(envPrefix string) []cli.Flag { ...@@ -92,7 +100,8 @@ func CLIFlags(envPrefix string) []cli.Flag {
defaultProfType := profileType("") defaultProfType := profileType("")
return &defaultProfType return &defaultProfType
}(), }(),
EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_TYPE"), EnvVars: opservice.PrefixEnvVar(envPrefix, "PPROF_TYPE"),
Category: category,
}, },
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment