# reth init-state

Initialize the database from a state dump file

```bash
$ reth init-state --help
```
```txt
Usage: reth init-state [OPTIONS] <STATE_DUMP_FILE>

Options:
  -h, --help
          Print help (see a summary with '-h')

Datadir:
      --datadir <DATA_DIR>
          The path to the data dir for all reth files and subdirectories.

          Defaults to the OS-specific data directory:

          - Linux: `$XDG_DATA_HOME/reth/` or `$HOME/.local/share/reth/`
          - Windows: `{FOLDERID_RoamingAppData}/reth/`
          - macOS: `$HOME/Library/Application Support/reth/`

          [default: default]

      --datadir.static-files <PATH>
          The absolute path to store static files in.

      --datadir.rocksdb <PATH>
          The absolute path to store `RocksDB` database in.

      --datadir.pprof-dumps <PATH>
          The absolute path to store pprof dumps in.

      --config <FILE>
          The path to the configuration file to use

      --chain <CHAIN_OR_PATH>
          The chain this node is running.
          Possible values are either a built-in chain or the path to a chain specification file.

          Built-in chains:
              mainnet, sepolia, holesky, hoodi, dev

          [default: mainnet]

Database:
      --db.log-level <LOG_LEVEL>
          Database logging level. Levels higher than "notice" require a debug build

          Possible values:
          - fatal:   Enables logging for critical conditions, i.e. assertion failures
          - error:   Enables logging for error conditions
          - warn:    Enables logging for warning conditions
          - notice:  Enables logging for normal but significant condition
          - verbose: Enables logging for verbose informational
          - debug:   Enables logging for debug-level messages
          - trace:   Enables logging for trace debug-level messages
          - extra:   Enables logging for extra debug-level messages

      --db.exclusive <EXCLUSIVE>
          Open environment in exclusive/monopolistic mode. Makes it possible to open a database on an NFS volume

          [possible values: true, false]

      --db.max-size <MAX_SIZE>
          Maximum database size (e.g., 4TB, 8TB).

          This sets the "map size" of the database. If the database grows beyond this limit, the node will stop with an "environment map size limit reached" error.

          The default value is 8TB.

      --db.page-size <PAGE_SIZE>
          Database page size (e.g., 4KB, 8KB, 16KB).

          Specifies the page size used by the MDBX database.

          The page size determines the maximum database size. MDBX supports up to 2^31 pages, so with the default 4KB page size, the maximum database size is 8TB. To allow larger databases, increase this value to 8KB or higher.

          WARNING: This setting is only configurable at database creation; changing it later requires re-syncing.

      --db.growth-step <GROWTH_STEP>
          Database growth step (e.g., 4GB, 4KB)

      --db.read-transaction-timeout <READ_TRANSACTION_TIMEOUT>
          Read transaction timeout in seconds, 0 means no timeout

      --db.max-readers <MAX_READERS>
          Maximum number of readers allowed to access the database concurrently

      --db.sync-mode <SYNC_MODE>
          Controls how aggressively the database synchronizes data to disk

      --db.rocksdb-block-cache-size <ROCKSDB_BLOCK_CACHE_SIZE>
          `RocksDB` block cache size (e.g., 512MB, 4GB).

          Controls the size of the in-memory LRU cache for decompressed `RocksDB` blocks. A larger cache reduces repeated decompression of hot blocks, improving read performance for history lookups.

      --db.balstore-cache-size <BALSTORE_CACHE_SIZE>
          Number of recent blocks to keep in the in-memory BAL store cache

      --db.disable-metrics
          Disable built-in database metrics

Static Files:
      --static-files.blocks-per-file.headers <BLOCKS_PER_FILE_HEADERS>
          Number of blocks per file for the headers segment

      --static-files.blocks-per-file.transactions <BLOCKS_PER_FILE_TRANSACTIONS>
          Number of blocks per file for the transactions segment

      --static-files.blocks-per-file.receipts <BLOCKS_PER_FILE_RECEIPTS>
          Number of blocks per file for the receipts segment

      --static-files.blocks-per-file.transaction-senders <BLOCKS_PER_FILE_TRANSACTION_SENDERS>
          Number of blocks per file for the transaction senders segment

      --static-files.blocks-per-file.account-change-sets <BLOCKS_PER_FILE_ACCOUNT_CHANGE_SETS>
          Number of blocks per file for the account changesets segment

      --static-files.blocks-per-file.storage-change-sets <BLOCKS_PER_FILE_STORAGE_CHANGE_SETS>
          Number of blocks per file for the storage changesets segment

Storage:
      --storage.v2 [<V2>]
          Enable V2 (hot/cold) storage layout for new databases.

          When set, new databases will be initialized with the V2 storage layout that separates hot and cold data. Existing databases always use the settings persisted in their metadata regardless of this flag.

          [default: true]
          [possible values: true, false]

      --without-evm
          Specifies whether to initialize the state without relying on EVM historical data.

          When enabled, and before inserting the state, it creates a dummy chain up to the last EVM block specified. It then appends the first provided block.

          - **Note**: **Do not** import receipts and blocks beforehand, or this will fail or be ignored.

      --header <HEADER_FILE>
          Header file containing the header in an RLP encoded format.

      --header-hash <HEADER_HASH>
          Hash of the header.

  <STATE_DUMP_FILE>
          JSONL file with state dump.

          Must contain accounts in following format, additional account fields are ignored. Must
          also contain { "root": \<state-root\> } as first line.
          {
              "balance": "\<balance\>",
              "nonce": \<nonce\>,
              "code": "\<bytecode\>",
              "storage": {
                  "\<key\>": "\<value\>",
                  ..
              },
              "address": "\<address\>",
          }

          Allows init at a non-genesis block. Caution! Blocks must be manually imported up until
          and including the non-genesis block to init chain at. See 'import' command.

Logging:
      --log.stdout.format <FORMAT>
          The format to use for logs written to stdout

          Possible values:
          - json:     Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
          - log-fmt:  Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
          - terminal: Represents terminal-friendly formatting for logs

          [default: terminal]

      --log.stdout.filter <FILTER>
          The filter to use for logs written to stdout

          [default: ""]

      --log.file.format <FORMAT>
          The format to use for logs written to the log file

          Possible values:
          - json:     Represents JSON formatting for logs. This format outputs log records as JSON objects, making it suitable for structured logging
          - log-fmt:  Represents logfmt (key=value) formatting for logs. This format is concise and human-readable, typically used in command-line applications
          - terminal: Represents terminal-friendly formatting for logs

          [default: terminal]

      --log.file.filter <FILTER>
          The filter to use for logs written to the log file

          [default: debug]

      --log.file.directory <PATH>
          The path to put log files in

          [default: <CACHE_DIR>/logs]

      --log.file.name <NAME>
          The prefix name of the log files

          [default: reth.log]

      --log.file.max-size <SIZE>
          The maximum size (in MB) of one log file

          [default: 200]

      --log.file.max-files <COUNT>
          The maximum amount of log files that will be stored. If set to 0, background file logging is disabled.

          Default: 5 for `node` command, 0 for non-node utility subcommands.

      --log.journald
          Write logs to journald

      --log.journald.filter <FILTER>
          The filter to use for logs written to journald

          [default: error]

      --color <COLOR>
          Sets whether or not the formatter emits ANSI terminal escape codes for colors and other text formatting

          Possible values:
          - always: Colors on
          - auto:   Auto-detect
          - never:  Colors off

          [default: always]

      --logs-otlp[=<URL>]
          Enable `Opentelemetry` logs export to an OTLP endpoint.

          If no value provided, defaults based on protocol: - HTTP: `http://localhost:4318/v1/logs` - gRPC: `http://localhost:4317`

          Example: --logs-otlp=http://collector:4318/v1/logs

          [env: OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=]

      --logs-otlp.filter <FILTER>
          Set a filter directive for the OTLP logs exporter. This controls the verbosity of logs sent to the OTLP endpoint. It follows the same syntax as the `RUST_LOG` environment variable.

          Example: --logs-otlp.filter=info,reth=debug

          Defaults to INFO if not specified.

          [default: info]

Display:
  -v, --verbosity...
          Set the minimum log level.

          -v      Errors
          -vv     Warnings
          -vvv    Info
          -vvvv   Debug
          -vvvvv  Traces (warning: very verbose!)

  -q, --quiet
          Silence all log output

Tracing:
      --tracing-otlp[=<URL>]
          Enable `Opentelemetry` tracing export to an OTLP endpoint.

          If no value provided, defaults based on protocol: - HTTP: `http://localhost:4318/v1/traces` - gRPC: `http://localhost:4317`

          Example: --tracing-otlp=http://collector:4318/v1/traces

          [env: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=]

      --tracing-otlp-protocol <PROTOCOL>
          OTLP transport protocol to use for exporting traces and logs.

          - `http`: expects endpoint path to end with `/v1/traces` or `/v1/logs` - `grpc`: expects endpoint without a path

          Defaults to HTTP if not specified.

          Possible values:
          - http: HTTP/Protobuf transport, port 4318, requires `/v1/traces` path
          - grpc: gRPC transport, port 4317

          [env: OTEL_EXPORTER_OTLP_PROTOCOL=]
          [default: http]

      --tracing-otlp.filter <FILTER>
          Set a filter directive for the OTLP tracer. This controls the verbosity of spans and events sent to the OTLP endpoint. It follows the same syntax as the `RUST_LOG` environment variable.

          Example: --tracing-otlp.filter=info,reth=debug,hyper_util=off

          Defaults to TRACE if not specified.

          [default: debug]

      --tracing-otlp.sample-ratio <RATIO>
          Trace sampling ratio to control the percentage of traces to export.

          Valid range: 0.0 to 1.0 - 1.0, default: Sample all traces - 0.01: Sample 1% of traces - 0.0: Disable sampling

          Example: --tracing-otlp.sample-ratio=0.0.

          [env: OTEL_TRACES_SAMPLER_ARG=]
```