# reth p2p header

Download block header

```bash
$ reth p2p header --help
```
```txt
Usage: reth p2p header [OPTIONS] <ID>

Options:
      --retries <RETRIES>
          The number of retries per request

          [default: 5]

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

Networking:
  -d, --disable-discovery
          Disable the discovery service

      --disable-dns-discovery
          Disable the DNS discovery

      --disable-discv4-discovery
          Disable Discv4 discovery

      --disable-discv5-discovery
          Disable Discv5 discovery

      --disable-nat
          Disable Nat discovery

      --discovery.addr <DISCOVERY_ADDR>
          The UDP address to use for devp2p peer discovery version 4.

          If unset and `--net-if.experimental` is used, discv4 binds to the resolved interface address.

          [default: 0.0.0.0]

      --discovery.port <DISCOVERY_PORT>
          The UDP port to use for devp2p peer discovery version 4

          [default: 30303]

      --discovery.v5.addr <DISCOVERY_V5_ADDR>
          The UDP IPv4 address to use for devp2p peer discovery version 5. Overwritten by `RLPx` address, if it's also IPv4

      --discovery.v5.addr.ipv6 <DISCOVERY_V5_ADDR_IPV6>
          The UDP IPv6 address to use for devp2p peer discovery version 5. Overwritten by `RLPx` address, if it's also IPv6

      --discovery.v5.port <DISCOVERY_V5_PORT>
          The UDP IPv4 port to use for devp2p peer discovery version 5. Not used unless `--addr` is IPv4, or `--discovery.v5.addr` is set

          [default: 9200]

      --discovery.v5.port.ipv6 <DISCOVERY_V5_PORT_IPV6>
          The UDP IPv6 port to use for devp2p peer discovery version 5. Not used unless `--addr` is IPv6, or `--discovery.addr.ipv6` is set.

          If not provided, discovery V5 defaults to same port as discovery V4 (--discovery.port).

          [default: 9200]

      --discovery.v5.lookup-interval <DISCOVERY_V5_LOOKUP_INTERVAL>
          The interval in seconds at which to carry out periodic lookup queries, for the whole run of the program

          [default: 20]

      --discovery.v5.bootstrap.lookup-interval <DISCOVERY_V5_BOOTSTRAP_LOOKUP_INTERVAL>
          The interval in seconds at which to carry out boost lookup queries, for a fixed number of times, at bootstrap

          [default: 5]

      --discovery.v5.bootstrap.lookup-countdown <DISCOVERY_V5_BOOTSTRAP_LOOKUP_COUNTDOWN>
          The number of times to carry out boost lookup queries at bootstrap

          [default: 200]

      --trusted-peers <TRUSTED_PEERS>
          Comma separated enode URLs or ENRs of trusted peers for P2P connections.

          --trusted-peers enode://abcd@192.168.0.1:30303

      --trusted-only
          Connect to or accept from trusted peers only

      --bootnodes <BOOTNODES>
          Comma separated enode URLs or ENRs for P2P discovery bootstrap.

          Will fall back to a network-specific default if not specified.

      --dns-retries <DNS_RETRIES>
          Amount of DNS resolution requests retries to perform when peering

          [default: 0]

      --peers-file <FILE>
          The path to the known peers file. Connected peers are dumped to this file on nodes
          shutdown, and read on startup. Cannot be used with `--no-persist-peers`.

      --identity <IDENTITY>
          Custom node identity

          [default: reth/<VERSION>-<SHA>/<ARCH>]

      --p2p-secret-key <PATH>
          Secret key to use for this node.

          This will also deterministically set the peer ID. If not specified, it will be set in the data dir for the chain being used.

      --p2p-secret-key-hex <HEX>
          Hex encoded secret key to use for this node.

          This will also deterministically set the peer ID. Cannot be used together with `--p2p-secret-key`.

      --no-persist-peers
          Do not persist peers.

      --nat <NAT>
          NAT resolution method (any|none|upnp|publicip|extip:\<IP\>)

          [default: any]

      --addr <ADDR>
          Network listening address

          [default: 0.0.0.0]

      --port <PORT>
          Network listening port

          [default: 30303]

      --max-outbound-peers <MAX_OUTBOUND_PEERS>
          Maximum number of outbound peers. default: 100

      --max-inbound-peers <MAX_INBOUND_PEERS>
          Maximum number of inbound peers. default: 30

      --max-peers <COUNT>
          Maximum number of total peers (inbound + outbound).

          Splits peers using approximately 2:1 inbound:outbound ratio. Cannot be used together with `--max-outbound-peers` or `--max-inbound-peers`.

      --max-tx-reqs <COUNT>
          Max concurrent `GetPooledTransactions` requests.

          [default: 130]

      --max-tx-reqs-peer <COUNT>
          Max concurrent `GetPooledTransactions` requests per peer.

          [default: 1]

      --max-seen-tx-history <COUNT>
          Max number of seen transactions to remember per peer.

          Default is 320 transaction hashes.

          [default: 320]

      --max-pending-imports <COUNT>
          Max number of transactions to import concurrently.

          [default: 4096]

      --pooled-tx-response-soft-limit <BYTES>
          Experimental, for usage in research. Sets the max accumulated byte size of transactions
          to pack in one response.
          Spec'd at 2MiB.

          [default: 2097152]

      --pooled-tx-pack-soft-limit <BYTES>
          Experimental, for usage in research. Sets the max accumulated byte size of transactions to
          request in one request.

          Since `RLPx` protocol version 68, the byte size of a transaction is shared as metadata in a
          transaction announcement (see `RLPx` specs). This allows a node to request a specific size
          response.

          By default, nodes request only 128 KiB worth of transactions, but should a peer request
          more, up to 2 MiB, a node will answer with more than 128 KiB.

          Default is 128 KiB.

          [default: 131072]

      --max-tx-pending-fetch <COUNT>
          Max capacity of cache of hashes for transactions pending fetch.

          [default: 25600]

      --tx-channel-memory-limit <BYTES>
          Memory limit (in bytes) for the channel that buffers transaction events flowing
          from the network manager to the transactions manager.

          When the budget is exhausted, new events are dropped (see metric
          `total_dropped_tx_events_at_full_capacity`). Acts as a backstop against unbounded
          memory growth under sustained P2P transaction flooding.

          [default: 1073741824]

      --net-if.experimental <IF_NAME>
          Name of network interface used to communicate with peers.

          If flag is set, but no value is passed, the default interface for docker `eth0` is tried. If `--discovery.addr` is left at its default, discv4 will also bind to the resolved interface address.

      --tx-propagation-policy <TX_PROPAGATION_POLICY>
          Transaction Propagation Policy

          The policy determines which peers transactions are gossiped to.

          [default: All]

      --tx-ingress-policy <TX_INGRESS_POLICY>
          Transaction ingress policy

          Determines which peers' transactions are accepted over P2P.

          [default: All]

      --disable-tx-gossip
          Disable transaction pool gossip

          Disables gossiping of transactions in the mempool to peers. This can be omitted for personal nodes, though providers should always opt to enable this flag.

      --tx-propagation-mode <PROPAGATION_MODE>
          Sets the transaction propagation mode by determining how new pending transactions are propagated to other peers in full.

          Examples: sqrt, all, max:10

          [default: sqrt]

      --required-block-hashes <REQUIRED_BLOCK_HASHES>
          Comma separated list of required block hashes or block number=hash pairs. Peers that don't have these blocks will be filtered out. Format: hash or `block_number=hash` (e.g., 23115201=0x1234...)

      --network-id <NETWORK_ID>
          Optional network ID to override the chain specification's network ID for P2P connections

      --eth-max-message-size <BYTES>
          Maximum allowed ETH message size in bytes. Default is 10 MiB

      --netrestrict <NETRESTRICT>
          Restrict network communication to the given IP networks (CIDR masks).

          Comma separated list of CIDR network specifications. Only peers with IP addresses within these ranges will be allowed to connect.

          Example: --netrestrict "192.168.0.0/16,10.0.0.0/8"

      --enforce-enr-fork-id
          Enforce EIP-868 ENR fork ID validation for discovered peers.

          When enabled, peers discovered without a confirmed fork ID are not added to the peer set until their fork ID is verified via EIP-868 ENR request. This filters out peers from other networks that pollute the discovery table.

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]

  <ID>
          The header number or hash

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=]
```