Execution layer configuration

Execution layer configuration options (op-geth)

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 (opens in a new tab)

Please note that the executable is still named geth to maintain a minimal diff (opens in a new tab).

Global options

Account

allow-insecure-unlock

Allows insecure account unlocking when account-related RPCs are exposed by HTTP. The default value is false.

--allow-insecure-unlock

keystore

Directory for the keystore. The default is inside the data directory.

--keystore <value>

lightkdf

Reduce key-derivation RAM & CPU usage at some expense of KDF strength. The default value is false.

--lightkdf

password

Password file to use for non-interactive password input.

--password <value>

pcscdpath

Path to the smartcard daemon (pcscd) socket file. The default value is "/run/pcscd/pcscd.comm".

--pcscdpath <value>

signer

External signer (url or path to ipc file).

--signer <value>

unlock

Comma separated list of accounts to unlock.

--unlock <account address>

usb

Enable monitoring and management of USB hardware wallets. The default value is false.

--usb

API and Console

authrpc.addr

Listening address for authenticated APIs. The default value is "localhost".

--authrpc.addr <value>

authrpc.jwtsecret

Path to a JWT secret to use for authenticated RPC endpoints.

--authrpc.jwtsecret <value>

authrpc.port

Listening port for authenticated APIs. The default value is 8551.

--authrpc.port <value>

authrpc.vhosts

Comma separated list of virtual hostnames from which to accept requests (server enforced). The default value is "localhost". Accepts '*' wildcard.

--authrpc.vhosts <value>

exec

Execute JavaScript statement.

--exec <value>

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.

--graphql

graphql.corsdomain

Comma separated list of domains from which to accept cross origin requests (browser enforced).

--graphql.corsdomain <value>

graphql.vhosts

Comma separated list of virtual hostnames from which to accept requests (server enforced). The default value is "localhost". Accepts '*' wildcard.

--graphql.vhosts <value>

header

Pass custom headers to the RPC server when using --remotedb or the geth attach console. This flag can be given multiple times.

--header <value>, -H <value>

http

Enable the HTTP-RPC server. The default value is false.

--http

http.addr

HTTP-RPC server listening interface. The default value is "localhost".

--http.addr <value>

http.api

API's offered over the HTTP-RPC interface.

--http.api <value>

http.corsdomain

Comma separated list of domains from which to accept cross origin requests (browser enforced).

--http.corsdomain <value>

http.port

HTTP-RPC server listening port. The default value is 8545.

--http.port <value>

http.rpcprefix`\

HTTP path prefix on which JSON-RPC is served. Use '/' to serve on all paths.

--http.rpcprefix <value>

http.vhosts

Comma separated list of virtual hostnames from which to accept requests (server enforced). The default value is "localhost". Accepts '*' wildcard.

--http.vhosts <value>

ipcdisable

Disable the IPC-RPC server. The default value is false.

--ipcdisable

ipcpath

Filename for IPC socket/pipe within the datadir (explicit paths escape it).

--ipcpath <value>

jspath

JavaScript root path for loadScript. The default value is . (current directory).

--jspath <value>

preload

Comma separated list of JavaScript files to preload into the console.

--preload <value>

rpc.allow-unprotected-txs

Allow for unprotected (non EIP155 signed) transactions to be submitted via RPC. The default value is false.

--rpc.allow-unprotected-txs

rpc.batch-request-limit

Maximum number of requests in a batch. The default value is 1000.

--rpc.batch-request-limit=<value>

rpc.batch-response-max-size

Maximum number of bytes returned from a batched call. The default value is 25000000.

--rpc.batch-response-max-size=<value>

rpc.enabledeprecatedpersonal

Enables the (deprecated) personal namespace. The default value is false.

--rpc.enabledeprecatedpersonal

rpc.evmtimeout

Sets a timeout used for eth_call (0=infinite). The default value is 5s.

--rpc.evmtimeout <value>

rpc.gascap

Sets a cap on gas that can be used in eth_call/estimateGas (0=infinite). The default value is 50000000.

--rpc.gascap=<value>

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.

--rpc.txfeecap=<value>

ws

Enable the WS-RPC server. The default value is false.

--ws

ws.addr

WS-RPC server listening interface. The default value is "localhost".

--ws.addr=<value>

ws.api

API's offered over the WS-RPC interface.

--ws.api=<value>

ws.origins

Origins from which to accept websockets requests.

--ws.origins=<value>

ws.port

WS-RPC server listening port. The default value is 8546.

--ws.port=<value>

ws.rpcprefix

HTTP path prefix on which JSON-RPC is served over WS. Use '/' to serve on all paths.

--ws.rpcprefix=<value>

Developer Chain

dev

Ephemeral proof-of-authority network with a pre-funded developer account, mining enabled. The default value is false.

--dev

dev.gaslimit

Initial block gas limit. The default value is 11500000.

--dev.gaslimit=<value>

dev.period

Block period to use in developer mode (0 = mine only if transaction pending). The default value is 0.

--dev.period=<value>

Ethereum

bloomfilter.size

Megabytes of memory allocated to bloom-filter for pruning. The default value is 2048.

--bloomfilter.size=<value>

config

TOML configuration file.

--config=<value>

datadir

Data directory for the databases and keystore. The default value is /home/<user>/.ethereum.

--datadir=<value>

datadir.ancient

Root directory for ancient data (default = inside chaindata).

--datadir.ancient=<value>

datadir.minfreedisk

Minimum free disk space in MB, once reached triggers auto shut down (default = --cache.gc converted to MB, 0 = disabled).

--datadir.minfreedisk=<value>

db.engine

Backing database implementation to use ('pebble' or 'leveldb').

--db.engine=<value>

eth.requiredblocks

Comma separated block number-to-hash mappings to require for peering (<number>=<hash>).

--eth.requiredblocks=<value>

exitwhensynced

Exits after block synchronization completes. The default value is false.

--exitwhensynced

goerli

Görli network: pre-configured proof-of-authority test network. The default value is false.

--goerli

holesky

Holesky network: pre-configured proof-of-stake test network. The default value is false.

--holesky

mainnet

Ethereum mainnet. The default value is false.

--mainnet

networkid

Explicitly set network id (integer). The default value is 1. For testnets: use --goerli, --sepolia, --holesky instead.

--networkid <value>

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=<value>

override.cancun

Manually specify the Cancun fork timestamp, overriding the bundled setting. The default value is 0.

--override.cancun=<value>

override.canyon

Manually specify the Optimism Canyon fork timestamp, overriding the bundled setting. The default value is 0.

--override.canyon=<value>

override.ecotone

Manually specify the Optimism Ecotone fork timestamp, overriding the bundled setting. The default value is 0.

--override.ecotone=<value>

override.fjord

Manually specify the Optimism Fjord fork timestamp, overriding the bundled setting. The default value is 0.

--override.fjord=<value>

override.interop

Manually specify the Optimism Interop feature-set fork timestamp, overriding the bundled setting. The default value is 0.

--override.interop=<value>

override.verkle

Manually specify the Verkle fork timestamp, overriding the bundled setting. The default value is 0.

--override.verkle=<value>

sepolia

Sepolia network: pre-configured proof-of-work test network. The default value is false.

--sepolia

snapshot

Enables snapshot-database mode. The default value is true.

--snapshot

Gas Price Oracle

gpo.blocks

Number of recent blocks to check for gas prices. The default value is 20.

--gpo.blocks=<value>

gpo.ignoreprice

Gas price below which GPO will ignore transactions. The default value is 2.

--gpo.ignoreprice=<value>

gpo.maxprice

Maximum transaction priority fee (or gasprice before London fork) to be recommended by GPO. The default value is 500000000000.

--gpo.maxprice=<value>

gpo.minsuggestedpriorityfee

Minimum transaction priority fee to suggest. Used on OP chains when blocks are not full. The default value is 1000000.

--gpo.minsuggestedpriorityfee=<value>

gpo.percentile

Suggested gas price is the given percentile of a set of recent transaction gas prices. The default value is 60.

--gpo.percentile=<value>

Light Client

light.egress

Outgoing bandwidth limit for serving light clients (deprecated). The default value is 0.

--light.egress=<value>

light.ingress

Incoming bandwidth limit for serving light clients (deprecated). The default value is 0.

--light.ingress=<value>

light.maxpeers

Maximum number of light clients to serve, or light servers to attach to (deprecated). The default value is 100.

--light.maxpeers=<value>

light.nopruning

Disable ancient light chain data pruning (deprecated). The default value is false.

--light.nopruning

light.nosyncserve

Enables serving light clients before syncing (deprecated) The default value is false.

--light.nosyncserve

light.serve

Maximum percentage of time allowed for serving LES requests (deprecated). The default value is 0.

--light.serv=<value>

Logging and Debugging

log.compress

Compress the log files. The default value is false.

--log.compress

log.file

Write logs to a file.

--log.file=<value>

log.format

Log format to use (json|logfmt|terminal).

--log.format=<value>

log.maxage

Maximum number of days to retain a log file. The default value is 30.

--log.maxage=<value>

log.maxbackups

Maximum number of log files to retain. The default value is 10.

--log.maxbackups=<value>

log.maxsize

Maximum size in MBs of a single log file. The default value is 100.

--log.maxsize=<value>

log.rotate

Enables log file rotation. The default value is false.

--log.rotate

log.vmodule

Per-module verbosity: comma-separated list of <pattern>=<level> (e.g. eth/*=5,p2p=4).

--log.vmodule=<value>

nocompaction

Disables database compaction after import. The default value is false.

--nocompaction

pprof

Enable the pprof HTTP server. The default value is false.

--pprof

pprof.addr

pprof HTTP server listening interface. The default value is "127.0.0.1".

--pprof.addr=<value>

pprof.blockprofilerate

Turn on block profiling with the given rate. The default value is 0.

--pprof.blockprofilerate=<value>

pprof.cpuprofile

Write CPU profile to the given file.

--pprof.cpuprofile=<value>

pprof.memprofilerate

Turn on memory profiling with the given rate. The default value is 524288.

--pprof.memprofilerate=<value>

pprof.port

pprof HTTP server listening port. The default value is 6060.

--pprof.port=<value>

remotedb

URL for remote database.

--remotedb=<value>

trace

Write execution trace to the given file.

--trace=<value>

verbosity

Logging verbosity: 0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail. The default value is 3.

--verbosity=<value>

Metrics and Stats

ethstats

Reporting URL of an ethstats service (nodename:secret@host:port).

--ethstats=<value>

metrics

Enable metrics collection and reporting. The default value is false.

--metrics

metrics.addr

Enable stand-alone metrics HTTP server listening interface.

--metrics.addr=<value>

metrics.expensive

Enable expensive metrics collection and reporting. The default value is false.

--metrics.expensive

metrics.influxdb

Enable metrics export/push to an external InfluxDB database. The default value is false.

--metrics.influxdb

metrics.influxdb.bucket

InfluxDB bucket name to push reported metrics to (v2 only). The default value is "geth".

--metrics.influxdb.bucket=<value>

metrics.influxdb.database

InfluxDB database name to push reported metrics to. The default value is "geth".

--metrics.influxdb.database=<value>

metrics.influxdb.endpoint

InfluxDB API endpoint to report metrics to. The default value is "http://localhost:8086".

--metrics.influxdb.endpoint=<value>

metrics.influxdb.organization

InfluxDB organization name (v2 only). The default value is "geth".

--metrics.influxdb.organization=<value>

metrics.influxdb.password

Password to authorize access to the database. The default value is "test".

--metrics.influxdb.password=<value>

metrics.influxdb.tags

Comma-separated InfluxDB tags (key/values) attached to all measurements. The default value is "host=localhost".

--metrics.influxdb.tags=<value>

metrics.influxdb.token

Token to authorize access to the database (v2 only). The default value is "test".

--metrics.influxdb.token=<value>

metrics.influxdb.username

Username to authorize access to the database. The default value is "test".

--metrics.influxdb.username=<value>

metrics.influxdbv2

Enable metrics export/push to an external InfluxDB v2 database. The default value is false.

--metrics.influxdbv2

metrics.port

Metrics HTTP server listening port. The default value is 6060. Please note that --metrics.addr must be set to start the server.

--metrics.port=<value>

Miner

mine

Enable mining. The default value is false.

--mine

miner.etherbase

0x prefixed public address for block mining rewards.

--miner.etherbase=<value>

miner.extradata

Block extra data set by the miner (default = client version).

--miner.extradata=<value>

miner.gaslimit

Target gas ceiling for mined blocks. The default value is 30000000.

--miner.gaslimit=<value>

miner.gasprice

Minimum gas price for mining a transaction. The default value is 0.

--miner.gasprice=<value>

miner.newpayload-timeout

Specify the maximum time allowance for creating a new payload. The default value is 2s.

--miner.newpayload-timeout=<value>

miner.recommit

Time interval to recreate the block being mined. The default value is 2s.

--miner.recommit=<value>

Miscellaneous

help

Show help. This is typically used to display command-line options and usage information.

--help or -h

synctarget

Hash of the block to full sync to (dev testing feature).

--synctarget=<value>

version

Nodes built from source do not output the correct version numbers that are reported on the GitHub release page.

Print the version. This option is typically used to display the version of the software.

--version or -v

Networking

bootnodes

Comma separated enode URLs for P2P discovery bootstrap.

--bootnodes=<value>

discovery.dns

Sets DNS discovery entry points (use "" to disable DNS).

--discovery.dns=<value>

discovery.port

Use a custom UDP port for P2P discovery. The default value is 30303.

--discovery.port=<value>

discovery.v4

Enables the V4 discovery mechanism. The default value is true.

--discovery.v4 or --discv4

discovery.v5

Enables the experimental RLPx V5 (Topic Discovery) mechanism. The default value is false.

--discovery.v5 or --discv5

identity

Custom node name.

--identity=<value>

maxpeers

Maximum number of network peers (network disabled if set to 0). The default value is 50.

--maxpeers=<value>

maxpendpeers

Maximum number of pending connection attempts (defaults used if set to 0). The default value is 0.

--maxpendpeers=<value>

nat

NAT port mapping mechanism (any|none|upnp|pmp|pmp:<IP>|extip:<IP>). The default value is "any".

--nat=<value>

netrestrict

Restricts network communication to the given IP networks (CIDR masks).

--netrestrict=<value>

nodekey

P2P node key file.

--nodekey=<value>

nodekeyhex

P2P node key as hex (for testing).

--nodekeyhex=<value>

nodiscover

Disables the peer discovery mechanism (manual peer addition). The default value is false.

--nodiscover

port

Network listening port. The default value is 30303.

--port=<value>

Performance Tuning

cache

Megabytes of memory allocated to internal caching. The default is 4096 MB for mainnet full node and 128 MB for light mode.

--cache=<value>

cache.blocklogs

Size (in number of blocks) of the log cache for filtering. The default value is 32.

--cache.blocklogs=<value>

cache.database

Percentage of cache memory allowance to use for database I/O. The default value is 50.

--cache.database=<value>

cache.gc

Percentage of cache memory allowance to use for trie pruning. The default is 25% for full mode and 0% for archive mode.

--cache.gc=<value>

cache.noprefetch

Disable heuristic state prefetch during block import (less CPU and disk IO, more time waiting for data). The default value is false.

--cache.noprefetch

cache.preimages

Enable recording the SHA3/keccak preimages of trie keys. The default value is false.

--cache.preimages

cache.snapshot

Percentage of cache memory allowance to use for snapshot caching. The default is 10% for full mode and 20% for archive mode.

--cache.snapshot=<value>

cache.trie

Percentage of cache memory allowance to use for trie caching. The default is 15% for full mode and 30% for archive mode.

--cache.trie=<value>

crypto.kzg

KZG library implementation to use; gokzg (recommended) or ckzg. The default value is "gokzg".

--crypto.kzg=<value>

fdlimit

Raise the open file descriptor resource limit. The default is the system fd limit.

--fdlimit=<value>

Rollup Node

rollup.computependingblock

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.computependingblock

rollup.disabletxpoolgossip

Disable transaction pool gossip. The default value is false.

--rollup.disabletxpoolgossip

rollup.halt

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.halt=<value>

rollup.historicalrpc

RPC endpoint for historical data.

--rollup.historicalrpc <value>

rollup.historicalrpctimeout

Timeout for historical RPC requests. The default value is 5s.

--rollup.historicalrpctimeout=<value>

rollup.sequencerhttp

HTTP endpoint for the sequencer mempool.

--rollup.sequencerhttp=<value>

rollup.superchain-upgrades

Apply superchain-registry config changes to the local chain-configuration. The default value is true.

--rollup.superchain-upgrades or --beta.rollup.superchain-upgrades

State History Management

gcmode

Blockchain garbage collection mode, only relevant in state.scheme=hash. Options are "full" and "archive". The default value is "full".

--gcmode=<value>

history.state

Number of recent blocks to retain state history for. The default is 90000 blocks, with 0 representing the entire chain.

--history.state=<value>

history.transactions

Number of recent blocks to maintain transactions index for. The default is about two months (2350000 blocks), with 0 representing the entire chain.

--history.transactions=<value>

state.scheme

Scheme to use for storing Ethereum state. Options are 'hash' or 'path'.

--state.scheme=<value>

syncmode

Blockchain sync mode. Options are "snap", or "full". The default value is "snap".

--syncmode=<value>

Transaction Pool (Blob)

blobpool.datacap

Disk space to allocate for pending blob transactions (soft limit). The default value is 10737418240.

--blobpool.datacap=<value>

blobpool.pricebump

Price bump percentage to replace an already existing blob transaction. The default value is 100.

--blobpool.pricebump=<value>

Transaction Pool (EVM)

txpool.accountqueue

Maximum number of non-executable transaction slots permitted per account. The default value is 64.

--txpool.accountqueue=<value>

txpool.accountslots

Minimum number of executable transaction slots guaranteed per account. The default value is 16.

--txpool.accountslots=<value>

txpool.globalqueue

Maximum number of non-executable transaction slots for all accounts. The default value is 1024.

--txpool.globalqueue=<value>

txpool.globalslots

Maximum number of executable transaction slots for all accounts. The default value is 5120.

--txpool.globalslots=<value>

txpool.journal

Disk journal for local transactions to survive node restarts. The default value is "transactions.rlp".

--txpool.journal=<value>

txpool.journalremotes

Includes remote transactions in the journal. The default value is false.

--txpool.journalremotes

txpool.lifetime

Maximum amount of time non-executable transactions are queued. The default value is 3h0m0s.

--txpool.lifetime=<value>

txpool.locals

Comma-separated accounts to treat as locals (no flush, priority inclusion).

--txpool.locals=<value>

txpool.nolocals

Disables price exemptions for locally submitted transactions. The default value is false.

--txpool.nolocals

txpool.pricebump

Price bump percentage to replace an already existing transaction. The default value is 10.

--txpool.pricebump=<value>

txpool.pricelimit

Minimum gas price tip to enforce for acceptance into the pool. The default value is 1.

--txpool.pricelimit=<value>

txpool.rejournal

Time interval to regenerate the local transaction journal. The default value is 1h0m0s.

--txpool.rejournal=<value>

Virtual machine

vmdebug

Record information useful for VM and contract debugging. The default value is false.

--vmdebug