diff --git a/components/calculator/ChainParametersForm.tsx b/components/calculator/ChainParametersForm.tsx index 12c794ecc..04a36e651 100644 --- a/components/calculator/ChainParametersForm.tsx +++ b/components/calculator/ChainParametersForm.tsx @@ -23,15 +23,30 @@ type DataAvailabilityType = "Ethereum" | "AltDA Plasma Mode"; export function ChainParametersForm(): ReactElement { const [transactionsPerDay, setTransactionsPerDay] = useState(500000); const [comparableTransactionType, setComparableTransactionType] = - useState("General OP Mainnet"); + useState("General OP Mainnet" as ComparableTransactionType); const [dataAvailabilityType, setDataAvailabilityType] = useState("Ethereum"); - const [isFaultProofEnabled, setIsFaultProofEnabled] = useState("yes"); + const [isFaultProofEnabled, setIsFaultProofEnabled] = useState(true); const [targetDataFeeMargin, setTargetDataFeeMargin] = useState(5); const [maxBlobsPerL1Transaction, setMaxBlobsPerL1Transaction] = useState(5); const [maxChannelDuration, setMaxChannelDuration] = useState(5); - const [outputRootPostFrequency, setOutputRootPostFrequency] = useState(1 ); - const [isIncludeOutputRootCosts, setIsIncludeOutputRootCosts] = useState("yes"); - const [resultsParams, setResultsParams] = useState({}); + const [outputRootPostFrequency, setOutputRootPostFrequency] = useState(1); + const [isIncludeOutputRootCosts, setIsIncludeOutputRootCosts] = useState(true); + const [resultsParams, setResultsParams] = useState({ + data: { + dataAvailabilityType: "Ethereum", + l1BlobBaseFeeScalar: 0, + l1BaseFeeScalar: 0, + overallL1DataAndStateCostsMargin: 0, + totalL1StateProposalCostsInETH: 0, + modeledDAPlusStateRevenueOnL2: 0, + dataAvailabilityInUse: "", + impliedDataGasFeePerTxUsingBlobs: 0, + impliedDataGasFeePerTxUsingL1Calldata: 0, + impliedDataGasFeePerTxUsingAltDAPlasmaMode: 0, + assumedFeeScalarMessage: "", + impliedDataGasFeeMessage: "", + } + }); const [isLoading, setIsLoading] = useState(false); const [showResult, setShowResult] = useState(false); @@ -52,8 +67,8 @@ export function ChainParametersForm(): ReactElement { //e37 const l1BlobBaseFeeScalar = await displayL1BlobBaseFeeScalar( - stringToBoolean(isIncludeOutputRootCosts), - stringToBoolean(isFaultProofEnabled), + isIncludeOutputRootCosts, + isFaultProofEnabled, outputRootPostFrequency, transactionsPerDay, maxChannelDuration, @@ -115,7 +130,7 @@ export function ChainParametersForm(): ReactElement { dataAvailabilityType, targetDataFeeMargin ); - + // e67 const impliedDataGasFeePerTxUsingL1Calldata = await calculateImpliedDataGasFeePerTxUsingL1Calldata( @@ -143,7 +158,7 @@ export function ChainParametersForm(): ReactElement { ); const dataAvailabilityInUse = determineDAInUse(dataAvailabilityType); - + const assumedFeeScalarMessage = resultsFeeScalarsAssumed( comparableTransactionType, // e15 transactionsPerDay, // e14 @@ -168,15 +183,11 @@ export function ChainParametersForm(): ReactElement { assumedFeeScalarMessage, impliedDataGasFeeMessage, }; - setResultsParams(data); + setResultsParams({ data }); setIsLoading(false); setShowResult(true) }; - const stringToBoolean = (value: string): boolean => { - return value === "yes" || value === "Yes" ? true : false; - } - return (
@@ -273,7 +284,7 @@ export function ChainParametersForm(): ReactElement {
{isLoading && } - {!isLoading && showResult && } + {!isLoading && showResult && }
); } diff --git a/jwt.txt b/jwt.txt new file mode 100644 index 000000000..d19a7e5c6 --- /dev/null +++ b/jwt.txt @@ -0,0 +1 @@ +b3e59c3388416d034d24441e260d85bc16f9a61d31646fb23e5a9523beb61068 diff --git a/next-sitemap.config.js b/next-sitemap.config.js index 6f7627d0c..6a8793f6b 100644 --- a/next-sitemap.config.js +++ b/next-sitemap.config.js @@ -1,5 +1,5 @@ /** @type {import('next-sitemap').IConfig} */ -module.exports = { +export default { siteUrl: process.env.SITE_URL || 'https://docs.optimism.io/', generateRobotsTxt: true, // (optional) generateIndexSitemap: true, diff --git a/pages/operators/node-operators/architecture.mdx b/pages/operators/node-operators/architecture.mdx index 64d943929..8a7603011 100644 --- a/pages/operators/node-operators/architecture.mdx +++ b/pages/operators/node-operators/architecture.mdx @@ -20,12 +20,12 @@ is_imported_content: 'false' # Node architecture -This page reviews node architecture for all nodes running on the Superchain network. All OP Mainnet nodes are composed of two core software services, the Rollup Node and the Execution Client. +This page reviews node architecture for all nodes running on the Superchain network. All OP Mainnet nodes are composed of two core software services, the Rollup Node and the Execution Client. OP Mainnet also optionally supports a third component, Legacy Geth, that can serve stateful queries for blocks and transactions created before the [Bedrock Upgrade](https://web.archive.org/web/20230608050602/https://blog.oplabs.co/introducing-optimism-bedrock/). ## Node flow diagram The following diagram shows how the Rollup Node, Execution Client, and Legacy Geth components work together to form a complete node running on the Superchain network. -This diagram uses the `op-node` and `op-geth` implementations of the Rollup Node and Execution Client respectively, but the same architecture generally applies to other implementations as well. +This diagram uses the `op-node` implementation of the Rollup Node and shows the general architecture that applies to all execution client implementations. ![OP Mainnet node architecture diagram.](/img/guides/node-operators/node-arch.svg) @@ -39,6 +39,16 @@ The Execution Client is responsible for executing the block payloads it receives The Execution Client exposes the standard JSON-RPC API that Ethereum developers are familiar with, and can be used to query blockchain data and submit transactions to the network. The Execution Client is largely analogous to an [execution client](https://ethereum.org/en/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) in Ethereum. +The OP Stack supports multiple execution client implementations: + +### op-geth + +`op-geth` is the original execution client for the OP Stack, based on the Go Ethereum (Geth) implementation. It has been modified to support the specific requirements of OP Stack chains. + +### Nethermind + +Nethermind is a high-performance execution client implementation written in C#. The `Nethermind` client has been adapted to support OP Stack chains, providing an alternative execution client option for node operators. + ## Legacy Geth OP Mainnet underwent a large database migration as part of the [Bedrock Upgrade](https://web.archive.org/web/20230608050602/https://blog.oplabs.co/introducing-optimism-bedrock/) in 2023. @@ -51,6 +61,6 @@ Legacy Geth is **not** required and is typically only necessary if you want to m ## Next steps -* To get your node up and running, start with the [run a node from docker](/operators/node-operators/tutorials/node-from-docker) or [build a node from source](/operators/node-operators/tutorials/node-from-source) tutorial. +* To get your node up and running, start with the [run a node from docker](/operators/node-operators/tutorials/node-from-docker) or [build a node from source](/operators/node-operators/tutorials/node-from-source) tutorial. These guides include instructions for both `op-geth` and `Nethermind` execution clients. * If you've already got your node up and running, check out the [Node Metrics and Monitoring Guide](./management/metrics) to learn how to keep tabs on your node and make sure it keeps running smoothly. * If you run into any problems, please visit the [Node Troubleshooting Guide](./management/troubleshooting) for help. diff --git a/pages/operators/node-operators/configuration.mdx b/pages/operators/node-operators/configuration.mdx index ae6236992..90dcae18b 100644 --- a/pages/operators/node-operators/configuration.mdx +++ b/pages/operators/node-operators/configuration.mdx @@ -31,5 +31,5 @@ This section provides information on node base configuration, consensus layer co - + diff --git a/pages/operators/node-operators/configuration/base-config.mdx b/pages/operators/node-operators/configuration/base-config.mdx index d953c5619..5b4aeebaf 100644 --- a/pages/operators/node-operators/configuration/base-config.mdx +++ b/pages/operators/node-operators/configuration/base-config.mdx @@ -1,7 +1,7 @@ --- title: Node base configuration lang: en-US -description: Learn the node base configuration and recommended flags for op-node, op-geth, and legacy geth. +description: Learn the node base configuration and recommended flags for `op-node`, `op-geth`, and legacy geth. content_type: guide topic: node-base-configuration personas: @@ -16,25 +16,29 @@ categories: is_imported_content: 'false' --- -import { Callout } from 'nextra/components' +import { Callout, Tabs } from 'nextra/components' # Node base configuration - Always run `op-node` and `op-geth` in a one-to-one configuration. Don't run multiple `op-geth` instances behind one `op-node`, or vice versa. + Always run `op-node` and your execution client (`op-geth` or `nethermind`) in a one-to-one configuration. Don't run multiple execution client instances behind one `op-node`, or vice versa. To configure your node, you will need to do the following: -1. Configure `op-node` to point to the correct L1, `op-geth`, and L2 network. -2. Initialize `op-geth` with the correct network parameters. -3. Configure `op-geth` to properly communicate with the Rollup Node. +1. Configure `op-node` to point to the correct L1, execution client, and L2 network. +2. Initialize your execution client (`op-geth` or `nethermind`) with the correct network parameters. +3. Configure your execution client to properly communicate with the Rollup Node. 4. Optionally, configure Legacy Geth. -## Configuring `op-geth` +## Configuring Your Execution Client + +You can choose between two execution clients for your OP Stack rollup node: `op-geth` or `nethermind`. Each has its own configuration requirements and recommended settings. + +### Configuring `op-geth` - Although the Docker image for the Execution Engine is called `op-geth`, the actual binary is still called `geth` in order to minimize differences between `op-geth` and `go-ethereum`. You can see the difference [here](https://op-geth.optimism.io/?utm_source=op-docs&utm_medium=docs). + Although the Docker image for the Execution Engine is called `op-geth`, the actual binary is still called `geth` in order to minimize differences between `op-geth` and `go-ethereum`. You can see the difference [here](https://`op-geth`.optimism.io/?utm_source=op-docs&utm_medium=docs). `op-geth` stores its state in a database that requires initialization. @@ -146,6 +150,22 @@ geth \ Consult [Geth's documentation](https://geth.ethereum.org/docs/) for more information on customizing `op-geth`'s behavior. +### Configuring `nethermind` + +Nethermind is an alternative execution client for OP Stack rollup nodes. It provides high performance and reliability while maintaining compatibility with the OP Stack protocol. + +#### Working base configuration for Nethermind + +To run `Nethermind` on the OP Mainnet, use the following command: + +```bash +nethermind \ + -c op-mainnet \ + --data-dir path/to/data/dir \ + --jsonrpc-jwtsecretfile path/to/jwt.hex +``` +Consult [`Nethermind`'s documentation](https://docs.nethermind.io/fundamentals/configuration) for more detailed configuration options. + ## Configuring `op-node` `op-node` is a standalone, statically linked binary. It stores no state, and requires no initialization. It consumes configuration parameters either via the command line or environment variables. For some networks, the Rollup Node also requires a configuration file (called `rollup.json` or the "rollup config") that configures network-specific genesis parameters. For official networks like OP Sepolia and OP Mainnet, the genesis config is hardcoded in the `op-node` software and can be specified via a `--network` flag. @@ -163,6 +183,8 @@ from a Beacon node. A minimal valid configuration that runs `op-node` looks like: + + ```bash op-node --l1= \ --l2= \ @@ -174,6 +196,21 @@ op-node --l1= \ --syncmode=execution-layer \ --l2.enginekind=geth ``` + + +```bash +op-node --l1= \ + --l2= \ + --network=op-mainnet \ + --rpc.addr=127.0.0.1 \ + --rpc.port=9545 \ + --l2.jwt-secret= \ + --l1.beacon= \ + --syncmode=execution-layer \ + --l2.enginekind=nethermind +``` + + You can manually specify a path to a rollup config with the `--rollup.config` flag. This is used for testnets or internal deployments that are not migrated from a legacy network. @@ -229,6 +266,6 @@ The term *historical execution* refers to RPC methods that need to execute trans If you do not need these RPC methods for historical data, then you do not need to run Legacy Geth at all. ## Next steps -* See the [op-node configuration](/operators/node-operators/configuration/consensus-config) guide for additional configuration options for `op-node` and the Consensus-Layer. -* Similarly, visit the [op-geth configuration](/operators/node-operators/configuration/execution-config) guide for additional configuration options for `op-geth` and Execution-Layer. +* See the [`op-node` configuration](/operators/node-operators/configuration/consensus-config) guide for additional configuration options for `op-node` and the Consensus-Layer. +* For execution client configuration, visit [execution client configuration](/operators/node-operators/configuration/execution-config) for additional options when using `op-geth` or `nethermind` * If you run into any problems, please reach out to our [developer support forum](https://github.com/ethereum-optimism/developers/discussions) for help. diff --git a/pages/operators/node-operators/configuration/consensus-config.mdx b/pages/operators/node-operators/configuration/consensus-config.mdx index 54a604ef8..2a784e22d 100644 --- a/pages/operators/node-operators/configuration/consensus-config.mdx +++ b/pages/operators/node-operators/configuration/consensus-config.mdx @@ -1,7 +1,7 @@ --- -title: Consensus layer configuration options (op-node) +title: Consensus layer configuration options (`op-node`) lang: en-US -description: Learn additional configuration and command line options for op-node and the Consensus-Layer. +description: Learn additional configuration and command line options for `op-node` and the Consensus-Layer. content_type: reference topic: consensus-layer-configuration personas: @@ -20,7 +20,7 @@ is_imported_content: 'false' import { Callout } from 'nextra/components' import { Tabs } from 'nextra/components' -# Consensus layer configuration options (op-node) +# Consensus layer configuration options (`op-node`) You can configure your node using the command line options below (also called flags). @@ -94,7 +94,7 @@ If true, all sidecars are fetched and filtered locally. Workaround for buggy Bea ### l1.beacon.ignore -When false, halts op-node startup if the healthcheck to the Beacon-node endpoint fails. The default value is `false`. +When false, halts `op-node` startup if the healthcheck to the Beacon-node endpoint fails. The default value is `false`. `--l1.beacon.ignore=` @@ -154,7 +154,7 @@ Optional self-imposed global rate-limit on L1 RPC requests, specified in request ### l1.rpckind -The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus reduce costs. Valid options: alchemy, quicknode, infura, parity, nethermind, debug\_geth, erigon, basic, any, standard. The default value is `standard`. +The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus reduce costs. Valid options: alchemy, quicknode, infura, parity, `nethermind`, debug\_geth, erigon, basic, any, standard. The default value is `standard`. `--l1.rpckind=` @@ -277,7 +277,7 @@ are as follows: low-level system operations. This level generates a large amount of log data and is typically used only for in-depth troubleshooting. -To set the log level, use the `--log.level` flag when running the op-node command. For +To set the log level, use the `--log.level` flag when running the `op-node` command. For example, to set the log level to debug: ```bash diff --git a/pages/operators/node-operators/configuration/execution-config.mdx b/pages/operators/node-operators/configuration/execution-config.mdx index 27c33c1e8..96fa16e83 100644 --- a/pages/operators/node-operators/configuration/execution-config.mdx +++ b/pages/operators/node-operators/configuration/execution-config.mdx @@ -1,7 +1,7 @@ --- -title: Execution layer configuration options (op-geth) +title: Execution layer configuration options lang: en-US -description: Learn additional configuration and command line options for op-geth and the Execution-Layer. +description: Learn additional configuration and command line options for `op-geth` and the Execution-Layer. content_type: reference topic: execution-layer-configuration personas: @@ -20,1790 +20,9157 @@ is_imported_content: 'false' import { Callout } from 'nextra/components' import { Tabs } from 'nextra/components' -# Execution layer configuration options (op-geth) +# Execution layer configuration options - -You can configure your node using the command line options below (also called flags). -There are also sub-commands, which can be used to invoke functionality such as the console or blockchain import/export. - + + + + You can configure your node using the command line options below (also called flags). + There are also sub-commands, which can be used to invoke functionality such as the console or blockchain import/export. + -This page list all configuration options for `op-geth`. `op-geth` implements the Execution-Layer, with minimal changes for a secure Ethereum-equivalent application environment. -The following are options from [v1.101308.0](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101308.0) + This page list all configuration options for `op-geth`. `op-geth` implements the Execution-Layer, with minimal changes for a secure Ethereum-equivalent application environment. + The following are options from [v1.101308.0](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101308.0) -Please note that the executable is still named `geth` to maintain a [minimal diff](https://op-geth.optimism.io/?utm_source=op-docs&utm_medium=docs). + Please note that the executable is still named `geth` to maintain a [minimal diff](https://op-geth.optimism.io/?utm_source=op-docs\&utm_medium=docs). -## Global options + ## Global options -### Account + ### Account -#### allow-insecure-unlock + #### allow-insecure-unlock -Allows insecure account unlocking when account-related RPCs are exposed by HTTP. The default value is `false`. + Allows insecure account unlocking when account-related RPCs are exposed by HTTP. The default value is `false`. - - `--allow-insecure-unlock` - `--allow-insecure-unlock=false` - `GETH_ALLOW_INSECURE_UNLOCK=false` - + + `--allow-insecure-unlock` + `--allow-insecure-unlock=false` + `GETH_ALLOW_INSECURE_UNLOCK=false` + -#### keystore + #### keystore -Directory for the keystore. The default is inside the data directory. + Directory for the keystore. The default is inside the data directory. - - `--keystore ` - `--keystore=/path/to/keystore` - `GETH_KEYSTORE=/path/to/keystore` - + + `--keystore ` + `--keystore=/path/to/keystore` + `GETH_KEYSTORE=/path/to/keystore` + -#### lightkdf + #### lightkdf -Reduce key-derivation RAM & CPU usage at some expense of KDF strength. The default value is `false`. + Reduce key-derivation RAM & CPU usage at some expense of KDF strength. The default value is `false`. - - `--lightkdf` - `--lightkdf=false` - `GETH_LIGHTKDF=false` - + + `--lightkdf` + `--lightkdf=false` + `GETH_LIGHTKDF=false` + -#### password + #### password -Password file to use for non-interactive password input. + Password file to use for non-interactive password input. - - `--password ` - `--password=/path/to/passwordfile` - `GETH_PASSWORD=/path/to/passwordfile` - + + `--password ` + `--password=/path/to/passwordfile` + `GETH_PASSWORD=/path/to/passwordfile` + -#### pcscdpath + #### pcscdpath -Path to the smartcard daemon (pcscd) socket file. The default value is `"/run/pcscd/pcscd.comm"`. + Path to the smartcard daemon (pcscd) socket file. The default value is `"/run/pcscd/pcscd.comm"`. - - `--pcscdpath ` - `--pcscdpath=/custom/path/to/pcscd.comm` - `GETH_PCSCDPATH=/custom/path/to/pcscd.comm` - + + `--pcscdpath ` + `--pcscdpath=/custom/path/to/pcscd.comm` + `GETH_PCSCDPATH=/custom/path/to/pcscd.comm` + -#### signer + #### signer -External signer (url or path to ipc file). + External signer (url or path to ipc file). - - `--signer ` - `--signer=/path/to/ipcfile` - `GETH_SIGNER=/path/to/ipcfile` - + + `--signer ` + `--signer=/path/to/ipcfile` + `GETH_SIGNER=/path/to/ipcfile` + -#### unlock + #### unlock -Comma separated list of accounts to unlock. + Comma separated list of accounts to unlock. - - `--unlock ` - `--unlock=0x1234,0x5678` - `GETH_UNLOCK=0x1234,0x5678` - + + `--unlock ` + `--unlock=0x1234,0x5678` + `GETH_UNLOCK=0x1234,0x5678` + -#### usb + #### usb -Enable monitoring and management of USB hardware wallets. The default value is `false`. + Enable monitoring and management of USB hardware wallets. The default value is `false`. - - `--usb` - `--usb=false` - `GETH_USB=false` - + + `--usb` + `--usb=false` + `GETH_USB=false` + -### API and Console + ### API and Console -#### authrpc.addr + #### authrpc.addr -Listening address for authenticated APIs. The default value is `"localhost"`. + Listening address for authenticated APIs. The default value is `"localhost"`. - - `--authrpc.addr ` - `--authrpc.addr="localhost"` - `GETH_AUTHRPC_ADDR="localhost"` - + + `--authrpc.addr ` + `--authrpc.addr="localhost"` + `GETH_AUTHRPC_ADDR="localhost"` + -#### authrpc.jwtsecret + #### authrpc.jwtsecret -Path to a JWT secret to use for authenticated RPC endpoints. + Path to a JWT secret to use for authenticated RPC endpoints. - - `--authrpc.jwtsecret ` - `--authrpc.jwtsecret=/path/to/jwtsecret` - `GETH_AUTHRPC_JWTSECRET=/path/to/jwtsecret` - + + `--authrpc.jwtsecret ` + `--authrpc.jwtsecret=/path/to/jwtsecret` + `GETH_AUTHRPC_JWTSECRET=/path/to/jwtsecret` + -#### authrpc.port + #### authrpc.port -Listening port for authenticated APIs. The default value is `8551`. + Listening port for authenticated APIs. The default value is `8551`. - - `--authrpc.port ` - `--authrpc.port=8551` - `GETH_AUTHRPC_PORT=8551` - + + `--authrpc.port ` + `--authrpc.port=8551` + `GETH_AUTHRPC_PORT=8551` + -#### authrpc.vhosts + #### authrpc.vhosts -Comma separated list of virtual hostnames from which to accept requests (server enforced). -The default value is `"localhost"`. Accepts '\*' wildcard. + Comma separated list of virtual hostnames from which to accept requests (server enforced). + The default value is `"localhost"`. Accepts '\*' wildcard. - - `--authrpc.vhosts ` - `--authrpc.vhosts="localhost"` - `GETH_AUTHRPC_VHOSTS="localhost"` - + + `--authrpc.vhosts ` + `--authrpc.vhosts="localhost"` + `GETH_AUTHRPC_VHOSTS="localhost"` + -#### exec + #### exec -Execute JavaScript statement. + Execute JavaScript statement. - - `--exec ` - `--exec="console.log('Hello, World!')"` - `GETH_EXEC="console.log('Hello, World!')"` - + + `--exec ` + `--exec="console.log('Hello, World!')"` + `GETH_EXEC="console.log('Hello, World!')"` + -#### graphql + #### graphql -Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server -is started as well. The default value is `false`. + Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server + is started as well. The default value is `false`. - - `--graphql` - `--graphql=false` - `GETH_GRAPHQL=false` - + + `--graphql` + `--graphql=false` + `GETH_GRAPHQL=false` + -#### graphql.corsdomain + #### graphql.corsdomain -Comma separated list of domains from which to accept cross origin requests (browser enforced). + Comma separated list of domains from which to accept cross origin requests (browser enforced). - - `--graphql.corsdomain ` - `--graphql.corsdomain="http://example.com"` - `GETH_GRAPHQL_CORSDOMAIN="http://example.com"` - + + `--graphql.corsdomain ` + `--graphql.corsdomain="http://example.com"` + `GETH_GRAPHQL_CORSDOMAIN="http://example.com"` + -#### graphql.vhosts + #### graphql.vhosts -Comma separated list of virtual hostnames from which to accept requests (server enforced). The default value is `"localhost"`. Accepts '\*' wildcard. + Comma separated list of virtual hostnames from which to accept requests (server enforced). The default value is `"localhost"`. Accepts '\*' wildcard. - - `--graphql.vhosts ` - `--graphql.vhosts="localhost"` - `GETH_GRAPHQL_VHOSTS="localhost"` - + + `--graphql.vhosts ` + `--graphql.vhosts="localhost"` + `GETH_GRAPHQL_VHOSTS="localhost"` + -#### header + #### header -Pass custom headers to the RPC server when using `--remotedb` or the geth attach console. This flag can be given multiple times. + Pass custom headers to the RPC server when using `--remotedb` or the geth attach console. This flag can be given multiple times. - - `--header `, `-H ` - `--header "X-Custom-Header: Value"` - Not applicable for environment variables - + + `--header `, `-H ` + `--header "X-Custom-Header: Value"` + Not applicable for environment variables + -#### http + #### http -Enable the HTTP-RPC server. The default value is `false`. + Enable the HTTP-RPC server. The default value is `false`. - - `--http` - `--http=false` - `GETH_HTTP=false` - + + `--http` + `--http=false` + `GETH_HTTP=false` + -#### http.addr + #### http.addr -HTTP-RPC server listening interface. The default value is `"localhost"`. + HTTP-RPC server listening interface. The default value is `"localhost"`. - - `--http.addr ` - `--http.addr="localhost"` - `GETH_HTTP_ADDR="localhost"` - + + `--http.addr ` + `--http.addr="localhost"` + `GETH_HTTP_ADDR="localhost"` + -#### http.api + #### http.api -API's offered over the HTTP-RPC interface. + API's offered over the HTTP-RPC interface. - - `--http.api ` - `--http.api="eth,web3"` - `GETH_HTTP_API="eth,web3"` - + + `--http.api ` + `--http.api="eth,web3"` + `GETH_HTTP_API="eth,web3"` + -#### http.corsdomain + #### http.corsdomain -Comma separated list of domains from which to accept cross origin requests (browser enforced). + Comma separated list of domains from which to accept cross origin requests (browser enforced). - - `--http.corsdomain ` - `--http.corsdomain="http://example.com"` - `GETH_HTTP_CORSDOMAIN="http://example.com"` - + + `--http.corsdomain ` + `--http.corsdomain="http://example.com"` + `GETH_HTTP_CORSDOMAIN="http://example.com"` + -#### http.port + #### http.port -HTTP-RPC server listening port. The default value is `8545`. + HTTP-RPC server listening port. The default value is `8545`. - - `--http.port ` - `--http.port=8545` - `GETH_HTTP_PORT=8545` - + + `--http.port ` + `--http.port=8545` + `GETH_HTTP_PORT=8545` + -#### http.rpcprefix`\ + #### http.rpcprefix\`\\ -HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths. + HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths. - - `--http.rpcprefix ` - `--http.rpcprefix="/"` - `GETH_HTTP_RPCPREFIX="/"` - + + `--http.rpcprefix ` + `--http.rpcprefix="/"` + `GETH_HTTP_RPCPREFIX="/"` + -#### http.vhosts + #### http.vhosts -Comma separated list of virtual hostnames from which to accept requests (server enforced). The default value is `"localhost"`. Accepts '\*' wildcard. + Comma separated list of virtual hostnames from which to accept requests (server enforced). The default value is `"localhost"`. Accepts '\*' wildcard. - - `--http.vhosts ` - `--http.vhosts=localhost` - `GETH_HTTP_VHOSTS=localhost` - + + `--http.vhosts ` + `--http.vhosts=localhost` + `GETH_HTTP_VHOSTS=localhost` + -#### ipcdisable + #### ipcdisable -Disable the IPC-RPC server. The default value is `false`. + Disable the IPC-RPC server. The default value is `false`. - - `--ipcdisable` - `--ipcdisable=false` - `GETH_IPCDISABLE=false` - + + `--ipcdisable` + `--ipcdisable=false` + `GETH_IPCDISABLE=false` + -#### ipcpath + #### ipcpath -Filename for IPC socket/pipe within the datadir (explicit paths escape it). + Filename for IPC socket/pipe within the datadir (explicit paths escape it). - - `--ipcpath ` - `--ipcpath=/path/to/ipcfile` - `GETH_IPCPATH=/path/to/ipcfile` - + + `--ipcpath ` + `--ipcpath=/path/to/ipcfile` + `GETH_IPCPATH=/path/to/ipcfile` + -#### jspath + #### jspath -JavaScript root path for `loadScript`. The default value is `.` (current directory). + JavaScript root path for `loadScript`. The default value is `.` (current directory). - - `--jspath ` - `--jspath=/path/to/scripts` - `GETH_JSPATH=/path/to/scripts` - + + `--jspath ` + `--jspath=/path/to/scripts` + `GETH_JSPATH=/path/to/scripts` + -#### preload + #### preload -Comma separated list of JavaScript files to preload into the console. + Comma separated list of JavaScript files to preload into the console. - - `--preload ` - `--preload="file1.js,file2.js"` - `GETH_PRELOAD="file1.js,file2.js"` - + + `--preload ` + `--preload="file1.js,file2.js"` + `GETH_PRELOAD="file1.js,file2.js"` + -#### rpc.allow-unprotected-txs + #### rpc.allow-unprotected-txs -Allow for unprotected (non EIP155 signed) transactions to be submitted via RPC. The default value is `false`. + Allow for unprotected (non EIP155 signed) transactions to be submitted via RPC. The default value is `false`. - - `--rpc.allow-unprotected-txs` - `--rpc.allow-unprotected-txs=false` - `GETH_RPC_ALLOW_UNPROTECTED_TXS=false` - + + `--rpc.allow-unprotected-txs` + `--rpc.allow-unprotected-txs=false` + `GETH_RPC_ALLOW_UNPROTECTED_TXS=false` + -#### rpc.batch-request-limit + #### rpc.batch-request-limit -Maximum number of requests in a batch. The default value is `1000`. + Maximum number of requests in a batch. The default value is `1000`. - - `--rpc.batch-request-limit=` - `--rpc.batch-request-limit=1000` - `GETH_RPC_BATCH_REQUEST_LIMIT=1000` - + + `--rpc.batch-request-limit=` + `--rpc.batch-request-limit=1000` + `GETH_RPC_BATCH_REQUEST_LIMIT=1000` + -#### rpc.batch-response-max-size + #### rpc.batch-response-max-size -Maximum number of bytes returned from a batched call. The default value is `25000000`. + Maximum number of bytes returned from a batched call. The default value is `25000000`. - - `--rpc.batch-response-max-size=` - `--rpc.batch-response-max-size=25000000` - `GETH_RPC_BATCH_RESPONSE_MAX_SIZE=25000000` - + + `--rpc.batch-response-max-size=` + `--rpc.batch-response-max-size=25000000` + `GETH_RPC_BATCH_RESPONSE_MAX_SIZE=25000000` + -#### rpc.enabledeprecatedpersonal + #### rpc.enabledeprecatedpersonal -Enables the (deprecated) personal namespace. The default value is `false`. + Enables the (deprecated) personal namespace. The default value is `false`. - - `--rpc.enabledeprecatedpersonal` - `--rpc.enabledeprecatedpersonal=false` - `GETH_RPC_ENABLEDEPRECATEDPERSONAL=false` - + + `--rpc.enabledeprecatedpersonal` + `--rpc.enabledeprecatedpersonal=false` + `GETH_RPC_ENABLEDEPRECATEDPERSONAL=false` + -#### rpc.evmtimeout + #### rpc.evmtimeout -Sets a timeout used for eth\_call (0=infinite). The default value is `5s`. + Sets a timeout used for eth\_call (0=infinite). The default value is `5s`. - - `--rpc.evmtimeout ` - `--rpc.evmtimeout=5s` - `GETH_RPC_EVMTIMEOUT=5s` - + + `--rpc.evmtimeout ` + `--rpc.evmtimeout=5s` + `GETH_RPC_EVMTIMEOUT=5s` + -#### rpc.gascap + #### rpc.gascap -Sets a cap on gas that can be used in eth\_call/estimateGas (0=infinite). The default value is `50000000`. + Sets a cap on gas that can be used in eth\_call/estimateGas (0=infinite). The default value is `50000000`. - - `--rpc.gascap=` - `--rpc.gascap=50000000` - `GETH_RPC_GASCAP=50000000` - + + `--rpc.gascap=` + `--rpc.gascap=50000000` + `GETH_RPC_GASCAP=50000000` + -#### rpc.txfeecap + #### rpc.txfeecap -Sets a cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap). The default value is `1`. + Sets a cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap). The default value is `1`. - - `--rpc.txfeecap=` - `--rpc.txfeecap=1` - Not directly applicable for environment variables - + + `--rpc.txfeecap=` + `--rpc.txfeecap=1` + Not directly applicable for environment variables + -#### ws + #### ws -Enable the WS-RPC server. The default value is `false`. + Enable the WS-RPC server. The default value is `false`. - - `--ws` - `--ws=false` - `GETH_WS=false` - + + `--ws` + `--ws=false` + `GETH_WS=false` + -#### ws.addr + #### ws.addr -WS-RPC server listening interface. The default value is `"localhost"`. + WS-RPC server listening interface. The default value is `"localhost"`. - - `--ws.addr=` - `--ws.addr=localhost` - `GETH_WS_ADDR=localhost` - + + `--ws.addr=` + `--ws.addr=localhost` + `GETH_WS_ADDR=localhost` + -#### ws.api + #### ws.api -API's offered over the WS-RPC interface. + API's offered over the WS-RPC interface. - - `--ws.api=` - `--ws.api="eth,web3"` - `GETH_WS_API="eth,web3"` - + + `--ws.api=` + `--ws.api="eth,web3"` + `GETH_WS_API="eth,web3"` + -#### ws.origins + #### ws.origins -Origins from which to accept websockets requests. + Origins from which to accept websockets requests. - - `--ws.origins=` - `--ws.origins="http://example.com"` - `GETH_WS_ORIGINS="http://example.com"` - + + `--ws.origins=` + `--ws.origins="http://example.com"` + `GETH_WS_ORIGINS="http://example.com"` + -#### ws.port + #### ws.port -WS-RPC server listening port. The default value is `8546`. + WS-RPC server listening port. The default value is `8546`. - - `--ws.port=` - `--ws.port=8546` - `GETH_WS_PORT=8546` - + + `--ws.port=` + `--ws.port=8546` + `GETH_WS_PORT=8546` + -#### ws.rpcprefix + #### ws.rpcprefix -HTTP path prefix on which JSON-RPC is served over WS. Use '/' to serve on all paths. + HTTP path prefix on which JSON-RPC is served over WS. Use '/' to serve on all paths. - - `--ws.rpcprefix=` - `--ws.rpcprefix="/"` - `GETH_WS_RPCPREFIX="/"` - + + `--ws.rpcprefix=` + `--ws.rpcprefix="/"` + `GETH_WS_RPCPREFIX="/"` + -### Developer Chain + ### Developer Chain -#### dev + #### dev -Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled. -The default value is `false`. + Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled. + The default value is `false`. - - `--dev` - `--dev=false` - `GETH_DEV=false` - + + `--dev` + `--dev=false` + `GETH_DEV=false` + -#### dev.gaslimit + #### dev.gaslimit -Initial block gas limit. The default value is `11500000`. + Initial block gas limit. The default value is `11500000`. - - `--dev.gaslimit=` - `--dev.gaslimit=11500000` - `GETH_DEV_GASLIMIT=11500000` - + + `--dev.gaslimit=` + `--dev.gaslimit=11500000` + `GETH_DEV_GASLIMIT=11500000` + -#### dev.period + #### dev.period -Block period to use in developer mode (0 = mine only if transaction pending). The default value is `0`. + Block period to use in developer mode (0 = mine only if transaction pending). The default value is `0`. - - `--dev.period=` - `--dev.period=0` - `GETH_DEV_PERIOD=0` - + + `--dev.period=` + `--dev.period=0` + `GETH_DEV_PERIOD=0` + -### Ethereum + ### Ethereum -#### bloomfilter.size + #### bloomfilter.size -Megabytes of memory allocated to bloom-filter for pruning. The default value is `2048`. + Megabytes of memory allocated to bloom-filter for pruning. The default value is `2048`. - - `--bloomfilter.size=` - `--bloomfilter.size=2048` - `GETH_BLOOMFILTER_SIZE=2048` - + + `--bloomfilter.size=` + `--bloomfilter.size=2048` + `GETH_BLOOMFILTER_SIZE=2048` + -#### config + #### config -TOML configuration file. + TOML configuration file. - - `--config=` - `--config=/path/to/config.toml` - `GETH_CONFIG=/path/to/config.toml` - + + `--config=` + `--config=/path/to/config.toml` + `GETH_CONFIG=/path/to/config.toml` + -#### datadir + #### datadir -Data directory for the databases and keystore. The default value is `/home//.ethereum`. + Data directory for the databases and keystore. The default value is `/home//.ethereum`. - - `--datadir=` - `--datadir=/home/soyboy/.ethereum` - `GETH_DATADIR=/home/soyboy/.ethereum` - + + `--datadir=` + `--datadir=/home/soyboy/.ethereum` + `GETH_DATADIR=/home/soyboy/.ethereum` + -#### datadir.ancient + #### datadir.ancient -Root directory for ancient data (default = inside chaindata). + Root directory for ancient data (default = inside chaindata). - - `--datadir.ancient=` - Default value inside=chaindata - `GETH_DATADIR_ANCIENT=` - + + `--datadir.ancient=` + Default value inside=chaindata + `GETH_DATADIR_ANCIENT=` + -#### datadir.minfreedisk + #### datadir.minfreedisk -Minimum free disk space in MB, once reached triggers auto shut down (default = --cache.gc converted to MB, 0 = disabled). + Minimum free disk space in MB, once reached triggers auto shut down (default = --cache.gc converted to MB, 0 = disabled). - - `--datadir.minfreedisk=` - `--datadir.minfreedisk=0` - `GETH_DATADIR_MINFREEDISK=0` - + + `--datadir.minfreedisk=` + `--datadir.minfreedisk=0` + `GETH_DATADIR_MINFREEDISK=0` + -#### db.engine + #### db.engine -Backing database implementation to use ('pebble' or 'leveldb'). + Backing database implementation to use ('pebble' or 'leveldb'). - - `--db.engine=` - `--db.engine=leveldb` - `GETH_DB_ENGINE=leveldb` - + + `--db.engine=` + `--db.engine=leveldb` + `GETH_DB_ENGINE=leveldb` + -#### eth.requiredblocks + #### eth.requiredblocks -Comma separated block number-to-hash mappings to require for peering (`=`). + Comma separated block number-to-hash mappings to require for peering (`=`). - - `--eth.requiredblocks=` - `--eth.requiredblocks="12345=0xabcde12345..."` - `GETH_ETH_REQUIREDBLOCKS="12345=0xabcde12345..."` - + + `--eth.requiredblocks=` + `--eth.requiredblocks="12345=0xabcde12345..."` + `GETH_ETH_REQUIREDBLOCKS="12345=0xabcde12345..."` + -#### exitwhensynced + #### exitwhensynced -Exits after block synchronization completes. The default value is `false`. + Exits after block synchronization completes. The default value is `false`. - - `--exitwhensynced` - `--exitwhensynced=false` - `GETH_EXITWHENSYNCED=false` - + + `--exitwhensynced` + `--exitwhensynced=false` + `GETH_EXITWHENSYNCED=false` + -#### goerli + #### goerli -Görli network: pre-configured proof-of-authority test network. The default value is `false`. + Görli network: pre-configured proof-of-authority test network. The default value is `false`. - - `--goerli` - `--goerli=false` - `GETH_GOERLI=false` - + + `--goerli` + `--goerli=false` + `GETH_GOERLI=false` + -#### holesky + #### holesky -Holesky network: pre-configured proof-of-stake test network. The default value is `false`. + Holesky network: pre-configured proof-of-stake test network. The default value is `false`. - - `--holesky` - `--holesky=false` - `GETH_HOLESKY=false` - + + `--holesky` + `--holesky=false` + `GETH_HOLESKY=false` + -#### mainnet + #### mainnet -Ethereum mainnet. The default value is `false`. + Ethereum mainnet. The default value is `false`. - - `--mainnet` - `--mainnet=false` - `GETH_MAINNET=false` - + + `--mainnet` + `--mainnet=false` + `GETH_MAINNET=false` + -#### networkid + #### networkid -Explicitly set network id (integer). The default value is `1`. For testnets: use --goerli, --sepolia, --holesky instead. + Explicitly set network id (integer). The default value is `1`. For testnets: use --goerli, --sepolia, --holesky instead. - - `--networkid ` - `--networkid=1` - `GETH_NETWORKID=1` - + + `--networkid ` + `--networkid=1` + `GETH_NETWORKID=1` + -#### op-network, beta.op-network - -Select a pre-configured OP-Stack network (warning: op-mainnet and op-goerli -require special sync, datadir is recommended), options: -base-devnet-0-goerli-dev-0, base-devnet-0-sepolia-dev-0, base-goerli, -base-mainnet, base-sepolia, conduit-devnet-0-goerli-dev-0, lyra-mainnet, -mode-mainnet, op-goerli, op-labs-chaosnet-0-goerli-dev-0, -op-labs-devnet-0-goerli-dev-0, op-mainnet, op-sepolia, -oplabs-devnet-0-sepolia-dev-0, orderly-mainnet, pgn-mainnet, pgn-sepolia, -zora-mainnet, zora-sepolia - - - `--op-network=` - `--op-network=base-mainnet` - `GETH_OP_NETWORK=base-mainnet` - + #### op-network, beta.op-network -#### override.cancun + Select a pre-configured OP-Stack network (warning: op-mainnet and op-goerli + require special sync, datadir is recommended), options: + base-devnet-0-goerli-dev-0, base-devnet-0-sepolia-dev-0, base-goerli, + base-mainnet, base-sepolia, conduit-devnet-0-goerli-dev-0, lyra-mainnet, + mode-mainnet, op-goerli, op-labs-chaosnet-0-goerli-dev-0, + op-labs-devnet-0-goerli-dev-0, op-mainnet, op-sepolia, + oplabs-devnet-0-sepolia-dev-0, orderly-mainnet, pgn-mainnet, pgn-sepolia, + zora-mainnet, zora-sepolia -Manually specify the Cancun fork timestamp, overriding the bundled setting. The default value is `0`. + + `--op-network=` + `--op-network=base-mainnet` + `GETH_OP_NETWORK=base-mainnet` + - - `--override.cancun=` - `--override.cancun=0` - `GETH_OVERRIDE_CANCUN=0` - + #### override.cancun -#### override.canyon + Manually specify the Cancun fork timestamp, overriding the bundled setting. The default value is `0`. -Manually specify the Optimism Canyon fork timestamp, overriding the bundled setting. The default value is `0`. + + `--override.cancun=` + `--override.cancun=0` + `GETH_OVERRIDE_CANCUN=0` + - - `--override.canyon=` - `--override.canyon=0` - `GETH_OVERRIDE_CANYON=0` - + #### override.canyon -#### override.ecotone + Manually specify the Optimism Canyon fork timestamp, overriding the bundled setting. The default value is `0`. -Manually specify the Optimism Ecotone fork timestamp, overriding the bundled setting. The default value is `0`. + + `--override.canyon=` + `--override.canyon=0` + `GETH_OVERRIDE_CANYON=0` + - - `--override.ecotone=` - `--override.ecotone=0` - `GETH_OVERRIDE_ECOTONE=0` - + #### override.ecotone -#### override.fjord + Manually specify the Optimism Ecotone fork timestamp, overriding the bundled setting. The default value is `0`. -Manually specify the Optimism Fjord fork timestamp, overriding the bundled setting. The default value is `0`. + + `--override.ecotone=` + `--override.ecotone=0` + `GETH_OVERRIDE_ECOTONE=0` + - - `--override.fjord=` - `--override.fjord=0` - `GETH_OVERRIDE_FJORD=0` - + #### override.fjord -#### `override.interop` + Manually specify the Optimism Fjord fork timestamp, overriding the bundled setting. The default value is `0`. -Manually specify the Optimism Interop feature-set fork timestamp, overriding the bundled setting. -The default value is `0`. + + `--override.fjord=` + `--override.fjord=0` + `GETH_OVERRIDE_FJORD=0` + - - `--override.interop=` - `--override.interop=0` - `GETH_OVERRIDE_INTEROP=0` - + #### `override.interop` -#### override.verkle + Manually specify the Optimism Interop feature-set fork timestamp, overriding the bundled setting. + The default value is `0`. -Manually specify the Verkle fork timestamp, overriding the bundled setting. The default value is `0`. + + `--override.interop=` + `--override.interop=0` + `GETH_OVERRIDE_INTEROP=0` + - - `--override.verkle=` - `--override.verkle=0` - `GETH_OVERRIDE_VERKLE=0` - + #### override.verkle -#### sepolia + Manually specify the Verkle fork timestamp, overriding the bundled setting. The default value is `0`. -Sepolia network: pre-configured proof-of-work test network. The default value is `false`. + + `--override.verkle=` + `--override.verkle=0` + `GETH_OVERRIDE_VERKLE=0` + - - `--sepolia` - `--sepolia=false` - `GETH_SEPOLIA=false` - + #### sepolia -#### `snapshot` + Sepolia network: pre-configured proof-of-work test network. The default value is `false`. -Enables snapshot-database mode. The default value is `true`. + + `--sepolia` + `--sepolia=false` + `GETH_SEPOLIA=false` + - - `--snapshot` - `--snapshot=true` - `GETH_SNAPSHOT=true` - + #### `snapshot` -### Gas Price Oracle + Enables snapshot-database mode. The default value is `true`. -#### gpo.blocks + + `--snapshot` + `--snapshot=true` + `GETH_SNAPSHOT=true` + -Number of recent blocks to check for gas prices. The default value is `20`. + ### Gas Price Oracle - - `--gpo.blocks=` - `--gpo.blocks=20` - `GETH_GPO_BLOCKS=20` - + #### gpo.blocks -#### gpo.ignoreprice + Number of recent blocks to check for gas prices. The default value is `20`. -Gas price below which GPO will ignore transactions. The default value is `2`. + + `--gpo.blocks=` + `--gpo.blocks=20` + `GETH_GPO_BLOCKS=20` + - - `--gpo.ignoreprice=` - `--gpo.ignoreprice=2` - `GETH_GPO_IGNOREPRICE=2` - + #### gpo.ignoreprice -#### gpo.maxprice + Gas price below which GPO will ignore transactions. The default value is `2`. -Maximum transaction priority fee (or gasprice before London fork) to be recommended by GPO. -The default value is `500000000000`. + + `--gpo.ignoreprice=` + `--gpo.ignoreprice=2` + `GETH_GPO_IGNOREPRICE=2` + - - `--gpo.maxprice=` - `--gpo.maxprice=500000000000` - `GETH_GPO_MAXPRICE=500000000000` - + #### gpo.maxprice -#### gpo.minsuggestedpriorityfee + Maximum transaction priority fee (or gasprice before London fork) to be recommended by GPO. + The default value is `500000000000`. -Minimum transaction priority fee to suggest. Used on OP chains when blocks are not full. -The default value is `1000000`. + + `--gpo.maxprice=` + `--gpo.maxprice=500000000000` + `GETH_GPO_MAXPRICE=500000000000` + - - `--gpo.minsuggestedpriorityfee=` - `--gpo.minsuggestedpriorityfee=1000000` - `GETH_GPO_MINSUGGESTEDPRIORITYFEE=1000000` - + #### gpo.minsuggestedpriorityfee -#### gpo.percentile + Minimum transaction priority fee to suggest. Used on OP chains when blocks are not full. + The default value is `1000000`. -Suggested gas price is the given percentile of a set of recent transaction gas prices. The default value is `60`. + + `--gpo.minsuggestedpriorityfee=` + `--gpo.minsuggestedpriorityfee=1000000` + `GETH_GPO_MINSUGGESTEDPRIORITYFEE=1000000` + - - `--gpo.percentile=` - `--gpo.percentile=60` - `GETH_GPO_PERCENTILE=60` - + #### gpo.percentile -### Light Client + Suggested gas price is the given percentile of a set of recent transaction gas prices. The default value is `60`. -#### light.egress + + `--gpo.percentile=` + `--gpo.percentile=60` + `GETH_GPO_PERCENTILE=60` + -Outgoing bandwidth limit for serving light clients (deprecated). The default value is `0`. + ### Light Client - - `--light.egress=` - `--light.egress=0` - `GETH_LIGHT_EGRESS=0` - + #### light.egress -#### light.ingress + Outgoing bandwidth limit for serving light clients (deprecated). The default value is `0`. -Incoming bandwidth limit for serving light clients (deprecated). The default value is `0`. + + `--light.egress=` + `--light.egress=0` + `GETH_LIGHT_EGRESS=0` + - - `--light.ingress=` - `--light.ingress=0` - `GETH_LIGHT_INGRESS=0` - + #### light.ingress -#### light.maxpeers + Incoming bandwidth limit for serving light clients (deprecated). The default value is `0`. -Maximum number of light clients to serve, or light servers to attach to (deprecated). -The default value is `100`. + + `--light.ingress=` + `--light.ingress=0` + `GETH_LIGHT_INGRESS=0` + - - `--light.maxpeers=` - `--light.maxpeers=100` - `GETH_LIGHT_MAXPEERS=100` - + #### light.maxpeers -#### light.nopruning + Maximum number of light clients to serve, or light servers to attach to (deprecated). + The default value is `100`. -Disable ancient light chain data pruning (deprecated). The default value is `false`. + + `--light.maxpeers=` + `--light.maxpeers=100` + `GETH_LIGHT_MAXPEERS=100` + - - `--light.nopruning` - `--light.nopruning=false` - `GETH_LIGHT_NOPRUNING=false` - + #### light.nopruning -#### light.nosyncserve + Disable ancient light chain data pruning (deprecated). The default value is `false`. -Enables serving light clients before syncing (deprecated) The default value is `false`. + + `--light.nopruning` + `--light.nopruning=false` + `GETH_LIGHT_NOPRUNING=false` + - - `--light.nosyncserve` - `--light.nosyncserve=false` - `GETH_LIGHT_NOSYNCSERVE=false` - + #### light.nosyncserve -#### light.serve + Enables serving light clients before syncing (deprecated) The default value is `false`. -Maximum percentage of time allowed for serving LES requests (deprecated). -The default value is `0`. + + `--light.nosyncserve` + `--light.nosyncserve=false` + `GETH_LIGHT_NOSYNCSERVE=false` + - - `--light.serv=` - `--light.serve=0` - `GETH_LIGHT_SERVE=0` - + #### light.serve -### Logging and Debugging + Maximum percentage of time allowed for serving LES requests (deprecated). + The default value is `0`. -#### log.compress + + `--light.serv=` + `--light.serve=0` + `GETH_LIGHT_SERVE=0` + -Compress the log files. The default value is `false`. + ### Logging and Debugging - - `--log.compress` - `--log.compress=false` - `GETH_LOG_COMPRESS=false` - + #### log.compress -#### log.file + Compress the log files. The default value is `false`. -Write logs to a file. + + `--log.compress` + `--log.compress=false` + `GETH_LOG_COMPRESS=false` + - - `--log.file=` - `--log.file=/path/to/logfile` - `GETH_LOG_FILE=/path/to/logfile` - + #### log.file -#### log.format + Write logs to a file. -Log format to use (json|logfmt|terminal). + + `--log.file=` + `--log.file=/path/to/logfile` + `GETH_LOG_FILE=/path/to/logfile` + - - `--log.format=` - `--log.format=logfmt` - `GETH_LOG_FORMAT=logfmt` - + #### log.format -#### log.maxage + Log format to use (json|logfmt|terminal). -Maximum number of days to retain a log file. The default value is `30`. + + `--log.format=` + `--log.format=logfmt` + `GETH_LOG_FORMAT=logfmt` + - - `--log.maxage=` - `--log.maxage=30` - `GETH_LOG_MAXAGE=30` - + #### log.maxage -#### log.maxbackups + Maximum number of days to retain a log file. The default value is `30`. -Maximum number of log files to retain. The default value is `10`. + + `--log.maxage=` + `--log.maxage=30` + `GETH_LOG_MAXAGE=30` + - - `--log.maxbackups=` - `--log.maxbackups=10` - `GETH_LOG_MAXBACKUPS=10` - + #### log.maxbackups -#### log.maxsize + Maximum number of log files to retain. The default value is `10`. -Maximum size in MBs of a single log file. The default value is `100`. + + `--log.maxbackups=` + `--log.maxbackups=10` + `GETH_LOG_MAXBACKUPS=10` + - - `--log.maxsize=` - `--log.maxsize=100` - `GETH_LOG_MAXSIZE=100` - + #### log.maxsize -#### `log.rotate` + Maximum size in MBs of a single log file. The default value is `100`. -Enables log file rotation. The default value is `false`. + + `--log.maxsize=` + `--log.maxsize=100` + `GETH_LOG_MAXSIZE=100` + - - `--log.rotate` - `--log.rotate=false` - `GETH_LOG_ROTATE=false` - + #### `log.rotate` -#### log.vmodule + Enables log file rotation. The default value is `false`. -Per-module verbosity: comma-separated list of `=` (e.g. eth/\*=5,p2p=4). + + `--log.rotate` + `--log.rotate=false` + `GETH_LOG_ROTATE=false` + - - `--log.vmodule=` - `--log.vmodule="eth/*=5,p2p=4"` - `GETH_LOG_VMODULE="eth/*=5,p2p=4"` - + #### log.vmodule -#### nocompaction + Per-module verbosity: comma-separated list of `=` (e.g. eth/\*=5,p2p=4). -Disables database compaction after import. The default value is `false`. + + `--log.vmodule=` + `--log.vmodule="eth/*=5,p2p=4"` + `GETH_LOG_VMODULE="eth/*=5,p2p=4"` + - - `--nocompaction` - `--nocompaction=false` - `GETH_NOCOMPACTION=false` - + #### nocompaction -#### pprof + Disables database compaction after import. The default value is `false`. -Enable the pprof HTTP server. The default value is `false`. + + `--nocompaction` + `--nocompaction=false` + `GETH_NOCOMPACTION=false` + - - `--pprof` - `--pprof=false` - `GETH_PPROF=false` - + #### pprof -#### pprof.addr + Enable the pprof HTTP server. The default value is `false`. -pprof HTTP server listening interface. The default value is `"127.0.0.1"`. + + `--pprof` + `--pprof=false` + `GETH_PPROF=false` + - - `--pprof.addr=` - `--pprof.addr="127.0.0.1"` - `GETH_PPROF_ADDR="127.0.0.1"` - + #### pprof.addr -#### pprof.blockprofilerate + pprof HTTP server listening interface. The default value is `"127.0.0.1"`. -Turn on block profiling with the given rate. The default value is `0`. + + `--pprof.addr=` + `--pprof.addr="127.0.0.1"` + `GETH_PPROF_ADDR="127.0.0.1"` + - - `--pprof.blockprofilerate=` - `--pprof.blockprofilerate=0` - `GETH_PPROF_BLOCKPROFILERATE=0` - + #### pprof.blockprofilerate -#### pprof.cpuprofile + Turn on block profiling with the given rate. The default value is `0`. -Write CPU profile to the given file. + + `--pprof.blockprofilerate=` + `--pprof.blockprofilerate=0` + `GETH_PPROF_BLOCKPROFILERATE=0` + - - `--pprof.cpuprofile=` - `--pprof.cpuprofile=/path/to/cpu.profile` - + #### pprof.cpuprofile -#### pprof.memprofilerate + Write CPU profile to the given file. -Turn on memory profiling with the given rate. The default value is `524288`. + + `--pprof.cpuprofile=` + `--pprof.cpuprofile=/path/to/cpu.profile` + - - `--pprof.memprofilerate=` - `--pprof.memprofilerate=524288` - `GETH_PPROF_MEMPROFILERATE=524288` - + #### pprof.memprofilerate -#### pprof.port + Turn on memory profiling with the given rate. The default value is `524288`. -pprof HTTP server listening port. The default value is `6060`. + + `--pprof.memprofilerate=` + `--pprof.memprofilerate=524288` + `GETH_PPROF_MEMPROFILERATE=524288` + - - `--pprof.port=` - `--pprof.port=6060` - `GETH_PPROF_PORT=6060` - + #### pprof.port -#### remotedb + pprof HTTP server listening port. The default value is `6060`. -URL for remote database. + + `--pprof.port=` + `--pprof.port=6060` + `GETH_PPROF_PORT=6060` + - - `--remotedb=` - `--remotedb=http://example.com/db` - `GETH_REMOTEDB=http://example.com/db` - + #### remotedb -#### trace + URL for remote database. -Write execution trace to the given file. + + `--remotedb=` + `--remotedb=http://example.com/db` + `GETH_REMOTEDB=http://example.com/db` + - - `--trace=` - `--trace=/path/to/trace.file` - `GETH_TRACE=/path/to/trace.file` - + #### trace -#### verbosity + Write execution trace to the given file. -Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail. The default value is `3`. + + `--trace=` + `--trace=/path/to/trace.file` + `GETH_TRACE=/path/to/trace.file` + - - `--verbosity=` - `--verbosity=3` - `GETH_VERBOSITY=3` - + #### verbosity -### Metrics and Stats + Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail. The default value is `3`. -#### ethstats + + `--verbosity=` + `--verbosity=3` + `GETH_VERBOSITY=3` + -Reporting URL of an ethstats service (nodename:secret\@host:port). + ### Metrics and Stats - - `--ethstats=` - `--ethstats="nodename:secret@host:port"` - `GETH_ETHSTATS="nodename:secret@host:port"` - + #### ethstats -#### metrics + Reporting URL of an ethstats service (nodename:secret\@host:port). -Enable metrics collection and reporting. The default value is `false`. + + `--ethstats=` + `--ethstats="nodename:secret@host:port"` + `GETH_ETHSTATS="nodename:secret@host:port"` + - - `--metrics` - `--metrics=false` - `GETH_METRICS=false` - + #### metrics -#### metrics.addr + Enable metrics collection and reporting. The default value is `false`. -Enable stand-alone metrics HTTP server listening interface. + + `--metrics` + `--metrics=false` + `GETH_METRICS=false` + - - `--metrics.addr=` - `--metrics.addr="127.0.0.1:9090"` - `GETH_METRICS_ADDR="127.0.0.1:9090"` - + #### metrics.addr -#### metrics.expensive + Enable stand-alone metrics HTTP server listening interface. -Enable expensive metrics collection and reporting. The default value is `false`. + + `--metrics.addr=` + `--metrics.addr="127.0.0.1:9090"` + `GETH_METRICS_ADDR="127.0.0.1:9090"` + - - `--metrics.expensive` - `--metrics.expensive=false` - `GETH_METRICS_EXPENSIVE=false` - + #### metrics.expensive -#### metrics.influxdb + Enable expensive metrics collection and reporting. The default value is `false`. -Enable metrics export/push to an external InfluxDB database. The default value is `false`. + + `--metrics.expensive` + `--metrics.expensive=false` + `GETH_METRICS_EXPENSIVE=false` + - - `--metrics.influxdb` - `--metrics.influxdb=false` - `GETH_METRICS_INFLUXDB=false` - + #### metrics.influxdb -#### metrics.influxdb.bucket + Enable metrics export/push to an external InfluxDB database. The default value is `false`. -InfluxDB bucket name to push reported metrics to (v2 only). The default value is `"geth"`. + + `--metrics.influxdb` + `--metrics.influxdb=false` + `GETH_METRICS_INFLUXDB=false` + - - `--metrics.influxdb.bucket=` - `--metrics.influxdb.bucket="geth"` - `GETH_METRICS_INFLUXDB_BUCKET="geth"` - + #### metrics.influxdb.bucket -#### metrics.influxdb.database + InfluxDB bucket name to push reported metrics to (v2 only). The default value is `"geth"`. -InfluxDB database name to push reported metrics to. The default value is `"geth"`. + + `--metrics.influxdb.bucket=` + `--metrics.influxdb.bucket="geth"` + `GETH_METRICS_INFLUXDB_BUCKET="geth"` + - - `--metrics.influxdb.database=` - `--metrics.influxdb.database="geth"` - `GETH_METRICS_INFLUXDB_DATABASE="geth"` - + #### metrics.influxdb.database -#### metrics.influxdb.endpoint + InfluxDB database name to push reported metrics to. The default value is `"geth"`. -InfluxDB API endpoint to report metrics to. The default value is `"http://localhost:8086"`. + + `--metrics.influxdb.database=` + `--metrics.influxdb.database="geth"` + `GETH_METRICS_INFLUXDB_DATABASE="geth"` + - - `--metrics.influxdb.endpoint=` - `--metrics.influxdb.endpoint="http://localhost:8086"` - `GETH_METRICS_INFLUXDB_ENDPOINT="http://localhost:8086"` - + #### metrics.influxdb.endpoint -#### metrics.influxdb.organization + InfluxDB API endpoint to report metrics to. The default value is `"http://localhost:8086"`. -InfluxDB organization name (v2 only). The default value is `"geth"`. + + `--metrics.influxdb.endpoint=` + `--metrics.influxdb.endpoint="http://localhost:8086"` + `GETH_METRICS_INFLUXDB_ENDPOINT="http://localhost:8086"` + - - `--metrics.influxdb.organization=` - `--metrics.influxdb.organization="geth"` - `GETH_METRICS_INFLUXDB_ORGANIZATION="geth"` - + #### metrics.influxdb.organization -#### metrics.influxdb.password + InfluxDB organization name (v2 only). The default value is `"geth"`. -Password to authorize access to the database. The default value is `"test"`. + + `--metrics.influxdb.organization=` + `--metrics.influxdb.organization="geth"` + `GETH_METRICS_INFLUXDB_ORGANIZATION="geth"` + - - `--metrics.influxdb.password=` - `--metrics.influxdb.password="test"` - `GETH_METRICS_INFLUXDB_PASSWORD="test"` - + #### metrics.influxdb.password -#### metrics.influxdb.tags + Password to authorize access to the database. The default value is `"test"`. -Comma-separated InfluxDB tags (key/values) attached to all measurements. The default value is `"host=localhost"`. + + `--metrics.influxdb.password=` + `--metrics.influxdb.password="test"` + `GETH_METRICS_INFLUXDB_PASSWORD="test"` + - - `--metrics.influxdb.tags=` - `--metrics.influxdb.tags="host=localhost"` - `GETH_METRICS_INFLUXDB_TAGS="host=localhost"` - + #### metrics.influxdb.tags -#### metrics.influxdb.token + Comma-separated InfluxDB tags (key/values) attached to all measurements. The default value is `"host=localhost"`. -Token to authorize access to the database (v2 only). The default value is `"test"`. + + `--metrics.influxdb.tags=` + `--metrics.influxdb.tags="host=localhost"` + `GETH_METRICS_INFLUXDB_TAGS="host=localhost"` + - - `--metrics.influxdb.token=` - `--metrics.influxdb.token="test"` - `GETH_METRICS_INFLUXDB_TOKEN="test"` - + #### metrics.influxdb.token -#### metrics.influxdb.username + Token to authorize access to the database (v2 only). The default value is `"test"`. -Username to authorize access to the database. The default value is `"test"`. + + `--metrics.influxdb.token=` + `--metrics.influxdb.token="test"` + `GETH_METRICS_INFLUXDB_TOKEN="test"` + - - `--metrics.influxdb.username=` - `--metrics.influxdb.username="test"` - `GETH_METRICS_INFLUXDB_USERNAME="test"` - + #### metrics.influxdb.username -#### metrics.influxdbv2 + Username to authorize access to the database. The default value is `"test"`. -Enable metrics export/push to an external InfluxDB v2 database. The default value is `false`. + + `--metrics.influxdb.username=` + `--metrics.influxdb.username="test"` + `GETH_METRICS_INFLUXDB_USERNAME="test"` + - - `--metrics.influxdbv2` - `--metrics.influxdbv2=false` - `GETH_METRICS_INFLUXDBV2=false` - + #### metrics.influxdbv2 -#### metrics.port + Enable metrics export/push to an external InfluxDB v2 database. The default value is `false`. -Metrics HTTP server listening port. The default value is `6060`. -Please note that `--metrics.addr` must be set to start the server. + + `--metrics.influxdbv2` + `--metrics.influxdbv2=false` + `GETH_METRICS_INFLUXDBV2=false` + - - `--metrics.port=` - `--metrics.port=6060` - `GETH_METRICS_PORT=6060` - + #### metrics.port -### Miner + Metrics HTTP server listening port. The default value is `6060`. + Please note that `--metrics.addr` must be set to start the server. -#### mine + + `--metrics.port=` + `--metrics.port=6060` + `GETH_METRICS_PORT=6060` + -Enable mining. The default value is `false`. + ### Miner - - `--mine` - `--mine=false` - `GETH_MINE=false` - + #### mine -#### miner.etherbase + Enable mining. The default value is `false`. -0x prefixed public address for block mining rewards. + + `--mine` + `--mine=false` + `GETH_MINE=false` + - - `--miner.etherbase=` - `--miner.etherbase=0x123...` - `GETH_MINER_ETHERBASE=0x123...` - + #### miner.etherbase -#### miner.extradata + 0x prefixed public address for block mining rewards. -Block extra data set by the miner (default = client version). + + `--miner.etherbase=` + `--miner.etherbase=0x123...` + `GETH_MINER_ETHERBASE=0x123...` + - - `--miner.extradata=` - `--miner.extradata="Some extra data"` - `GETH_MINER_EXTRADATA="Some extra data"` - + #### miner.extradata -#### miner.gaslimit + Block extra data set by the miner (default = client version). -Target gas ceiling for mined blocks. The default value is `30000000`. + + `--miner.extradata=` + `--miner.extradata="Some extra data"` + `GETH_MINER_EXTRADATA="Some extra data"` + - - `--miner.gaslimit=` - `--miner.gaslimit=30000000` - `GETH_MINER_GASLIMIT=30000000` - + #### miner.gaslimit -#### miner.gasprice + Target gas ceiling for mined blocks. The default value is `30000000`. -Minimum gas price for mining a transaction. The default value is `0`. + + `--miner.gaslimit=` + `--miner.gaslimit=30000000` + `GETH_MINER_GASLIMIT=30000000` + - - `--miner.gasprice=` - `--miner.gasprice=0` - `GETH_MINER_GASPRICE=0` - + #### miner.gasprice -#### miner.newpayload-timeout + Minimum gas price for mining a transaction. The default value is `0`. -Specify the maximum time allowance for creating a new payload. The default value is `2s`. + + `--miner.gasprice=` + `--miner.gasprice=0` + `GETH_MINER_GASPRICE=0` + - - `--miner.newpayload-timeout=` - `--miner.newpayload-timeout=2s` - `GETH_MINER_NEWPAYLOAD_TIMEOUT=2s` - + #### miner.newpayload-timeout -#### miner.recommit + Specify the maximum time allowance for creating a new payload. The default value is `2s`. -Time interval to recreate the block being mined. The default value is `100ms`. + + `--miner.newpayload-timeout=` + `--miner.newpayload-timeout=2s` + `GETH_MINER_NEWPAYLOAD_TIMEOUT=2s` + - - `--miner.recommit=` - `--miner.recommit=100ms` - `GETH_MINER_RECOMMIT=100ms` - + #### miner.recommit -### Miscellaneous + Time interval to recreate the block being mined. The default value is `100ms`. -#### help + + `--miner.recommit=` + `--miner.recommit=100ms` + `GETH_MINER_RECOMMIT=100ms` + -Show help. This is typically used to display command-line options and usage information. + ### Miscellaneous - - `--help` or `-h` - `--help` - + #### help -#### synctarget + Show help. This is typically used to display command-line options and usage information. -Hash of the block to full sync to (dev testing feature). + + `--help` or `-h` + `--help` + - - `--synctarget=` - `--synctarget="0x123...456"` - `GETH_SYNCTARGET="0x123...456"` - + #### synctarget -#### version + Hash of the block to full sync to (dev testing feature). - - Nodes built from source do not output the correct version numbers that are reported on - the GitHub release page. - + + `--synctarget=` + `--synctarget="0x123...456"` + `GETH_SYNCTARGET="0x123...456"` + -Print the version. This option is typically used to display the version of the software. + #### version - - `--version` or `-v` - `--version` - + + Nodes built from source do not output the correct version numbers that are reported on + the GitHub release page. + -### Networking + Print the version. This option is typically used to display the version of the software. -#### bootnodes + + `--version` or `-v` + `--version` + -Comma separated enode URLs for P2P discovery bootstrap. + ### Networking - - `--bootnodes=` - `--bootnodes=` - `GETH_BOOTNODES=` - + #### bootnodes -#### discovery.dns + Comma separated enode URLs for P2P discovery bootstrap. -Sets DNS discovery entry points (use "" to disable DNS). + + `--bootnodes=` + `--bootnodes=` + `GETH_BOOTNODES=` + - - `--discovery.dns=` - `--discovery.dns=""` - `GETH_DISCOVERY_DNS=""` - + #### discovery.dns -#### discovery.port + Sets DNS discovery entry points (use "" to disable DNS). -Use a custom UDP port for P2P discovery. The default value is `30303`. + + `--discovery.dns=` + `--discovery.dns=""` + `GETH_DISCOVERY_DNS=""` + - - `--discovery.port=` - `--discovery.port=30303` - `GETH_DISCOVERY_PORT=30303` - + #### discovery.port -#### discovery.v4 + Use a custom UDP port for P2P discovery. The default value is `30303`. -Enables the V4 discovery mechanism. The default value is `true`. + + `--discovery.port=` + `--discovery.port=30303` + `GETH_DISCOVERY_PORT=30303` + - - `--discovery.v4` or `--discv4` - `--discovery.v4=true` - `GETH_DISCOVERY_V4=true` - + #### discovery.v4 -#### discovery.v5 + Enables the V4 discovery mechanism. The default value is `true`. -Enables the experimental RLPx V5 (Topic Discovery) mechanism. The default value is `false`. + + `--discovery.v4` or `--discv4` + `--discovery.v4=true` + `GETH_DISCOVERY_V4=true` + - - `--discovery.v5` or `--discv5` - `--discovery.v5=false` - `GETH_DISCOVERY_V5=false` - + #### discovery.v5 -#### identity + Enables the experimental RLPx V5 (Topic Discovery) mechanism. The default value is `false`. -Custom node name. + + `--discovery.v5` or `--discv5` + `--discovery.v5=false` + `GETH_DISCOVERY_V5=false` + - - `--identity=` - `--identity="MyNode"` - `GETH_IDENTITY="MyNode"` - + #### identity -#### maxpeers + Custom node name. -Maximum number of network peers (network disabled if set to 0). The default value is `50`. + + `--identity=` + `--identity="MyNode"` + `GETH_IDENTITY="MyNode"` + - - `--maxpeers=` - `--maxpeers=50` - `GETH_MAXPEERS=50` - + #### maxpeers -#### maxpendpeers + Maximum number of network peers (network disabled if set to 0). The default value is `50`. -Maximum number of pending connection attempts (defaults used if set to 0). The default value is `0`. + + `--maxpeers=` + `--maxpeers=50` + `GETH_MAXPEERS=50` + - - `--maxpendpeers=` - `--maxpendpeers=0` - `GETH_MAXPENDPEERS=0` - + #### maxpendpeers -#### nat + Maximum number of pending connection attempts (defaults used if set to 0). The default value is `0`. -NAT port mapping mechanism (any|none|upnp|pmp|pmp:`|extip:`). The default value is `"any"`. + + `--maxpendpeers=` + `--maxpendpeers=0` + `GETH_MAXPENDPEERS=0` + - - `--nat=` - `--nat="any"` - `GETH_NAT="any"` - + #### nat -#### netrestrict + NAT port mapping mechanism (any|none|upnp|pmp|pmp:`|extip:`). The default value is `"any"`. -Restricts network communication to the given IP networks (CIDR masks). + + `--nat=` + `--nat="any"` + `GETH_NAT="any"` + - - `--netrestrict=` - `--netrestrict="192.168.0.0/24"` - `GETH_NETRESTRICT="192.168.0.0/24"` - + #### netrestrict -#### nodekey + Restricts network communication to the given IP networks (CIDR masks). -P2P node key file. + + `--netrestrict=` + `--netrestrict="192.168.0.0/24"` + `GETH_NETRESTRICT="192.168.0.0/24"` + - - `--nodekey=` - `--nodekey=/path/to/nodekey` - `GETH_NODEKEY=/path/to/nodekey` - + #### nodekey -#### nodekeyhex + P2P node key file. -P2P node key as hex (for testing). + + `--nodekey=` + `--nodekey=/path/to/nodekey` + `GETH_NODEKEY=/path/to/nodekey` + - - `--nodekeyhex=` - `--nodekeyhex="abcdef..."` - `GETH_NODEKEYHEX="abcdef..."` - + #### nodekeyhex -#### nodiscover + P2P node key as hex (for testing). -Disables the peer discovery mechanism (manual peer addition). The default value is `false`. + + `--nodekeyhex=` + `--nodekeyhex="abcdef..."` + `GETH_NODEKEYHEX="abcdef..."` + - - `--nodiscover` - `--nodiscover=false` - `GETH_NODISCOVER=false` - + #### nodiscover -#### port + Disables the peer discovery mechanism (manual peer addition). The default value is `false`. -Network listening port. The default value is `30303`. + + `--nodiscover` + `--nodiscover=false` + `GETH_NODISCOVER=false` + - - `--port=` - `--port=30303` - `GETH_PORT=30303` - + #### port -### Performance Tuning + Network listening port. The default value is `30303`. -#### `cache` + + `--port=` + `--port=30303` + `GETH_PORT=30303` + -Megabytes of memory allocated to internal caching. -The default is `4096` MB for mainnet full node and `128` MB for light mode. + ### Performance Tuning - - `--cache=` - `--cache=1024` - `GETH_CACHE=1024` - + #### `cache` -#### cache.blocklogs + Megabytes of memory allocated to internal caching. + The default is `4096` MB for mainnet full node and `128` MB for light mode. -Size (in number of blocks) of the log cache for filtering. The default value is `32`. + + `--cache=` + `--cache=1024` + `GETH_CACHE=1024` + - - `--cache.blocklogs=` - `--cache.blocklogs=32` - `GETH_CACHE_BLOCKLOGS=32` - + #### cache.blocklogs -#### cache.database + Size (in number of blocks) of the log cache for filtering. The default value is `32`. -Percentage of cache memory allowance to use for database I/O. The default value is `50`. + + `--cache.blocklogs=` + `--cache.blocklogs=32` + `GETH_CACHE_BLOCKLOGS=32` + - - `--cache.database=` - `--cache.database=50` - `GETH_CACHE_DATABASE=50` - + #### cache.database -#### cache.gc + Percentage of cache memory allowance to use for database I/O. The default value is `50`. -Percentage of cache memory allowance to use for trie pruning. The default is `25%` for full mode -and `0%` for archive mode. + + `--cache.database=` + `--cache.database=50` + `GETH_CACHE_DATABASE=50` + - - `--cache.gc=` - `--cache.gc=25` - `GETH_CACHE_GC=25` - + #### cache.gc -#### cache.noprefetch + Percentage of cache memory allowance to use for trie pruning. The default is `25%` for full mode + and `0%` for archive mode. -Disable heuristic state prefetch during block import (less CPU and disk IO, more -time waiting for data). The default value is `false`. + + `--cache.gc=` + `--cache.gc=25` + `GETH_CACHE_GC=25` + - - `--cache.noprefetch` - `--cache.noprefetch=false` - `GETH_CACHE_NOPREFETCH=false` - + #### cache.noprefetch -#### cache.preimages + Disable heuristic state prefetch during block import (less CPU and disk IO, more + time waiting for data). The default value is `false`. -Enable recording the SHA3/keccak preimages of trie keys. The default value is `false`. + + `--cache.noprefetch` + `--cache.noprefetch=false` + `GETH_CACHE_NOPREFETCH=false` + - - `--cache.preimages` - `--cache.preimages=false` - `GETH_CACHE_PREIMAGES=false` - + #### cache.preimages -#### cache.snapshot + Enable recording the SHA3/keccak preimages of trie keys. The default value is `false`. -Percentage of cache memory allowance to use for snapshot caching. -The default is `10%` for full mode and `20%` for archive mode. + + `--cache.preimages` + `--cache.preimages=false` + `GETH_CACHE_PREIMAGES=false` + - - `--cache.snapshot=` - `--cache.snapshot=10` - `GETH_CACHE_SNAPSHOT=10` - + #### cache.snapshot -#### cache.trie + Percentage of cache memory allowance to use for snapshot caching. + The default is `10%` for full mode and `20%` for archive mode. -Percentage of cache memory allowance to use for trie caching. -The default is `15%` for full mode and `30%` for archive mode. + + `--cache.snapshot=` + `--cache.snapshot=10` + `GETH_CACHE_SNAPSHOT=10` + - - `--cache.trie=` - `--cache.trie=15%` - `GETH_CACHE_TRIE=15%` - + #### cache.trie -#### crypto.kzg + Percentage of cache memory allowance to use for trie caching. + The default is `15%` for full mode and `30%` for archive mode. -KZG library implementation to use; gokzg (recommended) or ckzg. -The default value is `"gokzg"`. + + `--cache.trie=` + `--cache.trie=15%` + `GETH_CACHE_TRIE=15%` + - - `--crypto.kzg=` - `--crypto.kzg=gokzg` - `GETH_CRYPTO_KZG=gokzg` - + #### crypto.kzg -#### fdlimit + KZG library implementation to use; gokzg (recommended) or ckzg. + The default value is `"gokzg"`. -Raise the open file descriptor resource limit. The default is the system fd limit. + + `--crypto.kzg=` + `--crypto.kzg=gokzg` + `GETH_CRYPTO_KZG=gokzg` + - - `--fdlimit=` - `--fdlimit=0` (system default) - `GETH_FDLIMIT=0` - + #### fdlimit -### Rollup Node + Raise the open file descriptor resource limit. The default is the system fd limit. -#### rollup.computependingblock + + `--fdlimit=` + `--fdlimit=0` (system default) + `GETH_FDLIMIT=0` + -By default, the pending block equals the latest block to save resources and not leak -transactions from the tx-pool. This flag enables computing of the pending block from -the tx-pool instead. The default value is `false`. + ### Rollup Node - - `--rollup.computependingblock` - `--rollup.computependingblock=false` - `GETH_ROLLUP_COMPUTEPENDINGBLOCK=false` - + #### rollup.computependingblock -#### rollup.disabletxpoolgossip + By default, the pending block equals the latest block to save resources and not leak + transactions from the tx-pool. This flag enables computing of the pending block from + the tx-pool instead. The default value is `false`. -Disable transaction pool gossip. The default value is `false`. + + `--rollup.computependingblock` + `--rollup.computependingblock=false` + `GETH_ROLLUP_COMPUTEPENDINGBLOCK=false` + - - `--rollup.disabletxpoolgossip` - `--rollup.disabletxpoolgossip=false` - `GETH_ROLLUP_DISABLETXPOOLGOSSIP=false` - + #### rollup.disabletxpoolgossip -#### rollup.halt + Disable transaction pool gossip. The default value is `false`. -Opt-in option to halt on incompatible protocol version requirements of the -given level (major/minor/patch/none), as signaled through the Engine API -by the rollup node. + + `--rollup.disabletxpoolgossip` + `--rollup.disabletxpoolgossip=false` + `GETH_ROLLUP_DISABLETXPOOLGOSSIP=false` + - - `--rollup.halt=` - `--rollup.halt="major"` - `GETH_ROLLUP_HALT="major"` - + #### rollup.halt -#### rollup.historicalrpc + Opt-in option to halt on incompatible protocol version requirements of the + given level (major/minor/patch/none), as signaled through the Engine API + by the rollup node. -RPC endpoint for historical data. + + `--rollup.halt=` + `--rollup.halt="major"` + `GETH_ROLLUP_HALT="major"` + - - `--rollup.historicalrpc ` - `--rollup.historicalrpc "http://example.com"` - `GETH_ROLLUP_HISTORICALRPC="http://example.com"` - + #### rollup.historicalrpc -#### rollup.historicalrpctimeout + RPC endpoint for historical data. -Timeout for historical RPC requests. The default value is `5s`. + + `--rollup.historicalrpc ` + `--rollup.historicalrpc "http://example.com"` + `GETH_ROLLUP_HISTORICALRPC="http://example.com"` + - - `--rollup.historicalrpctimeout=` - `--rollup.historicalrpctimeout=5s` - `GETH_ROLLUP_HISTORICALRPCTIMEOUT=5s` - + #### rollup.historicalrpctimeout -#### rollup.sequencerhttp + Timeout for historical RPC requests. The default value is `5s`. -HTTP endpoint for the sequencer mempool. + + `--rollup.historicalrpctimeout=` + `--rollup.historicalrpctimeout=5s` + `GETH_ROLLUP_HISTORICALRPCTIMEOUT=5s` + - - `--rollup.sequencerhttp=` - `--rollup.sequencerhttp="http://example.com"` - `GETH_ROLLUP_SEQUENCERHTTP="http://example.com"` - + #### rollup.sequencerhttp -#### rollup.superchain-upgrades + HTTP endpoint for the sequencer mempool. -Apply superchain-registry config changes to the local chain-configuration. -The default value is `true`. + + `--rollup.sequencerhttp=` + `--rollup.sequencerhttp="http://example.com"` + `GETH_ROLLUP_SEQUENCERHTTP="http://example.com"` + - - `--rollup.superchain-upgrades` or `--beta.rollup.superchain-upgrades` - `--rollup.superchain-upgrades=true` - `GETH_ROLLUP_SUPERCHAIN_UPGRADES=true` - + #### rollup.superchain-upgrades -### State History Management + Apply superchain-registry config changes to the local chain-configuration. + The default value is `true`. -#### gcmode + + `--rollup.superchain-upgrades` or `--beta.rollup.superchain-upgrades` + `--rollup.superchain-upgrades=true` + `GETH_ROLLUP_SUPERCHAIN_UPGRADES=true` + -Blockchain garbage collection mode, only relevant in `state.scheme=hash`. -Options are "full" and "archive". The default value is `"full"`. + ### State History Management - - `--gcmode=` - `--gcmode="full"` - `GETH_GCMODE="full"` - + #### gcmode -#### history.state + Blockchain garbage collection mode, only relevant in `state.scheme=hash`. + Options are "full" and "archive". The default value is `"full"`. -Number of recent blocks to retain state history for. The default is `90000` -blocks, with `0` representing the entire chain. + + `--gcmode=` + `--gcmode="full"` + `GETH_GCMODE="full"` + - - `--history.state=` - `--history.state=90000` - `GETH_HISTORY_STATE=90000` - + #### history.state -#### history.transactions + Number of recent blocks to retain state history for. The default is `90000` + blocks, with `0` representing the entire chain. -Number of recent blocks to maintain transactions index for. -The default is about two months (`2350000` blocks), with `0` representing the entire chain. + + `--history.state=` + `--history.state=90000` + `GETH_HISTORY_STATE=90000` + - - `--history.transactions=` - `--history.transactions=2350000` - `GETH_HISTORY_TRANSACTIONS=2350000` - + #### history.transactions -#### state.scheme + Number of recent blocks to maintain transactions index for. + The default is about two months (`2350000` blocks), with `0` representing the entire chain. -Scheme to use for storing Ethereum state. Options are 'hash' or 'path'. + + `--history.transactions=` + `--history.transactions=2350000` + `GETH_HISTORY_TRANSACTIONS=2350000` + - - `--state.scheme=` - `--state.scheme="hash"` - `GETH_STATE_SCHEME="hash"` - + #### state.scheme -#### syncmode + Scheme to use for storing Ethereum state. Options are 'hash' or 'path'. -Blockchain sync mode. Options are "snap", or "full". The default value is `"snap"`. + + `--state.scheme=` + `--state.scheme="hash"` + `GETH_STATE_SCHEME="hash"` + - - `--syncmode=` - `--syncmode="full"` - `GETH_SYNCMODE="full"` - + #### syncmode -### Transaction Pool (Blob) + Blockchain sync mode. Options are "snap", or "full". The default value is `"snap"`. -#### blobpool.datacap + + `--syncmode=` + `--syncmode="full"` + `GETH_SYNCMODE="full"` + -Disk space to allocate for pending blob transactions (soft limit). -The default value is `10737418240`. + ### Transaction Pool (Blob) - - `--blobpool.datacap=` - `--blobpool.datacap=10737418240` - `GETH_BLOBPOOL_DATACAP=10737418240` - + #### blobpool.datacap -#### blobpool.pricebump + Disk space to allocate for pending blob transactions (soft limit). + The default value is `10737418240`. -Price bump percentage to replace an already existing blob transaction. -The default value is `100`. + + `--blobpool.datacap=` + `--blobpool.datacap=10737418240` + `GETH_BLOBPOOL_DATACAP=10737418240` + - - `--blobpool.pricebump=` - `--blobpool.pricebump=100` - `GETH_BLOBPOOL_PRICEBUMP=100` - + #### blobpool.pricebump -### Transaction Pool (EVM) + Price bump percentage to replace an already existing blob transaction. + The default value is `100`. -#### txpool.accountqueue + + `--blobpool.pricebump=` + `--blobpool.pricebump=100` + `GETH_BLOBPOOL_PRICEBUMP=100` + -Maximum number of non-executable transaction slots permitted per account. -The default value is `64`. + ### Transaction Pool (EVM) - - `--txpool.accountqueue=` - `--txpool.accountqueue=64` - `GETH_TXPOOL_ACCOUNTQUEUE=64` - + #### txpool.accountqueue -#### txpool.accountslots + Maximum number of non-executable transaction slots permitted per account. + The default value is `64`. -Minimum number of executable transaction slots guaranteed per account. -The default value is `16`. + + `--txpool.accountqueue=` + `--txpool.accountqueue=64` + `GETH_TXPOOL_ACCOUNTQUEUE=64` + - - `--txpool.accountslots=` - `--txpool.accountslots=16` - `GETH_TXPOOL_ACCOUNTSLOTS=16` - + #### txpool.accountslots -#### txpool.globalqueue + Minimum number of executable transaction slots guaranteed per account. + The default value is `16`. -Maximum number of non-executable transaction slots for all accounts. -The default value is `1024`. + + `--txpool.accountslots=` + `--txpool.accountslots=16` + `GETH_TXPOOL_ACCOUNTSLOTS=16` + - - `--txpool.globalqueue=` - `--txpool.globalqueue=1024` - `GETH_TXPOOL_GLOBALQUEUE=1024` - + #### txpool.globalqueue -#### txpool.globalslots + Maximum number of non-executable transaction slots for all accounts. + The default value is `1024`. -Maximum number of executable transaction slots for all accounts. -The default value is `5120`. + + `--txpool.globalqueue=` + `--txpool.globalqueue=1024` + `GETH_TXPOOL_GLOBALQUEUE=1024` + - - `--txpool.globalslots=` - `--txpool.globalslots=5120` - `GETH_TXPOOL_GLOBALSLOTS=5120` - + #### txpool.globalslots -#### txpool.journal + Maximum number of executable transaction slots for all accounts. + The default value is `5120`. -Disk journal for local transactions to survive node restarts. -The default value is `"transactions.rlp"`. + + `--txpool.globalslots=` + `--txpool.globalslots=5120` + `GETH_TXPOOL_GLOBALSLOTS=5120` + - - `--txpool.journal=` - `--txpool.journal="transactions.rlp"` - `GETH_TXPOOL_JOURNAL="transactions.rlp"` - + #### txpool.journal -#### txpool.journalremotes + Disk journal for local transactions to survive node restarts. + The default value is `"transactions.rlp"`. -Includes remote transactions in the journal. The default value is `false`. + + `--txpool.journal=` + `--txpool.journal="transactions.rlp"` + `GETH_TXPOOL_JOURNAL="transactions.rlp"` + - - `--txpool.journalremotes` - `--txpool.journalremotes=false` - `GETH_TXPOOL_JOURNALREMOTES=false` - + #### txpool.journalremotes -#### txpool.lifetime + Includes remote transactions in the journal. The default value is `false`. -Maximum amount of time non-executable transactions are queued. -The default value is `3h0m0s`. + + `--txpool.journalremotes` + `--txpool.journalremotes=false` + `GETH_TXPOOL_JOURNALREMOTES=false` + - - `--txpool.lifetime=` - `--txpool.lifetime=3h0m0s` - `GETH_TXPOOL_LIFETIME=3h0m0s` - + #### txpool.lifetime -#### txpool.locals + Maximum amount of time non-executable transactions are queued. + The default value is `3h0m0s`. -Comma-separated accounts to treat as locals (no flush, priority inclusion). + + `--txpool.lifetime=` + `--txpool.lifetime=3h0m0s` + `GETH_TXPOOL_LIFETIME=3h0m0s` + - - `--txpool.locals=` - `--txpool.locals="0x123...,0x456..."` - `GETH_TXPOOL_LOCALS="0x123...,0x456..."` - + #### txpool.locals -#### txpool.nolocals + Comma-separated accounts to treat as locals (no flush, priority inclusion). -Disables price exemptions for locally submitted transactions. The default value is `false`. + + `--txpool.locals=` + `--txpool.locals="0x123...,0x456..."` + `GETH_TXPOOL_LOCALS="0x123...,0x456..."` + - - `--txpool.nolocals` - `--txpool.nolocals=false` - `GETH_TXPOOL_NOLOCALS=false` - + #### txpool.nolocals -#### txpool.pricebump + Disables price exemptions for locally submitted transactions. The default value is `false`. -Price bump percentage to replace an already existing transaction. The default value is `10`. + + `--txpool.nolocals` + `--txpool.nolocals=false` + `GETH_TXPOOL_NOLOCALS=false` + - - `--txpool.pricebump=` - `--txpool.pricebump=10` - `GETH_TXPOOL_PRICEBUMP=10` - + #### txpool.pricebump -#### txpool.pricelimit + Price bump percentage to replace an already existing transaction. The default value is `10`. -Minimum gas price tip to enforce for acceptance into the pool. The default value is `1`. + + `--txpool.pricebump=` + `--txpool.pricebump=10` + `GETH_TXPOOL_PRICEBUMP=10` + - - `--txpool.pricelimit=` - `--txpool.pricelimit=1` - `GETH_TXPOOL_PRICELIMIT=1` - + #### txpool.pricelimit -#### txpool.rejournal + Minimum gas price tip to enforce for acceptance into the pool. The default value is `1`. -Time interval to regenerate the local transaction journal. The default value is `1h0m0s`. + + `--txpool.pricelimit=` + `--txpool.pricelimit=1` + `GETH_TXPOOL_PRICELIMIT=1` + - - `--txpool.rejournal=` - `--txpool.rejournal=1h0m0s` - `GETH_TXPOOL_REJOURNAL=1h0m0s` - + #### txpool.rejournal + + Time interval to regenerate the local transaction journal. The default value is `1h0m0s`. + + + `--txpool.rejournal=` + `--txpool.rejournal=1h0m0s` + `GETH_TXPOOL_REJOURNAL=1h0m0s` + + + ### Virtual machine + + #### vmdebug + + Record information useful for VM and contract debugging. The default value is `false`. + + + `--vmdebug` + `--vmdebug=false` + `GETH_VMDEBUG=false` + + + + + `Nethermind` is highly configurable. There are 3 ways of configuring it, listed by priority: + + * [Command line options](#basic-command-line-options) (aka arguments or flags) + * [Environment variables](#environment-variables) + * [Configuration file](#configuration-file) + + + Given the above priority list, an option defined in a more priority way overrides the same option defined elsewhere if any. + + + The full list of configuration options can be displayed by running: + + ```bash + nethermind -h + ``` + + Below is the list of the basic command line options followed by an exhaustive list of configuration options by namespace. + + + The configuration options are case-sensitive and can be defined only once unless stated otherwise. + + + ## Basic command line options + + * #### `-c, --config ` \{#config} + + The path to the [configuration file](#configuration-file) or the file name (also without extension) of any of the configuration files in the configuration files directory. Defaults to `mainnet`. + +
+ Available configurations + +

+ `Nethermind` provides the following pre-built configurations named as the networks they are for. Their respective versions for archive nodes are suffixed `_archive`. + + * `base-mainnet` `base-mainnet_archive` + * `base-sepolia` `base-sepolia_archive` + * `chiado` `chiado_archive` + * `energyweb` `energyweb_archive` + * `gnosis` `gnosis_archive` + * `holesky` `holesky_archive` + * `hoodi` `hoodi_archive` + * `linea-mainnet` `linea-mainnet_archive` + * `linea-sepolia` `linea-sepolia_archive` + * `mainnet` `mainnet_archive` + * `op-mainnet` `op-mainnet_archive` + * `op-sepolia` `op-sepolia_archive` + * `sepolia` `sepolia_archive` + * `taiko-alethia` + * `taiko-hekla` + * `volta` `volta_archive` + * `worldchain-mainnet` `worldchain-mainnet_archive` + * `worldchain-sepolia` `worldchain-sepolia_archive` +

+
+ + Alternatively, the configuration file can also be set by the `NETHERMIND_CONFIG` environment variable. + + * #### `--configs-dir ` \{#configs-dir} + + The path to the configuration files directory. Defaults to `configs`.\ + Deprecates `--configsDirectory` `-cd`. + + + This option is ignored if the [`-c, --config`](#config) option is set to a path: + + ```bash + # Ignored for + -c ./mainnet.json + -c path/to/mainnet.json + # Respected for + -c mainnet + -c mainnet.json + ``` + + + * #### `--data-dir ` \{#data-dir} + + The path to the `Nethermind` data directory. Defaults to `Nethermind`'s current directory.\ + Deprecates `--datadir` `-dd`. + + + The absolute paths set by [`Init.BaseDbPath`](#init-basedbpath), [`Init.LogDirectory`](#init-logdirectory), or [`KeyStore.KeyStoreDirectory`](#keystore-keystoredirectory) options in a configuration file are not overridden by `--data-dir`. + + + * #### `--db-dir ` \{#db-dir} + + The path to the `Nethermind` database directory. Defaults to `db`.\ + Deprecates `--baseDbPath` `-d`. -### Virtual machine + * #### `-?, -h, --help` \{#help} -#### vmdebug + Shows the full list of available command line options. + + * #### `-l, --log ` \{#log} + + Log level (severity). Allowed values: `off` `trace` `debug` `info` `warn` `error`. Defaults to `info`. + + * #### `--logger-config ` \{#logger-config} + + The path to the logging configuration file. Defaults to `NLog.config`.\ + Deprecates `--loggerConfigSource` `-lcs`. -Record information useful for VM and contract debugging. The default value is `false`. + * #### `--plugins-dir ` \{#plugins-dir} - - `--vmdebug` - `--vmdebug=false` - `GETH_VMDEBUG=false` + The path to the `Nethermind` plugins directory. Defaults to `plugins`.\ + Deprecates `--pluginsDirectory` `-pd`. + + * #### `--version` \{#version} + + Shows the `Nethermind` version information. + + ## Options by namespaces + + ### Aura + + * #### `Aura.AllowAuRaPrivateChains` \{#aura-allowauraprivatechains} + + + + ``` + --aura-allowauraprivatechains + --Aura.AllowAuRaPrivateChains + ``` + + + + ``` + NETHERMIND_AURACONFIG_ALLOWAURAPRIVATECHAINS= + ``` + + + + ```json + { + "Aura": { + "AllowAuRaPrivateChains": + } + } + ``` + + + + Whether to allow private Aura-based chains only. Do not use with existing Aura-based chains. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Aura.ForceSealing` \{#aura-forcesealing} + + + + ``` + --aura-forcesealing + --Aura.ForceSealing + ``` + + + + ``` + NETHERMIND_AURACONFIG_FORCESEALING= + ``` + + + + ```json + { + "Aura": { + "ForceSealing": + } + } + ``` + + + + Whether to seal empty blocks if mining. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract` \{#aura-minimum2mlngasperblockwhenusingblockgaslimitcontract} + + + + ``` + --aura-minimum2mlngasperblockwhenusingblockgaslimitcontract + --Aura.Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract + ``` + + + + ``` + NETHERMIND_AURACONFIG_MINIMUM2MLNGASPERBLOCKWHENUSINGBLOCKGASLIMITCONTRACT= + ``` + + + + ```json + { + "Aura": { + "Minimum2MlnGasPerBlockWhenUsingBlockGasLimitContract": + } + } + ``` + + + + Whether to use 2M gas if the contract returns less than that when using `BlockGasLimitContractTransitions`. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Aura.TxPriorityConfigFilePath` \{#aura-txpriorityconfigfilepath} + + + + ``` + --aura-txpriorityconfigfilepath + --Aura.TxPriorityConfigFilePath + ``` + + + + ``` + NETHERMIND_AURACONFIG_TXPRIORITYCONFIGFILEPATH= + ``` + + + + ```json + { + "Aura": { + "TxPriorityConfigFilePath": + } + } + ``` + + + + The path to the transaction priority rules file to use when selecting transactions from the transaction pool. Defaults to `null`. + + * #### `Aura.TxPriorityContractAddress` \{#aura-txprioritycontractaddress} + + + + ``` + --aura-txprioritycontractaddress + --Aura.TxPriorityContractAddress + ``` + + + + ``` + NETHERMIND_AURACONFIG_TXPRIORITYCONTRACTADDRESS= + ``` + + + + ```json + { + "Aura": { + "TxPriorityContractAddress": + } + } + ``` + + + + The address of the transaction priority contract to use when selecting transactions from the transaction pool. Defaults to `null`. + + ### Blocks + + * #### `Blocks.BlockProductionTimeoutMs` \{#blocks-blockproductiontimeoutms} + + + + ``` + --blocks-blockproductiontimeoutms + --Blocks.BlockProductionTimeoutMs + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_BLOCKPRODUCTIONTIMEOUTMS= + ``` + + + + ```json + { + "Blocks": { + "BlockProductionTimeoutMs": + } + } + ``` + + + + The block production timeout, in milliseconds. Defaults to `4000`. + + * #### `Blocks.ExtraData` \{#blocks-extradata} + + + + ``` + --blocks-extradata + --Blocks.ExtraData + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_EXTRADATA= + ``` + + + + ```json + { + "Blocks": { + "ExtraData": + } + } + ``` + + + + The block header extra data up to 32 bytes in length. Defaults to `Nethermind`. + + * #### `Blocks.GenesisTimeoutMs` \{#blocks-genesistimeoutms} + + + + ``` + --blocks-genesistimeoutms + --Blocks.GenesisTimeoutMs + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_GENESISTIMEOUTMS= + ``` + + + + ```json + { + "Blocks": { + "GenesisTimeoutMs": + } + } + ``` + + + + The genesis block load timeout, in milliseconds. Defaults to `40000`. + + * #### `Blocks.MinGasPrice` \{#blocks-mingasprice} + + + + ``` + --blocks-mingasprice + --Blocks.MinGasPrice + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_MINGASPRICE= + ``` + + + + ```json + { + "Blocks": { + "MinGasPrice": + } + } + ``` + + + + The minimum gas premium (or the gas price before the London hard fork) for transactions accepted by the block producer. Defaults to `1`. + + * #### `Blocks.PreWarmStateOnBlockProcessing` \{#blocks-prewarmstateonblockprocessing} + + + + ``` + --blocks-prewarmstateonblockprocessing + --Blocks.PreWarmStateOnBlockProcessing + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_PREWARMSTATEONBLOCKPROCESSING= + ``` + + + + ```json + { + "Blocks": { + "PreWarmStateOnBlockProcessing": + } + } + ``` + + + + Whether to pre-warm the state when processing blocks. This can lead to an up to 2x speed-up in the main loop block processing. Allowed values: `true` `false`. Defaults to `True`. + + * #### `Blocks.RandomizedBlocks` \{#blocks-randomizedblocks} + + + + ``` + --blocks-randomizedblocks + --Blocks.RandomizedBlocks + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_RANDOMIZEDBLOCKS= + ``` + + + + ```json + { + "Blocks": { + "RandomizedBlocks": + } + } + ``` + + + + Whether to change the difficulty of the block randomly within the constraints. Used in NethDev only. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Blocks.SecondsPerSlot` \{#blocks-secondsperslot} + + + + ``` + --blocks-secondsperslot + --Blocks.SecondsPerSlot + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_SECONDSPERSLOT= + ``` + + + + ```json + { + "Blocks": { + "SecondsPerSlot": + } + } + ``` + + + + The block time slot, in seconds. Defaults to `12`. + + * #### `Blocks.TargetBlockGasLimit` \{#blocks-targetblockgaslimit} + + + + ``` + --blocks-targetblockgaslimit + --Blocks.TargetBlockGasLimit + ``` + + + + ``` + NETHERMIND_BLOCKSCONFIG_TARGETBLOCKGASLIMIT= + ``` + + + + ```json + { + "Blocks": { + "TargetBlockGasLimit": + } + } + ``` + + + + The block gas limit that the block producer should try to reach in the fastest possible way based on the protocol rules. If not specified, then the block producer should follow others. Defaults to `null`. + + ### Bloom + + * #### `Bloom.Index` \{#bloom-index} + + + + ``` + --bloom-index + --Bloom.Index + ``` + + + + ``` + NETHERMIND_BLOOMCONFIG_INDEX= + ``` + + + + ```json + { + "Bloom": { + "Index": + } + } + ``` + + + + Whether to use the Bloom index. The Bloom index speeds up the RPC log searches. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Bloom.IndexLevelBucketSizes` \{#bloom-indexlevelbucketsizes} + + + + ``` + --bloom-indexlevelbucketsizes + --Bloom.IndexLevelBucketSizes + ``` + + + + ``` + NETHERMIND_BLOOMCONFIG_INDEXLEVELBUCKETSIZES= + ``` + + + + ```json + { + "Bloom": { + "IndexLevelBucketSizes": + } + } + ``` + + + + An array of multipliers for index levels. Can be tweaked per chain to boost performance. Defaults to `[4, 8, 8]`. + + * #### `Bloom.Migration` \{#bloom-migration} + + + + ``` + --bloom-migration + --Bloom.Migration + ``` + + + + ``` + NETHERMIND_BLOOMCONFIG_MIGRATION= + ``` + + + + ```json + { + "Bloom": { + "Migration": + } + } + ``` + + + + Whether to migrate the previously downloaded blocks to the Bloom index. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Bloom.MigrationStatistics` \{#bloom-migrationstatistics} + + + + ``` + --bloom-migrationstatistics + --Bloom.MigrationStatistics + ``` + + + + ``` + NETHERMIND_BLOOMCONFIG_MIGRATIONSTATISTICS= + ``` + + + + ```json + { + "Bloom": { + "MigrationStatistics": + } + } + ``` + + + + Whether the migration statistics should be calculated and output. Allowed values: `true` `false`. Defaults to `false`. + + ### CensorshipDetector + + * #### `CensorshipDetector.AddressesForCensorshipDetection` \{#censorshipdetector-addressesforcensorshipdetection} + + + + ``` + --censorshipdetector-addressesforcensorshipdetection + --CensorshipDetector.AddressesForCensorshipDetection + ``` + + + + ``` + NETHERMIND_CENSORSHIPDETECTORCONFIG_ADDRESSESFORCENSORSHIPDETECTION= + ``` + + + + ```json + { + "CensorshipDetector": { + "AddressesForCensorshipDetection": + } + } + ``` + + + + The addresses to detect censorship for. Defaults to `null`. + + * #### `CensorshipDetector.BlockCensorshipThreshold` \{#censorshipdetector-blockcensorshipthreshold} + + + + ``` + --censorshipdetector-blockcensorshipthreshold + --CensorshipDetector.BlockCensorshipThreshold + ``` + + + + ``` + NETHERMIND_CENSORSHIPDETECTORCONFIG_BLOCKCENSORSHIPTHRESHOLD= + ``` + + + + ```json + { + "CensorshipDetector": { + "BlockCensorshipThreshold": + } + } + ``` + + + + The number of the consecutive blocks with detected potential censorship to report. Defaults to `2`. + + * #### `CensorshipDetector.Enabled` \{#censorshipdetector-enabled} + + + + ``` + --censorshipdetector-enabled + --CensorshipDetector.Enabled + ``` + + + + ``` + NETHERMIND_CENSORSHIPDETECTORCONFIG_ENABLED= + ``` + + + + ```json + { + "CensorshipDetector": { + "Enabled": + } + } + ``` + + + + Whether to enable censorship detection. Allowed values: `true` `false`. Defaults to `false`. + + ### CL + + * #### `CL.Enabled` \{#cl-enabled} + + + + ``` + --cl-enabled + --CL.Enabled + ``` + + + + ``` + NETHERMIND_CLCONFIG_ENABLED= + ``` + + + + ```json + { + "CL": { + "Enabled": + } + } + ``` + + + + Use enshrined op cl. Allowed values: `true` `false`. Defaults to `false`. + + * #### `CL.L1BeaconApiEndpoint` \{#cl-l1beaconapiendpoint} + + + + ``` + --cl-l1beaconapiendpoint + --CL.L1BeaconApiEndpoint + ``` + + + + ``` + NETHERMIND_CLCONFIG_L1BEACONAPIENDPOINT= + ``` + + + + ```json + { + "CL": { + "L1BeaconApiEndpoint": + } + } + ``` + + + + URL to L1 beacon node Defaults to `null`. + + * #### `CL.L1EthApiEndpoint` \{#cl-l1ethapiendpoint} + + + + ``` + --cl-l1ethapiendpoint + --CL.L1EthApiEndpoint + ``` + + + + ``` + NETHERMIND_CLCONFIG_L1ETHAPIENDPOINT= + ``` + + + + ```json + { + "CL": { + "L1EthApiEndpoint": + } + } + ``` + + + + URL to L1 execution node. Defaults to `null`. + + * #### `CL.P2PHost` \{#cl-p2phost} + + + + ``` + --cl-p2phost + --CL.P2PHost + ``` + + + + ``` + NETHERMIND_CLCONFIG_P2PHOST= + ``` + + + + ```json + { + "CL": { + "P2PHost": + } + } + ``` + + + + CL p2p communication host Defaults to `127.0.0.1`. + + * #### `CL.P2PPort` \{#cl-p2pport} + + + + ``` + --cl-p2pport + --CL.P2PPort + ``` + + + + ``` + NETHERMIND_CLCONFIG_P2PPORT= + ``` + + + + ```json + { + "CL": { + "P2PPort": + } + } + ``` + + + + CL p2p communication host Defaults to `3030`. + + ### Clique + + ### Era + + * #### `Era.ExportDirectory` \{#era-exportdirectory} + + + + ``` + --era-exportdirectory + --Era.ExportDirectory + ``` + + + + ``` + NETHERMIND_ERACONFIG_EXPORTDIRECTORY= + ``` + + + + ```json + { + "Era": { + "ExportDirectory": + } + } + ``` + + + + Directory of archive export. + + * #### `Era.From` \{#era-from} + + + + ``` + --era-from + --Era.From + ``` + + + + ``` + NETHERMIND_ERACONFIG_FROM= + ``` + + + + ```json + { + "Era": { + "From": + } + } + ``` + + + + Block number to import/export from. Defaults to `0`. + + * #### `Era.ImportDirectory` \{#era-importdirectory} + + + + ``` + --era-importdirectory + --Era.ImportDirectory + ``` + + + + ``` + NETHERMIND_ERACONFIG_IMPORTDIRECTORY= + ``` + + + + ```json + { + "Era": { + "ImportDirectory": + } + } + ``` + + + + Directory of era1 archives to be imported. + + * #### `Era.To` \{#era-to} + + + + ``` + --era-to + --Era.To + ``` + + + + ``` + NETHERMIND_ERACONFIG_TO= + ``` + + + + ```json + { + "Era": { + "To": + } + } + ``` + + + + Block number to import/export to. Defaults to `0`. + + * #### `Era.TrustedAccumulatorFile` \{#era-trustedaccumulatorfile} + + + + ``` + --era-trustedaccumulatorfile + --Era.TrustedAccumulatorFile + ``` + + + + ``` + NETHERMIND_ERACONFIG_TRUSTEDACCUMULATORFILE= + ``` + + + + ```json + { + "Era": { + "TrustedAccumulatorFile": + } + } + ``` + + + + Accumulator file to be used for trusting era files. Defaults to `null`. + + ### EthStats + + * #### `EthStats.Contact` \{#ethstats-contact} + + + + ``` + --ethstats-contact + --EthStats.Contact + ``` + + + + ``` + NETHERMIND_ETHSTATSCONFIG_CONTACT= + ``` + + + + ```json + { + "EthStats": { + "Contact": + } + } + ``` + + + + The node owner contact details displayed on Ethstats. Defaults to `hello@nethermind.io`. + + * #### `EthStats.Enabled` \{#ethstats-enabled} + + + + ``` + --ethstats-enabled + --EthStats.Enabled + ``` + + + + ``` + NETHERMIND_ETHSTATSCONFIG_ENABLED= + ``` + + + + ```json + { + "EthStats": { + "Enabled": + } + } + ``` + + + + Whether to use Ethstats publishing. Allowed values: `true` `false`. Defaults to `false`. + + * #### `EthStats.Name` \{#ethstats-name} + + + + ``` + --ethstats-name + --EthStats.Name + ``` + + + + ``` + NETHERMIND_ETHSTATSCONFIG_NAME= + ``` + + + + ```json + { + "EthStats": { + "Name": + } + } + ``` + + + + The node name displayed on Ethstats. Defaults to `Nethermind`. + + * #### `EthStats.Secret` \{#ethstats-secret} + + + + ``` + --ethstats-secret + --EthStats.Secret + ``` + + + + ``` + NETHERMIND_ETHSTATSCONFIG_SECRET= + ``` + + + + ```json + { + "EthStats": { + "Secret": + } + } + ``` + + + + The Ethstats secret. Defaults to `secret`. + + * #### `EthStats.SendInterval` \{#ethstats-sendinterval} + + + + ``` + --ethstats-sendinterval + --EthStats.SendInterval + ``` + + + + ``` + NETHERMIND_ETHSTATSCONFIG_SENDINTERVAL= + ``` + + + + ```json + { + "EthStats": { + "SendInterval": + } + } + ``` + + + + The stats update interval, in seconds. Defaults to `15`. + + * #### `EthStats.Server` \{#ethstats-server} + + + + ``` + --ethstats-server + --EthStats.Server + ``` + + + + ``` + NETHERMIND_ETHSTATSCONFIG_SERVER= + ``` + + + + ```json + { + "EthStats": { + "Server": + } + } + ``` + + + + The Ethstats server URL. Defaults to `ws://localhost:3000/api`. + + ### HealthChecks + + * #### `HealthChecks.Enabled` \{#healthchecks-enabled} + + + + ``` + --healthchecks-enabled + --HealthChecks.Enabled + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_ENABLED= + ``` + + + + ```json + { + "HealthChecks": { + "Enabled": + } + } + ``` + + + + Whether to enable the health check. Allowed values: `true` `false`. Defaults to `false`. + + * #### `HealthChecks.LowStorageCheckAwaitOnStartup` \{#healthchecks-lowstoragecheckawaitonstartup} + + + + ``` + --healthchecks-lowstoragecheckawaitonstartup + --HealthChecks.LowStorageCheckAwaitOnStartup + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGECHECKAWAITONSTARTUP= + ``` + + + + ```json + { + "HealthChecks": { + "LowStorageCheckAwaitOnStartup": + } + } + ``` + + + + Whether to check for low disk space on startup and suspend until enough space is available. Allowed values: `true` `false`. Defaults to `false`. + + * #### `HealthChecks.LowStorageSpaceShutdownThreshold` \{#healthchecks-lowstoragespaceshutdownthreshold} + + + + ``` + --healthchecks-lowstoragespaceshutdownthreshold + --HealthChecks.LowStorageSpaceShutdownThreshold + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACESHUTDOWNTHRESHOLD= + ``` + + + + ```json + { + "HealthChecks": { + "LowStorageSpaceShutdownThreshold": + } + } + ``` + + + + The percentage of available disk space below which `Nethermind` shuts down. `0` to disable. Defaults to `1`. + + * #### `HealthChecks.LowStorageSpaceWarningThreshold` \{#healthchecks-lowstoragespacewarningthreshold} + + + + ``` + --healthchecks-lowstoragespacewarningthreshold + --HealthChecks.LowStorageSpaceWarningThreshold + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_LOWSTORAGESPACEWARNINGTHRESHOLD= + ``` + + + + ```json + { + "HealthChecks": { + "LowStorageSpaceWarningThreshold": + } + } + ``` + + + + The percentage of available disk space below which a warning is displayed. `0` to disable. Defaults to `5`. + + * #### `HealthChecks.MaxIntervalClRequestTime` \{#healthchecks-maxintervalclrequesttime} + + + + ``` + --healthchecks-maxintervalclrequesttime + --HealthChecks.MaxIntervalClRequestTime + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALCLREQUESTTIME= + ``` + + + + ```json + { + "HealthChecks": { + "MaxIntervalClRequestTime": + } + } + ``` + + + + The max request interval, in seconds, in which the consensus client is assumed healthy. Defaults to `300`. + + * #### `HealthChecks.MaxIntervalWithoutProcessedBlock` \{#healthchecks-maxintervalwithoutprocessedblock} + + + + ``` + --healthchecks-maxintervalwithoutprocessedblock + --HealthChecks.MaxIntervalWithoutProcessedBlock + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPROCESSEDBLOCK= + ``` + + + + ```json + { + "HealthChecks": { + "MaxIntervalWithoutProcessedBlock": + } + } + ``` + + + + The max interval, in seconds, in which the block processing is assumed healthy. Defaults to `null`. + + * #### `HealthChecks.MaxIntervalWithoutProducedBlock` \{#healthchecks-maxintervalwithoutproducedblock} + + + + ``` + --healthchecks-maxintervalwithoutproducedblock + --HealthChecks.MaxIntervalWithoutProducedBlock + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_MAXINTERVALWITHOUTPRODUCEDBLOCK= + ``` + + + + ```json + { + "HealthChecks": { + "MaxIntervalWithoutProducedBlock": + } + } + ``` + + + + The max interval, in seconds, in which the block production is assumed healthy. Defaults to `null`. + + * #### `HealthChecks.PollingInterval` \{#healthchecks-pollinginterval} + + + + ``` + --healthchecks-pollinginterval + --HealthChecks.PollingInterval + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_POLLINGINTERVAL= + ``` + + + + ```json + { + "HealthChecks": { + "PollingInterval": + } + } + ``` + + + + The health check updates polling interval, in seconds. Defaults to `5`. + + * #### `HealthChecks.Slug` \{#healthchecks-slug} + + + + ``` + --healthchecks-slug + --HealthChecks.Slug + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_SLUG= + ``` + + + + ```json + { + "HealthChecks": { + "Slug": + } + } + ``` + + + + The URL slug the health checks service is exposed at. Defaults to `/health`. + + * #### `HealthChecks.UIEnabled` \{#healthchecks-uienabled} + + + + ``` + --healthchecks-uienabled + --HealthChecks.UIEnabled + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_UIENABLED= + ``` + + + + ```json + { + "HealthChecks": { + "UIEnabled": + } + } + ``` + + + + Whether to enable the health checks UI. Allowed values: `true` `false`. Defaults to `false`. + + * #### `HealthChecks.WebhooksEnabled` \{#healthchecks-webhooksenabled} + + + + ``` + --healthchecks-webhooksenabled + --HealthChecks.WebhooksEnabled + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSENABLED= + ``` + + + + ```json + { + "HealthChecks": { + "WebhooksEnabled": + } + } + ``` + + + + Whether to enable web hooks. Allowed values: `true` `false`. Defaults to `false`. + + * #### `HealthChecks.WebhooksPayload` \{#healthchecks-webhookspayload} + + + + ``` + --healthchecks-webhookspayload + --HealthChecks.WebhooksPayload + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSPAYLOAD= + ``` + + + + ```json + { + "HealthChecks": { + "WebhooksPayload": + } + } + ``` + + + + An escaped JSON paylod to be sent to the web hook on failure. + Defaults to: + + ```json + { + "attachments": [ + { + "color": "#FFCC00", + "pretext": "Health Check Status :warning:", + "fields": [ + { + "title": "Details", + "value": "More details available at /healthchecks-ui", + "short": false + }, + { + "title": "Description", + "value": "[[DESCRIPTIONS]]", + "short": false + } + ] + } + ] + } + ``` + + * #### `HealthChecks.WebhooksRestorePayload` \{#healthchecks-webhooksrestorepayload} + + + + ``` + --healthchecks-webhooksrestorepayload + --HealthChecks.WebhooksRestorePayload + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSRESTOREPAYLOAD= + ``` + + + + ```json + { + "HealthChecks": { + "WebhooksRestorePayload": + } + } + ``` + + + + An escaped JSON paylod to be sent to the web hook on recovery. + Defaults to: + + ```json + { + "attachments": [ + { + "color": "#36a64f", + "pretext": "Health Check Status :+1:", + "fields": [ + { + "title": "Details", + "value": "More details available at /healthchecks-ui", + "short": false + }, + { + "title": "description", + "value": "The HealthCheck `[[LIVENESS]]` is recovered. Everything is up and running.", + "short": false + } + ] + } + ] + } + ``` + + * #### `HealthChecks.WebhooksUri` \{#healthchecks-webhooksuri} + + + + ``` + --healthchecks-webhooksuri + --HealthChecks.WebhooksUri + ``` + + + + ``` + NETHERMIND_HEALTHCHECKSCONFIG_WEBHOOKSURI= + ``` + + + + ```json + { + "HealthChecks": { + "WebhooksUri": + } + } + ``` + + + + The web hook URL. Defaults to `null`. + + ### Hive + + * #### `Hive.BlocksDir` \{#hive-blocksdir} + + + + ``` + --hive-blocksdir + --Hive.BlocksDir + ``` + + + + ``` + NETHERMIND_HIVECONFIG_BLOCKSDIR= + ``` + + + + ```json + { + "Hive": { + "BlocksDir": + } + } + ``` + + + + The path to the directory with additional blocks. Defaults to `/blocks`. + + * #### `Hive.ChainFile` \{#hive-chainfile} + + + + ``` + --hive-chainfile + --Hive.ChainFile + ``` + + + + ``` + NETHERMIND_HIVECONFIG_CHAINFILE= + ``` + + + + ```json + { + "Hive": { + "ChainFile": + } + } + ``` + + + + The path to the chain definition should be specified as an RLP-encoded block sequence. Defaults to `/chain.rlp`. + + * #### `Hive.Enabled` \{#hive-enabled} + + + + ``` + --hive-enabled + --Hive.Enabled + ``` + + + + ``` + NETHERMIND_HIVECONFIG_ENABLED= + ``` + + + + ```json + { + "Hive": { + "Enabled": + } + } + ``` + + + + Whether to enable Hive for debugging. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Hive.GenesisFilePath` \{#hive-genesisfilepath} + + + + ``` + --hive-genesisfilepath + --Hive.GenesisFilePath + ``` + + + + ``` + NETHERMIND_HIVECONFIG_GENESISFILEPATH= + ``` + + + + ```json + { + "Hive": { + "GenesisFilePath": + } + } + ``` + + + + The path to the genesis block file. Defaults to `/genesis.json`. + + * #### `Hive.KeysDir` \{#hive-keysdir} + + + + ``` + --hive-keysdir + --Hive.KeysDir + ``` + + + + ``` + NETHERMIND_HIVECONFIG_KEYSDIR= + ``` + + + + ```json + { + "Hive": { + "KeysDir": + } + } + ``` + + + + The path to the keystore directory. Defaults to `/keys`. + + ### Init + + * #### `Init.AutoDump` \{#init-autodump} + + + + ``` + --init-autodump + --Init.AutoDump + ``` + + + + ``` + NETHERMIND_INITCONFIG_AUTODUMP= + ``` + + + + ```json + { + "Init": { + "AutoDump": + } + } + ``` + + + + Auto-dump on bad blocks for diagnostics. + + Allowed values: + + * `None`: None. + * `Receipts`: Dumps block receipts traces. + * `Parity`: Dumps Parity-like traces. + * `Geth`: Dumps Geth-like traces. + * `Rlp`: Dumps RLP data to a `.rlp` file with the block hash in the file name. + * `RlpLog`: Dumps RLP data to the log output. + * `Default`: Combines the `Receipts` `Rlp` options. + * `All`: Combines the `Geth` `Parity` `Receipts` `Rlp` options. + + Defaults to `Default`. + + * #### `Init.BadBlocksStored` \{#init-badblocksstored} + + + + ``` + --init-badblocksstored + --Init.BadBlocksStored + ``` + + + + ``` + NETHERMIND_INITCONFIG_BADBLOCKSSTORED= + ``` + + + + ```json + { + "Init": { + "BadBlocksStored": + } + } + ``` + + + + The maximum number of bad blocks observed on the network that will be stored on disk. Defaults to `100`. + + * #### `Init.BaseDbPath` \{#init-basedbpath} + + + + ``` + --init-basedbpath + --Init.BaseDbPath + ``` + + + + ``` + NETHERMIND_INITCONFIG_BASEDBPATH= + ``` + + + + ```json + { + "Init": { + "BaseDbPath": + } + } + ``` + + + + The base path for all `Nethermind` databases. Defaults to `db`. + + * #### `Init.ChainSpecPath` \{#init-chainspecpath} + + + + ``` + --init-chainspecpath + --Init.ChainSpecPath + ``` + + + + ``` + NETHERMIND_INITCONFIG_CHAINSPECPATH= + ``` + + + + ```json + { + "Init": { + "ChainSpecPath": + } + } + ``` + + + + The path to the chain spec file. Defaults to `chainspec/foundation.json`. + + * #### `Init.DiagnosticMode` \{#init-diagnosticmode} + + + + ``` + --init-diagnosticmode + --Init.DiagnosticMode + ``` + + + + ``` + NETHERMIND_INITCONFIG_DIAGNOSTICMODE= + ``` + + + + ```json + { + "Init": { + "DiagnosticMode": + } + } + ``` + + + + The diagnostic mode. + + Allowed values: + + * `None`: None. + * `MemDb`: Uses an in-memory DB. + * `RpcDb`: Uses a remote DB. + * `ReadOnlyDb`: Uses a read-only DB. + * `VerifyRewards`: Scans rewards for blocks and genesis. + * `VerifySupply`: Scans and sums supply on all accounts. + * `VerifyTrie`: Verifies if full state trie is stored. + + Defaults to `None`. + + * #### `Init.DiscoveryEnabled` \{#init-discoveryenabled} + + + + ``` + --init-discoveryenabled + --Init.DiscoveryEnabled + ``` + + + + ``` + NETHERMIND_INITCONFIG_DISCOVERYENABLED= + ``` + + + + ```json + { + "Init": { + "DiscoveryEnabled": + } + } + ``` + + + + Whether to enable the node discovery. If disabled, `Nethermind` doesn't look for other nodes beyond the bootnodes specified. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Init.EnableUnsecuredDevWallet` \{#init-enableunsecureddevwallet} + + + + ``` + --init-enableunsecureddevwallet + --Init.EnableUnsecuredDevWallet + ``` + + + + ``` + NETHERMIND_INITCONFIG_ENABLEUNSECUREDDEVWALLET= + ``` + + + + ```json + { + "Init": { + "EnableUnsecuredDevWallet": + } + } + ``` + + + + Whether to enable the in-app wallet/keystore. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Init.GenesisHash` \{#init-genesishash} + + + + ``` + --init-genesishash + --Init.GenesisHash + ``` + + + + ``` + NETHERMIND_INITCONFIG_GENESISHASH= + ``` + + + + ```json + { + "Init": { + "GenesisHash": + } + } + ``` + + + + The hash of the genesis block. If not specified, the genesis block validity is not checked which is useful in the case of ad hoc test/private networks. Defaults to `null`. + + * #### `Init.IsMining` \{#init-ismining} + + + + ``` + --init-ismining + --Init.IsMining + ``` + + + + ``` + NETHERMIND_INITCONFIG_ISMINING= + ``` + + + + ```json + { + "Init": { + "IsMining": + } + } + ``` + + + + Whether to seal/mine new blocks. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Init.KeepDevWalletInMemory` \{#init-keepdevwalletinmemory} + + + + ``` + --init-keepdevwalletinmemory + --Init.KeepDevWalletInMemory + ``` + + + + ``` + NETHERMIND_INITCONFIG_KEEPDEVWALLETINMEMORY= + ``` + + + + ```json + { + "Init": { + "KeepDevWalletInMemory": + } + } + ``` + + + + Whether to create session-only accounts and delete them on shutdown. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Init.KzgSetupPath` \{#init-kzgsetuppath} + + + + ``` + --init-kzgsetuppath + --Init.KzgSetupPath + ``` + + + + ``` + NETHERMIND_INITCONFIG_KZGSETUPPATH= + ``` + + + + ```json + { + "Init": { + "KzgSetupPath": + } + } + ``` + + + + The path to KZG trusted setup file. Defaults to `null`. + + * #### `Init.LogDirectory` \{#init-logdirectory} + + + + ``` + --init-logdirectory + --Init.LogDirectory + ``` + + + + ``` + NETHERMIND_INITCONFIG_LOGDIRECTORY= + ``` + + + + ```json + { + "Init": { + "LogDirectory": + } + } + ``` + + + + The path to the `Nethermind` logs directory. Defaults to `logs`. + + * #### `Init.LogFileName` \{#init-logfilename} + + + + ``` + --init-logfilename + --Init.LogFileName + ``` + + + + ``` + NETHERMIND_INITCONFIG_LOGFILENAME= + ``` + + + + ```json + { + "Init": { + "LogFileName": + } + } + ``` + + + + The name of the log file. Defaults to `log.txt`. + + * #### `Init.LogRules` \{#init-logrules} + + + + ``` + --init-logrules + --Init.LogRules + ``` + + + + ``` + NETHERMIND_INITCONFIG_LOGRULES= + ``` + + + + ```json + { + "Init": { + "LogRules": + } + } + ``` + + + + The logs format as `LogPath:LogLevel;*` Defaults to `null`. + + * #### `Init.MemoryHint` \{#init-memoryhint} + + + + ``` + --init-memoryhint + --Init.MemoryHint + ``` + + + + ``` + NETHERMIND_INITCONFIG_MEMORYHINT= + ``` + + + + ```json + { + "Init": { + "MemoryHint": + } + } + ``` + + + + The hint on the max memory limit, in bytes, to configure the database and networking memory allocations. Defaults to `null`. + + * #### `Init.PeerManagerEnabled` \{#init-peermanagerenabled} + + + + ``` + --init-peermanagerenabled + --Init.PeerManagerEnabled + ``` + + + + ``` + NETHERMIND_INITCONFIG_PEERMANAGERENABLED= + ``` + + + + ```json + { + "Init": { + "PeerManagerEnabled": + } + } + ``` + + + + Whether to connect to newly discovered peers. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Init.ProcessingEnabled` \{#init-processingenabled} + + + + ``` + --init-processingenabled + --Init.ProcessingEnabled + ``` + + + + ``` + NETHERMIND_INITCONFIG_PROCESSINGENABLED= + ``` + + + + ```json + { + "Init": { + "ProcessingEnabled": + } + } + ``` + + + + Whether to download/process new blocks. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Init.RpcDbUrl` \{#init-rpcdburl} + + + + ``` + --init-rpcdburl + --Init.RpcDbUrl + ``` + + + + ``` + NETHERMIND_INITCONFIG_RPCDBURL= + ``` + + + + ```json + { + "Init": { + "RpcDbUrl": + } + } + ``` + + + + The URL of the remote node used as a database source when `DiagnosticMode` is set to `RpcDb`. + + * #### `Init.StaticNodesPath` \{#init-staticnodespath} + + + + ``` + --init-staticnodespath + --Init.StaticNodesPath + ``` + + + + ``` + NETHERMIND_INITCONFIG_STATICNODESPATH= + ``` + + + + ```json + { + "Init": { + "StaticNodesPath": + } + } + ``` + + + + The path to the static nodes file. Defaults to `Data/static-nodes.json`. + + * #### `Init.WebSocketsEnabled` \{#init-websocketsenabled} + + + + ``` + --init-websocketsenabled + --Init.WebSocketsEnabled + ``` + + + + ``` + NETHERMIND_INITCONFIG_WEBSOCKETSENABLED= + ``` + + + + ```json + { + "Init": { + "WebSocketsEnabled": + } + } + ``` + + + + Whether to enable WebSocket service for the default JSON-RPC port on startup. Allowed values: `true` `false`. Defaults to `true`. + + ### JsonRpc + + * #### `JsonRpc.AdditionalRpcUrls` \{#jsonrpc-additionalrpcurls} + + + + ``` + --jsonrpc-additionalrpcurls + --JsonRpc.AdditionalRpcUrls + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ADDITIONALRPCURLS= + ``` + + + + ```json + { + "JsonRpc": { + "AdditionalRpcUrls": + } + } + ``` + + + + An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list. For instance, `[http://localhost:8546|http;ws|eth;web3]`. Defaults to `[]`. + + * #### `JsonRpc.BufferResponses` \{#jsonrpc-bufferresponses} + + + + ``` + --jsonrpc-bufferresponses + --JsonRpc.BufferResponses + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_BUFFERRESPONSES= + ``` + + + + ```json + { + "JsonRpc": { + "BufferResponses": + } + } + ``` + + + + Whether to buffer responses before sending them. This allows using of `Content-Length` instead of `Transfer-Encoding: chunked`. Note that it may degrade performance on large responses. The max buffered response length is 2GB. Chunked responses can be larger. Allowed values: `true` `false`. Defaults to `false`. + + * #### `JsonRpc.CallsFilterFilePath` \{#jsonrpc-callsfilterfilepath} + + + + ``` + --jsonrpc-callsfilterfilepath + --JsonRpc.CallsFilterFilePath + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_CALLSFILTERFILEPATH= + ``` + + + + ```json + { + "JsonRpc": { + "CallsFilterFilePath": + } + } + ``` + + + + The path to a file with the list of new-line-separated JSON-RPC calls. If specified, only the calls from that file are allowed. Defaults to `Data/jsonrpc.filter`. + + * #### `JsonRpc.CorsOrigins` \{#jsonrpc-corsorigins} + + + + ``` + --jsonrpc-corsorigins + --JsonRpc.CorsOrigins + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_CORSORIGINS= + ``` + + + + ```json + { + "JsonRpc": { + "CorsOrigins": + } + } + ``` + + + + The JSON-RPC server CORS origins. Defaults to `*`. + + * #### `JsonRpc.Enabled` \{#jsonrpc-enabled} + + + + ``` + --jsonrpc-enabled + --JsonRpc.Enabled + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ENABLED= + ``` + + + + ```json + { + "JsonRpc": { + "Enabled": + } + } + ``` + + + + Whether to enable the JSON-RPC service. Allowed values: `true` `false`. Defaults to `false`. + + * #### `JsonRpc.EnabledModules` \{#jsonrpc-enabledmodules} + + + + ``` + --jsonrpc-enabledmodules + --JsonRpc.EnabledModules + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ENABLEDMODULES= + ``` + + + + ```json + { + "JsonRpc": { + "EnabledModules": + } + } + ``` + + + + An array of JSON-RPC namespaces to enable. For instance, `[debug,eth]`. + + Built-in namespaces: + + * `admin` + * `client` + * `debug` + * `engine` + * `eth` + * `evm` + * `health` + * `net` + * `parity` + * `personal` + * `proof` + * `rpc` + * `subscribe` + * `trace` + * `txpool` + * `web3` + + Defaults to `[Eth,Subscribe,Trace,TxPool,Web3,Personal,Proof,Net,Parity,Health,Rpc]`. + + * #### `JsonRpc.EngineEnabledModules` \{#jsonrpc-engineenabledmodules} + + + + ``` + --jsonrpc-engineenabledmodules + --JsonRpc.EngineEnabledModules + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ENGINEENABLEDMODULES= + ``` + + + + ```json + { + "JsonRpc": { + "EngineEnabledModules": + } + } + ``` + + + + An array of additional JSON-RPC URLs to listen at with protocol and JSON-RPC namespace list for Engine API. Defaults to `[Net,Eth,Subscribe,Web3]`. + + * #### `JsonRpc.EngineHost` \{#jsonrpc-enginehost} + + + + ``` + --jsonrpc-enginehost + --JsonRpc.EngineHost + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ENGINEHOST= + ``` + + + + ```json + { + "JsonRpc": { + "EngineHost": + } + } + ``` + + + + The Engine API host. Defaults to `127.0.0.1`. + + * #### `JsonRpc.EnginePort` \{#jsonrpc-engineport} + + + + ``` + --jsonrpc-engineport + --JsonRpc.EnginePort + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ENGINEPORT= + ``` + + + + ```json + { + "JsonRpc": { + "EnginePort": + } + } + ``` + + + + The Engine API port. Defaults to `null`. + + * #### `JsonRpc.EstimateErrorMargin` \{#jsonrpc-estimateerrormargin} + + + + ``` + --jsonrpc-estimateerrormargin + --JsonRpc.EstimateErrorMargin + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ESTIMATEERRORMARGIN= + ``` + + + + ```json + { + "JsonRpc": { + "EstimateErrorMargin": + } + } + ``` + + + + The error margin used in the `eth_estimateGas` JSON-RPC method, in basis points. Defaults to `150`. + + * #### `JsonRpc.EthModuleConcurrentInstances` \{#jsonrpc-ethmoduleconcurrentinstances} + + + + ``` + --jsonrpc-ethmoduleconcurrentinstances + --JsonRpc.EthModuleConcurrentInstances + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_ETHMODULECONCURRENTINSTANCES= + ``` + + + + ```json + { + "JsonRpc": { + "EthModuleConcurrentInstances": + } + } + ``` + + + + The number of concurrent instances for non-sharable calls: + + * `eth_call` + * `eth_estimateGas` + * `eth_getLogs` + * `eth_newBlockFilter` + * `eth_newFilter` + * `eth_newPendingTransactionFilter` + * `eth_uninstallFilter` + + This limits the load on the CPU and I/O to reasonable levels. If the limit is exceeded, HTTP 503 is returned along with the JSON-RPC error. Defaults to the number of logical processors. + + * #### `JsonRpc.GasCap` \{#jsonrpc-gascap} + + + + ``` + --jsonrpc-gascap + --JsonRpc.GasCap + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_GASCAP= + ``` + + + + ```json + { + "JsonRpc": { + "GasCap": + } + } + ``` + + + + The gas limit for `eth_call` and `eth_estimateGas`. Defaults to `100000000`. + + * #### `JsonRpc.Host` \{#jsonrpc-host} + + + + ``` + --jsonrpc-host + --JsonRpc.Host + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_HOST= + ``` + + + + ```json + { + "JsonRpc": { + "Host": + } + } + ``` + + + + The JSON-RPC service host. Defaults to `127.0.0.1`. + + * #### `JsonRpc.IpcUnixDomainSocketPath` \{#jsonrpc-ipcunixdomainsocketpath} + + + + ``` + --jsonrpc-ipcunixdomainsocketpath + --JsonRpc.IpcUnixDomainSocketPath + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_IPCUNIXDOMAINSOCKETPATH= + ``` + + + + ```json + { + "JsonRpc": { + "IpcUnixDomainSocketPath": + } + } + ``` + + + + The path to connect a UNIX domain socket over. + + * #### `JsonRpc.JwtSecretFile` \{#jsonrpc-jwtsecretfile} + + + + ``` + --jsonrpc-jwtsecretfile + --JsonRpc.JwtSecretFile + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE= + ``` + + + + ```json + { + "JsonRpc": { + "JwtSecretFile": + } + } + ``` + + + + The path to the JWT secret file required for the Engine API authentication. Defaults to `null`. + + * #### `JsonRpc.MaxBatchResponseBodySize` \{#jsonrpc-maxbatchresponsebodysize} + + + + ``` + --jsonrpc-maxbatchresponsebodysize + --JsonRpc.MaxBatchResponseBodySize + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_MAXBATCHRESPONSEBODYSIZE= + ``` + + + + ```json + { + "JsonRpc": { + "MaxBatchResponseBodySize": + } + } + ``` + + + + The max batch size limit for batched JSON-RPC calls. Defaults to `33554432`. + + * #### `JsonRpc.MaxBatchSize` \{#jsonrpc-maxbatchsize} + + + + ``` + --jsonrpc-maxbatchsize + --JsonRpc.MaxBatchSize + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_MAXBATCHSIZE= + ``` + + + + ```json + { + "JsonRpc": { + "MaxBatchSize": + } + } + ``` + + + + The max number of JSON-RPC requests in a batch. Defaults to `1024`. + + * #### `JsonRpc.MaxLoggedRequestParametersCharacters` \{#jsonrpc-maxloggedrequestparameterscharacters} + + + + ``` + --jsonrpc-maxloggedrequestparameterscharacters + --JsonRpc.MaxLoggedRequestParametersCharacters + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_MAXLOGGEDREQUESTPARAMETERSCHARACTERS= + ``` + + + + ```json + { + "JsonRpc": { + "MaxLoggedRequestParametersCharacters": + } + } + ``` + + + + The max number of characters of a JSON-RPC request parameter printing to the log. Defaults to `null`. + + * #### `JsonRpc.MaxLogsPerResponse` \{#jsonrpc-maxlogsperresponse} + + + + ``` + --jsonrpc-maxlogsperresponse + --JsonRpc.MaxLogsPerResponse + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_MAXLOGSPERRESPONSE= + ``` + + + + ```json + { + "JsonRpc": { + "MaxLogsPerResponse": + } + } + ``` + + + + The max number of logs per response for the `eth_getLogs` JSON-RPC method. `0` to lift the limit. Defaults to `20000`. + + * #### `JsonRpc.MaxRequestBodySize` \{#jsonrpc-maxrequestbodysize} + + + + ``` + --jsonrpc-maxrequestbodysize + --JsonRpc.MaxRequestBodySize + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_MAXREQUESTBODYSIZE= + ``` + + + + ```json + { + "JsonRpc": { + "MaxRequestBodySize": + } + } + ``` + + + + The max length of HTTP request body, in bytes. Defaults to `30000000`. + + * #### `JsonRpc.MaxSimulateBlocksCap` \{#jsonrpc-maxsimulateblockscap} + + + + ``` + --jsonrpc-maxsimulateblockscap + --JsonRpc.MaxSimulateBlocksCap + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_MAXSIMULATEBLOCKSCAP= + ``` + + + + ```json + { + "JsonRpc": { + "MaxSimulateBlocksCap": + } + } + ``` + + + + The max block count limit for the `eth_simulate` JSON-RPC method. Defaults to `256`. + + * #### `JsonRpc.MethodsLoggingFiltering` \{#jsonrpc-methodsloggingfiltering} + + + + ``` + --jsonrpc-methodsloggingfiltering + --JsonRpc.MethodsLoggingFiltering + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_METHODSLOGGINGFILTERING= + ``` + + + + ```json + { + "JsonRpc": { + "MethodsLoggingFiltering": + } + } + ``` + + + + An array of the method names not to log. Defaults to `[engine_newPayloadV1,engine_newPayloadV2,engine_newPayloadV3,engine_forkchoiceUpdatedV1,engine_forkchoiceUpdatedV2]`. + + * #### `JsonRpc.Port` \{#jsonrpc-port} + + + + ``` + --jsonrpc-port + --JsonRpc.Port + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_PORT= + ``` + + + + ```json + { + "JsonRpc": { + "Port": + } + } + ``` + + + + The JSON-RPC service HTTP port. Defaults to `8545`. + + * #### `JsonRpc.ReportIntervalSeconds` \{#jsonrpc-reportintervalseconds} + + + + ``` + --jsonrpc-reportintervalseconds + --JsonRpc.ReportIntervalSeconds + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_REPORTINTERVALSECONDS= + ``` + + + + ```json + { + "JsonRpc": { + "ReportIntervalSeconds": + } + } + ``` + + + + The interval, in seconds, between the JSON-RPC stats report log. Defaults to `300`. + + * #### `JsonRpc.RequestQueueLimit` \{#jsonrpc-requestqueuelimit} + + + + ``` + --jsonrpc-requestqueuelimit + --JsonRpc.RequestQueueLimit + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_REQUESTQUEUELIMIT= + ``` + + + + ```json + { + "JsonRpc": { + "RequestQueueLimit": + } + } + ``` + + + + The max number of concurrent requests in the queue for: + + * `eth_call` + * `eth_estimateGas` + * `eth_getLogs` + * `eth_newFilter` + * `eth_newBlockFilter` + * `eth_newPendingTransactionFilter` + * `eth_uninstallFilter` + + `0` to lift the limit. Defaults to `500`. + + * #### `JsonRpc.RpcRecorderBaseFilePath` \{#jsonrpc-rpcrecorderbasefilepath} + + + + ``` + --jsonrpc-rpcrecorderbasefilepath + --JsonRpc.RpcRecorderBaseFilePath + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_RPCRECORDERBASEFILEPATH= + ``` + + + + ```json + { + "JsonRpc": { + "RpcRecorderBaseFilePath": + } + } + ``` + + + + The path to the base file for diagnostic recording. Defaults to `logs/rpc.{counter}.txt`. + + * #### `JsonRpc.RpcRecorderState` \{#jsonrpc-rpcrecorderstate} + + + + ``` + --jsonrpc-rpcrecorderstate + --JsonRpc.RpcRecorderState + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_RPCRECORDERSTATE= + ``` + + + + ```json + { + "JsonRpc": { + "RpcRecorderState": + } + } + ``` + + + + The diagnostic recording mode. + + Allowed values: + + * `None`: None. + * `Request`: Records requests. + * `Response`: Records responses. + * `All`: Records both requests and responses. + + Defaults to `None`. + + * #### `JsonRpc.Timeout` \{#jsonrpc-timeout} + + + + ``` + --jsonrpc-timeout + --JsonRpc.Timeout + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_TIMEOUT= + ``` + + + + ```json + { + "JsonRpc": { + "Timeout": + } + } + ``` + + + + The request timeout, in milliseconds. Defaults to `20000`. + + * #### `JsonRpc.WebSocketsPort` \{#jsonrpc-websocketsport} + + + + ``` + --jsonrpc-websocketsport + --JsonRpc.WebSocketsPort + ``` + + + + ``` + NETHERMIND_JSONRPCCONFIG_WEBSOCKETSPORT= + ``` + + + + ```json + { + "JsonRpc": { + "WebSocketsPort": + } + } + ``` + + + + The JSON-RPC service WebSockets port. Defaults to `8545`. + + ### KeyStore + + * #### `KeyStore.BlockAuthorAccount` \{#keystore-blockauthoraccount} + + + + ``` + --keystore-blockauthoraccount + --KeyStore.BlockAuthorAccount + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_BLOCKAUTHORACCOUNT= + ``` + + + + ```json + { + "KeyStore": { + "BlockAuthorAccount": + } + } + ``` + + + + An account to use as the block author (coinbase). + + * #### `KeyStore.Cipher` \{#keystore-cipher} + + + + ``` + --keystore-cipher + --KeyStore.Cipher + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_CIPHER= + ``` + + + + ```json + { + "KeyStore": { + "Cipher": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `aes-128-ctr`. + + * #### `KeyStore.EnodeAccount` \{#keystore-enodeaccount} + + + + ``` + --keystore-enodeaccount + --KeyStore.EnodeAccount + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_ENODEACCOUNT= + ``` + + + + ```json + { + "KeyStore": { + "EnodeAccount": + } + } + ``` + + + + An account to use for networking (enode). If neither this nor the `EnodeKeyFile` option is specified, the key is autogenerated in `node.key.plain` file. + + * #### `KeyStore.EnodeKeyFile` \{#keystore-enodekeyfile} + + + + ``` + --keystore-enodekeyfile + --KeyStore.EnodeKeyFile + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_ENODEKEYFILE= + ``` + + + + ```json + { + "KeyStore": { + "EnodeKeyFile": + } + } + ``` + + + + The path to the key file to use by for networking (enode). If neither this nor the `EnodeAccount` is specified, the key is autogenerated in `node.key.plain` file. + + * #### `KeyStore.IVSize` \{#keystore-ivsize} + + + + ``` + --keystore-ivsize + --KeyStore.IVSize + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_IVSIZE= + ``` + + + + ```json + { + "KeyStore": { + "IVSize": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `16`. + + * #### `KeyStore.Kdf` \{#keystore-kdf} + + + + ``` + --keystore-kdf + --KeyStore.Kdf + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KDF= + ``` + + + + ```json + { + "KeyStore": { + "Kdf": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `scrypt`. + + * #### `KeyStore.KdfparamsDklen` \{#keystore-kdfparamsdklen} + + + + ``` + --keystore-kdfparamsdklen + --KeyStore.KdfparamsDklen + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KDFPARAMSDKLEN= + ``` + + + + ```json + { + "KeyStore": { + "KdfparamsDklen": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `32`. + + * #### `KeyStore.KdfparamsN` \{#keystore-kdfparamsn} + + + + ``` + --keystore-kdfparamsn + --KeyStore.KdfparamsN + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KDFPARAMSN= + ``` + + + + ```json + { + "KeyStore": { + "KdfparamsN": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `262144`. + + * #### `KeyStore.KdfparamsP` \{#keystore-kdfparamsp} + + + + ``` + --keystore-kdfparamsp + --KeyStore.KdfparamsP + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KDFPARAMSP= + ``` + + + + ```json + { + "KeyStore": { + "KdfparamsP": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `1`. + + * #### `KeyStore.KdfparamsR` \{#keystore-kdfparamsr} + + + + ``` + --keystore-kdfparamsr + --KeyStore.KdfparamsR + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KDFPARAMSR= + ``` + + + + ```json + { + "KeyStore": { + "KdfparamsR": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `8`. + + * #### `KeyStore.KdfparamsSaltLen` \{#keystore-kdfparamssaltlen} + + + + ``` + --keystore-kdfparamssaltlen + --KeyStore.KdfparamsSaltLen + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KDFPARAMSSALTLEN= + ``` + + + + ```json + { + "KeyStore": { + "KdfparamsSaltLen": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `32`. + + * #### `KeyStore.KeyStoreDirectory` \{#keystore-keystoredirectory} + + + + ``` + --keystore-keystoredirectory + --KeyStore.KeyStoreDirectory + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KEYSTOREDIRECTORY= + ``` + + + + ```json + { + "KeyStore": { + "KeyStoreDirectory": + } + } + ``` + + + + The path to the keystore directory. Defaults to `keystore`. + + * #### `KeyStore.KeyStoreEncoding` \{#keystore-keystoreencoding} + + + + ``` + --keystore-keystoreencoding + --KeyStore.KeyStoreEncoding + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_KEYSTOREENCODING= + ``` + + + + ```json + { + "KeyStore": { + "KeyStoreEncoding": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `UTF-8`. + + * #### `KeyStore.PasswordFiles` \{#keystore-passwordfiles} + + + + ``` + --keystore-passwordfiles + --KeyStore.PasswordFiles + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_PASSWORDFILES= + ``` + + + + ```json + { + "KeyStore": { + "PasswordFiles": + } + } + ``` + + + + An array of password files paths used to unlock the accounts set with `UnlockAccounts`. Defaults to `[]`. + + * #### `KeyStore.Passwords` \{#keystore-passwords} + + + + ``` + --keystore-passwords + --KeyStore.Passwords + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_PASSWORDS= + ``` + + + + ```json + { + "KeyStore": { + "Passwords": + } + } + ``` + + + + An array of passwords used to unlock the accounts set with `UnlockAccounts`. Defaults to `[]`. + + * #### `KeyStore.SymmetricEncrypterBlockSize` \{#keystore-symmetricencrypterblocksize} + + + + ``` + --keystore-symmetricencrypterblocksize + --KeyStore.SymmetricEncrypterBlockSize + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERBLOCKSIZE= + ``` + + + + ```json + { + "KeyStore": { + "SymmetricEncrypterBlockSize": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `128`. + + * #### `KeyStore.SymmetricEncrypterKeySize` \{#keystore-symmetricencrypterkeysize} + + + + ``` + --keystore-symmetricencrypterkeysize + --KeyStore.SymmetricEncrypterKeySize + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_SYMMETRICENCRYPTERKEYSIZE= + ``` + + + + ```json + { + "KeyStore": { + "SymmetricEncrypterKeySize": + } + } + ``` + + + + See [Web3 secret storage definition][web3-secret-storage]. Defaults to `128`. + + * #### `KeyStore.TestNodeKey` \{#keystore-testnodekey} + + + + ``` + --keystore-testnodekey + --KeyStore.TestNodeKey + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_TESTNODEKEY= + ``` + + + + ```json + { + "KeyStore": { + "TestNodeKey": + } + } + ``` + + + + A plaintext private key to use for testing purposes. + + * #### `KeyStore.UnlockAccounts` \{#keystore-unlockaccounts} + + + + ``` + --keystore-unlockaccounts + --KeyStore.UnlockAccounts + ``` + + + + ``` + NETHERMIND_KEYSTORECONFIG_UNLOCKACCOUNTS= + ``` + + + + ```json + { + "KeyStore": { + "UnlockAccounts": + } + } + ``` + + + + An array of accounts to unlock on startup using passwords either in `PasswordFiles` and `Passwords`. Defaults to `[]`. + + ### Merge + + * #### `Merge.BuilderRelayUrl` \{#merge-builderrelayurl} + + + + ``` + --merge-builderrelayurl + --Merge.BuilderRelayUrl + ``` + + + + ``` + NETHERMIND_MERGECONFIG_BUILDERRELAYURL= + ``` + + + + ```json + { + "Merge": { + "BuilderRelayUrl": + } + } + ``` + + + + The URL of a builder relay. If specified, blocks are sent to the relay. Defaults to `null`. + + * #### `Merge.CollectionsPerDecommit` \{#merge-collectionsperdecommit} + + + + ``` + --merge-collectionsperdecommit + --Merge.CollectionsPerDecommit + ``` + + + + ``` + NETHERMIND_MERGECONFIG_COLLECTIONSPERDECOMMIT= + ``` + + + + ```json + { + "Merge": { + "CollectionsPerDecommit": + } + } + ``` + + + + The number of requests to the garbage collector (GC) to release the process memory. + + Allowed values: + + * `-1`: No requests. + * `0`: Requests every time. + * A positive number: Requests after that many Engine API calls. + + Defaults to `25`. + + * #### `Merge.CompactMemory` \{#merge-compactmemory} + + + + ``` + --merge-compactmemory + --Merge.CompactMemory + ``` + + + + ``` + NETHERMIND_MERGECONFIG_COMPACTMEMORY= + ``` + + + + ```json + { + "Merge": { + "CompactMemory": + } + } + ``` + + + + The memory compaction mode. When set to `Full`, compacts the large object heap (LOH) if `SweepMemory` is set to `Gen2`. + + Allowed values: + + * `No`: Disables memory compaction. + * `Yes`: Enables memory compaction. + * `Full`: Enables memory compaction with the large object heap (LOH) if `SweepMemory` is set to `Gen2`. + + Defaults to `Yes`. + + * #### `Merge.Enabled` \{#merge-enabled} + + + + ``` + --merge-enabled + --Merge.Enabled + ``` + + + + ``` + NETHERMIND_MERGECONFIG_ENABLED= + ``` + + + + ```json + { + "Merge": { + "Enabled": + } + } + ``` + + + + Whether to enable the Merge hard fork. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Merge.FinalTotalDifficulty` \{#merge-finaltotaldifficulty} + + + + ``` + --merge-finaltotaldifficulty + --Merge.FinalTotalDifficulty + ``` + + + + ``` + NETHERMIND_MERGECONFIG_FINALTOTALDIFFICULTY= + ``` + + + + ```json + { + "Merge": { + "FinalTotalDifficulty": + } + } + ``` + + + + The total difficulty of the last PoW block. Must be greater than or equal to the terminal total difficulty (TTD). Defaults to `null`. + + * #### `Merge.PrioritizeBlockLatency` \{#merge-prioritizeblocklatency} + + + + ``` + --merge-prioritizeblocklatency + --Merge.PrioritizeBlockLatency + ``` + + + + ``` + NETHERMIND_MERGECONFIG_PRIORITIZEBLOCKLATENCY= + ``` + + + + ```json + { + "Merge": { + "PrioritizeBlockLatency": + } + } + ``` + + + + Whether to reduce block latency by disabling garbage collection during Engine API calls. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Merge.SweepMemory` \{#merge-sweepmemory} + + + + ``` + --merge-sweepmemory + --Merge.SweepMemory + ``` + + + + ``` + NETHERMIND_MERGECONFIG_SWEEPMEMORY= + ``` + + + + ```json + { + "Merge": { + "SweepMemory": + } + } + ``` + + + + The garbage collection (GC) mode between Engine API calls. + + Allowed values: + + * `NoGC`: Disables garbage collection. + * `Gen0`: Enables garbage collection of generation 0. + * `Gen1`: Enables garbage collection of generation 1. + * `Gen2`: Enables garbage collection of generation 2. + + Defaults to `Gen1`. + + * #### `Merge.TerminalBlockHash` \{#merge-terminalblockhash} + + + + ``` + --merge-terminalblockhash + --Merge.TerminalBlockHash + ``` + + + + ``` + NETHERMIND_MERGECONFIG_TERMINALBLOCKHASH= + ``` + + + + ```json + { + "Merge": { + "TerminalBlockHash": + } + } + ``` + + + + The terminal PoW block hash used for the transition. Defaults to `null`. + + * #### `Merge.TerminalBlockNumber` \{#merge-terminalblocknumber} + + + + ``` + --merge-terminalblocknumber + --Merge.TerminalBlockNumber + ``` + + + + ``` + NETHERMIND_MERGECONFIG_TERMINALBLOCKNUMBER= + ``` + + + + ```json + { + "Merge": { + "TerminalBlockNumber": + } + } + ``` + + + + The terminal PoW block number used for the transition. + + * #### `Merge.TerminalTotalDifficulty` \{#merge-terminaltotaldifficulty} + + + + ``` + --merge-terminaltotaldifficulty + --Merge.TerminalTotalDifficulty + ``` + + + + ``` + NETHERMIND_MERGECONFIG_TERMINALTOTALDIFFICULTY= + ``` + + + + ```json + { + "Merge": { + "TerminalTotalDifficulty": + } + } + ``` + + + + The terminal total difficulty (TTD) used for the transition. Defaults to `null`. + + ### Metrics + + * #### `Metrics.CountersEnabled` \{#metrics-countersenabled} + + + + ``` + --metrics-countersenabled + --Metrics.CountersEnabled + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_COUNTERSENABLED= + ``` + + + + ```json + { + "Metrics": { + "CountersEnabled": + } + } + ``` + + + + Whether to publish metrics using .NET diagnostics that can be collected with dotnet-counters. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Metrics.Enabled` \{#metrics-enabled} + + + + ``` + --metrics-enabled + --Metrics.Enabled + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_ENABLED= + ``` + + + + ```json + { + "Metrics": { + "Enabled": + } + } + ``` + + + + Whether to publish various metrics to Prometheus Pushgateway at a given interval. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Metrics.EnableDbSizeMetrics` \{#metrics-enabledbsizemetrics} + + + + ``` + --metrics-enabledbsizemetrics + --Metrics.EnableDbSizeMetrics + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_ENABLEDBSIZEMETRICS= + ``` + + + + ```json + { + "Metrics": { + "EnableDbSizeMetrics": + } + } + ``` + + + + Whether to publish database size metrics. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Metrics.ExposeHost` \{#metrics-exposehost} + + + + ``` + --metrics-exposehost + --Metrics.ExposeHost + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_EXPOSEHOST= + ``` + + + + ```json + { + "Metrics": { + "ExposeHost": + } + } + ``` + + + + The IP address to expose Prometheus metrics at. The value of `+` means listening on all available hostnames. Setting this to `localhost` prevents remote access. Defaults to `+`. + + * #### `Metrics.ExposePort` \{#metrics-exposeport} + + + + ``` + --metrics-exposeport + --Metrics.ExposePort + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_EXPOSEPORT= + ``` + + + + ```json + { + "Metrics": { + "ExposePort": + } + } + ``` + + + + The port to expose Prometheus metrics at. + + * #### `Metrics.IntervalSeconds` \{#metrics-intervalseconds} + + + + ``` + --metrics-intervalseconds + --Metrics.IntervalSeconds + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_INTERVALSECONDS= + ``` + + + + ```json + { + "Metrics": { + "IntervalSeconds": + } + } + ``` + + + + The frequency of pushing metrics to Prometheus, in seconds. Defaults to `5`. + + * #### `Metrics.MonitoringGroup` \{#metrics-monitoringgroup} + + + + ``` + --metrics-monitoringgroup + --Metrics.MonitoringGroup + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_MONITORINGGROUP= + ``` + + + + ```json + { + "Metrics": { + "MonitoringGroup": + } + } + ``` + + + + The Prometheus metrics group name. Defaults to `nethermind`. + + * #### `Metrics.MonitoringJob` \{#metrics-monitoringjob} + + + + ``` + --metrics-monitoringjob + --Metrics.MonitoringJob + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_MONITORINGJOB= + ``` + + + + ```json + { + "Metrics": { + "MonitoringJob": + } + } + ``` + + + + The Prometheus metrics job name. Defaults to `nethermind`. + + * #### `Metrics.NodeName` \{#metrics-nodename} + + + + ``` + --metrics-nodename + --Metrics.NodeName + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_NODENAME= + ``` + + + + ```json + { + "Metrics": { + "NodeName": + } + } + ``` + + + + The name to display on the Grafana dashboard. Defaults to `Nethermind`. + + * #### `Metrics.PushGatewayUrl` \{#metrics-pushgatewayurl} + + + + ``` + --metrics-pushgatewayurl + --Metrics.PushGatewayUrl + ``` + + + + ``` + NETHERMIND_METRICSCONFIG_PUSHGATEWAYURL= + ``` + + + + ```json + { + "Metrics": { + "PushGatewayUrl": + } + } + ``` + + + + The Prometheus Pushgateway instance URL. + + ### Mining + + * #### `Mining.Enabled` \{#mining-enabled} + + + + ``` + --mining-enabled + --Mining.Enabled + ``` + + + + ``` + NETHERMIND_MININGCONFIG_ENABLED= + ``` + + + + ```json + { + "Mining": { + "Enabled": + } + } + ``` + + + + Whether to produce blocks. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Mining.Signer` \{#mining-signer} + + + + ``` + --mining-signer + --Mining.Signer + ``` + + + + ``` + NETHERMIND_MININGCONFIG_SIGNER= + ``` + + + + ```json + { + "Mining": { + "Signer": + } + } + ``` + + + + The URL of an external signer like [Clef](https://github.com/ethereum/go-ethereum/blob/master/cmd/clef/tutorial.md). Defaults to `null`. + + ### Network + + * #### `Network.Bootnodes` \{#network-bootnodes} + + + + ``` + --network-bootnodes + --Network.Bootnodes + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_BOOTNODES= + ``` + + + + ```json + { + "Network": { + "Bootnodes": + } + } + ``` + + + + A comma-separated enode list to be used as boot nodes. + + * #### `Network.DiagTracerEnabled` \{#network-diagtracerenabled} + + + + ``` + --network-diagtracerenabled + --Network.DiagTracerEnabled + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_DIAGTRACERENABLED= + ``` + + + + ```json + { + "Network": { + "DiagTracerEnabled": + } + } + ``` + + + + Whether to enable a verbose diagnostic tracing. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Network.DiscoveryDns` \{#network-discoverydns} + + + + ``` + --network-discoverydns + --Network.DiscoveryDns + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_DISCOVERYDNS= + ``` + + + + ```json + { + "Network": { + "DiscoveryDns": + } + } + ``` + + + + Use tree is available through a DNS name. For the default of `.ethdisco.net`, leave unspecified. Defaults to `null`. + + * #### `Network.DiscoveryPort` \{#network-discoveryport} + + + + ``` + --network-discoveryport + --Network.DiscoveryPort + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_DISCOVERYPORT= + ``` + + + + ```json + { + "Network": { + "DiscoveryPort": + } + } + ``` + + + + The UDP port number for incoming discovery connections. It's recommended to keep it the same as the TCP port (`P2PPort`) because other values have not been tested yet. Defaults to `30303`. + + * #### `Network.EnableUPnP` \{#network-enableupnp} + + + + ``` + --network-enableupnp + --Network.EnableUPnP + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_ENABLEUPNP= + ``` + + + + ```json + { + "Network": { + "EnableUPnP": + } + } + ``` + + + + Whether to enable automatic port forwarding via UPnP. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Network.ExternalIp` \{#network-externalip} + + + + ``` + --network-externalip + --Network.ExternalIp + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_EXTERNALIP= + ``` + + + + ```json + { + "Network": { + "ExternalIp": + } + } + ``` + + + + The external IP. Use only when the external IP cannot be resolved automatically. Defaults to `null`. + + * #### `Network.LocalIp` \{#network-localip} + + + + ``` + --network-localip + --Network.LocalIp + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_LOCALIP= + ``` + + + + ```json + { + "Network": { + "LocalIp": + } + } + ``` + + + + The local IP. Use only when the local IP cannot be resolved automatically. Defaults to `null`. + + * #### `Network.MaxActivePeers` \{#network-maxactivepeers} + + + + ``` + --network-maxactivepeers + --Network.MaxActivePeers + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_MAXACTIVEPEERS= + ``` + + + + ```json + { + "Network": { + "MaxActivePeers": + } + } + ``` + + + + The max allowed number of connected peers. Defaults to `50`. + + * #### `Network.MaxNettyArenaCount` \{#network-maxnettyarenacount} + + + + ``` + --network-maxnettyarenacount + --Network.MaxNettyArenaCount + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_MAXNETTYARENACOUNT= + ``` + + + + ```json + { + "Network": { + "MaxNettyArenaCount": + } + } + ``` + + + + The maximum DotNetty arena count. Increasing this on a high-core CPU without increasing the memory budget may reduce chunk size so much that it causes a huge memory allocation. Defaults to `8`. + + * #### `Network.NettyArenaOrder` \{#network-nettyarenaorder} + + + + ``` + --network-nettyarenaorder + --Network.NettyArenaOrder + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_NETTYARENAORDER= + ``` + + + + ```json + { + "Network": { + "NettyArenaOrder": + } + } + ``` + + + + The size of the DotNetty arena order. `-1` to depend on the memory hint. Defaults to `-1`. + + * #### `Network.OnlyStaticPeers` \{#network-onlystaticpeers} + + + + ``` + --network-onlystaticpeers + --Network.OnlyStaticPeers + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_ONLYSTATICPEERS= + ``` + + + + ```json + { + "Network": { + "OnlyStaticPeers": + } + } + ``` + + + + Whether to use static peers only. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Network.P2PPort` \{#network-p2pport} + + + + ``` + --network-p2pport + --Network.P2PPort + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_P2PPORT= + ``` + + + + ```json + { + "Network": { + "P2PPort": + } + } + ``` + + + + The TCP port for incoming P2P connections. Defaults to `30303`. + + * #### `Network.PriorityPeersMaxCount` \{#network-prioritypeersmaxcount} + + + + ``` + --network-prioritypeersmaxcount + --Network.PriorityPeersMaxCount + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_PRIORITYPEERSMAXCOUNT= + ``` + + + + ```json + { + "Network": { + "PriorityPeersMaxCount": + } + } + ``` + + + + The max number of priority peers. Can be overridden by a plugin. Defaults to `0`. + + * #### `Network.StaticPeers` \{#network-staticpeers} + + + + ``` + --network-staticpeers + --Network.StaticPeers + ``` + + + + ``` + NETHERMIND_NETWORKCONFIG_STATICPEERS= + ``` + + + + ```json + { + "Network": { + "StaticPeers": + } + } + ``` + + + + A list of peers to keep connection for. Static peers are affected by `MaxActivePeers`. Defaults to `null`. + + ### Optimism + + * #### `Optimism.SequencerUrl` \{#optimism-sequencerurl} + + + + ``` + --optimism-sequencerurl + --Optimism.SequencerUrl + ``` + + + + ``` + NETHERMIND_OPTIMISMCONFIG_SEQUENCERURL= + ``` + + + + ```json + { + "Optimism": { + "SequencerUrl": + } + } + ``` + + + + The sequencer address. Defaults to `null`. + + ### Pruning + + * #### `Pruning.AvailableSpaceCheckEnabled` \{#pruning-availablespacecheckenabled} + + + + ``` + --pruning-availablespacecheckenabled + --Pruning.AvailableSpaceCheckEnabled + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_AVAILABLESPACECHECKENABLED= + ``` + + + + ```json + { + "Pruning": { + "AvailableSpaceCheckEnabled": + } + } + ``` + + + + Whether to enables available disk space check. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Pruning.CacheMb` \{#pruning-cachemb} + + + + ``` + --pruning-cachemb + --Pruning.CacheMb + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_CACHEMB= + ``` + + + + ```json + { + "Pruning": { + "CacheMb": + } + } + ``` + + + + The in-memory cache size, in MB. The bigger the cache size, the bigger the disk space savings. Defaults to `1024`. + + * #### `Pruning.FullPruningCompletionBehavior` \{#pruning-fullpruningcompletionbehavior} + + + + ``` + --pruning-fullpruningcompletionbehavior + --Pruning.FullPruningCompletionBehavior + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_FULLPRUNINGCOMPLETIONBEHAVIOR= + ``` + + + + ```json + { + "Pruning": { + "FullPruningCompletionBehavior": + } + } + ``` + + + + The action to take on pruning completion. + + Allowed values: + + * `None`: No action. + * `ShutdownOnSuccess`: Shuts `Nethermind` down when pruning succeeds but leaves it running when fails. + * `AlwaysShutdown`: Shuts `Nethermind` down when pruning completes, regardless of its status. + + Defaults to `None`. + + * #### `Pruning.FullPruningDisableLowPriorityWrites` \{#pruning-fullpruningdisablelowprioritywrites} + + + + ``` + --pruning-fullpruningdisablelowprioritywrites + --Pruning.FullPruningDisableLowPriorityWrites + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_FULLPRUNINGDISABLELOWPRIORITYWRITES= + ``` + + + + ```json + { + "Pruning": { + "FullPruningDisableLowPriorityWrites": + } + } + ``` + + + + Whether to disable low-priority for pruning writes. Full pruning uses low-priority write operations to prevent blocking block processing. If block processing is not high-priority, set this option to `true` for faster pruning. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Pruning.FullPruningMaxDegreeOfParallelism` \{#pruning-fullpruningmaxdegreeofparallelism} + + + + ``` + --pruning-fullpruningmaxdegreeofparallelism + --Pruning.FullPruningMaxDegreeOfParallelism + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMAXDEGREEOFPARALLELISM= + ``` + + + + ```json + { + "Pruning": { + "FullPruningMaxDegreeOfParallelism": + } + } + ``` + + + + The max number of parallel tasks that can be used by full pruning. + + Allowed values: + + * `-1`: Uses the number of logical processors. + * `0`: Uses 25% of logical processors. + * `1`: Runs on a single thread. + + The recommended value depends on the type of the node: + + * If the node needs to be responsive (serves for RPC or validator), then the recommended value is `0` or `-1`. + * If the node doesn't have many other responsibilities but needs to be able to follow the chain reliably without any delays and produce live logs, the `0` or `1` is recommended. + * If the node doesn't have to be responsive, has very fast I/O (like NVMe) and the shortest pruning time is to be achieved, then `-1` is recommended. Defaults to `0`. + + * #### `Pruning.FullPruningMemoryBudgetMb` \{#pruning-fullpruningmemorybudgetmb} + + + + ``` + --pruning-fullpruningmemorybudgetmb + --Pruning.FullPruningMemoryBudgetMb + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMEMORYBUDGETMB= + ``` + + + + ```json + { + "Pruning": { + "FullPruningMemoryBudgetMb": + } + } + ``` + + + + The memory budget, in MB, used for the trie visit. Increasing this value significantly reduces the IOPS requirement at the expense of memory usage. `0` to disable. Defaults to `4000`. + + * #### `Pruning.FullPruningMinimumDelayHours` \{#pruning-fullpruningminimumdelayhours} + + + + ``` + --pruning-fullpruningminimumdelayhours + --Pruning.FullPruningMinimumDelayHours + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_FULLPRUNINGMINIMUMDELAYHOURS= + ``` + + + + ```json + { + "Pruning": { + "FullPruningMinimumDelayHours": + } + } + ``` + + + + The minimum delay, in hours, between full pruning operations not to exhaust disk writes. Defaults to `240`. + + * #### `Pruning.FullPruningThresholdMb` \{#pruning-fullpruningthresholdmb} + + + + ``` + --pruning-fullpruningthresholdmb + --Pruning.FullPruningThresholdMb + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTHRESHOLDMB= + ``` + + + + ```json + { + "Pruning": { + "FullPruningThresholdMb": + } + } + ``` + + + + The threshold, in MB, to trigger full pruning. Depends on `Mode` and `FullPruningTrigger`. Defaults to `256000`. + + * #### `Pruning.FullPruningTrigger` \{#pruning-fullpruningtrigger} + + + + ``` + --pruning-fullpruningtrigger + --Pruning.FullPruningTrigger + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_FULLPRUNINGTRIGGER= + ``` + + + + ```json + { + "Pruning": { + "FullPruningTrigger": + } + } + ``` + + + + The full pruning trigger. + + Allowed values: + + * `Manual`: Does not trigger. Pruning can be triggered manually. + * `StateDbSize`: Triggers when the state DB size is above the specified threshold. + * `VolumeFreeSpace`: Triggers when the free disk space where the state DB is stored is below the specified threshold. + + Defaults to `Manual`. + + * #### `Pruning.Mode` \{#pruning-mode} + + + + ``` + --pruning-mode + --Pruning.Mode + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_MODE= + ``` + + + + ```json + { + "Pruning": { + "Mode": + } + } + ``` + + + + The pruning mode. + + Allowed values: + + * `None`: No pruning (archive). + * `Memory`: In-memory pruning. + * `Full`: Full pruning. + * `Hybrid`: Combined in-memory and full pruning. + + Defaults to `Hybrid`. + + * #### `Pruning.PersistenceInterval` \{#pruning-persistenceinterval} + + + + ``` + --pruning-persistenceinterval + --Pruning.PersistenceInterval + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_PERSISTENCEINTERVAL= + ``` + + + + ```json + { + "Pruning": { + "PersistenceInterval": + } + } + ``` + + + + The block persistence frequency. If set to `N`, it caches after each `Nth` block even if not required by cache memory usage. Defaults to `8192`. + + * #### `Pruning.PruningBoundary` \{#pruning-pruningboundary} + + + + ``` + --pruning-pruningboundary + --Pruning.PruningBoundary + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_PRUNINGBOUNDARY= + ``` + + + + ```json + { + "Pruning": { + "PruningBoundary": + } + } + ``` + + + + The number of past states before the state gets pruned. Used to determine how old of a state to keep from the head. Defaults to `64`. + + * #### `Pruning.TrackedPastKeyCountMemoryRatio` \{#pruning-trackedpastkeycountmemoryratio} + + + + ``` + --pruning-trackedpastkeycountmemoryratio + --Pruning.TrackedPastKeyCountMemoryRatio + ``` + + + + ``` + NETHERMIND_PRUNINGCONFIG_TRACKEDPASTKEYCOUNTMEMORYRATIO= + ``` + + + + ```json + { + "Pruning": { + "TrackedPastKeyCountMemoryRatio": + } + } + ``` + + + + The ratio of memory out of `Pruning.CacheMb` to allocate for the LRU cache, used to track past keys for live pruning. Defaults to `0.1`. + + ### Receipt + + * #### `Receipt.CompactReceiptStore` \{#receipt-compactreceiptstore} + + + + ``` + --receipt-compactreceiptstore + --Receipt.CompactReceiptStore + ``` + + + + ``` + NETHERMIND_RECEIPTCONFIG_COMPACTRECEIPTSTORE= + ``` + + + + ```json + { + "Receipt": { + "CompactReceiptStore": + } + } + ``` + + + + Whether to compact receipts database size at the expense of RPC performance. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Receipt.CompactTxIndex` \{#receipt-compacttxindex} + + + + ``` + --receipt-compacttxindex + --Receipt.CompactTxIndex + ``` + + + + ``` + NETHERMIND_RECEIPTCONFIG_COMPACTTXINDEX= + ``` + + + + ```json + { + "Receipt": { + "CompactTxIndex": + } + } + ``` + + + + Whether to compact receipts transaction index database size at the expense of RPC performance. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Receipt.ReceiptsMigration` \{#receipt-receiptsmigration} + + + + ``` + --receipt-receiptsmigration + --Receipt.ReceiptsMigration + ``` + + + + ``` + NETHERMIND_RECEIPTCONFIG_RECEIPTSMIGRATION= + ``` + + + + ```json + { + "Receipt": { + "ReceiptsMigration": + } + } + ``` + + + + Whether to migrate the receipts database to the new schema. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Receipt.StoreReceipts` \{#receipt-storereceipts} + + + + ``` + --receipt-storereceipts + --Receipt.StoreReceipts + ``` + + + + ``` + NETHERMIND_RECEIPTCONFIG_STORERECEIPTS= + ``` + + + + ```json + { + "Receipt": { + "StoreReceipts": + } + } + ``` + + + + Whether to store receipts after a new block is processed. This setting is independent from downloading receipts in fast sync mode. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Receipt.TxLookupLimit` \{#receipt-txlookuplimit} + + + + ``` + --receipt-txlookuplimit + --Receipt.TxLookupLimit + ``` + + + + ``` + NETHERMIND_RECEIPTCONFIG_TXLOOKUPLIMIT= + ``` + + + + ```json + { + "Receipt": { + "TxLookupLimit": + } + } + ``` + + + + The number of recent blocks to maintain transaction index for. `0` to never remove indices, `-1` to never index. Defaults to `2350000`. + + ### Seq + + * #### `Seq.ApiKey` \{#seq-apikey} + + + + ``` + --seq-apikey + --Seq.ApiKey + ``` + + + + ``` + NETHERMIND_SEQCONFIG_APIKEY= + ``` + + + + ```json + { + "Seq": { + "ApiKey": + } + } + ``` + + + + The Seq API key. + + * #### `Seq.MinLevel` \{#seq-minlevel} + + + + ``` + --seq-minlevel + --Seq.MinLevel + ``` + + + + ``` + NETHERMIND_SEQCONFIG_MINLEVEL= + ``` + + + + ```json + { + "Seq": { + "MinLevel": + } + } + ``` + + + + The min log level to sent to Seq. Defaults to `Off`. + + * #### `Seq.ServerUrl` \{#seq-serverurl} + + + + ``` + --seq-serverurl + --Seq.ServerUrl + ``` + + + + ``` + NETHERMIND_SEQCONFIG_SERVERURL= + ``` + + + + ```json + { + "Seq": { + "ServerUrl": + } + } + ``` + + + + The Seq instance URL. Defaults to `http://localhost:5341`. + + ### Shutter + + * #### `Shutter.BootnodeP2PAddresses` \{#shutter-bootnodep2paddresses} + + + + ``` + --shutter-bootnodep2paddresses + --Shutter.BootnodeP2PAddresses + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_BOOTNODEP2PADDRESSES= + ``` + + + + ```json + { + "Shutter": { + "BootnodeP2PAddresses": + } + } + ``` + + + + The p2p addresses of the Shutter Keyper network bootnodes. + + * #### `Shutter.Enabled` \{#shutter-enabled} + + + + ``` + --shutter-enabled + --Shutter.Enabled + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_ENABLED= + ``` + + + + ```json + { + "Shutter": { + "Enabled": + } + } + ``` + + + + Whether to enable Shutter. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Shutter.InstanceID` \{#shutter-instanceid} + + + + ``` + --shutter-instanceid + --Shutter.InstanceID + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_INSTANCEID= + ``` + + + + ```json + { + "Shutter": { + "InstanceID": + } + } + ``` + + + + Instance ID of Shutter keyper set. Defaults to `0`. + + * #### `Shutter.KeyBroadcastContractAddress` \{#shutter-keybroadcastcontractaddress} + + + + ``` + --shutter-keybroadcastcontractaddress + --Shutter.KeyBroadcastContractAddress + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_KEYBROADCASTCONTRACTADDRESS= + ``` + + + + ```json + { + "Shutter": { + "KeyBroadcastContractAddress": + } + } + ``` + + + + The address of the Shutter key broadcast contract. Defaults to `null`. + + * #### `Shutter.KeyperSetManagerContractAddress` \{#shutter-keypersetmanagercontractaddress} + + + + ``` + --shutter-keypersetmanagercontractaddress + --Shutter.KeyperSetManagerContractAddress + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_KEYPERSETMANAGERCONTRACTADDRESS= + ``` + + + + ```json + { + "Shutter": { + "KeyperSetManagerContractAddress": + } + } + ``` + + + + The address of the Shutter keyper set manager contract. Defaults to `null`. + + * #### `Shutter.P2PPort` \{#shutter-p2pport} + + + + ``` + --shutter-p2pport + --Shutter.P2PPort + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_P2PPORT= + ``` + + + + ```json + { + "Shutter": { + "P2PPort": + } + } + ``` + + + + The port to connect to Shutter P2P network with. Defaults to `23102`. + + * #### `Shutter.SequencerContractAddress` \{#shutter-sequencercontractaddress} + + + + ``` + --shutter-sequencercontractaddress + --Shutter.SequencerContractAddress + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_SEQUENCERCONTRACTADDRESS= + ``` + + + + ```json + { + "Shutter": { + "SequencerContractAddress": + } + } + ``` + + + + The address of the Shutter sequencer contract. Defaults to `null`. + + * #### `Shutter.ShutterKeyFile` \{#shutter-shutterkeyfile} + + + + ``` + --shutter-shutterkeyfile + --Shutter.ShutterKeyFile + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_SHUTTERKEYFILE= + ``` + + + + ```json + { + "Shutter": { + "ShutterKeyFile": + } + } + ``` + + + + The filename to use for the Shutter P2P key. If this not specified, the key is autogenerated in `shutter.key.plain` file. + + * #### `Shutter.ValidatorInfoFile` \{#shutter-validatorinfofile} + + + + ``` + --shutter-validatorinfofile + --Shutter.ValidatorInfoFile + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_VALIDATORINFOFILE= + ``` + + + + ```json + { + "Shutter": { + "ValidatorInfoFile": + } + } + ``` + + + + The filepath of the validator info json file. Defaults to `null`. + + * #### `Shutter.ValidatorRegistryContractAddress` \{#shutter-validatorregistrycontractaddress} + + + + ``` + --shutter-validatorregistrycontractaddress + --Shutter.ValidatorRegistryContractAddress + ``` + + + + ``` + NETHERMIND_SHUTTERCONFIG_VALIDATORREGISTRYCONTRACTADDRESS= + ``` + + + + ```json + { + "Shutter": { + "ValidatorRegistryContractAddress": + } + } + ``` + + + + The address of the Shutter validator registry contract. Defaults to `null`. + + ### Snapshot + + * #### `Snapshot.Checksum` \{#snapshot-checksum} + + + + ``` + --snapshot-checksum + --Snapshot.Checksum + ``` + + + + ``` + NETHERMIND_SNAPSHOTCONFIG_CHECKSUM= + ``` + + + + ```json + { + "Snapshot": { + "Checksum": + } + } + ``` + + + + The SHA-256 checksum of the snapshot file. Defaults to `null`. + + * #### `Snapshot.DownloadUrl` \{#snapshot-downloadurl} + + + + ``` + --snapshot-downloadurl + --Snapshot.DownloadUrl + ``` + + + + ``` + NETHERMIND_SNAPSHOTCONFIG_DOWNLOADURL= + ``` + + + + ```json + { + "Snapshot": { + "DownloadUrl": + } + } + ``` + + + + The URL of the snapshot file. Defaults to `null`. + + * #### `Snapshot.Enabled` \{#snapshot-enabled} + + + + ``` + --snapshot-enabled + --Snapshot.Enabled + ``` + + + + ``` + NETHERMIND_SNAPSHOTCONFIG_ENABLED= + ``` + + + + ```json + { + "Snapshot": { + "Enabled": + } + } + ``` + + + + Whether to enable the Snapshot plugin. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Snapshot.SnapshotDirectory` \{#snapshot-snapshotdirectory} + + + + ``` + --snapshot-snapshotdirectory + --Snapshot.SnapshotDirectory + ``` + + + + ``` + NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTDIRECTORY= + ``` + + + + ```json + { + "Snapshot": { + "SnapshotDirectory": + } + } + ``` + + + + The path to the directory to store the snapshot file. Defaults to `snapshot`. + + * #### `Snapshot.SnapshotFileName` \{#snapshot-snapshotfilename} + + + + ``` + --snapshot-snapshotfilename + --Snapshot.SnapshotFileName + ``` + + + + ``` + NETHERMIND_SNAPSHOTCONFIG_SNAPSHOTFILENAME= + ``` + + + + ```json + { + "Snapshot": { + "SnapshotFileName": + } + } + ``` + + + + The name of the snapshot file. Defaults to `snapshot.zip`. + + ### Sync + + * #### `Sync.AncientBodiesBarrier` \{#sync-ancientbodiesbarrier} + + + + ``` + --sync-ancientbodiesbarrier + --Sync.AncientBodiesBarrier + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_ANCIENTBODIESBARRIER= + ``` + + + + ```json + { + "Sync": { + "AncientBodiesBarrier": + } + } + ``` + + + + The earliest body downloaded with fast sync when `DownloadBodiesInFastSync` is set to `true`. The actual value is determined as follows: + + ``` + max{ 1, min{ PivotNumber, AncientBodiesBarrier } } + ``` + + Defaults to `0`. + + * #### `Sync.AncientReceiptsBarrier` \{#sync-ancientreceiptsbarrier} + + + + ``` + --sync-ancientreceiptsbarrier + --Sync.AncientReceiptsBarrier + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_ANCIENTRECEIPTSBARRIER= + ``` + + + + ```json + { + "Sync": { + "AncientReceiptsBarrier": + } + } + ``` + + + + The earliest receipt downloaded with fast sync when `DownloadReceiptsInFastSync` is set to `true`. The actual value is determined as follows: + + ``` + max{ 1, min{ PivotNumber, max{ AncientBodiesBarrier, AncientReceiptsBarrier } } } + ``` + + Defaults to `0`. + + * #### `Sync.DownloadBodiesInFastSync` \{#sync-downloadbodiesinfastsync} + + + + ``` + --sync-downloadbodiesinfastsync + --Sync.DownloadBodiesInFastSync + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_DOWNLOADBODIESINFASTSYNC= + ``` + + + + ```json + { + "Sync": { + "DownloadBodiesInFastSync": + } + } + ``` + + + + Whether to download the block bodies in the Fast sync mode. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Sync.DownloadHeadersInFastSync` \{#sync-downloadheadersinfastsync} + + + + ``` + --sync-downloadheadersinfastsync + --Sync.DownloadHeadersInFastSync + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_DOWNLOADHEADERSINFASTSYNC= + ``` + + + + ```json + { + "Sync": { + "DownloadHeadersInFastSync": + } + } + ``` + + + + Whether to download the old block headers in the Fast sync mode. If `false`, `Nethermind` downloads only recent blocks headers. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Sync.DownloadReceiptsInFastSync` \{#sync-downloadreceiptsinfastsync} + + + + ``` + --sync-downloadreceiptsinfastsync + --Sync.DownloadReceiptsInFastSync + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_DOWNLOADRECEIPTSINFASTSYNC= + ``` + + + + ```json + { + "Sync": { + "DownloadReceiptsInFastSync": + } + } + ``` + + + + Whether to download receipts in the Fast sync mode. This slows down the process by a few hours but allows to interact with dApps that perform extensive historical logs searches. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Sync.ExitOnSynced` \{#sync-exitonsynced} + + + + ``` + --sync-exitonsynced + --Sync.ExitOnSynced + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_EXITONSYNCED= + ``` + + + + ```json + { + "Sync": { + "ExitOnSynced": + } + } + ``` + + + + Whether to shut down `Nethermind` once sync is finished. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Sync.ExitOnSyncedWaitTimeSec` \{#sync-exitonsyncedwaittimesec} + + + + ``` + --sync-exitonsyncedwaittimesec + --Sync.ExitOnSyncedWaitTimeSec + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_EXITONSYNCEDWAITTIMESEC= + ``` + + + + ```json + { + "Sync": { + "ExitOnSyncedWaitTimeSec": + } + } + ``` + + + + The time, in seconds, to wait before shutting down `Nethermind` once sync is finished. Defaults to `60`. + + * #### `Sync.FastSync` \{#sync-fastsync} + + + + ``` + --sync-fastsync + --Sync.FastSync + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_FASTSYNC= + ``` + + + + ```json + { + "Sync": { + "FastSync": + } + } + ``` + + + + Whether to use the Fast sync mode (the eth/63 synchronization algorithm). Allowed values: `true` `false`. Defaults to `false`. + + * #### `Sync.FastSyncCatchUpHeightDelta` \{#sync-fastsynccatchupheightdelta} + + + + ``` + --sync-fastsynccatchupheightdelta + --Sync.FastSyncCatchUpHeightDelta + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_FASTSYNCCATCHUPHEIGHTDELTA= + ``` + + + + ```json + { + "Sync": { + "FastSyncCatchUpHeightDelta": + } + } + ``` + + + + In Fast sync mode, the min height threshold limit up to which the Full sync, if already on, stays on when the chain is behind the network head. If the limit is exceeded, it switches back to Fast sync. For regular usage scenarios, setting this value lower than 32 is not recommended as this can cause issues with chain reorgs. Note that the last 2 blocks are always processed in Full sync, so setting it lower than 2 has no effect. Defaults to `8192`. + + * #### `Sync.FixReceipts` \{#sync-fixreceipts} + + + + ``` + --sync-fixreceipts + --Sync.FixReceipts + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_FIXRECEIPTS= + ``` + + + + ```json + { + "Sync": { + "FixReceipts": + } + } + ``` + + + + Whether to enable receipts validation that checks for receipts that might be missing because of a bug. If needed, receipts are downloaded from the network. If `true`, the pivot number must be same one used originally as it's used as a cut-off point. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Sync.FixTotalDifficulty` \{#sync-fixtotaldifficulty} + + + + ``` + --sync-fixtotaldifficulty + --Sync.FixTotalDifficulty + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTY= + ``` + + + + ```json + { + "Sync": { + "FixTotalDifficulty": + } + } + ``` + + + + Whether to recalculate the total difficulty from `FixTotalDifficultyStartingBlock` to `FixTotalDifficultyLastBlock`. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Sync.FixTotalDifficultyLastBlock` \{#sync-fixtotaldifficultylastblock} + + + + ``` + --sync-fixtotaldifficultylastblock + --Sync.FixTotalDifficultyLastBlock + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYLASTBLOCK= + ``` + + + + ```json + { + "Sync": { + "FixTotalDifficultyLastBlock": + } + } + ``` + + + + The last block to recalculate the total difficulty for. If not specified, the best known block is used. + Defaults to `null`. + + * #### `Sync.FixTotalDifficultyStartingBlock` \{#sync-fixtotaldifficultystartingblock} + + + + ``` + --sync-fixtotaldifficultystartingblock + --Sync.FixTotalDifficultyStartingBlock + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_FIXTOTALDIFFICULTYSTARTINGBLOCK= + ``` + + + + ```json + { + "Sync": { + "FixTotalDifficultyStartingBlock": + } + } + ``` + + + + The first block to recalculate the total difficulty for. Defaults to `1`. + + * #### `Sync.MaxAttemptsToUpdatePivot` \{#sync-maxattemptstoupdatepivot} + + + + ``` + --sync-maxattemptstoupdatepivot + --Sync.MaxAttemptsToUpdatePivot + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_MAXATTEMPTSTOUPDATEPIVOT= + ``` + + + + ```json + { + "Sync": { + "MaxAttemptsToUpdatePivot": + } + } + ``` + + + + The max number of attempts to update the pivot block based on the FCU message from the consensus client. Defaults to `2147483647`. + + * #### `Sync.MaxProcessingThreads` \{#sync-maxprocessingthreads} + + + + ``` + --sync-maxprocessingthreads + --Sync.MaxProcessingThreads + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_MAXPROCESSINGTHREADS= + ``` + + + + ```json + { + "Sync": { + "MaxProcessingThreads": + } + } + ``` + + + + The max number of threads used for syncing. `0` to use the number of logical processors. Defaults to `0`. + + * #### `Sync.NetworkingEnabled` \{#sync-networkingenabled} + + + + ``` + --sync-networkingenabled + --Sync.NetworkingEnabled + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_NETWORKINGENABLED= + ``` + + + + ```json + { + "Sync": { + "NetworkingEnabled": + } + } + ``` + + + + Whether to connect to peers and sync. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Sync.NonValidatorNode` \{#sync-nonvalidatornode} + + + + ``` + --sync-nonvalidatornode + --Sync.NonValidatorNode + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_NONVALIDATORNODE= + ``` + + + + ```json + { + "Sync": { + "NonValidatorNode": + } + } + ``` + + + + Whether to operate as a non-validator. If `true`, the `DownloadReceiptsInFastSync` and `DownloadBodiesInFastSync` can be set to `false`. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Sync.PivotHash` \{#sync-pivothash} + + + + ``` + --sync-pivothash + --Sync.PivotHash + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_PIVOTHASH= + ``` + + + + ```json + { + "Sync": { + "PivotHash": + } + } + ``` + + + + The hash of the pivot block for the Fast sync mode. Defaults to `null`. + + * #### `Sync.PivotNumber` \{#sync-pivotnumber} + + + + ``` + --sync-pivotnumber + --Sync.PivotNumber + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_PIVOTNUMBER= + ``` + + + + ```json + { + "Sync": { + "PivotNumber": + } + } + ``` + + + + The number of the pivot block for the Fast sync mode. Defaults to `0`. + + * #### `Sync.PivotTotalDifficulty` \{#sync-pivottotaldifficulty} + + + + ``` + --sync-pivottotaldifficulty + --Sync.PivotTotalDifficulty + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_PIVOTTOTALDIFFICULTY= + ``` + + + + ```json + { + "Sync": { + "PivotTotalDifficulty": + } + } + ``` + + + + The total difficulty of the pivot block for the Fast sync mode. Defaults to `null`. + + * #### `Sync.SnapSync` \{#sync-snapsync} + + + + ``` + --sync-snapsync + --Sync.SnapSync + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_SNAPSYNC= + ``` + + + + ```json + { + "Sync": { + "SnapSync": + } + } + ``` + + + + Whether to use the Snap sync mode. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Sync.SnapSyncAccountRangePartitionCount` \{#sync-snapsyncaccountrangepartitioncount} + + + + ``` + --sync-snapsyncaccountrangepartitioncount + --Sync.SnapSyncAccountRangePartitionCount + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_SNAPSYNCACCOUNTRANGEPARTITIONCOUNT= + ``` + + + + ```json + { + "Sync": { + "SnapSyncAccountRangePartitionCount": + } + } + ``` + + + + The number of account range partitions to create. Increases the Snap sync request concurrency. Allowed values are between between 1 and 256. Defaults to `8`. + + * #### `Sync.StrictMode` \{#sync-strictmode} + + + + ``` + --sync-strictmode + --Sync.StrictMode + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_STRICTMODE= + ``` + + + + ```json + { + "Sync": { + "StrictMode": + } + } + ``` + + + + Whether to disable some optimizations and do a more extensive sync. Useful when sync state is corrupted. Allowed values: `true` `false`. Defaults to `false`. + + * #### `Sync.SynchronizationEnabled` \{#sync-synchronizationenabled} + + + + ``` + --sync-synchronizationenabled + --Sync.SynchronizationEnabled + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_SYNCHRONIZATIONENABLED= + ``` + + + + ```json + { + "Sync": { + "SynchronizationEnabled": + } + } + ``` + + + + Whether to download and process new blocks. Allowed values: `true` `false`. Defaults to `true`. + + * #### `Sync.UseGethLimitsInFastBlocks` \{#sync-usegethlimitsinfastblocks} + + + + ``` + --sync-usegethlimitsinfastblocks + --Sync.UseGethLimitsInFastBlocks + ``` + + + + ``` + NETHERMIND_SYNCCONFIG_USEGETHLIMITSINFASTBLOCKS= + ``` + + + + ```json + { + "Sync": { + "UseGethLimitsInFastBlocks": + } + } + ``` + + + + Whether to make smaller requests, in Fast Blocks mode, to avoid Geth from disconnecting. On the Geth-heavy networks (e.g., Mainnet), it's a desired behavior while on `Nethermind`- or OpenEthereum-heavy networks (Aura), it slows down the sync by a factor of \~4. Allowed values: `true` `false`. Defaults to `true`. + + ### TraceStore + + * #### `TraceStore.BlocksToKeep` \{#tracestore-blockstokeep} + + + + ``` + --tracestore-blockstokeep + --TraceStore.BlocksToKeep + ``` + + + + ``` + NETHERMIND_TRACESTORECONFIG_BLOCKSTOKEEP= + ``` + + + + ```json + { + "TraceStore": { + "BlocksToKeep": + } + } + ``` + + + + The number of blocks to store, counting from the head. If `0`, all traces of the processed blocks are stored. Defaults to `10000`. + + * #### `TraceStore.DeserializationParallelization` \{#tracestore-deserializationparallelization} + + + + ``` + --tracestore-deserializationparallelization + --TraceStore.DeserializationParallelization + ``` + + + + ``` + NETHERMIND_TRACESTORECONFIG_DESERIALIZATIONPARALLELIZATION= + ``` + + + + ```json + { + "TraceStore": { + "DeserializationParallelization": + } + } + ``` + + + + The max parallelization when deserialization requests the `trace_filter` method. `0` to use the number of logical processors. If you experience a resource shortage, set to a low number. Defaults to `0`. + + * #### `TraceStore.Enabled` \{#tracestore-enabled} + + + + ``` + --tracestore-enabled + --TraceStore.Enabled + ``` + + + + ``` + NETHERMIND_TRACESTORECONFIG_ENABLED= + ``` + + + + ```json + { + "TraceStore": { + "Enabled": + } + } + ``` + + + + Whether to enable the TraceStore plugin. If enabled, traces come from the database whenever possible. Allowed values: `true` `false`. Defaults to `false`. + + * #### `TraceStore.TraceTypes` \{#tracestore-tracetypes} + + + + ``` + --tracestore-tracetypes + --TraceStore.TraceTypes + ``` + + + + ``` + NETHERMIND_TRACESTORECONFIG_TRACETYPES= + ``` + + + + ```json + { + "TraceStore": { + "TraceTypes": + } + } + ``` + + + + The type of traces to store. + + Allowed values: + + * `None`: None. + * `VmTrace`: Provides a full trace of the EVM state throughout the execution of transactions at each op-code, including subcalls. + * `StateDiff`: Provides Ethereum state difference detailing all altered portions of the state made due to the execution of transactions. + * `Trace`: Provides transaction trace, including subcalls. + * `Rewards`: Includes block rewards in the trace when tracing full blocks. + * `All`: Combines the `Rewards` `StateDiff` `Trace` `VmTrace` options. + + Defaults to `Trace, Rewards`. + + ### TxPool + + * #### `TxPool.BlobCacheSize` \{#txpool-blobcachesize} + + + + ``` + --txpool-blobcachesize + --TxPool.BlobCacheSize + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_BLOBCACHESIZE= + ``` + + + + ```json + { + "TxPool": { + "BlobCacheSize": + } + } + ``` + + + + The max number of full blob transactions cached in memory. The default value uses max 200MB for 6 blobs where one blob is 33MB (256 \* 128KB) Defaults to `256`. + + * #### `TxPool.BlobsSupport` \{#txpool-blobssupport} + + + + ``` + --txpool-blobssupport + --TxPool.BlobsSupport + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_BLOBSSUPPORT= + ``` + + + + ```json + { + "TxPool": { + "BlobsSupport": + } + } + ``` + + + + The blobs support mode. + + Allowed values: + + * `Disabled`: Disables support for blob transactions. + * `InMemory`: Stores the blob transactions in memory only. + * `Storage`: Stores the blob transactions in the permanent storage. + * `StorageWithReorgs`: Stores the blob transactions in the permanent storage with support for restoring reorganized transactions to the blob pool. + + Defaults to `StorageWithReorgs`. + + * #### `TxPool.GasLimit` \{#txpool-gaslimit} + + + + ``` + --txpool-gaslimit + --TxPool.GasLimit + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_GASLIMIT= + ``` + + + + ```json + { + "TxPool": { + "GasLimit": + } + } + ``` + + + + The max transaction gas allowed. Defaults to `null`. + + * #### `TxPool.HashCacheSize` \{#txpool-hashcachesize} + + + + ``` + --txpool-hashcachesize + --TxPool.HashCacheSize + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_HASHCACHESIZE= + ``` + + + + ```json + { + "TxPool": { + "HashCacheSize": + } + } + ``` + + + + The max number of cached hashes of already known transactions. Set automatically by the memory hint. Defaults to `524288`. + + * #### `TxPool.InMemoryBlobPoolSize` \{#txpool-inmemoryblobpoolsize} + + + + ``` + --txpool-inmemoryblobpoolsize + --TxPool.InMemoryBlobPoolSize + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_INMEMORYBLOBPOOLSIZE= + ``` + + + + ```json + { + "TxPool": { + "InMemoryBlobPoolSize": + } + } + ``` + + + + The max number of full blob transactions stored in memory. Used only if persistent storage is disabled. Defaults to `512`. + + * #### `TxPool.MaxBlobTxSize` \{#txpool-maxblobtxsize} + + + + ``` + --txpool-maxblobtxsize + --TxPool.MaxBlobTxSize + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_MAXBLOBTXSIZE= + ``` + + + + ```json + { + "TxPool": { + "MaxBlobTxSize": + } + } + ``` + + + + The max blob transaction size allowed, excluding blobs, in bytes. Defaults to `1048576`. + + * #### `TxPool.MaxPendingBlobTxsPerSender` \{#txpool-maxpendingblobtxspersender} + + + + ``` + --txpool-maxpendingblobtxspersender + --TxPool.MaxPendingBlobTxsPerSender + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_MAXPENDINGBLOBTXSPERSENDER= + ``` + + + + ```json + { + "TxPool": { + "MaxPendingBlobTxsPerSender": + } + } + ``` + + + + The max number of pending blob transactions per single sender. `0` to lift the limit. Defaults to `16`. + + * #### `TxPool.MaxPendingTxsPerSender` \{#txpool-maxpendingtxspersender} + + + + ``` + --txpool-maxpendingtxspersender + --TxPool.MaxPendingTxsPerSender + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_MAXPENDINGTXSPERSENDER= + ``` + + + + ```json + { + "TxPool": { + "MaxPendingTxsPerSender": + } + } + ``` + + + + The max number of pending transactions per single sender. `0` to lift the limit. Defaults to `0`. + + * #### `TxPool.MaxTxSize` \{#txpool-maxtxsize} + + + + ``` + --txpool-maxtxsize + --TxPool.MaxTxSize + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_MAXTXSIZE= + ``` + + + + ```json + { + "TxPool": { + "MaxTxSize": + } + } + ``` + + + + The max transaction size allowed, in bytes. Defaults to `131072`. + + * #### `TxPool.MinBaseFeeThreshold` \{#txpool-minbasefeethreshold} + + + + ``` + --txpool-minbasefeethreshold + --TxPool.MinBaseFeeThreshold + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_MINBASEFEETHRESHOLD= + ``` + + + + ```json + { + "TxPool": { + "MinBaseFeeThreshold": + } + } + ``` + + + + The minimal percentage of the current base fee that must be surpassed by the max fee (`max_fee_per_gas`) for the transaction to be broadcasted. Defaults to `70`. + + * #### `TxPool.PeerNotificationThreshold` \{#txpool-peernotificationthreshold} + + + + ``` + --txpool-peernotificationthreshold + --TxPool.PeerNotificationThreshold + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_PEERNOTIFICATIONTHRESHOLD= + ``` + + + + ```json + { + "TxPool": { + "PeerNotificationThreshold": + } + } + ``` + + + + The average percentage of transaction hashes from persistent broadcast sent to a peer together with hashes of the last added transactions. Defaults to `5`. + + * #### `TxPool.PersistentBlobStorageSize` \{#txpool-persistentblobstoragesize} + + + + ``` + --txpool-persistentblobstoragesize + --TxPool.PersistentBlobStorageSize + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_PERSISTENTBLOBSTORAGESIZE= + ``` + + + + ```json + { + "TxPool": { + "PersistentBlobStorageSize": + } + } + ``` + + + + The max number of full blob transactions stored in the database (increasing the number of transactions in the blob pool also results in higher memory usage). The default value uses max 13GB for 6 blobs where one blob is 2GB (16386 \* 128KB). Defaults to `16384`. + + * #### `TxPool.ReportMinutes` \{#txpool-reportminutes} + + + + ``` + --txpool-reportminutes + --TxPool.ReportMinutes + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_REPORTMINUTES= + ``` + + + + ```json + { + "TxPool": { + "ReportMinutes": + } + } + ``` + + + + The current transaction pool state reporting interval, in minutes. Defaults to `null`. + + * #### `TxPool.Size` \{#txpool-size} + + + + ``` + --txpool-size + --TxPool.Size + ``` + + + + ``` + NETHERMIND_TXPOOLCONFIG_SIZE= + ``` + + + + ```json + { + "TxPool": { + "Size": + } + } + ``` + + + + The max number of transactions held in the mempool (the more transactions in the mempool, the more memory used). Defaults to `2048`. + + ### Wallet + + * #### `Wallet.DevAccounts` \{#wallet-devaccounts} + + + + ``` + --wallet-devaccounts + --Wallet.DevAccounts + ``` + + + + ``` + NETHERMIND_WALLETCONFIG_DEVACCOUNTS= + ``` + + + + ```json + { + "Wallet": { + "DevAccounts": + } + } + ``` + + + + The number of autogenerated developer accounts to work with. Developer accounts have private keys from `00...01` to `00...n`. Defaults to `10`. + + ## Environment variables + + All configuration options have their environment variable counterparts, so `Nethermind` can be configured with environment variables the same way as with command line options. The environment variables follow this naming convention: + + ```text + NETHERMIND_{NAMESPACE}CONFIG_{OPTION} + ``` + + For instance, the environment variable equivalent of the `JsonRpc.JwtSecretFile` option is `NETHERMIND_JSONRPCCONFIG_JWTSECRETFILE`. For the full list of the available environment variables, see [Options by namespaces](#options-by-namespaces). + + ## Configuration file + + The configuration files use JSON format. The bundled configuration files are located in the `configs` directory and named after the network they are used for. For instance, see the Mainnet configuration file [`mainnet.json`](https://github.com/NethermindEth/nethermind/blob/master/src/Nethermind/Nethermind.Runner/configs/mainnet.json). + + [web3-secret-storage]: https://ethereum.org/en/developers/docs/data-structures-and-encoding/web3-secret-storage +
diff --git a/pages/operators/node-operators/json-rpc.mdx b/pages/operators/node-operators/json-rpc.mdx index 556e69099..0a1cbee66 100644 --- a/pages/operators/node-operators/json-rpc.mdx +++ b/pages/operators/node-operators/json-rpc.mdx @@ -1004,10 +1004,24 @@ Sample success output: todo: add Sample success output ``` -## op-geth +## Execution Clients +The OP Stack supports multiple execution client implementations. Each client implements the Execution-Layer with minimal changes for a secure Ethereum-equivalent application environment. -`op-geth` implements the Execution-Layer, with minimal changes for a secure Ethereum-equivalent application environment. + + + ### op-geth + + `op-geth` is the original execution client for the OP Stack, based on the Go Ethereum (Geth) implementation. + + The execution engine's RPC interface is identical to [the upstream Geth RPC interface](https://geth.ethereum.org/docs/interacting-with-geth/rpc). The responses are nearly identical too, except we also include the L1 gas usage and price information. + + + ### Nethermind -The execution engine's RPC interface is identical to [the upstream Geth RPC interface](https://geth.ethereum.org/docs/interacting-with-geth/rpc). The responses are nearly identical too, except we also include the L1 gas usage and price information. + `Nethermind` is a high-performance execution client implementation written in C#. The `Nethermind` client has been adapted to support OP Stack chains, providing an alternative execution client option for node operators. + + The execution engine's RPC interface is identical to [the upstream `Nethermind` RPC interface](https://docs.nethermind.io/interacting/json-rpc-server/). The responses are nearly identical too, except we also include the L1 gas usage and price information. + + diff --git a/pages/operators/node-operators/management/blobs.mdx b/pages/operators/node-operators/management/blobs.mdx index 42cfd532a..7205f1d37 100644 --- a/pages/operators/node-operators/management/blobs.mdx +++ b/pages/operators/node-operators/management/blobs.mdx @@ -41,16 +41,31 @@ See the [Software Releases](/operators/node-operators/releases) page for the min ### Configure the Ecotone activation date * If you are operating a node for an OP Chain that has an entry in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json), -the Ecotone activation date is part of the `op-node` and `op-geth` nodes. So, -no action is needed for the sequencer after upgrading to the latest release. -* For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json), -the activation dates can be set in the `rollup.json` (set `ecotone_time`) or -set the activation time via overrides (CLI) in both `op-node` and `op-geth`. -These will need to be set on `op-node` and `op-geth` for the sequencer and all other nodes. +the Ecotone activation date is handled automatically by both execution clients: + + + + The activation date is part of the node configuration. No action needed after upgrading to the latest release. + + + The activation date is included in the built-in chain configuration. No action needed after upgrading to the latest release. + + + +* For node operators of custom chains not included in the [`superchain-registry`](https://github.com/ethereum-optimism/superchain-registry/blob/main/chainList.json): + + + + Set the activation time in `rollup.json` (`ecotone_time`) and via CLI overrides + + + Use the chain configuration examples in `src/Nethermind/Chains` as templates for your custom chain configuration + + - Even if the ecotone activation is configured via the `rollup.json`, it still - needs to be configured separately on `op-geth` via command line flag. + When using `op-geth`, even if the ecotone activation is configured via the `rollup.json`, it still + needs to be configured separately via command line flag. diff --git a/pages/operators/node-operators/management/snap-sync.mdx b/pages/operators/node-operators/management/snap-sync.mdx index 05c6a954b..fe73d1688 100644 --- a/pages/operators/node-operators/management/snap-sync.mdx +++ b/pages/operators/node-operators/management/snap-sync.mdx @@ -25,7 +25,7 @@ import { Tabs } from 'nextra/components' This guide reviews the optional feature of Snap Sync for node operators, including benefits and how to enable the feature. -Snap Sync significantly improves the experience of syncing an OP Stack node. Snap Sync is a native feature of go-ethereum that is now optionally enabled on `op-node` & `op-geth`. +Snap Sync significantly improves the experience of syncing an OP Stack node. Snap Sync is a native feature of the execution clients. Both `op-geth` and `nethermind` support Snap Sync, which can be optionally enabled on `op-node` with `op-geth` or `nethermind`. Snap Sync works by downloading a snapshot of the state from other nodes on the network and is then able to start executing blocks from the completed state rather than having to re-execute every single block. This means that performing a Snap Sync is significantly faster than performing a full sync. @@ -36,7 +36,7 @@ This means that performing a Snap Sync is significantly faster than performing a ## Enable snap sync for your node -For snap sync, all `op-geth` nodes should expose port `30303` TCP and `30303` UDP to easily find other op-geth nodes to sync from. +For snap sync, nodes should expose port `30303` TCP and `30303` UDP to easily find other nodes to sync from. * If you set the port with [`--discovery.port`](/operators/node-operators/configuration/execution-config#discoveryport), then you must open the port specified for UDP. * If you set [`--port`](/operators/node-operators/configuration/execution-config#port), then you must open the port specified for TCP. * The only exception is for sequencers and transaction ingress nodes. @@ -46,7 +46,7 @@ Choose one of the following options to enable snap sync: * **Option 1:** Snap sync, no required datadir on OP Mainnet. This is the recommended option because `op-node` tells `op-geth` to snap sync and then `op-geth` downloads the state at tip and once complete switches to inserting blocks one by one. - + ```shell --syncmode=execution-layer (not default) @@ -58,12 +58,23 @@ Choose one of the following options to enable snap sync: --syncmode=snap (default) ``` + + + ```shell + --config op-mainnet + --Sync.SnapSync=true + ``` + + + A single restart of `Nethermind` during Snap Sync may extend the sync time by up to 2 hours because `Nethermind` has to rebuild the caches by reading millions of values from the database. + + * **Option 2:** Archive sync with required [datadir](snapshots) for OP Mainnet, but no required datadir for other OP Stack networks. This option is faster for archive nodes than other options because `--syncmode=full` means `op-geth` executes every block in the chain. - + ```shell --syncmode=execution-layer (not default) @@ -76,12 +87,19 @@ Choose one of the following options to enable snap sync: --gcmode=archive (not default) ``` + + + Archive sync can be enabled by using the archive configuration for your network (configurations with `_archive` suffix): + ```shell + --config op-mainnet_archive + ``` + -* **Option 3:** Continue using current sync approach (before Ecotone) where `op-node` reads from L1 and inserts blocks into `op-geth`. +* **Option 3:** Continue using current sync approach (before Ecotone) where `op-node` reads from L1 and inserts blocks into the execution client. This option might be preferred for decentralized developer groups who need to confirm everything on the chain. - + ```shell --syncmode=consensus-layer (default) @@ -93,12 +111,20 @@ Choose one of the following options to enable snap sync: --syncmode=full (not default) ``` + + + ```shell + --config op-mainnet + --Sync.SnapSync=false + --Sync.FastSync=false + ``` + ## Enabling execution layer sync for alternative clients -In addition to op-geth, you can enable execution-layer syncing with alternative execution clients such as `reth` and `op-erigon`. +In addition to `op-geth` and `Nethermind`, you can enable execution-layer syncing with alternative execution clients such as `reth` and `op-erigon`. -Unlike `op-geth`, `reth` and `op-erigon` are designed as archive nodes, which means they require the complete history of the chain. +Unlike `op-geth` and `Nethermind`, `reth` and `op-erigon` are designed as archive nodes, which means they require the complete history of the chain. However, these clients can still retrieve block headers and data through the P2P network instead of deriving each individual block, resulting in a faster initial sync. For OP Mainnet, the [bedrock datadir](snapshots) is required. For other OP Stack networks, no datadir is required. diff --git a/pages/operators/node-operators/management/snapshots.mdx b/pages/operators/node-operators/management/snapshots.mdx index 0bb8d7730..9927d780f 100644 --- a/pages/operators/node-operators/management/snapshots.mdx +++ b/pages/operators/node-operators/management/snapshots.mdx @@ -26,16 +26,52 @@ This page contains download links for data directories and node snapshots that c Data directories and node snapshots are not required but can significantly simplify the node operation process. - Data directories and node snapshots are **not required** for nodes using [snap sync](snap-sync) but are still required for archive nodes and in instances when you need to trace the entire chain. + Data directories and node snapshots are **not required** in the following cases: + + * When using [snap sync](snap-sync) with op-geth + * When using `Nethermind` (automatically handles snapshots) + + They are still required for archive nodes and in instances when you need to trace the entire chain with `op-geth`. -## About the Bedrock migration +## About snapshots and execution clients + +### op-geth OP Mainnet underwent a large [database migration](https://web.archive.org/web/20240110231645/https://blog.oplabs.co/reproduce-bedrock-migration/) as part of the [Bedrock Upgrade](https://web.archive.org/web/20230608050602/https://blog.oplabs.co/introducing-optimism-bedrock/) in 2023. -Node operators must have a migrated OP Mainnet database to run a node. -Migrated OP Mainnet databases can be generated manually or pre-migrated databases can be downloaded from the links on this page. +Node operators using `op-geth` must have a migrated OP Mainnet database to run a node. +Migrated OP Mainnet databases can be generated manually or pre-migrated databases can be downloaded from the links below. + +### Nethermind + +Nethermind automatically handles downloading and applying the necessary snapshots when you start the node. No manual snapshot download is required. The node will: + +1. Start with an empty database +2. Automatically download the required ancient data +3. Apply the data and continue syncing + +This process is fully automated and requires no additional configuration. +When you run `Nethermind` with the `-c op-mainnet` flag, it uses this configuration automatically. + +## Available Snapshots + +### Nethermind -## Snapshots +Nethermind provides an official snapshot through their snapshot service: + +| Network | Size | Download Link | Checksum | +| ---------- | ----- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------- | +| OP Mainnet | \~2GB | [Download](http://optimism-snapshot.nethermind.io/op-mainnet-genesis-v1.zip) | `0xd7e15b26175c4c924acf75c5790e75d5eaa044977ca8e1904dc62d5d0769eba3` | + + + When using Nethermind, you don't need to manually download these snapshots. They are automatically downloaded when you start the node with `-c op-mainnet`. + + +### op-geth + + + The following snapshots are required for op-geth nodes. Unlike Nethermind, op-geth requires manual snapshot management. + Always verify snapshots by comparing the sha256sum of the downloaded file to the sha256sum listed on this page. diff --git a/pages/operators/node-operators/management/troubleshooting.mdx b/pages/operators/node-operators/management/troubleshooting.mdx index 559f508fa..359190096 100644 --- a/pages/operators/node-operators/management/troubleshooting.mdx +++ b/pages/operators/node-operators/management/troubleshooting.mdx @@ -18,7 +18,7 @@ categories: is_imported_content: 'false' --- -import {Callout} from 'nextra/components' +import {Callout, Tabs} from 'nextra/components' # Node Troubleshooting @@ -32,12 +32,12 @@ If you see a log that looks like this in `op-node`: WARN [12-13|15:53:20.263] Derivation process temporary error attempts=80 err="stage 0 failed resetting: temp: failed to find the L2 Heads to start from: failed to fetch current L2 forkchoice state: failed to find the finalized L2 block: failed to determine L2BlockRef of finalized, could not get payload: 401 Unauthorized: signature is invalid ``` -It means that the `op-node` is unable to authenticate with `op-geth`'s authenticated RPC using the JWT secret. +It means that the `op-node` is unable to authenticate with `execution client`'s authenticated RPC using the JWT secret. ### Solution 1. Check that the JWT secret is correct in both services. -2. Check that `op-geth`'s authenticated RPC is enabled, and that the URL is correct. +2. Check that `execution client`'s authenticated RPC is enabled, and that the URL is correct. ## 403 Forbidden: Invalid Host Specified @@ -47,12 +47,12 @@ If you see a log that looks like this in `op-node`: {"err":"403 Forbidden: invalid host specified\n","lvl":"error","msg":"error getting latest header","t":"2022-12-13T22:29:18.932833159Z"} ``` -It means that you have not whitelisted `op-node`'s host with `op-geth`. +It means that you have not whitelisted `op-node`'s host with `execution client`. ### Solution -1. Make sure that the `--authrpc.vhosts` parameter in `op-geth` is either set to the correct host, or `*`. -2. Check that `op-geth`'s authenticated RPC is enabled, and that the URL is correct. +1. Make sure that the `--authrpc.vhosts` parameter in `execution client` is either set to the correct host, or `*`. +2. Check that `execution client`'s authenticated RPC is enabled, and that the URL is correct. ## Failed to Load P2P Config @@ -62,7 +62,7 @@ If you see a log that looks like this in `op-node`: CRIT [12-13|13:46:21.386] Application failed message="failed to load p2p config: failed to load p2p discovery options: failed to open discovery db: mkdir /p2p: permission denied" ``` -It means that the `op-node` lacks write access to the P2P discovery or peerstore directories. +It means that the `op-node` lacks write access to the P2P discovery or peerstore directories. ### Solution @@ -78,40 +78,75 @@ If you see a log that looks like this in `op-node`: {"attempts":183,"err":"stage 0 failed resetting: temp: failed to find the L2 Heads to start from: wrong chain L1: genesis: 0x4104895a540d87127ff11eef0d51d8f63ce00a6fc211db751a45a4b3a61a9c83:8106656, got 0x12e2c18a3ac50f74d3dd3c0ed7cb751cc924c2985de3dfed44080e683954f1dd:8106656","lvl":"warn","msg":"Derivation process temporary error","t":"2022-12-13T23:31:37.855253213Z"} ``` -It means that the `op-node` is pointing to the wrong chain. +It means that the `op-node` is pointing to the wrong chain. ### Solution 1. Verify that the `op-node`'s L1 URL is pointing to the correct L1 for the given network. 2. Verify that the `op-node`'s rollup config/`--network` parameter is set to the correct network. -3. Verify that the `op-node`'s L2 URL is pointing to the correct instance of `op-geth`, and that `op-geth` is properly initialized for the given network. +3. Verify that the `op-node`'s L2 URL is pointing to the correct instance of `execution client`, and that `execution client` is properly initialized for the given network. ## Unclean Shutdowns -If you see a log that looks like this in `op-geth`: +If you see a log that looks like this in `execution client`: ``` WARN [03-05|16:18:11.238] Unclean shutdown detected booted=2023-03-05T11:09:26+0000 age=5h8m45s ``` -It means `op-geth` has experienced an unclean shutdown. The [geth docs](https://geth.ethereum.org/docs/fundamentals/databases#unclean-shutdowns) -say if Geth stops unexpectedly, the database can be corrupted. This is known as an -"unclean shutdown" and it can lead to a variety of problems for the node when -it is restarted. - -It is always best to shut down Geth gracefully, i.e. using a -shutdown command such as `ctrl-c`, `docker stop -t 300 ` or -`systemctl stop` (although please note that `systemctl stop` has a default timeout -of 90s - if Geth takes longer than this to gracefully shut down it will quit -forcefully. Update the `TimeoutSecs` variable in `systemd.service` to override this -value to something larger, at least 300s). - -This way, Geth knows to write all relevant information into the database to -allow the node to restart properly later. This can involve >1GB of information -being written to the LevelDB database which can take several minutes. - -### Solution - -If an unexpected shutdown does occur, the `removedb` subcommand can be used to -delete the state database and resync it from the ancient database. This should -get the database back up and running. +It means `execution client` has experienced an unclean shutdown. The [geth docs](https://geth.ethereum.org/docs/fundamentals/databases#unclean-shutdowns) +say if Geth stops unexpectedly, the database can be corrupted. This is known as an +"unclean shutdown" and it can lead to a variety of problems for the node when +it is restarted. + + + + It is always best to shut down Geth gracefully, i.e. using a + shutdown command such as `ctrl-c`, `docker stop -t 300 ` or + `systemctl stop` (although please note that `systemctl stop` has a default timeout + of 90s - if Geth takes longer than this to gracefully shut down it will quit + forcefully. Update the `TimeoutSecs` variable in `systemd.service` to override this + value to something larger, at least 300s). + + This way, Geth knows to write all relevant information into the database to + allow the node to restart properly later. This can involve >1GB of information + being written to the LevelDB database which can take several minutes. + + ### Solution + + If an unexpected shutdown does occur, the `removedb` subcommand can be used to + delete the state database and resync it from the ancient database. This should + get the database back up and running. + + + + Unclean shutdowns in `Nethermind` can lead to database corruption. This typically happens when: + + * The node experiences hardware failures (disk failures, memory errors, overheating) + * Power cuts cause abrupt shutdowns + * The process is terminated without proper cleanup + + ### Solutions + + 1. **Lock File Issues** + If `Nethermind` complains about lock files after an unclean shutdown, run: + ```bash + find /path/to/nethermind_db -type f -name 'LOCK' -delete + ``` + + 2. **Block Checksum Mismatch** + If you encounter block checksum mismatch errors, you can enable direct I/O: + ```bash + --Db.UseDirectIoForFlushAndCompactions true + ``` + Note: This may impact performance. + + 3. **Complete Resync** + In cases of severe corruption, a full resync is recommended: + ```bash + sudo systemctl stop nethermind + sudo rm -rf /path/to/nethermind_db/mainnet + sudo systemctl start nethermind + ``` + + diff --git a/pages/operators/node-operators/releases.mdx b/pages/operators/node-operators/releases.mdx index 6e54c2268..723a2788d 100644 --- a/pages/operators/node-operators/releases.mdx +++ b/pages/operators/node-operators/releases.mdx @@ -25,33 +25,46 @@ import { Callout } from 'nextra/components' This page gives information on the off chain node software release information. - Our latest releases, notes, and changelogs can be found on GitHub. `op-node` releases can be found [here](https://github.com/ethereum-optimism/optimism/releases) - and `op-geth` releases can be found [here](https://github.com/ethereum-optimism/op-geth/releases). + Our latest releases, notes, and changelogs can be found on GitHub. -## Production releases +## Components -Chain and node operators should always run the latest production releases of the OP Stack's off-chain components. Production releases are always tags, versioned as `/v`. For example, an `op-node` release might be versioned as `op-node/v1.7.5`. Tags of the form `v`, such as `v1.7.6`, indicate releases of all Go code only and DO NOT include smart contracts. This naming scheme is required by Golang. In the above list, these `v` releases contain all `op-*` components and exclude all `contracts-*` components. +### Rollup Node (`op-node`) -`op-geth` embeds upstream geth's version inside its own version as follows: `vMAJOR.GETH_MAJOR GETH_MINOR GETH_PATCH.PATCH`. Basically, geth's version is our minor version. For example, if geth is at `v1.12.0`, the corresponding `op-geth` version would be `v1.101200.0`. Note that we pad out to three characters for the geth minor version and two characters for the geth patch version. Since we cannot left-pad with zeroes, the geth major version is not padded. +The rollup node (`op-node`) coordinates the execution of the OP Stack chain. Chain operators should always run the latest production release. -### Docker images +* **GitHub Releases**: [optimism/releases](https://github.com/ethereum-optimism/optimism/releases) +* **Docker Images**: [ethereumoptimism/op-node](https://hub.docker.com/r/ethereumoptimism/op-node/tags) +* **Version Format**: `v` (e.g., `v1.9.1`) -To make it easier to find and use our Docker images, each release entry below provides links to the corresponding Docker images: +### Execution Clients -* **op-node**: Docker images can be found [here](https://hub.docker.com/r/ethereumoptimism/op-node/tags). -* **op-geth**: Docker images can be found [here](https://hub.docker.com/r/ethereumoptimism/op-geth/tags). +The execution client processes transactions and maintains the state of the chain. The OP Stack supports multiple execution client implementations: -### Example Docker image tags +#### op-geth -We follow a consistent tagging convention to make it easier to find the right image. Here are some examples: +* **GitHub Releases**: [op-geth/releases](https://github.com/ethereum-optimism/op-geth/releases) +* **Docker Images**: [ethereumoptimism/op-geth](https://hub.docker.com/r/ethereumoptimism/op-geth/tags) +* **Version format**: `v..` + * Example: For Geth v1.12.0 and OP-Geth patch 0, the version is `v1.101200.0` + * Minor versions are zero-padded to three digits; patch versions are zero-padded to two digits -* `optimism/op-node:` -* `optimism/op-geth:` +#### Nethermind -## Release entries +* **GitHub Releases**: [nethermind/releases](https://github.com/NethermindEth/nethermind/releases) +* **Docker Images**: [nethermind/nethermind](https://hub.docker.com/r/nethermind/nethermind/tags) +* **Version Format**: `MAJOR.MINOR.PATCH` + * Example: For `Nethermind` 1.31.6, the version would be `1.31.6` + * Follows the standard semantic version format -| Network | op-node | op-geth | -| ---------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | -| OP Mainnet | [v1.9.1](https://github.com/ethereum-optimism/optimism/releases/tag/v1.9.1) | [v1.101408.0](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101408.0) | -| OP Sepolia | [v1.9.1](https://github.com/ethereum-optimism/optimism/releases/tag/v1.9.1) | [v1.101408.0](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101408.0) | +## Current Network Versions + +| Network | Component | Client | Version | Release | +| ---------- | --------- | ---------- | ----------- | -------------------------------------------------------------------------------------- | +| OP Mainnet | op-node | - | v1.9.1 | [Release Notes](https://github.com/ethereum-optimism/optimism/releases/tag/v1.9.1) | +| OP Mainnet | - | op-geth | v1.101408.0 | [Release Notes](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101408.0) | +| OP Mainnet | - | Nethermind | v1.31.6 | [Release Notes](https://github.com/NethermindEth/nethermind/releases/tag/1.31.6) | +| OP Sepolia | op-node | - | v1.9.1 | [Release Notes](https://github.com/ethereum-optimism/optimism/releases/tag/v1.9.1) | +| OP Sepolia | - | op-geth | v1.101408.0 | [Release Notes](https://github.com/ethereum-optimism/op-geth/releases/tag/v1.101408.0) | +| OP Sepolia | - | Nethermind | v1.31.6 | [Release Notes](https://github.com/NethermindEth/nethermind/releases/tag/1.31.6) | diff --git a/pages/operators/node-operators/rollup-node.mdx b/pages/operators/node-operators/rollup-node.mdx index 961d5a30b..7bb85d993 100644 --- a/pages/operators/node-operators/rollup-node.mdx +++ b/pages/operators/node-operators/rollup-node.mdx @@ -55,8 +55,9 @@ OP Stack rollup nodes can be configured for individual needs. The following step {

Setup Your Working Base Configs

} - * Configure `op-geth` using the [base configuration](/operators/node-operators/configuration/base-config#working-base-configuration). - * Set the [recommended flags for `op-geth`](/operators/node-operators/configuration/base-config#recommended-flags-for-op-geth-configuration) to follow best practices for configuring OP Stack rollup nodes. + * Configure your execution client: + * For `op-geth`: Use the [base configuration](/operators/node-operators/configuration/base-config#working-base-configuration) and set the [recommended flags](/operators/node-operators/configuration/base-config#recommended-flags-for-op-geth-configuration) + * For `nethermind`: Use the [base configuration](/operators/node-operators/configuration/base-config#working-base-configuration-nethermind) and set the [recommended flags](/operators/node-operators/configuration/base-config#recommended-flags-for-nethermind-configuration) * Configure `op-node` using the [base configuration](/operators/node-operators/configuration/base-config#working-base-configuration-1). {

Enable Snap Sync

} @@ -65,7 +66,7 @@ OP Stack rollup nodes can be configured for individual needs. The following step This is an **optional** feature but highly recommended for node providers. - Additional configuration options exist for [`op-geth`](/operators/node-operators/configuration/execution-config) and [`op-node`](/operators/node-operators/configuration/consensus-config), respectively. + Additional configuration options exist for execution clients and `op-node`. See the [Execution Client Configuration](/operators/node-operators/configuration/execution-config) and [`op-node`](/operators/node-operators/configuration/consensus-config), respectively.
@@ -94,7 +95,7 @@ Now, you will run your node and set your node debugging log level for more granu ## Monitor your node -It is important to regularly monitor your node, and you can optionally configure prometheus and grafana dashboard to make this process easier for you. +It is important to regularly monitor your node, and you can optionally configure Prometheus and Grafana dashboard to make this process easier for you. {

Enable the Metrics Port

} @@ -102,15 +103,20 @@ It is important to regularly monitor your node, and you can optionally configure * Enable the [metrics port](/operators/node-operators/management/metrics) for your node by passing the `--metrics.enabled` flag to `op-node`. * Optionally, you can customize the metrics port and address via the `--metrics.port` and `--metrics.addr` flags, respectively. - {

Setup Prometheus & Grafana

} + {

Set up Prometheus & Grafana

} - The following steps are intended for `go-ethereum`, so it must be tweaked to work for rollup nodes running within the Superchain. + The following steps vary depending on your execution client. - * Setup [influxdb](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-influxdb) to hold metrics data. - * Setup [prometheus](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-prometheus) to read your endpoint. - * Setup your [grafana dashboard](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-grafana) to provide UI for metrics. + For `op-geth`: + * Set up [InfluxDB](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-influxdb) to hold metrics data + * Set up [Prometheus](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-prometheus) to read your endpoint + * Set up your [Grafana dashboard](https://geth.ethereum.org/docs/monitoring/dashboards#setting-up-grafana) to provide a UI for metrics + + For `Nethermind`: + * Set up [Grafana and Prometheus](https://docs.nethermind.io/monitoring/metrics/grafana-and-prometheus/#step-1-set-up-grafana-and-prometheus) + * Follow the [metrics documentation](https://docs.nethermind.io/monitoring/metrics/) for detailed monitoring setup
## Follow node updates diff --git a/pages/operators/node-operators/tutorials/node-from-docker.mdx b/pages/operators/node-operators/tutorials/node-from-docker.mdx index b17efcac6..2f23aba05 100644 --- a/pages/operators/node-operators/tutorials/node-from-docker.mdx +++ b/pages/operators/node-operators/tutorials/node-from-docker.mdx @@ -27,6 +27,10 @@ This tutorial will walk you through the process of using [`simple-optimism-node` `simple-optimism-node` also provides useful tools like a monitoring dashboard and health checking software. Although less flexible than [running a node from source](/operators/node-operators/tutorials/node-from-source) or building your own Docker setup, this is a great way to quickly get started with OP Mainnet. + + By default, `simple-optimism-node` uses `op-geth` as the execution client. Support for `Nethermind` as an alternative execution client is also available. + + ## What's included `simple-optimism-node` includes all the basic components to run an OP Mainnet or OP Sepolia node. @@ -76,6 +80,11 @@ Configuration for `simple-optimism-node` is handled through environment variable * `full` (Full node) - A Full node contains a few recent blocks without historical states. * `archive` (Archive node) - An Archive node stores the complete history of the blockchain, including historical states. + **EXECUTION_CLIENT** - Choose which execution client to use: + + * `op-geth` - The original execution client for OP Stack (default if not specified) + * `nethermind` - Alternative high-performance execution client written in C# + **OP_NODE__RPC_ENDPOINT** - Specify the endpoint for the RPC of Layer 1 (e.g., Ethereum mainnet). For instance, you can use the free plan of Alchemy for the Ethereum mainnet. **OP_NODE__L1_BEACON** - Specify the beacon endpoint of Layer 1. You can use [QuickNode for the beacon endpoint](https://www.quicknode.com). For example: `https://xxx-xxx-xxx.quiknode.pro/db55a3908ba7e4e5756319ffd71ec270b09a7dce`. @@ -104,6 +113,8 @@ The following command will start the node in the background. docker compose up -d --build ``` +The node will start with the execution client you specified in your `.env` file. If you didn't specify an execution client, `op-geth` will be used by default. + ## Upgrade the node Pull the latest updates from GitHub, Docker Hub and rebuild the container. diff --git a/pages/operators/node-operators/tutorials/node-from-source.mdx b/pages/operators/node-operators/tutorials/node-from-source.mdx index 0caf296f6..bfbf2611a 100644 --- a/pages/operators/node-operators/tutorials/node-from-source.mdx +++ b/pages/operators/node-operators/tutorials/node-from-source.mdx @@ -15,7 +15,7 @@ categories: is_imported_content: 'false' --- -import { Callout, Steps } from 'nextra/components' +import { Callout, Steps, Tabs } from 'nextra/components' # Building a Superchain node from source @@ -39,7 +39,56 @@ The Execution Client is responsible for executing the block payloads it receives The Execution Client exposes the standard JSON-RPC API that Ethereum developers are familiar with, and can be used to query blockchain data and submit transactions to the network. The Execution Client is largely analogous to an [execution client](https://ethereum.org/en/developers/docs/nodes-and-clients/#what-are-nodes-and-clients) in Ethereum. -In this tutorial you will build the `op-geth` implementation of the Execution Client as found in the [`op-geth` repository](https://github.com/ethereum-optimism/op-geth). + + + The `op-geth` implementation of the Execution Client can be found in the [`op-geth` repository](https://github.com/ethereum-optimism/op-geth). + + #### Prerequisites + + * Go 1.21 or later + * Make + + #### Building + + Follow the instructions in the `op-geth` repository to build from source. + + + + `Nethermind` is an alternative execution client implementation written in .NET. + + #### Prerequisites + + * [.NET SDK](https://aka.ms/dotnet/download) 9 or later + + #### Building + + + 1. Clone the repository: + The `Nethermind`'s source code can be obtained from [`nethermind` repository](https://github.com/NethermindEth/nethermind) + + ```bash + git clone --recursive https://github.com/nethermindeth/nethermind.git + ``` + + 2. Build the source: + + ```bash + dotnet build src/Nethermind/Nethermind.sln -c release + ``` + + 3. Run `Nethermind` (this will build it first if needed): + + ```bash + cd src/Nethermind/Nethermind.Runner + dotnet run -c release -- -c mainnet + ``` + + The build artifacts will be located in `src/Nethermind/artifacts/bin/Nethermind.Runner/release`. + + + For more details about running a `Nethermind` node, see the [`Nethermind` documentation](https://docs.nethermind.io/get-started/running-node/). + + ### Legacy Geth (optional) @@ -58,81 +107,75 @@ Our build environment is managed through a tool called [mise](https://mise.jdx.d First you're going to build the `op-node` implementation of the Rollup Node as found in the [Optimism Monorepo](https://github.com/ethereum-optimism/optimism). - + {

Clone the Optimism Monorepo

} -{

Clone the Optimism Monorepo

} - -The Optimism Monorepo contains the source code for the `op-node`. + The Optimism Monorepo contains the source code for the `op-node`. -```bash -git clone https://github.com/ethereum-optimism/optimism.git -cd optimism -``` + ```bash + git clone https://github.com/ethereum-optimism/optimism.git + cd optimism + ``` -{

Check out the required release branch

} + {

Check out the required release branch

} -Release branches are created when new versions of the `op-node` are created. -Read through the [Releases page](https://github.com/ethereum-optimism/optimism/releases) to determine the correct branch to check out. + Release branches are created when new versions of the `op-node` are created. + Read through the [Releases page](https://github.com/ethereum-optimism/optimism/releases) to determine the correct branch to check out. -```bash -git checkout -``` + ```bash + git checkout + ``` - -Make sure to read the Releases page carefully to determine the correct branch to check out. -Some releases may only be required for the OP Sepolia testnet. - + + Make sure to read the Releases page carefully to determine the correct branch to check out. + Some releases may only be required for the OP Sepolia testnet. + -{

Build op-node

} + {

Build `op-node`

} -Build the `op-node` implementation of the Rollup Node. - -```bash -cd op-node -just -``` + Build the `op-node` implementation of the Rollup Node. + ```bash + cd op-node + just + ```
## Build the execution client -Next you're going to build the `op-geth` implementation of the Execution Client as found in the [op-geth repository](https://github.com/ethereum-optimism/op-geth). +Next you're going to build the `op-geth` implementation of the Execution Client as found in the [`op-geth` repository](https://github.com/ethereum-optimism/op-geth). + {

Clone `op-geth`

} -{

Clone op-geth

} - -The [`op-geth` repository](https://github.com/ethereum-optimism/op-geth) contains the source code for the `op-geth` implementation of the Execution Client. - -```bash -git clone https://github.com/ethereum-optimism/op-geth.git -cd op-geth -``` + The [`op-geth` repository](https://github.com/ethereum-optimism/op-geth) contains the source code for the `op-geth` implementation of the Execution Client. -{

Check out the required release branch

} + ```bash + git clone https://github.com/ethereum-optimism/op-geth.git + cd op-geth + ``` + {

Check out the required release branch

} -Release branches are created when new versions of the `op-geth` are created. -Read through the [Releases page](https://github.com/ethereum-optimism/op-geth/releases) to determine the correct branch to check out. + Release branches are created when new versions of the `op-geth` are created. + Read through the [Releases page](https://github.com/ethereum-optimism/op-geth/releases) to determine the correct branch to check out. -```bash -git checkout -``` + ```bash + git checkout + ``` - -Make sure to read the Releases page carefully to determine the correct branch to check out. -Some releases may only be required for the OP Sepolia testnet. - + + Make sure to read the Releases page carefully to determine the correct branch to check out. + Some releases may only be required for the OP Sepolia testnet. + -{

Build op-geth

} + {

Build `op-geth`

} -Build the `op-geth` implementation of the Execution Client. - -```bash -make geth -``` + Build the `op-geth` implementation of the Execution Client. + ```bash + make geth + ```
## Build legacy Geth (optional) @@ -142,23 +185,21 @@ Legacy Geth allows you to execute stateful queries like `eth_call` against block Legacy Geth is only relevant to OP Mainnet archive nodes and is not required for full nodes or OP Sepolia nodes. + {

Clone the OP Legacy Repository

} -{

Clone the OP Legacy Repository

} - -The OP Legacy repository contains the source code for the `l2geth` implementation of Legacy Geth. - -```bash -git clone https://github.com/ethereum-optimism/optimism-legacy.git -cd optimism-legacy -``` + The OP Legacy repository contains the source code for the `l2geth` implementation of Legacy Geth. -{

Build l2geth

} + ```bash + git clone https://github.com/ethereum-optimism/optimism-legacy.git + cd optimism-legacy + ``` -```bash -cd l2geth -make -``` + {

Build l2geth

} + ```bash + cd l2geth + make + ```
## Next steps diff --git a/pages/operators/node-operators/tutorials/run-node-from-source.mdx b/pages/operators/node-operators/tutorials/run-node-from-source.mdx index 5ef37b03d..978a6686a 100644 --- a/pages/operators/node-operators/tutorials/run-node-from-source.mdx +++ b/pages/operators/node-operators/tutorials/run-node-from-source.mdx @@ -18,7 +18,7 @@ categories: is_imported_content: 'false' --- -import { Callout, Steps } from 'nextra/components' +import { Callout, Steps, Tabs } from 'nextra/components' # Running a Superchain node from source @@ -27,7 +27,7 @@ Running an OP Stack node from source code is a flexible alternative to using pre ## Building the source code -You'll need to build `op-node` and `op-geth` from their respective source repositories before you can run a node. +You'll need to build `op-node` and execution client (`op-geth` or `Nethermind`) from their respective source repositories before you can run a node. Make sure to follow the instructions on [Building a Node from Source](./node-from-source) before continuing. ## Hardware requirements @@ -55,7 +55,7 @@ Based on these trends, node operators should plan for future storage needs and c ## Superchain nodes -All nodes in the Superchain ecosystem can be run from `op-node` and `op-geth` binaries if they're included in the [Superchain Registry](/superchain/superchain-registry). You can specify the type of node you want to run by configuring the `--network` flag on `op-node` and the `--op-network` flag on `op-geth`. +All nodes in the Superchain ecosystem can be run from `op-node` and an execution client (`op-geth` or `Nethermind`) if they're included in the [Superchain Registry](/superchain/superchain-registry). You can specify the type of node you want to run by configuring the `--network` flag on `op-node` and the corresponding network flag on your execution client (`--op-network` for `op-geth` or `-c` for `Nethermind`). ### Assess blob archiver @@ -63,9 +63,9 @@ Assess if you need to configure a blob archiver service by reading the [Configur ### Create a JWT secret -`op-geth` and `op-node` communicate over the engine API authrpc. +The execution client and `op-node` communicate over the engine API authrpc. This communication is secured using a shared secret. -You will need to generate a shared secret and provide it to both `op-geth` and `op-node` when you start them. +You will need to generate a shared secret and provide it to both your execution client and `op-node` when you start them. In this case, the secret takes the form of a 32 byte hex string. Run the following command to generate a random 32 byte hex string: @@ -74,69 +74,114 @@ Run the following command to generate a random 32 byte hex string: openssl rand -hex 32 > jwt.txt ``` -### Start `op-geth` +### Start the execution client -It's generally easier to start `op-geth` before starting `op-node`. -You can still start `op-geth` without yet running `op-node`, but the `op-geth` instance will simply not receive any blocks until `op-node` is started. +It's generally easier to start the execution client before starting `op-node`. +You can still start the execution client without yet running `op-node`, but it will simply not receive any blocks until `op-node` is started. - - {

Navigate to your op-geth directory

} + + + + {

Navigate to your `op-geth` directory

} - Find the directory where you built the `op-geth` binary. + Find the directory where you built the `op-geth` binary. - {

Copy in the JWT secret

} + {

Copy in the JWT secret

} - Copy the JWT secret you generated in a previous step into the `op-geth` directory. + Copy the JWT secret you generated in a previous step into the `op-geth` directory. - ```bash - cp /path/to/jwt.txt . - ``` + ```bash + cp /path/to/jwt.txt . + ``` - {

Set environment variables

} + {

Set environment variables

} - Set the following environment variables: + Set the following environment variables: - ```bash - export DATADIR_PATH=... # Path to the desired data directory for op-geth - ``` + ```bash + export DATADIR_PATH=... # Path to the desired data directory for op-geth + ``` - {

Start op-geth

} + {

Start `op-geth`

} - - If you want to run an archive node, you will need to set `--gcmode=archive`. If you want to run an OP Mainnet archive node, please refer to the [OP Mainnet archive nodes](#op-mainnet-archive-nodes) section. - - Use the following command to start `op-geth` in a default configuration. - The JSON-RPC API will become available on port 8545. - Refer to the `op-geth` [configuration documentation](/operators/node-operators/configuration/execution-config) for more detailed information about available options. + + If you want to run an archive node, you will need to set `--gcmode=archive`. If you want to run an OP Mainnet archive node, please refer to the [OP Mainnet archive nodes](#op-mainnet-archive-nodes) section. + - ```bash - ./build/bin/geth \ - --http \ - --http.port=8545 \ - --http.addr=localhost \ - --authrpc.addr=localhost \ - --authrpc.jwtsecret=./jwt.txt \ - --verbosity=3 \ - --rollup.sequencerhttp=https://mainnet-sequencer.optimism.io/ \ - --op-network=op-sepolia \ - --datadir=$DATADIR_PATH - ``` -
+ Use the following command to start `op-geth` in a default configuration. + The JSON-RPC API will become available on port 8545. + Refer to the `op-geth` [configuration documentation](/operators/node-operators/configuration/execution-config) for more detailed information about available options. + + ```bash + ./build/bin/geth \ + --http \ + --http.port=8545 \ + --http.addr=localhost \ + --authrpc.addr=localhost \ + --authrpc.jwtsecret=./jwt.txt \ + --verbosity=3 \ + --rollup.sequencerhttp=https://mainnet-sequencer.optimism.io/ \ + --op-network=op-sepolia \ + --datadir=$DATADIR_PATH + ``` +
+ + + + + {

Navigate to your `Nethermind` directory

} + + Find the directory where you built the `Nethermind` binary. + + {

Copy in the JWT secret

} + + Copy the JWT secret you generated in a previous step into the `Nethermind` directory. + + ```bash + cp /path/to/jwt.txt . + ``` + + {

Start `Nethermind`

} + + + If you want to run an archive node, use the `op-sepolia_archive` configuration instead of `op-sepolia`. For OP Mainnet, use `op-mainnet` or `op-mainnet_archive` configurations respectively. + + + Use the following command to start `Nethermind` in a default configuration. + The JSON-RPC API will become available on port 8545. + Refer to the `Nethermind` [configuration documentation](/operators/node-operators/configuration/execution-config#nethermind) for more detailed information about available options. + + ```bash + ./Nethermind.Runner \ + -c op-sepolia \ + --data-dir path/to/data/dir \ + --JsonRpc.JwtSecretFile=./jwt.txt + ``` + + This command uses the built-in `op-sepolia` configuration which already includes the correct settings for: + + * JSON-RPC endpoints + * Network ports + * Sequencer URL + * Other OP Stack specific settings +
+
+
### Start `op-node` -Once you've started `op-geth`, you can start `op-node`. -`op-node` will connect to `op-geth` and begin synchronizing the OP Mainnet state. -`op-node` will begin sending block payloads to `op-geth` when it derives enough blocks from Ethereum. +Once you've started your execution client, you can start `op-node`. +`op-node` will connect to the execution client and begin synchronizing the OP Mainnet state. +`op-node` will begin sending block payloads to the execution client when it derives enough blocks from Ethereum. - {

Navigate to your op-node directory

} + {

Navigate to your `op-node` directory

} Find the directory where you built the `op-node` binary. {

Copy in the JWT secret

} - Both `op-geth` and `op-node` need to use the same JWT secret. + Both the execution client and `op-node` need to use the same JWT secret. Copy the JWT secret you generated in a previous step into the `op-node` directory. ```bash @@ -153,7 +198,7 @@ Once you've started `op-geth`, you can start `op-node`. export L1_BEACON_URL=... # URL address for the L1 Beacon-node HTTP endpoint to use. If your L1 Beacon is a local node, the most common URL is http://127.0.0.1:3500 ``` - {

Start op-node

} + {

Start `op-node`

} Use the following command to start `op-node` in a default configuration. Refer to the `op-node` [configuration documentation](/operators/node-operators/configuration/consensus-config) for more detailed information about available options. @@ -164,8 +209,8 @@ Once you've started `op-geth`, you can start `op-node`.
- Sync mode is set to `--syncmode=execution-layer` to enable [snap sync](/operators/node-operators/management/snap-sync) - and remove the need to initialize the node with a data directory. + Sync mode is set to `--syncmode=execution-layer` to enable [snap sync](/operators/node-operators/management/snap-sync) + for both `op-geth` and `Nethermind`, removing the need to initialize the node with a data directory. ```bash @@ -189,75 +234,109 @@ Once you've started `op-geth`, you can start `op-node`. ### Synchronization verification -Once you've started `op-geth` and `op-node` you should see the two begin to -communicate with each other and synchronize the OP Mainnet chain. +Once you've started your execution client and `op-node` you should see them begin to communicate with each other and synchronize the OP Mainnet chain. #### Snap sync (default) -Initial synchronization can take several hours to complete. You will see these -`op-node` logs at the start of snap sync: + + + Initial synchronization can take several hours to complete. You will see these + `op-node` logs at the start of snap sync: -```text -INFO [03-06|10:56:55.602] Starting EL sync -INFO [03-06|10:56:55.615] Sync progress reason="unsafe payload from sequencer while in EL sync" l2_finalized=000000..000000:0 l2_safe=000000..000000:0 l2_pending_safe=000000..000000:0 l2_unsafe=4284ab..7e7e84:117076319 l2_time=1,709,751,415 l1_derived=000000..000000:0 -INFO [03-06|10:56:57.567] Optimistically inserting unsafe L2 execution payload to drive EL sync id=4ac160..df4d12:117076320 -``` + ```text + INFO [03-06|10:56:55.602] Starting EL sync + INFO [03-06|10:56:55.615] Sync progress reason="unsafe payload from sequencer while in EL sync" l2_finalized=000000..000000:0 l2_safe=000000..000000:0 l2_pending_safe=000000..000000:0 l2_unsafe=4284ab..7e7e84:117076319 l2_time=1,709,751,415 l1_derived=000000..000000:0 + INFO [03-06|10:56:57.567] Optimistically inserting unsafe L2 execution payload to drive EL sync id=4ac160..df4d12:117076320 + ``` -`Starting EL sync` is shown once and the **sync progress / inserting logs** should be repeated until done. + `Starting EL sync` is shown once and the **sync progress / inserting logs** should be repeated until done. -`op-node` will log the following when done: + `op-node` will log the following when done: -```text -lvl=info msg="Finished EL sync" sync_duration=23h25m0.370558429s finalized_block=0x4f69e83ff1407f2e2882f2526ee8a154ac326590799889cede3af04a7742f18d:116817417 -``` + ```text + lvl=info msg="Finished EL sync" sync_duration=23h25m0.370558429s finalized_block=0x4f69e83ff1407f2e2882f2526ee8a154ac326590799889cede3af04a7742f18d:116817417 + ``` -There are two stages on `op-geth` for snap sync: + There are two stages on `op-geth` for snap sync: - - {

Downloading the headers

} - `op-geth` log something like this as it is downloading the headers: + + {

Downloading the headers

} - ```text - lvl=info msg="Syncing beacon headers" downloaded=116775778 left=1162878 eta=53.182s - ``` + `op-geth` log something like this as it is downloading the headers: - {

Sync progress

} + ```text + lvl=info msg="Syncing beacon headers" downloaded=116775778 left=1162878 eta=53.182s + ``` - For the second stage, `op-geth` will log the following: + {

Sync progress

} - ```text - lvl=info msg="Syncing: state download in progress" synced=99.75% state="191.33 GiB" accounts=124,983,227@25.62GiB slots=806,829,266@165.16GiB codes=78965@566.74MiB eta=-2m7.602s - ``` + For the second stage, `op-geth` will log the following: - ```text - msg="Syncing: chain download in progress" synced=100.00% chain="176.01 GiB" headers=116,817,399@45.82GiB bodies=116,817,286@52.87GiB receipts=116,817,286@77.32GiB eta=77.430ms - ``` - - All the while, `op-geth` will also log the forkchoice update: + ```text + lvl=info msg="Syncing: state download in progress" synced=99.75% state="191.33 GiB" accounts=124,983,227@25.62GiB slots=806,829,266@165.16GiB codes=78965@566.74MiB eta=-2m7.602s + ``` - ```text - Forkchoice requested sync to new head number=117,076,468 hash=e3884c..bf4e2b - ``` + ```text + msg="Syncing: chain download in progress" synced=100.00% chain="176.01 GiB" headers=116,817,399@45.82GiB bodies=116,817,286@52.87GiB receipts=116,817,286@77.32GiB eta=77.430ms + ``` -
+ All the while, `op-geth` will also log the forkchoice update: + + ```text + Forkchoice requested sync to new head number=117,076,468 hash=e3884c..bf4e2b + ``` +
+
+ + + Initial synchronization can take several hours to complete. + + Snap sync in `Nethermind` works by: + + 1. Downloading only the leaf nodes of the state tree + 2. Generating intermediate nodes locally + 3. Verifying the state root matches + + This approach is up to 10 times faster than traditional full sync. + +
#### Full sync -For OP Mainnet you will need access to the migrated database to run a full node with full sync. -You can [migrate your own data directory](https://web.archive.org/web/20240110231645/https://blog.oplabs.co/reproduce-bedrock-migration/) or follow the options available for [archive nodes](#get-the-migrated-data-directory). + For OP Mainnet you will need access to the migrated database to run a full node with full sync. + You can [migrate your own data directory](https://web.archive.org/web/20240110231645/https://blog.oplabs.co/reproduce-bedrock-migration/) or follow the options available for [archive nodes](#get-the-migrated-data-directory). -Initial full synchronization can take several days or weeks to complete. During this time, you will initially observe `op-node` deriving blocks from Ethereum without sending these blocks to `op-geth`. -This means that `op-node` is requesting blocks from Ethereum one-by-one and determining the corresponding OP Mainnet blocks that were published to Ethereum. + + + Initial full synchronization can take several days or weeks to complete. During this time, you will initially observe `op-node` deriving blocks from Ethereum without sending these blocks to your execution client. + + + + To use full sync with `Nethermind`, set the following configuration: + + ```bash + ./Nethermind.Runner \ + -c op-sepolia \ + --Sync.SnapSync=false \ + --Sync.FastSync=false \ + --data-dir path/to/data/dir \ + --JsonRpc.JwtSecretFile=./jwt.txt + ``` + + Full sync will download and verify every block from genesis, which takes significantly longer than snap sync but provides the strongest security guarantees. + + + +Both execution clients will receive blocks from `op-node` as it requests them from Ethereum one-by-one and determines the corresponding OP Mainnet blocks that were published. You should see logs like the following from `op-node`: ```text INFO [06-26|13:31:20.389] Advancing bq origin origin=17171d..1bc69b:8300332 originBehind=false ``` -Once the `op-node` has derived enough blocks from Ethereum, it will begin sending these blocks to `op-geth`. -You should see logs like the following from `op-node`: +Once the initial sync is complete, you'll see sync progress logs: ```text INFO [06-26|14:00:59.460] Sync progress reason="processed safe block derived from L1" l2_finalized=ef93e6..e0f367:4067805 l2_safe=7fe3f6..900127:4068014 l2_unsafe=7fe3f6..900127:4068014 l2_time=1,673,564,096 l1_derived=6079cd..be4231:8301091 @@ -266,13 +345,24 @@ INFO [06-26|14:00:59.461] generated attributes in payload queue txs=1 timest INFO [06-26|14:00:59.463] inserted block hash=e80dc4..72a759 number=4,068,015 state_root=660ced..043025 timestamp=1,673,564,098 parent=7fe3f6..900127 prev_randao=78e43d..36f07a fee_recipient=0x4200000000000000000000000000000000000011 txs=1 update_safe=true ``` -You should then also begin to see logs like the following from `op-geth`: - -```text -INFO [06-26|14:02:12.974] Imported new potential chain segment number=4,068,194 hash=a334a0..609a83 blocks=1 txs=1 mgas=0.000 elapsed=1.482ms mgasps=0.000 age=5mo2w20h dirty=2.31MiB -INFO [06-26|14:02:12.976] Chain head was updated number=4,068,194 hash=a334a0..609a83 root=e80f5e..dd06f9 elapsed="188.373µs" age=5mo2w20h -INFO [06-26|14:02:12.982] Starting work on payload id=0x5542117d680dbd4e -``` +You should then also begin to see logs from your execution client: + + + + ```text + INFO [06-26|14:02:12.974] Imported new potential chain segment number=4,068,194 hash=a334a0..609a83 blocks=1 txs=1 mgas=0.000 elapsed=1.482ms mgasps=0.000 age=5mo2w20h dirty=2.31MiB + INFO [06-26|14:02:12.976] Chain head was updated number=4,068,194 hash=a334a0..609a83 root=e80f5e..dd06f9 elapsed="188.373µs" age=5mo2w20h + INFO [06-26|14:02:12.982] Starting work on payload id=0x5542117d680dbd4e + ``` + + + + * **Received New Block**: Block received with number, hash and extra data `21288296 (0xb61f74...cbfbe7), Extra Data: Titan (titanbuilder.xyz)` + * **Processed**: Block or block range processed, e.g., or `x4 21288291 .. 21288295` or `21288296` + * **Received ForkChoice**: Updates on the blockchain's canonical chain; with safe and finalized block, e.g., `21288296 (0xb61f74...cbfbe7), Safe: 21288252 (0x46906d...7777b8), Finalized: 21288221 (0x22a7d2...ebeae9)` + * **Synced Chain Head**: Latest synced block number and hash on the chain, e.g., `21288296 (0xb61f74...cbfbe7)` + + ## OP Mainnet archive nodes @@ -335,7 +425,7 @@ In this section, you'll learn how to download and verify the pre-migrated databa tar xvf mainnet-bedrock.tar.zst ``` - {

Configure op-geth for archive mode

} + {

Configure `op-geth` for archive mode

} Set `--syncmode=full` and `--gcmode=archive` on `op-geth`. diff --git a/pages/superchain/superchain-upgrades.mdx b/pages/superchain/superchain-upgrades.mdx index ce78f9b4b..eeead0514 100644 --- a/pages/superchain/superchain-upgrades.mdx +++ b/pages/superchain/superchain-upgrades.mdx @@ -59,8 +59,8 @@ Networks that have opted into the [hard fork inheritance behavior](/superchain/s The [`rollup.halt`](/operators/node-operators/configuration/execution-config#rolluphalt) flag is an opt-in configuration option available in both the execution and consensus layer node binaries. Its primary function is to temporarily halt node activities, during the transition phase of an upgrade, if or when it encounters an incompatible or unsupported protocol version requirement. -* Execution layer configuration: In the execution layer *(op-geth)*, the [`--rollup.halt`](/operators/node-operators/configuration/execution-config#rolluphalt) flag can be set to specify the level of incompatibility (major, minor, patch, none) that will trigger a halt. This ensures that nodes do not process transactions under unsupported protocol versions. -* Consensus layer configuration: Similarly, in the consensus layer *(op-node)*, the [`--rollup.halt`](/operators/node-operators/configuration/consensus-config#rolluphalt) flag serves the same purpose, allowing nodes to halt when encountering incompatible protocol versions. +* Execution layer configuration: In the execution layer *(`op-geth`)*, the [`--rollup.halt`](/operators/node-operators/configuration/execution-config#rolluphalt) flag can be set to specify the level of incompatibility (major, minor, patch, none) that will trigger a halt. This ensures that nodes do not process transactions under unsupported protocol versions. +* Consensus layer configuration: Similarly, in the consensus layer *(`op-node`)*, the [`--rollup.halt`](/operators/node-operators/configuration/consensus-config#rolluphalt) flag serves the same purpose, allowing nodes to halt when encountering incompatible protocol versions. Failing to upgrade your node with new hardfork rules will trigger the use of the `rollup.halt` flag on the Superchain signaling and your node will halt. diff --git a/public/img/guides/node-operators/node-arch.svg b/public/img/guides/node-operators/node-arch.svg index fbf8acd96..056ad4a0f 100644 --- a/public/img/guides/node-operators/node-arch.svg +++ b/public/img/guides/node-operators/node-arch.svg @@ -1 +1,4 @@ - \ No newline at end of file + + + +
Users
op-geth
or
nethermind
op-node
Ethereum
OP Mainnet
peer-to-peer
network
l2geth
(Legacy)
OP Mainnet Node
\ No newline at end of file diff --git a/utils/calculator-helpers.ts b/utils/calculator-helpers.ts index c2c9fcb26..1a848bad2 100644 --- a/utils/calculator-helpers.ts +++ b/utils/calculator-helpers.ts @@ -55,7 +55,7 @@ export function resultsFeeScalarsAssumed( transactionsPerDay: number, // e14 dataAvailabilityType: string, // E16 targetDataMargin: number, // E18 - isStateEnabled: string, // E24 + isStateEnabled: boolean, // E24 maxChannelDuration: number // E22 ): string { const n25: number = calculateBlobLevelImpliedBlobFullness( @@ -75,7 +75,7 @@ export function resultsFeeScalarsAssumed( : `${Math.round(n25 * 100)}% Blob Fullness and ${ Math.round(n26 * 10) / 10 } Blobs per L1 Tx (Avg), `; - const state = isStateEnabled === "Yes" ? " & State" : ""; + const state = isStateEnabled === true ? " & State" : ""; return `Fee Scalars Assume: ${mode}Target a ${Math.round( targetDataMargin )}% Margin on DA${state}, ${ @@ -1080,4 +1080,4 @@ export const Avg_Total_Gas_Used_Per_L1_State_Proposal = 86847.5; // N12 export const FastLZ_Intercept = -42585600; // N13 export const FastLZ_Coefficient = 836500; // N14 export const FatLZ_Min_Transaction_Size = 100; // N15 -export const Avg_Total_Gas_Used_Per_L1_Fault_Proof_State_Proposal = 420926.0; // N16 \ No newline at end of file +export const Avg_Total_Gas_Used_Per_L1_Fault_Proof_State_Proposal = 420926.0; // N16 diff --git a/words.txt b/words.txt index bec3d2011..67b3ddd16 100644 --- a/words.txt +++ b/words.txt @@ -7,6 +7,7 @@ ADDI ADDIU ADDU airgap +alethia Allnodes allocs Alphanet @@ -52,6 +53,7 @@ BLOOMFILTER bloomfilter BLTZ Bootcamp +Bootnode bootnode BOOTNODES Bootnodes @@ -67,8 +69,10 @@ Celestia Celestia's chainid Chainlink +chainspec Chainstack chaosnet +chiado Chugsplash Clabby codebases @@ -91,6 +95,7 @@ DATACAP datacap DATADIR datadir +Decommit Devnet devnet Devnets @@ -101,6 +106,7 @@ disabletxpoolgossip Discv discv DIVU +Dklen Drand dripcheck Drippie @@ -108,11 +114,16 @@ Eigen EIPs ENABLEDEPRECATEDPERSONAL enabledeprecatedpersonal +Encrypter +energyweb enginekind +Enode Erigon erigon +ethdisco ETHERBASE etherbase +ethereumoptimism Ethernity Ethernow ETHSTATS @@ -158,6 +169,7 @@ hardforks HEALTHCHECK healthcheck healthchecks +hekla HISTORICALRPC historicalrpc HISTORICALRPCTIMEOUT @@ -165,6 +177,7 @@ historicalrpctimeout HOLESKY Holesky holesky +hoodi IERC IGNOREPRICE ignoreprice @@ -184,12 +197,17 @@ Isthumus JALR JOURNALREMOTES journalremotes +JSONRPCCONFIG JSPATH jspath jwtsecret +JWTSECRETFILE +Kdfparams Keccak +Keyper leveldb lightkdf +linea Lisk logfile logfmt @@ -236,6 +254,8 @@ multichain multiclient multisigs MULTU +NETHERMIND +Nethermind nethermind NETRESTRICT netrestrict @@ -408,6 +428,7 @@ syncmode SYNCTARGET synctarget syscalls +taiko thirdweb threadcreate timeseries @@ -442,6 +463,7 @@ VMDEBUG vmdebug VMODULE vmodule +worldchain xlarge XORI ZKPs