github.com/MetalBlockchain/metalgo@v1.11.9/config/config.md (about)

     1  ---
     2  tags: [Nodes]
     3  description: This document lists all available configuration and flags for AvalancheGo.
     4  sidebar_label: AvalancheGo Configs + Flags
     5  pagination_label: AvalancheGo Configs and Flags
     6  sidebar_position: 0
     7  ---
     8  
     9  # AvalancheGo Configs and Flags
    10  
    11  <!-- markdownlint-disable MD001 -->
    12  
    13  You can specify the configuration of a node with the arguments below.
    14  
    15  ## Data Directory
    16  
    17  #### `--data-dir` (string)
    18  
    19  Sets the base data directory where default sub-directories will be placed unless otherwise specified.
    20  Defaults to `$HOME/.avalanchego`.
    21  
    22  ## Config File
    23  
    24  #### `--config-file` (string)
    25  
    26  Path to a JSON file that specifies this node's configuration. Command line
    27  arguments will override arguments set in the config file. This flag is ignored
    28  if `--config-file-content` is specified.
    29  
    30  Example JSON config file:
    31  
    32  ```json
    33  {
    34    "log-level": "debug"
    35  }
    36  ```
    37  
    38  :::tip
    39  [Install Script](/nodes/run/with-installer/installing-avalanchego.md) creates the
    40  node config file at `~/.avalanchego/configs/node.json`. No default file is
    41  created if [AvalancheGo is built from source](/nodes/run/node-manually.md), you
    42  would need to create it manually if needed.
    43  :::
    44  
    45  #### `--config-file-content` (string)
    46  
    47  As an alternative to `--config-file`, it allows specifying base64 encoded config
    48  content.
    49  
    50  #### `--config-file-content-type` (string)
    51  
    52  Specifies the format of the base64 encoded config content. JSON, TOML, YAML are
    53  among currently supported file format (see
    54  [here](https://github.com/spf13/viper#reading-config-files) for full list). Defaults to `JSON`.
    55  
    56  ## Avalanche Community Proposals
    57  
    58  #### `--acp-support` (array of integers)
    59  
    60  The `--acp-support` flag allows an AvalancheGo node to indicate support for a
    61  set of [Avalanche Community Proposals](https://github.com/avalanche-foundation/ACPs).
    62  
    63  #### `--acp-object` (array of integers)
    64  
    65  The `--acp-object` flag allows an AvalancheGo node to indicate objection for a
    66  set of [Avalanche Community Proposals](https://github.com/avalanche-foundation/ACPs).
    67  
    68  ## APIs
    69  
    70  #### `--api-admin-enabled` (boolean)
    71  
    72  If set to `true`, this node will expose the Admin API. Defaults to `false`.
    73  See [here](/reference/avalanchego/admin-api.md) for more information.
    74  
    75  #### `--api-health-enabled` (boolean)
    76  
    77  If set to `false`, this node will not expose the Health API. Defaults to `true`. See
    78  [here](/reference/avalanchego/health-api.md) for more information.
    79  
    80  #### `--index-enabled` (boolean)
    81  
    82  If set to `true`, this node will enable the indexer and the Index API will be
    83  available. Defaults to `false`. See
    84  [here](/reference/avalanchego/index-api.md) for more information.
    85  
    86  #### `--api-info-enabled` (boolean)
    87  
    88  If set to `false`, this node will not expose the Info API. Defaults to `true`. See
    89  [here](/reference/avalanchego/info-api.md) for more information.
    90  
    91  #### `--api-keystore-enabled` (boolean)
    92  
    93  If set to `true`, this node will expose the Keystore API. Defaults to `false`.
    94  See [here](/reference/avalanchego/keystore-api.md) for more information.
    95  
    96  #### `--api-metrics-enabled` (boolean)
    97  
    98  If set to `false`, this node will not expose the Metrics API. Defaults to
    99  `true`. See [here](/reference/avalanchego/metrics-api.md) for more information.
   100  
   101  #### `--http-shutdown-wait` (duration)
   102  
   103  Duration to wait after receiving SIGTERM or SIGINT before initiating shutdown.
   104  The `/health` endpoint will return unhealthy during this duration (if the Health
   105  API is enabled.) Defaults to `0s`.
   106  
   107  #### `--http-shutdown-timeout` (duration)
   108  
   109  Maximum duration to wait for existing connections to complete during node
   110  shutdown. Defaults to `10s`.
   111  
   112  ## Bootstrapping
   113  
   114  #### `--bootstrap-beacon-connection-timeout` (duration)
   115  
   116  Timeout when attempting to connect to bootstrapping beacons. Defaults to `1m`.
   117  
   118  #### `--bootstrap-ids` (string)
   119  
   120  Bootstrap IDs is a comma-separated list of validator IDs. These IDs will be used
   121  to authenticate bootstrapping peers. An example setting of this field would be
   122  `--bootstrap-ids="NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg,NodeID-MFrZFVCXPv5iCn6M9K6XduxGTYp891xXZ"`.
   123  The number of given IDs here must be same with number of given
   124  `--bootstrap-ips`. The default value depends on the network ID.
   125  
   126  #### `--bootstrap-ips` (string)
   127  
   128  Bootstrap IPs is a comma-separated list of IP:port pairs. These IP Addresses
   129  will be used to bootstrap the current Avalanche state. An example setting of
   130  this field would be `--bootstrap-ips="127.0.0.1:12345,1.2.3.4:5678"`. The number
   131  of given IPs here must be same with number of given `--bootstrap-ids`. The
   132  default value depends on the network ID.
   133  
   134  #### `--bootstrap-retry-enabled` (boolean)
   135  
   136  If set to `false`, will not retry bootstrapping if it fails. Defaults to `true`.
   137  
   138  #### `--bootstrap-retry-warn-frequency` (uint)
   139  
   140  Specifies how many times bootstrap should be retried before warning the operator. Defaults to `50`.
   141  
   142  #### `--bootstrap-ancestors-max-containers-sent` (uint)
   143  
   144  Max number of containers in an `Ancestors` message sent by this node. Defaults to `2000`.
   145  
   146  #### `--bootstrap-ancestors-max-containers-received` (unit)
   147  
   148  This node reads at most this many containers from an incoming `Ancestors` message. Defaults to `2000`.
   149  
   150  #### `--bootstrap-max-time-get-ancestors` (duration)
   151  
   152  Max Time to spend fetching a container and its ancestors when responding to a GetAncestors message.
   153  Defaults to `50ms`.
   154  
   155  ## State Syncing
   156  
   157  #### `--state-sync-ids` (string)
   158  
   159  State sync IDs is a comma-separated list of validator IDs. The specified
   160  validators will be contacted to get and authenticate the starting point (state
   161  summary) for state sync. An example setting of this field would be
   162  `--state-sync-ids="NodeID-7Xhw2mDxuDS44j42TCB6U5579esbSt3Lg,NodeID-MFrZFVCXPv5iCn6M9K6XduxGTYp891xXZ"`.
   163  The number of given IDs here must be same with number of given
   164  `--state-sync-ips`. The default value is empty, which results in all validators
   165  being sampled.
   166  
   167  #### `--state-sync-ips` (string)
   168  
   169  State sync IPs is a comma-separated list of IP:port pairs. These IP Addresses
   170  will be contacted to get and authenticate the starting point (state summary) for
   171  state sync. An example setting of this field would be
   172  `--state-sync-ips="127.0.0.1:12345,1.2.3.4:5678"`. The number of given IPs here
   173  must be the same with the number of given `--state-sync-ids`.
   174  
   175  ## Partial Sync Primary Network
   176  
   177  #### `--partial-sync-primary-network` (string)
   178  
   179  Partial sync enables non-validators to optionally sync only the P-chain on the primary network.
   180  
   181  ## Chain Configs
   182  
   183  Some blockchains allow the node operator to provide custom configurations for
   184  individual blockchains. These custom configurations are broken down into two
   185  categories: network upgrades and optional chain configurations. AvalancheGo
   186  reads in these configurations from the chain configuration directory and passes
   187  them into the VM on initialization.
   188  
   189  #### `--chain-config-dir` (string)
   190  
   191  Specifies the directory that contains chain configs, as described
   192  [here](/nodes/configure/chain-configs/chain-config-flags.md). Defaults to `$HOME/.avalanchego/configs/chains`.
   193  If this flag is not provided and the default directory does not exist,
   194  AvalancheGo will not exit since custom configs are optional. However, if the
   195  flag is set, the specified folder must exist, or AvalancheGo will exit with an
   196  error. This flag is ignored if `--chain-config-content` is specified.
   197  
   198  :::note
   199  Please replace `chain-config-dir` and `blockchainID` with their actual values.
   200  :::
   201  
   202  Network upgrades are passed in from the location:
   203  `chain-config-dir`/`blockchainID`/`upgrade.*`.
   204  Upgrade files are typically json encoded and therefore named `upgrade.json`.
   205  However, the format of the file is VM dependent.
   206  After a blockchain has activated a network upgrade, the same upgrade
   207  configuration must always be passed in to ensure that the network upgrades
   208  activate at the correct time.
   209  
   210  The chain configs are passed in from the location
   211  `chain-config-dir`/`blockchainID`/`config.*`.
   212  Upgrade files are typically json encoded and therefore named `upgrade.json`.
   213  However, the format of the file is VM dependent.
   214  This configuration is used by the VM to handle optional configuration flags such
   215  as enabling/disabling APIs, updating log level, etc.
   216  The chain configuration is intended to provide optional configuration parameters
   217  and the VM will use default values if nothing is passed in.
   218  
   219  Full reference for all configuration options for some standard chains can be
   220  found in a separate [chain config flags](/nodes/configure/chain-configs/chain-config-flags.md) document.
   221  
   222  Full reference for `subnet-evm` upgrade configuration can be found in a separate
   223  [Customize a Subnet](/build/subnet/upgrade/customize-a-subnet.md) document.
   224  
   225  #### `--chain-config-content` (string)
   226  
   227  As an alternative to `--chain-config-dir`, chains custom configurations can be
   228  loaded altogether from command line via `--chain-config-content` flag. Content
   229  must be base64 encoded.
   230  
   231  Example:
   232  
   233  ```bash
   234  cchainconfig="$(echo -n '{"log-level":"trace"}' | base64)"
   235  chainconfig="$(echo -n "{\"C\":{\"Config\":\"${cchainconfig}\",\"Upgrade\":null}}" | base64)"
   236  avalanchego --chain-config-content "${chainconfig}"
   237  ```
   238  
   239  #### `--chain-aliases-file` (string)
   240  
   241  Path to JSON file that defines aliases for Blockchain IDs. Defaults to
   242  `~/.avalanchego/configs/chains/aliases.json`. This flag is ignored if
   243  `--chain-aliases-file-content` is specified. Example content:
   244  
   245  ```json
   246  {
   247    "q2aTwKuyzgs8pynF7UXBZCU7DejbZbZ6EUyHr3JQzYgwNPUPi": ["DFK"]
   248  }
   249  ```
   250  
   251  The above example aliases the Blockchain whose ID is
   252  `"q2aTwKuyzgs8pynF7UXBZCU7DejbZbZ6EUyHr3JQzYgwNPUPi"` to `"DFK"`. Chain
   253  aliases are added after adding primary network aliases and before any changes to
   254  the aliases via the admin API. This means that the first alias included for a
   255  Blockchain on a Subnet will be treated as the `"Primary Alias"` instead of the
   256  full blockchainID. The Primary Alias is used in all metrics and logs.
   257  
   258  #### `--chain-aliases-file-content` (string)
   259  
   260  As an alternative to `--chain-aliases-file`, it allows specifying base64 encoded
   261  aliases for Blockchains.
   262  
   263  #### `--chain-data-dir` (string)
   264  
   265  Chain specific data directory. Defaults to `$HOME/.avalanchego/chainData`.
   266  
   267  ## Database
   268  
   269  ##### `--db-dir` (string, file path)
   270  
   271  Specifies the directory to which the database is persisted. Defaults to `"$HOME/.avalanchego/db"`.
   272  
   273  ##### `--db-type` (string)
   274  
   275  Specifies the type of database to use. Must be one of `leveldb`, `memdb`, or `pebbledb`.
   276  `memdb` is an in-memory, non-persisted database.
   277  
   278  :::note
   279  
   280  `memdb` stores everything in memory. So if you have a 900 GiB LevelDB instance, then using `memdb`
   281  you’d need 900 GiB of RAM.
   282  `memdb` is useful for fast one-off testing, not for running an actual node (on Fuji or Mainnet).
   283  Also note that `memdb` doesn’t persist after restart. So any time you restart the node it would
   284  start syncing from scratch.
   285  
   286  :::
   287  
   288  ### Database Config
   289  
   290  #### `--db-config-file` (string)
   291  
   292  Path to the database config file. Ignored if `--config-file-content` is specified.
   293  
   294  #### `--db-config-file-content` (string)
   295  
   296  As an alternative to `--db-config-file`, it allows specifying base64 encoded database config content.
   297  
   298  #### LevelDB Config
   299  
   300  A LevelDB config file must be JSON and may have these keys.
   301  Any keys not given will receive the default value.
   302  
   303  ```go
   304  {
   305  	// BlockCacheCapacity defines the capacity of the 'sorted table' block caching.
   306  	// Use -1 for zero.
   307  	//
   308  	// The default value is 12MiB.
   309  	"blockCacheCapacity": int
   310  
   311  	// BlockSize is the minimum uncompressed size in bytes of each 'sorted table'
   312  	// block.
   313  	//
   314  	// The default value is 4KiB.
   315  	"blockSize": int
   316  
   317  	// CompactionExpandLimitFactor limits compaction size after expanded.
   318  	// This will be multiplied by table size limit at compaction target level.
   319  	//
   320  	// The default value is 25.
   321  	"compactionExpandLimitFactor": int
   322  
   323  	// CompactionGPOverlapsFactor limits overlaps in grandparent (Level + 2)
   324  	// that a single 'sorted table' generates.  This will be multiplied by
   325  	// table size limit at grandparent level.
   326  	//
   327  	// The default value is 10.
   328  	"compactionGPOverlapsFactor": int
   329  
   330  	// CompactionL0Trigger defines number of 'sorted table' at level-0 that will
   331  	// trigger compaction.
   332  	//
   333  	// The default value is 4.
   334  	"compactionL0Trigger": int
   335  
   336  	// CompactionSourceLimitFactor limits compaction source size. This doesn't apply to
   337  	// level-0.
   338  	// This will be multiplied by table size limit at compaction target level.
   339  	//
   340  	// The default value is 1.
   341  	"compactionSourceLimitFactor": int
   342  
   343  	// CompactionTableSize limits size of 'sorted table' that compaction generates.
   344  	// The limits for each level will be calculated as:
   345  	//   CompactionTableSize * (CompactionTableSizeMultiplier ^ Level)
   346  	// The multiplier for each level can also fine-tuned using CompactionTableSizeMultiplierPerLevel.
   347  	//
   348  	// The default value is 2MiB.
   349  	"compactionTableSize": int
   350  
   351  	// CompactionTableSizeMultiplier defines multiplier for CompactionTableSize.
   352  	//
   353  	// The default value is 1.
   354  	"compactionTableSizeMultiplier": float
   355  
   356  	// CompactionTableSizeMultiplierPerLevel defines per-level multiplier for
   357  	// CompactionTableSize.
   358  	// Use zero to skip a level.
   359  	//
   360  	// The default value is nil.
   361  	"compactionTableSizeMultiplierPerLevel": []float
   362  
   363  	// CompactionTotalSize limits total size of 'sorted table' for each level.
   364  	// The limits for each level will be calculated as:
   365  	//   CompactionTotalSize * (CompactionTotalSizeMultiplier ^ Level)
   366  	// The multiplier for each level can also fine-tuned using
   367  	// CompactionTotalSizeMultiplierPerLevel.
   368  	//
   369  	// The default value is 10MiB.
   370  	"compactionTotalSize": int
   371  
   372  	// CompactionTotalSizeMultiplier defines multiplier for CompactionTotalSize.
   373  	//
   374  	// The default value is 10.
   375  	"compactionTotalSizeMultiplier": float
   376  
   377  	// DisableSeeksCompaction allows disabling 'seeks triggered compaction'.
   378  	// The purpose of 'seeks triggered compaction' is to optimize database so
   379  	// that 'level seeks' can be minimized, however this might generate many
   380  	// small compaction which may not preferable.
   381  	//
   382  	// The default is true.
   383  	"disableSeeksCompaction": bool
   384  
   385  	// OpenFilesCacheCapacity defines the capacity of the open files caching.
   386  	// Use -1 for zero, this has same effect as specifying NoCacher to OpenFilesCacher.
   387  	//
   388  	// The default value is 1024.
   389  	"openFilesCacheCapacity": int
   390  
   391  	// WriteBuffer defines maximum size of a 'memdb' before flushed to
   392  	// 'sorted table'. 'memdb' is an in-memory DB backed by an on-disk
   393  	// unsorted journal.
   394  	//
   395  	// LevelDB may held up to two 'memdb' at the same time.
   396  	//
   397  	// The default value is 6MiB.
   398  	"writeBuffer": int
   399  
   400  	// FilterBitsPerKey is the number of bits to add to the bloom filter per
   401  	// key.
   402  	//
   403  	// The default value is 10.
   404  	"filterBitsPerKey": int
   405  
   406  	// MaxManifestFileSize is the maximum size limit of the MANIFEST-****** file.
   407  	// When the MANIFEST-****** file grows beyond this size, LevelDB will create
   408  	// a new MANIFEST file.
   409  	//
   410  	// The default value is infinity.
   411  	"maxManifestFileSize": int
   412  
   413  	// MetricUpdateFrequency is the frequency to poll LevelDB metrics in
   414  	// nanoseconds.
   415  	// If <= 0, LevelDB metrics aren't polled.
   416  	//
   417  	// The default value is 10s.
   418  	"metricUpdateFrequency": int
   419  }
   420  ```
   421  
   422  ## Genesis
   423  
   424  #### `--genesis-file` (string)
   425  
   426  Path to a JSON file containing the genesis data to use. Ignored when running
   427  standard networks (Mainnet, Fuji Testnet), or when `--genesis-content` is
   428  specified. If not given, uses default genesis data.
   429  
   430  These are the main properties in the JSON file:
   431  
   432  - `networkID`: A unique identifier for the blockchain, must be a number in the range [0, 2^32).
   433  - `allocations`: The list of initial addresses, their initial balances and the unlock schedule for each.
   434  - `startTime`: The time of the beginning of the blockchain, it must be a Unix
   435    timestamp and it can't be a time in the future.
   436  - `initialStakeDuration`: The stake duration, in seconds, of the validators that exist at network genesis.
   437  - `initialStakeDurationOffset`: The offset, in seconds, between the start times
   438    of the validators that exist at genesis.
   439  - `initialStakedFunds`: A list of addresses that own the funds staked at genesis
   440    (each address must be present in `allocations` as well)
   441  - `initialStakers`: The validators that exist at genesis. Each element contains
   442    the `rewardAddress`, NodeID and the `delegationFee` of the validator.
   443  - `cChainGenesis`: The genesis info to be passed to the C-Chain.
   444  - `message`: A message to include in the genesis. Not required.
   445  
   446  For an example of a JSON representation of genesis data, see [genesis_local.json](https://github.com/ava-labs/avalanchego/blob/master/genesis/genesis_local.json).
   447  
   448  #### `--genesis-file-content` (string)
   449  
   450  As an alternative to `--genesis-file`, it allows specifying base64 encoded genesis data to use.
   451  
   452  ## HTTP Server
   453  
   454  #### `--http-host` (string)
   455  
   456  The address that HTTP APIs listen on. Defaults to `127.0.0.1`. This means that
   457  by default, your node can only handle API calls made from the same machine. To
   458  allow API calls from other machines, use `--http-host=`. You can also enter
   459  domain names as parameter.
   460  
   461  #### `--http-port` (int)
   462  
   463  Each node runs an HTTP server that provides the APIs for interacting with the
   464  node and the Avalanche network. This argument specifies the port that the HTTP
   465  server will listen on. The default value is `9650`.
   466  
   467  #### `--http-tls-cert-file` (string, file path)
   468  
   469  This argument specifies the location of the TLS certificate used by the node for
   470  the HTTPS server. This must be specified when `--http-tls-enabled=true`. There
   471  is no default value. This flag is ignored if `--http-tls-cert-file-content` is
   472  specified.
   473  
   474  #### `--http-tls-cert-file-content` (string)
   475  
   476  As an alternative to `--http-tls-cert-file`, it allows specifying base64 encoded
   477  content of the TLS certificate used by the node for the HTTPS server. Note that
   478  full certificate content, with the leading and trailing header, must be base64
   479  encoded. This must be specified when `--http-tls-enabled=true`.
   480  
   481  #### `--http-tls-enabled` (boolean)
   482  
   483  If set to `true`, this flag will attempt to upgrade the server to use HTTPS. Defaults to `false`.
   484  
   485  #### `--http-tls-key-file` (string, file path)
   486  
   487  This argument specifies the location of the TLS private key used by the node for
   488  the HTTPS server. This must be specified when `--http-tls-enabled=true`. There
   489  is no default value. This flag is ignored if `--http-tls-key-file-content` is
   490  specified.
   491  
   492  #### `--http-tls-key-file-content` (string)
   493  
   494  As an alternative to `--http-tls-key-file`, it allows specifying base64 encoded
   495  content of the TLS private key used by the node for the HTTPS server. Note that
   496  full private key content, with the leading and trailing header, must be base64
   497  encoded. This must be specified when `--http-tls-enabled=true`.
   498  
   499  #### `--http-read-timeout` (string)
   500  
   501  Maximum duration for reading the entire request, including the body. A zero or
   502  negative value means there will be no timeout.
   503  
   504  #### `--http-read-header-timeout` (string)
   505  
   506  Maximum duration to read request headers. The connection’s read deadline is
   507  reset after reading the headers. If `--http-read-header-timeout` is zero, the
   508  value of `--http-read-timeout` is used. If both are zero, there is no timeout.
   509  
   510  #### `--http-write-timeout` (string)
   511  
   512  Maximum duration before timing out writes of the response. It is reset whenever
   513  a new request’s header is read. A zero or negative value means there will be no
   514  timeout.
   515  
   516  #### `--http-idle-timeout` (string)
   517  
   518  Maximum duration to wait for the next request when keep-alives are enabled. If
   519  `--http-idle-timeout` is zero, the value of `--http-read-timeout` is used. If both are zero,
   520  there is no timeout.
   521  
   522  #### `--http-allowed-origins` (string)
   523  
   524  Origins to allow on the HTTP port. Defaults to `*` which allows all origins. Example:
   525  `"https://*.avax.network https://*.avax-test.network"`
   526  
   527  #### `--http-allowed-hosts` (string)
   528  
   529  List of acceptable host names in API requests. Provide the wildcard (`'*'`) to accept
   530  requests from all hosts. API requests where the `Host` field is empty or an IP address
   531  will always be accepted. An API call whose HTTP `Host` field isn't acceptable will
   532  receive a 403 error code. Defaults to `localhost`.
   533  
   534  ## File Descriptor Limit
   535  
   536  #### `--fd-limit` (int)
   537  
   538  Attempts to raise the process file descriptor limit to at least this value and
   539  error if the value is above the system max. Linux default `32768`.
   540  
   541  ## Logging
   542  
   543  #### `--log-level` (string, `{verbo, debug, trace, info, warn, error, fatal, off}`)
   544  
   545  The log level determines which events to log. There are 8 different levels, in
   546  order from highest priority to lowest.
   547  
   548  - `off`: No logs have this level of logging. Turns off logging.
   549  - `fatal`: Fatal errors that are not recoverable.
   550  - `error`: Errors that the node encounters, these errors were able to be recovered.
   551  - `warn`: A Warning that might be indicative of a spurious byzantine node, or potential future error.
   552  - `info`: Useful descriptions of node status updates.
   553  - `trace`: Traces container (block, vertex, transaction) job results. Useful for
   554    tracing container IDs and their outcomes.
   555  - `debug`: Debug logging is useful when attempting to understand possible bugs
   556    in the code. More information that would be typically desired for normal usage
   557    will be displayed.
   558  - `verbo`: Tracks extensive amounts of information the node is processing. This
   559    includes message contents and binary dumps of data for extremely low level
   560    protocol analysis.
   561  
   562  When specifying a log level note that all logs with the specified priority or
   563  higher will be tracked. Defaults to `info`.
   564  
   565  #### `--log-display-level` (string, `{verbo, debug, trace, info, warn, error, fatal, off}`)
   566  
   567  The log level determines which events to display to stdout. If left blank,
   568  will default to the value provided to `--log-level`.
   569  
   570  #### `--log-format` (string, `{auto, plain, colors, json}`)
   571  
   572  The structure of log format. Defaults to `auto` which formats terminal-like
   573  logs, when the output is a terminal. Otherwise, should be one of `{auto, plain, colors, json}`
   574  
   575  #### `--log-dir` (string, file path)
   576  
   577  Specifies the directory in which system logs are kept. Defaults to `"$HOME/.avalanchego/logs"`.
   578  If you are running the node as a system service (ex. using the installer script) logs will also be
   579  stored in `$HOME/var/log/syslog`.
   580  
   581  #### `--log-disable-display-plugin-logs` (boolean)
   582  
   583  Disables displaying plugin logs in stdout. Defaults to `false`.
   584  
   585  #### `--log-rotater-max-size` (uint)
   586  
   587  The maximum file size in megabytes of the log file before it gets rotated. Defaults to `8`.
   588  
   589  #### `--log-rotater-max-files` (uint)
   590  
   591  The maximum number of old log files to retain. 0 means retain all old log files. Defaults to `7`.
   592  
   593  #### `--log-rotater-max-age` (uint)
   594  
   595  The maximum number of days to retain old log files based on the timestamp
   596  encoded in their filename. 0 means retain all old log files. Defaults to `0`.
   597  
   598  #### `--log-rotater-compress-enabled` (boolean)
   599  
   600  Enables the compression of rotated log files through gzip. Defaults to `false`.
   601  
   602  ## Network ID
   603  
   604  #### `--network-id` (string)
   605  
   606  The identity of the network the node should connect to. Can be one of:
   607  
   608  - `--network-id=mainnet` -&gt; Connect to Mainnet (default).
   609  - `--network-id=fuji` -&gt; Connect to the Fuji test-network.
   610  - `--network-id=testnet` -&gt; Connect to the current test-network. (Right now, this is Fuji.)
   611  - `--network-id=local` -&gt; Connect to a local test-network.
   612  - `--network-id=network-{id}` -&gt; Connect to the network with the given ID.
   613    `id` must be in the range `[0, 2^32)`.
   614  
   615  ## OpenTelemetry
   616  
   617  AvalancheGo supports collecting and exporting [OpenTelemetry](https://opentelemetry.io/) traces.
   618  This might be useful for debugging, performance analysis, or monitoring.
   619  
   620  #### `--tracing-enabled` (boolean)
   621  
   622  If true, enable OpenTelemetry tracing. Defaults to `false`.
   623  
   624  #### `--tracing-endpoint` (string)
   625  
   626  The endpoint to export trace data to. Defaults to `localhost:4317`.
   627  
   628  #### `--tracing-insecure` (string)
   629  
   630  If true, don't use TLS when exporting trace data. Defaults to `true`.
   631  
   632  #### `--tracing-sample-rate` (float)
   633  
   634  The fraction of traces to sample. If >= 1, always sample. If `<= 0`, never sample.
   635  Defaults to `0.1`.
   636  
   637  #### `--tracing-exporter-type`(string)
   638  
   639  Type of exporter to use for tracing. Options are [`grpc`,`http`]. Defaults to `grpc`.
   640  
   641  ## Public IP
   642  
   643  Validators must know one of their public facing IP addresses so they can enable
   644  other nodes to connect to them.
   645  
   646  By default, the node will attempt to perform NAT traversal to get the node's IP
   647  according to its router.
   648  
   649  #### `--public-ip` (string)
   650  
   651  If this argument is provided, the node assume this is its public IP.
   652  
   653  :::tip
   654  When running a local network it may be easiest to set this value to `127.0.0.1`.
   655  :::
   656  
   657  #### `--public-ip-resolution-frequency` (duration)
   658  
   659  Frequency at which this node resolves/updates its public IP and renew NAT
   660  mappings, if applicable. Default to 5 minutes.
   661  
   662  #### `--public-ip-resolution-service` (string)
   663  
   664  When provided, the node will use that service to periodically resolve/update its
   665  public IP. Only acceptable values are `ifconfigCo`, `opendns` or `ifconfigMe`.
   666  
   667  ## Staking
   668  
   669  #### `--staking-port` (int)
   670  
   671  The port through which the network peers will connect to this node externally.
   672  Having this port accessible from the internet is required for correct node
   673  operation. Defaults to `9651`.
   674  
   675  #### `--sybil-protection-enabled` (boolean)
   676  
   677  Avalanche uses Proof of Stake (PoS) as sybil resistance to make it prohibitively
   678  expensive to attack the network. If false, sybil resistance is disabled and all
   679  peers will be sampled during consensus. Defaults to `true`. Note that this can
   680  not be disabled on public networks (`Fuji` and `Mainnet`).
   681  
   682  Setting this flag to `false` **does not** mean "this node is not a validator."
   683  It means that this node will sample all nodes, not just validators.
   684  **You should not set this flag to false unless you understand what you are doing.**
   685  
   686  #### `--sybil-protection-disabled-weight` (uint)
   687  
   688  Weight to provide to each peer when staking is disabled. Defaults to `100`.
   689  
   690  #### `--staking-tls-cert-file` (string, file path)
   691  
   692  Avalanche uses two-way authenticated TLS connections to securely connect nodes.
   693  This argument specifies the location of the TLS certificate used by the node. By
   694  default, the node expects the TLS certificate to be at
   695  `$HOME/.avalanchego/staking/staker.crt`. This flag is ignored if
   696  `--staking-tls-cert-file-content` is specified.
   697  
   698  #### `--staking-tls-cert-file-content` (string)
   699  
   700  As an alternative to `--staking-tls-cert-file`, it allows specifying base64
   701  encoded content of the TLS certificate used by the node. Note that full
   702  certificate content, with the leading and trailing header, must be base64
   703  encoded.
   704  
   705  #### `--staking-tls-key-file` (string, file path)
   706  
   707  Avalanche uses two-way authenticated TLS connections to securely connect nodes.
   708  This argument specifies the location of the TLS private key used by the node. By
   709  default, the node expects the TLS private key to be at
   710  `$HOME/.avalanchego/staking/staker.key`. This flag is ignored if
   711  `--staking-tls-key-file-content` is specified.
   712  
   713  #### `--staking-tls-key-file-content` (string)
   714  
   715  As an alternative to `--staking-tls-key-file`, it allows specifying base64
   716  encoded content of the TLS private key used by the node. Note that full private
   717  key content, with the leading and trailing header, must be base64 encoded.
   718  
   719  ## Subnets
   720  
   721  ### Subnet Tracking
   722  
   723  #### `--track-subnets` (string)
   724  
   725  Comma separated list of Subnet IDs that this node would track if added to.
   726  Defaults to empty (will only validate the Primary Network).
   727  
   728  ### Subnet Configs
   729  
   730  It is possible to provide parameters for Subnets. Parameters here apply to all
   731  chains in the specified Subnets. Parameters must be specified with a
   732  `{subnetID}.json` config file under `--subnet-config-dir`. AvalancheGo loads
   733  configs for Subnets specified in
   734  `--track-subnets` parameter.
   735  
   736  Full reference for all configuration options for a Subnet can be found in a
   737  separate [Subnet Configs](./subnet-configs) document.
   738  
   739  #### `--subnet-config-dir` (`string`)
   740  
   741  Specifies the directory that contains Subnet configs, as described above.
   742  Defaults to `$HOME/.avalanchego/configs/subnets`. If the flag is set explicitly,
   743  the specified folder must exist, or AvalancheGo will exit with an error. This
   744  flag is ignored if `--subnet-config-content` is specified.
   745  
   746  Example: Let's say we have a Subnet with ID
   747  `p4jUwqZsA2LuSftroCd3zb4ytH8W99oXKuKVZdsty7eQ3rXD6`. We can create a config file
   748  under the default `subnet-config-dir` at
   749  `$HOME/.avalanchego/configs/subnets/p4jUwqZsA2LuSftroCd3zb4ytH8W99oXKuKVZdsty7eQ3rXD6.json`.
   750  An example config file is:
   751  
   752  ```json
   753  {
   754    "validatorOnly": false,
   755    "consensusParameters": {
   756      "k": 25,
   757      "alpha": 18
   758    }
   759  }
   760  ```
   761  
   762  :::tip
   763  By default, none of these directories and/or files exist. You would need to create them manually if needed.
   764  :::
   765  
   766  #### `--subnet-config-content` (string)
   767  
   768  As an alternative to `--subnet-config-dir`, it allows specifying base64 encoded parameters for a Subnet.
   769  
   770  ## Version
   771  
   772  #### `--version` (boolean)
   773  
   774  If this is `true`, print the version and quit. Defaults to `false`.
   775  
   776  ## Advanced Options
   777  
   778  The following options may affect the correctness of a node. Only power users should change these.
   779  
   780  ### Gossiping
   781  
   782  #### `--consensus-accepted-frontier-gossip-validator-size` (uint)
   783  
   784  Number of validators to gossip to when gossiping accepted frontier. Defaults to `0`.
   785  
   786  #### `--consensus-accepted-frontier-gossip-non-validator-size` (uint)
   787  
   788  Number of non-validators to gossip to when gossiping accepted frontier. Defaults to `0`.
   789  
   790  #### `--consensus-accepted-frontier-gossip-peer-size` (uint)
   791  
   792  Number of peers to gossip to when gossiping accepted frontier. Defaults to `15`.
   793  
   794  #### `--consensus-accepted-frontier-gossip-frequency` (duration)
   795  
   796  Time between gossiping accepted frontiers. Defaults to `10s`.
   797  
   798  #### `--consensus-on-accept-gossip-validator-size` (uint)
   799  
   800  Number of validators to gossip to each accepted container to. Defaults to `0`.
   801  
   802  #### `--consensus-on-accept-gossip-non-validator-size` (uint)
   803  
   804  Number of non-validators to gossip to each accepted container to. Defaults to `0`.
   805  
   806  #### `--consensus-on-accept-gossip-peer-size` (uint)
   807  
   808  Number of peers to gossip to each accepted container to. Defaults to `10`.
   809  
   810  ### Benchlist
   811  
   812  #### `--benchlist-duration` (duration)
   813  
   814  Maximum amount of time a peer is benchlisted after surpassing
   815  `--benchlist-fail-threshold`. Defaults to `15m`.
   816  
   817  #### `--benchlist-fail-threshold` (int)
   818  
   819  Number of consecutive failed queries to a node before benching it (assuming all
   820  queries to it will fail). Defaults to `10`.
   821  
   822  #### `--benchlist-min-failing-duration` (duration)
   823  
   824  Minimum amount of time queries to a peer must be failing before the peer is benched. Defaults to `150s`.
   825  
   826  ### Consensus Parameters
   827  
   828  :::note
   829  Some of these parameters can only be set on a local or private network, not on Fuji Testnet or Mainnet
   830  :::
   831  
   832  #### `--consensus-shutdown-timeout` (duration)
   833  
   834  Timeout before killing an unresponsive chain. Defaults to `5s`.
   835  
   836  #### `--create-asset-tx-fee` (int)
   837  
   838  Transaction fee, in nAVAX, for transactions that create new assets. Defaults to
   839  `10000000` nAVAX (.01 AVAX) per transaction. This can only be changed on a local
   840  network.
   841  
   842  #### `--create-subnet-tx-fee` (int)
   843  
   844  Transaction fee, in nAVAX, for transactions that create new Subnets. Defaults to
   845  `1000000000` nAVAX (1 AVAX) per transaction. This can only be changed on a local
   846  network.
   847  
   848  #### `--create-blockchain-tx-fee` (int)
   849  
   850  Transaction fee, in nAVAX, for transactions that create new blockchains.
   851  Defaults to `1000000000` nAVAX (1 AVAX) per transaction. This can only be
   852  changed on a local network.
   853  
   854  #### `--transform-subnet-tx-fee` (int)
   855  
   856  Transaction fee, in nAVAX, for transactions that transform Subnets. Defaults to
   857  `1000000000` nAVAX (1 AVAX) per transaction. This can only be changed on a local network.
   858  
   859  #### `--add-primary-network-validator-fee` (int)
   860  
   861  Transaction fee, in nAVAX, for transactions that add new primary network validators. Defaults to 0.
   862  This can only be changed on a local network.
   863  
   864  #### `--add-primary-network-delegator-fee` (int)
   865  
   866  Transaction fee, in nAVAX, for transactions that add new primary network delegators. Defaults to 0.
   867  This can only be changed on a local network.
   868  
   869  #### `--add-subnet-validator-fee` (int)
   870  
   871  Transaction fee, in nAVAX, for transactions that add new Subnet validators.
   872  Defaults to `10000000` nAVAX (.01 AVAX).
   873  
   874  #### `--add-subnet-delegator-fee` (int)
   875  
   876  Transaction fee, in nAVAX, for transactions that add new Subnet delegators.
   877  Defaults to `10000000` nAVAX (.01 AVAX).
   878  
   879  #### `--min-delegator-stake` (int)
   880  
   881  The minimum stake, in nAVAX, that can be delegated to a validator of the Primary Network.
   882  
   883  Defaults to `25000000000` (25 AVAX) on Mainnet. Defaults to `5000000` (.005
   884  AVAX) on Test Net. This can only be changed on a local network.
   885  
   886  #### `--min-delegation-fee` (int)
   887  
   888  The minimum delegation fee that can be charged for delegation on the Primary
   889  Network, multiplied by `10,000` . Must be in the range `[0, 1000000]`. Defaults
   890  to `20000` (2%) on Mainnet. This can only be changed on a local network.
   891  
   892  #### `--min-stake-duration` (duration)
   893  
   894  Minimum staking duration. The Default on Mainnet is `336h` (two weeks). This can only be changed on
   895  a local network. This applies to both delegation and validation periods.
   896  
   897  #### `--min-validator-stake` (int)
   898  
   899  The minimum stake, in nAVAX, required to validate the Primary Network. This can
   900  only be changed on a local network.
   901  
   902  Defaults to `2000000000000` (2,000 AVAX) on Mainnet. Defaults to `5000000` (.005 AVAX) on Test Net.
   903  
   904  #### `--max-stake-duration` (duration)
   905  
   906  The maximum staking duration, in hours. Defaults to `8760h` (365 days) on
   907  Mainnet. This can only be changed on a local network.
   908  
   909  #### `--max-validator-stake` (int)
   910  
   911  The maximum stake, in nAVAX, that can be placed on a validator on the primary
   912  network. Defaults to `3000000000000000` (3,000,000 AVAX) on Mainnet. This
   913  includes stake provided by both the validator and by delegators to the
   914  validator. This can only be changed on a local network.
   915  
   916  #### `--stake-minting-period` (duration)
   917  
   918  Consumption period of the staking function, in hours. The Default on Mainnet is
   919  `8760h` (365 days). This can only be changed on a local network.
   920  
   921  #### `--stake-max-consumption-rate` (uint)
   922  
   923  The maximum percentage of the consumption rate for the remaining token supply in
   924  the minting period, which is 1 year on Mainnet. Defaults to `120,000` which is
   925  12% per years. This can only be changed on a local network.
   926  
   927  #### `--stake-min-consumption-rate` (uint)
   928  
   929  The minimum percentage of the consumption rate for the remaining token supply in
   930  the minting period, which is 1 year on Mainnet. Defaults to `100,000` which is
   931  10% per years. This can only be changed on a local network.
   932  
   933  #### `--stake-supply-cap` (uint)
   934  
   935  The maximum stake supply, in nAVAX, that can be placed on a validator. Defaults
   936  to `720,000,000,000,000,000` nAVAX. This can only be changed on a local network.
   937  
   938  #### `--tx-fee` (int)
   939  
   940  The required amount of nAVAX to be burned for a transaction to be valid on the
   941  X-Chain, and for import/export transactions on the P-Chain. This parameter
   942  requires network agreement in its current form. Changing this value from the
   943  default should only be done on private networks or local network. Defaults to
   944  `1,000,000` nAVAX per transaction.
   945  
   946  #### `--uptime-requirement` (float)
   947  
   948  Fraction of time a validator must be online to receive rewards. Defaults to
   949  `0.8`. This can only be changed on a local network.
   950  
   951  #### `--uptime-metric-freq` (duration)
   952  
   953  Frequency of renewing this node's average uptime metric. Defaults to `30s`.
   954  
   955  #### Snow Parameters
   956  
   957  ##### `--snow-concurrent-repolls` (int)
   958  
   959  Snow consensus requires repolling transactions that are issued during low time
   960  of network usage. This parameter lets one define how aggressive the client will
   961  be in finalizing these pending transactions. This should only be changed after
   962  careful consideration of the tradeoffs of Snow consensus. The value must be at
   963  least `1` and at most `--snow-commit-threshold`. Defaults to `4`.
   964  
   965  ##### `--snow-sample-size` (int)
   966  
   967  Snow consensus defines `k` as the number of validators that are sampled during
   968  each network poll. This parameter lets one define the `k` value used for
   969  consensus. This should only be changed after careful consideration of the
   970  tradeoffs of Snow consensus. The value must be at least `1`. Defaults to `20`.
   971  
   972  ##### `--snow-quorum-size` (int)
   973  
   974  Snow consensus defines `alpha` as the number of validators that must prefer a
   975  transaction during each network poll to increase the confidence in the
   976  transaction. This parameter lets us define the `alpha` value used for consensus.
   977  This should only be changed after careful consideration of the tradeoffs of Snow
   978  consensus. The value must be at greater than `k/2`. Defaults to `15`.
   979  
   980  ##### `--snow-commit-threshold` (int)
   981  
   982  Snow consensus defines `beta` as the number of consecutive polls that a
   983  container must increase its confidence for it to be accepted. This
   984  parameter lets us define the `beta` value used for consensus. This should only
   985  be changed after careful consideration of the tradeoffs of Snow consensus. The
   986  value must be at least `1`. Defaults to `20`.
   987  
   988  ##### `--snow-optimal-processing` (int)
   989  
   990  Optimal number of processing items in consensus. The value must be at least `1`. Defaults to `50`.
   991  
   992  ##### `--snow-max-processing` (int)
   993  
   994  Maximum number of processing items to be considered healthy. Reports unhealthy
   995  if more than this number of items are outstanding. The value must be at least
   996  `1`. Defaults to `1024`.
   997  
   998  ##### `--snow-max-time-processing` (duration)
   999  
  1000  Maximum amount of time an item should be processing and still be healthy.
  1001  Reports unhealthy if there is an item processing for longer than this duration.
  1002  The value must be greater than `0`. Defaults to `2m`.
  1003  
  1004  ### ProposerVM Parameters
  1005  
  1006  #### `--proposervm-use-current-height` (bool)
  1007  
  1008  Have the ProposerVM always report the last accepted P-chain block height. Defaults to `false`.
  1009  
  1010  ### Continuous Profiling
  1011  
  1012  You can configure your node to continuously run memory/CPU profiles and save the
  1013  most recent ones. Continuous memory/CPU profiling is enabled if
  1014  `--profile-continuous-enabled` is set.
  1015  
  1016  #### `--profile-continuous-enabled` (boolean)
  1017  
  1018  Whether the app should continuously produce performance profiles. Defaults to the false (not enabled).
  1019  
  1020  #### `--profile-dir` (string)
  1021  
  1022  If profiling enabled, node continuously runs memory/CPU profiles and puts them
  1023  at this directory. Defaults to the `$HOME/.avalanchego/profiles/`.
  1024  
  1025  #### `--profile-continuous-freq` (duration)
  1026  
  1027  How often a new CPU/memory profile is created. Defaults to `15m`.
  1028  
  1029  #### `--profile-continuous-max-files` (int)
  1030  
  1031  Maximum number of CPU/memory profiles files to keep. Defaults to 5.
  1032  
  1033  ### Health
  1034  
  1035  #### `--health-check-frequency` (duration)
  1036  
  1037  Health check runs with this frequency. Defaults to `30s`.
  1038  
  1039  #### `--health-check-averager-halflife` (duration)
  1040  
  1041  Half life of averagers used in health checks (to measure the rate of message
  1042  failures, for example.) Larger value --&gt; less volatile calculation of
  1043  averages. Defaults to `10s`.
  1044  
  1045  ### Network
  1046  
  1047  #### `--network-allow-private-ips` (bool)
  1048  
  1049  Allows the node to connect peers with private IPs. Defaults to `true`.
  1050  
  1051  #### `--network-compression-type` (string)
  1052  
  1053  The type of compression to use when sending messages to peers. Defaults to `gzip`.
  1054  Must be one of [`gzip`, `zstd`, `none`].
  1055  
  1056  Nodes can handle inbound `gzip` compressed messages but by default send `zstd` compressed messages.
  1057  
  1058  #### `--network-initial-timeout` (duration)
  1059  
  1060  Initial timeout value of the adaptive timeout manager. Defaults to `5s`.
  1061  
  1062  #### `--network-initial-reconnect-delay` (duration)
  1063  
  1064  Initial delay duration must be waited before attempting to reconnect a peer. Defaults to `1s`.
  1065  
  1066  #### `--network-max-reconnect-delay` (duration)
  1067  
  1068  Maximum delay duration must be waited before attempting to reconnect a peer. Defaults to `1h`.
  1069  
  1070  #### `--network-minimum-timeout` (duration)
  1071  
  1072  Minimum timeout value of the adaptive timeout manager. Defaults to `2s`.
  1073  
  1074  #### `--network-maximum-timeout` (duration)
  1075  
  1076  Maximum timeout value of the adaptive timeout manager. Defaults to `10s`.
  1077  
  1078  #### `--network-maximum-inbound-timeout` (duration)
  1079  
  1080  Maximum timeout value of an inbound message. Defines duration within which an
  1081  incoming message must be fulfilled. Incoming messages containing deadline higher
  1082  than this value will be overridden with this value. Defaults to `10s`.
  1083  
  1084  #### `--network-timeout-halflife` (duration)
  1085  
  1086  Half life used when calculating average network latency. Larger value --&gt; less
  1087  volatile network latency calculation. Defaults to `5m`.
  1088  
  1089  #### `--network-timeout-coefficient` (duration)
  1090  
  1091  Requests to peers will time out after \[`network-timeout-coefficient`\] \*
  1092  \[average request latency\]. Defaults to `2`.
  1093  
  1094  #### `--network-read-handshake-timeout` (duration)
  1095  
  1096  Timeout value for reading handshake messages. Defaults to `15s`.
  1097  
  1098  #### `--network-ping-timeout` (duration)
  1099  
  1100  Timeout value for Ping-Pong with a peer. Defaults to `30s`.
  1101  
  1102  #### `--network-ping-frequency` (duration)
  1103  
  1104  Frequency of pinging other peers. Defaults to `22.5s`.
  1105  
  1106  #### `--network-health-min-conn-peers` (uint)
  1107  
  1108  Node will report unhealthy if connected to less than this many peers. Defaults to `1`.
  1109  
  1110  #### `--network-health-max-time-since-msg-received` (duration)
  1111  
  1112  Node will report unhealthy if it hasn't received a message for this amount of time. Defaults to `1m`.
  1113  
  1114  #### `--network-health-max-time-since-msg-sent` (duration)
  1115  
  1116  Network layer returns unhealthy if haven't sent a message for at least this much time. Defaults to `1m`.
  1117  
  1118  #### `--network-health-max-portion-send-queue-full` (float)
  1119  
  1120  Node will report unhealthy if its send queue is more than this portion full.
  1121  Must be in \[0,1\]. Defaults to `0.9`.
  1122  
  1123  #### `--network-health-max-send-fail-rate` (float)
  1124  
  1125  Node will report unhealthy if more than this portion of message sends fail. Must
  1126  be in \[0,1\]. Defaults to `0.25`.
  1127  
  1128  #### `--network-health-max-outstanding-request-duration` (duration)
  1129  
  1130  Node reports unhealthy if there has been a request outstanding for this duration. Defaults to `5m`.
  1131  
  1132  #### `--network-max-clock-difference` (duration)
  1133  
  1134  Max allowed clock difference value between this node and peers. Defaults to `1m`.
  1135  
  1136  #### `--network-require-validator-to-connect` (bool)
  1137  
  1138  If true, this node will only maintain a connection with another node if this
  1139  node is a validator, the other node is a validator, or the other node is a
  1140  beacon.
  1141  
  1142  #### `--network-tcp-proxy-enabled` (bool)
  1143  
  1144  Require all P2P connections to be initiated with a TCP proxy header. Defaults to `false`.
  1145  
  1146  #### `--network-tcp-proxy-read-timeout` (duration)
  1147  
  1148  Maximum duration to wait for a TCP proxy header. Defaults to `3s`.
  1149  
  1150  #### `--network-outbound-connection-timeout` (duration)
  1151  
  1152  Timeout while dialing a peer. Defaults to `30s`.
  1153  
  1154  ### Message Rate-Limiting
  1155  
  1156  These flags govern rate-limiting of inbound and outbound messages. For more
  1157  information on rate-limiting and the flags below, see package `throttling` in
  1158  AvalancheGo.
  1159  
  1160  #### CPU Based
  1161  
  1162  Rate-limiting based on how much CPU usage a peer causes.
  1163  
  1164  ##### `--throttler-inbound-cpu-validator-alloc` (float)
  1165  
  1166  Number of CPU allocated for use by validators. Value should be in range (0, total core count].
  1167  Defaults to half of the number of CPUs on the machine.
  1168  
  1169  ##### `--throttler-inbound-cpu-max-recheck-delay` (duration)
  1170  
  1171  In the CPU rate-limiter, check at least this often whether the node's CPU usage
  1172  has fallen to an acceptable level. Defaults to `5s`.
  1173  
  1174  ##### `--throttler-inbound-disk-max-recheck-delay` (duration)
  1175  
  1176  In the disk-based network throttler, check at least this often whether the node's disk usage has
  1177  fallen to an acceptable level. Defaults to `5s`.
  1178  
  1179  ##### `--throttler-inbound-cpu-max-non-validator-usage` (float)
  1180  
  1181  Number of CPUs that if fully utilized, will rate limit all non-validators. Value should be in range
  1182  [0, total core count].
  1183  Defaults to %80 of the number of CPUs on the machine.
  1184  
  1185  ##### `--throttler-inbound-cpu-max-non-validator-node-usage` (float)
  1186  
  1187  Maximum number of CPUs that a non-validator can utilize. Value should be in range [0, total core count].
  1188  Defaults to the number of CPUs / 8.
  1189  
  1190  ##### `--throttler-inbound-disk-validator-alloc` (float)
  1191  
  1192  Maximum number of disk reads/writes per second to allocate for use by validators. Must be > 0.
  1193  Defaults to `1000 GiB/s`.
  1194  
  1195  ##### `--throttler-inbound-disk-max-non-validator-usage` (float)
  1196  
  1197  Number of disk reads/writes per second that, if fully utilized, will rate limit all non-validators.
  1198  Must be >= 0.
  1199  Defaults to `1000 GiB/s`.
  1200  
  1201  ##### `--throttler-inbound-disk-max-non-validator-node-usage` (float)
  1202  
  1203  Maximum number of disk reads/writes per second that a non-validator can utilize. Must be >= 0.
  1204  Defaults to `1000 GiB/s`.
  1205  
  1206  #### Bandwidth Based
  1207  
  1208  Rate-limiting based on the bandwidth a peer uses.
  1209  
  1210  ##### `--throttler-inbound-bandwidth-refill-rate` (uint)
  1211  
  1212  Max average inbound bandwidth usage of a peer, in bytes per second. See
  1213  interface `throttling.BandwidthThrottler`. Defaults to `512`.
  1214  
  1215  ##### `--throttler-inbound-bandwidth-max-burst-size` (uint)
  1216  
  1217  Max inbound bandwidth a node can use at once. See interface
  1218  `throttling.BandwidthThrottler`. Defaults to `2 MiB`.
  1219  
  1220  #### Message Size Based
  1221  
  1222  Rate-limiting based on the total size, in bytes, of unprocessed messages.
  1223  
  1224  ##### `--throttler-inbound-at-large-alloc-size` (uint)
  1225  
  1226  Size, in bytes, of at-large allocation in the inbound message throttler. Defaults to `6291456` (6 MiB).
  1227  
  1228  ##### `--throttler-inbound-validator-alloc-size` (uint)
  1229  
  1230  Size, in bytes, of validator allocation in the inbound message throttler.
  1231  Defaults to `33554432` (32 MiB).
  1232  
  1233  ##### `--throttler-inbound-node-max-at-large-bytes` (uint)
  1234  
  1235  Maximum number of bytes a node can take from the at-large allocation of the
  1236  inbound message throttler. Defaults to `2097152` (2 MiB).
  1237  
  1238  #### Message Based
  1239  
  1240  Rate-limiting based on the number of unprocessed messages.
  1241  
  1242  ##### `--throttler-inbound-node-max-processing-msgs` (uint)
  1243  
  1244  Node will stop reading messages from a peer when it is processing this many messages from the peer.
  1245  Will resume reading messages from the peer when it is processing less than this many messages.
  1246  Defaults to `1024`.
  1247  
  1248  #### Outbound
  1249  
  1250  Rate-limiting for outbound messages.
  1251  
  1252  ##### `--throttler-outbound-at-large-alloc-size` (uint)
  1253  
  1254  Size, in bytes, of at-large allocation in the outbound message throttler.
  1255  Defaults to `33554432` (32 MiB).
  1256  
  1257  ##### `--throttler-outbound-validator-alloc-size` (uint)
  1258  
  1259  Size, in bytes, of validator allocation in the outbound message throttler.
  1260  Defaults to `33554432` (32 MiB).
  1261  
  1262  ##### `--throttler-outbound-node-max-at-large-bytes` (uint)
  1263  
  1264  Maximum number of bytes a node can take from the at-large allocation of the
  1265  outbound message throttler. Defaults to `2097152` (2 MiB).
  1266  
  1267  ### Connection Rate-Limiting
  1268  
  1269  #### `--network-inbound-connection-throttling-cooldown` (duration)
  1270  
  1271  Node will upgrade an inbound connection from a given IP at most once within this
  1272  duration. Defaults to `10s`. If 0 or negative, will not consider recency of last
  1273  upgrade when deciding whether to upgrade.
  1274  
  1275  #### `--network-inbound-connection-throttling-max-conns-per-sec` (uint)
  1276  
  1277  Node will accept at most this many inbound connections per second. Defaults to `512`.
  1278  
  1279  #### `--network-outbound-connection-throttling-rps` (uint)
  1280  
  1281  Node makes at most this many outgoing peer connection attempts per second. Defaults to `50`.
  1282  
  1283  ### Peer List Gossiping
  1284  
  1285  Nodes gossip peers to each other so that each node can have an up-to-date peer
  1286  list. A node gossips `--network-peer-list-num-validator-ips` validator IPs to
  1287  `--network-peer-list-validator-gossip-size` validators,
  1288  `--network-peer-list-non-validator-gossip-size` non-validators and
  1289  `--network-peer-list-peers-gossip-size` peers every
  1290  `--network-peer-list-gossip-frequency`.
  1291  
  1292  #### `--network-peer-list-num-validator-ips` (int)
  1293  
  1294  Number of validator IPs to gossip to other nodes Defaults to `15`.
  1295  
  1296  #### `--network-peer-list-validator-gossip-size` (int)
  1297  
  1298  Number of validators that the node will gossip peer list to. Defaults to `20`.
  1299  
  1300  #### `--network-peer-list-non-validator-gossip-size` (int)
  1301  
  1302  Number of non-validators that the node will gossip peer list to. Defaults to `0`.
  1303  
  1304  #### `--network-peer-list-peers-gossip-size` (int)
  1305  
  1306  Number of total peers (including non-validator or validator) that the node will gossip peer list to
  1307  Defaults to `0`.
  1308  
  1309  #### `--network-peer-list-gossip-frequency` (duration)
  1310  
  1311  Frequency to gossip peers to other nodes. Defaults to `1m`.
  1312  
  1313  #### ` --network-peer-read-buffer-size` (int)
  1314  
  1315  Size of the buffer that peer messages are read into (there is one buffer per
  1316  peer), defaults to `8` KiB (8192 Bytes).
  1317  
  1318  #### `--network-peer-write-buffer-size` (int)
  1319  
  1320  Size of the buffer that peer messages are written into (there is one buffer per
  1321  peer), defaults to `8` KiB (8192 Bytes).
  1322  
  1323  ### Resource Usage Tracking
  1324  
  1325  #### `--meter-vm-enabled` (bool)
  1326  
  1327  Enable Meter VMs to track VM performance with more granularity. Defaults to `true`.
  1328  
  1329  #### `--system-tracker-frequency` (duration)
  1330  
  1331  Frequency to check the real system usage of tracked processes. More frequent
  1332  checks --> usage metrics are more accurate, but more expensive to track.
  1333  Defaults to `500ms`.
  1334  
  1335  #### `--system-tracker-processing-halflife` (duration)
  1336  
  1337  Half life to use for the processing requests tracker. Larger half life --> usage
  1338  metrics change more slowly. Defaults to `15s`.
  1339  
  1340  #### `--system-tracker-cpu-halflife` (duration)
  1341  
  1342  Half life to use for the CPU tracker. Larger half life --> CPU usage metrics
  1343  change more slowly. Defaults to `15s`.
  1344  
  1345  #### `--system-tracker-disk-halflife` (duration)
  1346  
  1347  Half life to use for the disk tracker. Larger half life --> disk usage metrics
  1348  change more slowly. Defaults to `1m`.
  1349  
  1350  #### `--system-tracker-disk-required-available-space` (uint)
  1351  
  1352  "Minimum number of available bytes on disk, under which the node will shutdown.
  1353  Defaults to `536870912` (512 MiB).
  1354  
  1355  #### `--system-tracker-disk-warning-threshold-available-space` (uint)
  1356  
  1357  Warning threshold for the number of available bytes on disk, under which the
  1358  node will be considered unhealthy. Must be >=
  1359  `--system-tracker-disk-required-available-space`. Defaults to `1073741824` (1
  1360  GiB).
  1361  
  1362  ### Plugins
  1363  
  1364  #### `--plugin-dir` (string)
  1365  
  1366  Sets the directory for [VM plugins](/build/vm/intro.md). The default value is `$HOME/.avalanchego/plugins`.
  1367  
  1368  ### Virtual Machine (VM) Configs
  1369  
  1370  #### `--vm-aliases-file (string)`
  1371  
  1372  Path to JSON file that defines aliases for Virtual Machine IDs. Defaults to
  1373  `~/.avalanchego/configs/vms/aliases.json`. This flag is ignored if
  1374  `--vm-aliases-file-content` is specified. Example content:
  1375  
  1376  ```json
  1377  {
  1378    "tGas3T58KzdjLHhBDMnH2TvrddhqTji5iZAMZ3RXs2NLpSnhH": [
  1379      "timestampvm",
  1380      "timerpc"
  1381    ]
  1382  }
  1383  ```
  1384  
  1385  The above example aliases the VM whose ID is
  1386  `"tGas3T58KzdjLHhBDMnH2TvrddhqTji5iZAMZ3RXs2NLpSnhH"` to `"timestampvm"` and
  1387  `"timerpc"`.
  1388  
  1389  `--vm-aliases-file-content` (string)
  1390  
  1391  As an alternative to `--vm-aliases-file`, it allows specifying base64 encoded
  1392  aliases for Virtual Machine IDs.
  1393  
  1394  ### Indexing
  1395  
  1396  #### `--index-allow-incomplete` (boolean)
  1397  
  1398  If true, allow running the node in such a way that could cause an index to miss transactions.
  1399  Ignored if index is disabled. Defaults to `false`.
  1400  
  1401  ### Router
  1402  
  1403  #### `--router-health-max-drop-rate` (float)
  1404  
  1405  Node reports unhealthy if the router drops more than this portion of messages. Defaults to `1`.
  1406  
  1407  #### `--router-health-max-outstanding-requests` (uint)
  1408  
  1409  Node reports unhealthy if there are more than this many outstanding consensus requests
  1410  (Get, PullQuery, etc.) over all chains. Defaults to `1024`.