Skip to content

docs: August 2026 w33 — document the embedded HTTPS and IPC transports - #23181

Merged
bloxster merged 3 commits into
mainfrom
docs/weekly-2026w33-main
Aug 12, 2026
Merged

docs: August 2026 w33 — document the embedded HTTPS and IPC transports#23181
bloxster merged 3 commits into
mainfrom
docs/weekly-2026w33-main

Conversation

@bloxster

Copy link
Copy Markdown
Collaborator

Why

#23108 registered nine RPC transport flags for the erigon binary--http.url, --https.enabled/.cert/.key/.addr/.port/.url, and --socket.enabled/.url — by wiring them into the embedded RPC config in node/cli/flags.go. node/eth/backend.go:1220 then hands that config to the same rpcdaemoncli.StartRpcServer the standalone daemon calls, so they take effect in the node itself, not just in rpcdaemon.

None of the nine were in the CLI reference. They appeared only inside the rpcdaemon --help paste-through in modules/rpc-daemon.md — which is exactly why a substring-based coverage sweep reported this branch as fully documented while thirteen flags had arrived since the last run.

What this fixes

New flags documented in the CLI reference, with defaults and behaviour read from the implementation.

default-ports.md had no HTTPS listener. --https.port defaults to 0, which cmd/rpcdaemon/cli/config.go:842 resolves to --http.port + 363 — so an enabled HTTPS server binds 8908 on a default configuration. Now in the table and the port-flag list.

A stale claim removed. interacting-with-erigon said "IPC is only available through the separate rpcdaemon process, not the main erigon binary". That is now false for the socket server. The geth-style --ipcpath endpoint is still force-disabled (nodeConfig.IPCPath = "", cmd/erigon/node/node.go), so both statements now appear with their own scope rather than one contradicting the other.

Version label: v3.7, not v3.6

These flags are marked (New in v3.7). release/3.6 was cut on 2026-07-21 and #23108 landed on 2026-08-09, so the flags are absent from release/3.6 source entirely, and main declares 3.7.0-dev in db/version/app.go. The four pre-existing (New in v3.6) labels on the same page are correct and untouched.

Behaviours taken from the code, not the Usage strings

Two adversarial review passes (GPT-5.5 and Fable) surfaced the last two of these:

  • A non-empty --https.url self-enables HTTPS. config.go:838 sets HttpsServerEnabled = true when HttpsURL != "" — no need for --https.enabled.
  • A missing cert fails silently. ServeTLS runs in a goroutine whose error only reaches log.Warn("Failed to serve https endpoint") (node/endpoints.go:87). The listener binds and the node runs, so --https.enabled without a readable cert looks healthy and serves no TLS.
  • --http=false is a master switch. StartRpcServer returns immediately unless cfg.Enabled, which comes from --http — so --http=false --https.enabled yields no listener at all. A TLS-only node needs --http.enabled=false instead. Added as a :::warning, since the natural reading of the new flags invites exactly this mistake.
  • A path on a tcp:// URL is a startup failure, not a route prefix. node/endpoints.go:63 concatenates Host + EscapedPath() into the listen address, so tcp://0.0.0.0:8545/rpc is an invalid address. Only unix:// URLs take a path, where it is the socket path. An earlier draft of this PR described it as a harmlessly-ignored prefix — that wording was wrong and is gone.

Also corrected here

Five pre-existing entries that the review challenged and the source confirmed wrong — identical on all three live branches, so they are fixed on each rather than left to diverge:

  • --miner.gaslimit ignores an explicit 0 and falls back to the chain config's default block gas limit (60_000_000 where none is set)
  • --experimental.always-generate-changesets derives its default from BATCH_COMMITMENTS
  • --allow-insecure-unlock is read nowhere in the tree — it is inert, not a security control
  • --dev-validator-seed does not itself enable dev mode; --chain dev does
  • --dev.slot-time silently clamps below 2 rather than rejecting

Plus the dead beaconstate.info checkpoint-sync endpoint (no A, AAAA or CNAME record), replaced with mainnet.checkpoint.sigp.io — the endpoint the Lighthouse example on the same page already used.

Testing

  • cd docs/site && npm ci && npm run build
  • python3 docs/site/scripts/generate-llms.py --check ✅ (artifacts regenerated and committed)
  • Every claim traced to origin/main source; no default taken from a Usage string

Part of the w33 weekly docs routine. Sibling PRs cover release/3.5 and release/3.6.

🤖 Generated with Claude Code

#23108 registered nine RPC transport flags for the erigon binary — --http.url,
--https.enabled/.cert/.key/.addr/.port/.url and --socket.enabled/.url — by
wiring them into the embedded RPC config in node/cli/flags.go. node/eth/backend.go
then hands that config to the same rpcdaemon StartRpcServer, so they take effect
in the erigon binary and not only in the standalone daemon.

None of the nine were in the CLI reference. They appeared only inside the
--help paste-through in modules/rpc-daemon.md, which is why a substring-based
coverage sweep reported the branch as fully documented.

Documents them, and fixes two things the change falsified:

- default-ports.md gained no entry for the HTTPS listener. --https.port
  defaults to 0, which resolves to --http.port + 363, so an enabled HTTPS
  server binds 8908 on a default configuration.
- interacting-with-erigon said "IPC is only available through the separate
  rpcdaemon process, not the main erigon binary". That is now false for the
  socket server. The geth-style --ipcpath endpoint is still force-disabled
  (nodeConfig.IPCPath = "" in cmd/erigon/node/node.go), so both statements
  now appear with their own scope.

These flags are marked "New in v3.7", not v3.6: release/3.6 was cut on
2026-07-21 and #23108 landed on 2026-08-09, so the flags are absent from
release/3.6 source entirely and main declares 3.7.0-dev in db/version/app.go.

Four behaviours came from reading the implementation rather than the Usage
strings, two of them surfaced by adversarial review:

- A non-empty --https.url sets HttpsServerEnabled on its own.
- ServeTLS runs in a goroutine whose failure is only logged, so an
  --https.enabled node with a missing cert starts and binds but never serves TLS.
- --http=false is a master switch. StartRpcServer returns immediately unless
  cfg.Enabled, which comes from --http, so --http=false also kills the HTTPS and
  IPC listeners. TLS-only needs --http.enabled=false instead, and the page now
  carries that warning.
- A path on a tcp:// URL is not a route prefix. node/endpoints.go concatenates
  Host and EscapedPath into the listen address, so tcp://host:port/rpc is an
  invalid address and the node fails to start. Only unix:// URLs take a path.

Also corrects five pre-existing entries that adversarial review challenged and
the source confirmed — --miner.gaslimit ignores an explicit 0 and falls back to
the chain default block gas limit, --experimental.always-generate-changesets
derives its default from BATCH_COMMITMENTS, --allow-insecure-unlock is read
nowhere in the tree, --dev-validator-seed does not itself enable dev mode
(--chain dev does), and --dev.slot-time clamps below 2 rather than rejecting —
plus the dead beaconstate.info checkpoint-sync endpoint (no A, AAAA or CNAME
record), replaced with mainnet.checkpoint.sigp.io.

Checks: npm ci && npm run build ✅ · generate-llms.py --check ✅

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates Erigon documentation to cover newly exposed embedded RPC transports (HTTPS and socket/IPC) and to correct several previously inaccurate CLI flag descriptions and defaults, aligning the docs with the actual implementation used by the embedded RPC server and standalone rpcdaemon.

Changes:

  • Document --http.url, HTTPS (--https.*) and socket (--socket.*) transport flags (with defaults and behavioral caveats) in the CLI reference and “Interacting with Erigon”.
  • Add the implied default HTTPS port (--http.port + 363, i.e. 8908) to the default ports + port-related options list.
  • Refresh external-CL checkpoint sync URLs and fix several pre-existing CLI flag descriptions (e.g. --allow-insecure-unlock, --miner.gaslimit, --dev.slot-time, --experimental.always-generate-changesets, --etl.bufferSize).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
llms-full.txt Regenerated LLM-facing docs snapshot reflecting new RPC transport docs + corrected flag behavior/defaults.
docs/site/static/llms-full.txt Same regenerated LLM-facing snapshot under the site static path.
docs/site/docs/interacting-with-erigon/index.md Adds embedded HTTPS and socket/IPC guidance for the erigon binary; updates IPC section to reflect v3.7 behavior.
docs/site/docs/get-started/easy-nodes/how-to-run-an-ethereum-node/ethereum-with-an-external-cl.mdx Updates checkpoint-sync URL examples to mainnet.checkpoint.sigp.io.
docs/site/docs/fundamentals/default-ports.md Adds HTTPS default port (8908 when enabled) and related port/url flags.
docs/site/docs/fundamentals/configuring-erigon.mdx Extends CLI reference with --http.url and new HTTPS/socket transport flags plus behavioral warnings.
Suppressed comments (3)

docs/site/docs/fundamentals/configuring-erigon.mdx:274

  • --socket.enabled is described as serving JSON-RPC over a local socket, but the very next bullet says --socket.url supports tcp:// too. Consider wording it as a socket transport (unix or tcp) to match the implementation.
* `--socket.enabled`: Enables an IPC server that serves JSON-RPC over a local socket.

llms-full.txt:2307

  • --socket.enabled is described as serving JSON-RPC over a local socket, but --socket.url supports tcp:// too. Update the wording to avoid implying Unix-only.
* `--socket.enabled`: Enables an IPC server that serves JSON-RPC over a local socket.

docs/site/static/llms-full.txt:2307

  • --socket.enabled is described as serving JSON-RPC over a local socket, but --socket.url supports tcp:// too. Update the wording to avoid implying Unix-only.
* `--socket.enabled`: Enables an IPC server that serves JSON-RPC over a local socket.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/site/docs/fundamentals/configuring-erigon.mdx Outdated
Comment thread llms-full.txt Outdated
Comment thread docs/site/static/llms-full.txt Outdated
Comment thread docs/site/docs/interacting-with-erigon/index.md Outdated
Comment thread docs/site/static/llms-full.txt Outdated
Comment thread llms-full.txt Outdated
…t, not local-only

Two self-contradictions in the new transport text, both raised by Copilot on
#23181 and both real:

- "over TLS or a local socket" understated --socket.url, which accepts a tcp://
  URL as well as unix:// — the flag entry two lines below already said so. The
  intro and the --socket.enabled entry now describe the endpoint by what
  --socket.url actually accepts.
- "runs alongside the plain HTTP one" contradicts the TLS-only setup this same
  page recommends (--http.enabled=false), where HTTPS runs with no plain HTTP
  listener. Both that sentence and the --https.enabled entry now describe the
  HTTPS listener as independent, and the port derivation is spelled out as
  reading --http.port whether or not the HTTP listener is running — which is
  what cmd/rpcdaemon/cli/config.go does, since the HTTPS block sits outside the
  HttpServerEnabled branch.

The --https.enabled entry carried the same "alongside" wording and was not
flagged; fixed too rather than left inconsistent.

Checks: npm run build ✅ · generate-llms.py --check ✅

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@bloxster
bloxster marked this pull request as ready for review August 11, 2026 13:21
@AskAlexSharov
AskAlexSharov added this pull request to the merge queue Aug 11, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 11, 2026
@bloxster
bloxster added this pull request to the merge queue Aug 12, 2026
Merged via the queue into main with commit 9914ca4 Aug 12, 2026
20 checks passed
@bloxster
bloxster deleted the docs/weekly-2026w33-main branch August 12, 2026 07:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants