docs: August 2026 w33 — document the embedded HTTPS and IPC transports - #23181
Merged
Conversation
#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>
Contributor
There was a problem hiding this comment.
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.enabledis described as serving JSON-RPC over a local socket, but the very next bullet says--socket.urlsupportstcp://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.enabledis described as serving JSON-RPC over a local socket, but--socket.urlsupportstcp://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.enabledis described as serving JSON-RPC over a local socket, but--socket.urlsupportstcp://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.
…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
marked this pull request as ready for review
August 11, 2026 13:21
AskAlexSharov
approved these changes
Aug 11, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Aug 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
#23108 registered nine RPC transport flags for the
erigonbinary —--http.url,--https.enabled/.cert/.key/.addr/.port/.url, and--socket.enabled/.url— by wiring them into the embedded RPC config innode/cli/flags.go.node/eth/backend.go:1220then hands that config to the samerpcdaemoncli.StartRpcServerthe standalone daemon calls, so they take effect in the node itself, not just inrpcdaemon.None of the nine were in the CLI reference. They appeared only inside the
rpcdaemon --helppaste-through inmodules/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.mdhad no HTTPS listener.--https.portdefaults to0, whichcmd/rpcdaemon/cli/config.go:842resolves 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-erigonsaid "IPC is only available through the separaterpcdaemonprocess, not the mainerigonbinary". That is now false for the socket server. The geth-style--ipcpathendpoint 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.6was cut on 2026-07-21 and #23108 landed on 2026-08-09, so the flags are absent fromrelease/3.6source entirely, andmaindeclares3.7.0-devindb/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
UsagestringsTwo adversarial review passes (GPT-5.5 and Fable) surfaced the last two of these:
--https.urlself-enables HTTPS.config.go:838setsHttpsServerEnabled = truewhenHttpsURL != ""— no need for--https.enabled.ServeTLSruns in a goroutine whose error only reacheslog.Warn("Failed to serve https endpoint")(node/endpoints.go:87). The listener binds and the node runs, so--https.enabledwithout a readable cert looks healthy and serves no TLS.--http=falseis a master switch.StartRpcServerreturns immediately unlesscfg.Enabled, which comes from--http— so--http=false --https.enabledyields no listener at all. A TLS-only node needs--http.enabled=falseinstead. Added as a:::warning, since the natural reading of the new flags invites exactly this mistake.tcp://URL is a startup failure, not a route prefix.node/endpoints.go:63concatenatesHost + EscapedPath()into the listen address, sotcp://0.0.0.0:8545/rpcis an invalid address. Onlyunix://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.gaslimitignores an explicit0and falls back to the chain config's default block gas limit (60_000_000where none is set)--experimental.always-generate-changesetsderives its default fromBATCH_COMMITMENTS--allow-insecure-unlockis read nowhere in the tree — it is inert, not a security control--dev-validator-seeddoes not itself enable dev mode;--chain devdoes--dev.slot-timesilently clamps below2rather than rejectingPlus the dead
beaconstate.infocheckpoint-sync endpoint (no A, AAAA or CNAME record), replaced withmainnet.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)origin/mainsource; no default taken from aUsagestringPart of the w33 weekly docs routine. Sibling PRs cover
release/3.5andrelease/3.6.🤖 Generated with Claude Code