Skip to content

[r3.7] docs(site): document 3.7 RPC, config, txpool and compaction changes - #24491

Open
bloxster wants to merge 8 commits into
release/3.7from
docs/v37-features-37
Open

bloxster wants to merge 8 commits into
release/3.7from
docs/v37-features-37

Conversation

@bloxster

@bloxster bloxster commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Documents 3.7 changes the docs did not cover. Each claim was checked against this branch's source.

Configuration

  • --caplin.builder.allow-private-urls: lets validator-submitted builder URLs resolve to private or loopback addresses; does not apply to --caplin.mev-relay-url (cl/beacon/builder/client.go).
  • --http.compression: Zstandard or gzip per the client's Accept-Encoding, for responses of 1 KiB or more (node/rpcstack.go).
  • MAX_REORG_DEPTH: once a finalized block is known (after the initial sync cycle), reorg data is kept back to it instead; the value still caps newPayload ancestor download and side-fork validation (execution/execfinality/context.go).

RPC

  • erigon_getLogs, erigon_getLatestLogs, erigon_getLogsByHash: block time as blockTimestamp (was timestamp).
  • Fork-gated call fields: access lists before Berlin, blob hashes before Cancun, and the blob checks from Cancun on, with their errors (ValidateBlobPrerequisites).
  • eth_syncing during snapshot download and the new eth_subscribe("syncing").
  • blockTimestamp on filter and subscription logs.
  • callTracer withLog: block-wide log indices; failed CREATE frames have no to.

Operations

  • GOMEMLIMIT defaults to 80% of the lower of RAM and the cgroup limit (FAQ Fix CircleCI #29, OOM entry).
  • Automatic MDBX compaction at startup (free pages ≥ 10 GB and > 4× live data).
  • EIP-7702 delegated senders: one in-flight transaction at the current nonce.

Branch-specific (release/3.7)

  • Upgrade notes: Glamsterdam on Sepolia at epoch 353024, 6 Oct 2026 13:53:36 UTC (sepolia.json amsterdamTime, GloasForkEpoch), and the blockTimestamp rename.
  • eth_syncing reports startingBlock as 0x0; the subscription reports the block it first saw syncing.

The Sepolia bullet names v3.7.1 as the minimum: #24386, #24441 and #24474 (Glamsterdam/Gloas) landed after v3.7.0. Both versions are declared with llms-pinned-version.

Same content on main: #24490. npm run build, the script tests and generate-llms.py --check pass. Pushed with --no-verify: the pre-push review flags the frozen v3.6 archive's Shutter page on every release/3.7 branch.

Bloxster added 3 commits October 1, 2026 14:00
- --caplin.builder.allow-private-urls (cmd/utils/flags.go, added with
  Gloas builder preferences): lets validator-submitted builder URLs
  resolve to private or loopback addresses; other non-public ranges stay
  blocked, and --caplin.mev-relay-url is unaffected
  (cl/beacon/builder/client.go isAllowedBuilderIP).
- erigon_getLogs / erigon_getLatestLogs return the block time as
  blockTimestamp (was timestamp, ErigonLog), matching eth_getLogs, and
  erigon_getLogsByHash now includes it (rpc/jsonrpc/erigon_receipts.go).
- --http.compression serves Zstandard when the client sends
  Accept-Encoding: zstd, gzip otherwise, for bodies of 1 KiB or more
  (node/rpcstack.go).
- GOMEMLIMIT now defaults to 80% of the lower of RAM and the cgroup
  limit unless set; GOMEMLIMIT=off leaves the heap unbounded
  (node/debug/gomemlimit.go). FAQ #29 and the OOM entry said nothing of it.
…nges

- eth: fork-gated call fields (access lists before Berlin, blob hashes
  before Cancun; execution/protocol/txn_executor.go preCheck),
  eth_syncing during snapshot download and the new
  eth_subscribe("syncing") (rpc/jsonrpc/eth_subscribe_syncing.go,
  node/shards/sync_state.go), and blockTimestamp on filter and
  subscription logs (rpc/rpchelper/logsfilter.go).
- debug: callTracer withLog indices are block-wide; failed CREATE
  frames omit "to" (eth/tracers/native/call.go).
- txpool: EIP-7702 delegated senders get one in-flight transaction at
  the current nonce (txnprovider/txpool/pool.go).
- database: automatic compaction at startup when free pages are at
  least 10 GB and over 4x live data (db/kv/backup/datadir.go).
- MAX_REORG_DEPTH only bounds reorg data until a finalized block is
  known (execution/execfinality/context.go).
- Upgrade notes: Glamsterdam activates on Sepolia at epoch 353024,
  6 Oct 2026 13:53:36 UTC (sepolia.json amsterdamTime, clparams
  GloasForkEpoch); 3.6 does not schedule it.
- Blob-hash rows apply from Cancun on: before Cancun every blob call
  gets "BlobTx transactions require Cancun" (ValidateBlobPrerequisites
  checks Cancun first). Add the invalid-version-byte row, and stop
  presenting the method list as exhaustive.
- --http.compression follows the client's Accept-Encoding; a client
  accepting neither encoding gets an uncompressed response.
- eth_syncing reports synced when fewer than 8 blocks behind; the
  syncing subscription only seeds a last state if one was reported.
- MAX_REORG_DEPTH: finality is ignored during the initial sync cycle,
  and the value still caps newPayload ancestor download and side-fork
  validation (block_downloader.go, exec_module.go).
- txpool: delegated replacement needs the usual price bump; the trim
  leaves at most one transaction.
- debug: the callTracer note is an admonition, not a method heading.
- 3.7: the syncing subscription reports the block it was at when it
  first saw the node syncing, not where the sync began.

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.

Copilot review overview

🟡 Changes recommended

The upgrade guidance currently permits v3.7.0 even though required Glamsterdam changes landed after that release.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
What changed in this PR

Documents release 3.7 configuration, RPC, transaction-pool, storage, and upgrade behavior.

Changes:

  • Expands RPC and configuration documentation.
  • Documents compaction, memory limits, and delegated senders.
  • Adds Sepolia Glamsterdam upgrade guidance.
File Description
llms-full.txt Updates generated documentation corpus.
docs/​site/​static/​llms-full.txt Updates deployable documentation corpus.
docs/​site/​help-center/​frequently-asked-questions-faqs.mdx Clarifies automatic memory limits.
docs/​site/​help-center/​common-errors-and-solutions.md Updates OOM guidance.
docs/​site/​docs/​interacting-with-erigon/​eth.md Documents call validation, syncing, and log timestamps.
docs/​site/​docs/​interacting-with-erigon/​erigon.md Documents Erigon log timestamp fields.
docs/​site/​docs/​interacting-with-erigon/​debug.md Documents call-tracer output.
docs/​site/​docs/​get-started/​installation/​upgrading.md Adds 3.7 upgrade warnings.
docs/​site/​docs/​fundamentals/​modules/​txpool.md Documents EIP-7702 sender limits.
docs/​site/​docs/​fundamentals/​database.md Documents startup compaction.
docs/​site/​docs/​fundamentals/​configuring-erigon.mdx Expands configuration behavior.

💡 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/get-started/installation/upgrading.md Outdated
"The latest 3.7 release" is v3.7.0 today, which predates the
Glamsterdam/Gloas fixes the fork needs (#24386, #24441, #24474), so an
operator could follow the note and still run an incompatible version.

Both versions are historical, so they are declared with
llms-pinned-version: v3.7.0 is the current release on this branch and
v3.7.1 will be, and either literal would otherwise fail
test_nothing_in_the_sources_hardcodes_the_release.
Comment thread docs/site/docs/interacting-with-erigon/eth.md Outdated
Comment thread docs/site/docs/interacting-with-erigon/eth.md Outdated
Comment thread docs/site/docs/interacting-with-erigon/eth.md Outdated
Comment thread docs/site/help-center/frequently-asked-questions-faqs.mdx Outdated
…ll blobs and GOMEMLIMIT

- eth_syncing: the 8-block distance is absolute, so a node ahead of a
  stale highest block reports syncing with highestBlock == currentBlock.
- eth_subscribe("syncing"): a slow client can miss intermediate states
  (SendLatest on an 8-entry buffer drops the oldest).
- trace_call: TraceCallParam has no blobVersionedHashes on 3.7.
- GOMEMLIMIT example: 26GiB exceeds the 80% default on a 32 GB host; use
  20GiB.

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.

Copilot review overview

🟡 Changes recommended

The eth_syncing documentation has an off-by-one boundary and its generated copies need regeneration.

Review effort: Balanced
Findings: 3 Low severity

Open (3)
Resolved since last review (1)

Comment thread docs/site/docs/interacting-with-erigon/eth.md Outdated
Comment thread docs/site/static/llms-full.txt Outdated
Comment thread llms-full.txt Outdated
Sahil-4555 pushed a commit to Sahil-4555/erigon that referenced this pull request Oct 2, 2026
…rigontech#24490)

Documents 3.7 changes the docs did not cover. Each claim was checked
against this branch's source.

**Configuration**
- `--caplin.builder.allow-private-urls`: lets validator-submitted
builder URLs resolve to private or loopback addresses; does not apply to
`--caplin.mev-relay-url` (`cl/beacon/builder/client.go`).
- `--http.compression`: Zstandard or gzip per the client's
`Accept-Encoding`, for responses of 1 KiB or more (`node/rpcstack.go`).
- `MAX_REORG_DEPTH`: once a finalized block is known (after the initial
sync cycle), reorg data is kept back to it instead; the value still caps
newPayload ancestor download and side-fork validation
(`execution/execfinality/context.go`).

**RPC**
- `erigon_getLogs`, `erigon_getLatestLogs`, `erigon_getLogsByHash`:
block time as `blockTimestamp` (was `timestamp`).
- Fork-gated call fields: access lists before Berlin, blob hashes before
Cancun, and the blob checks from Cancun on, with their errors
(`ValidateBlobPrerequisites`).
- `eth_syncing` during snapshot download and the new
`eth_subscribe("syncing")`.
- `blockTimestamp` on filter and subscription logs.
- `callTracer` `withLog`: block-wide log indices; failed CREATE frames
have no `to`.

**Operations**
- `GOMEMLIMIT` defaults to 80% of the lower of RAM and the cgroup limit
(FAQ erigontech#29, OOM entry).
- Automatic MDBX compaction at startup (free pages ≥ 10 GB and > 4× live
data).
- EIP-7702 delegated senders: one in-flight transaction at the current
nonce.

**Branch-specific (`main`)**
- `eth_callMany` rejects `pending`; a call object with another chain's
`chainId` is rejected (erigontech#24414).
- `eth_syncing` and the subscription report the block where the sync
session began.
- The upgrade-notes bullets (`blockTimestamp`, Sepolia Glamsterdam)
follow once erigontech#24436 brings the "Upgrading from 3.6 to 3.7" section to
`main`.

Same content on `release/3.7`: erigontech#24491. `npm run build`, the script tests
and `generate-llms.py --check` pass.

---------

Co-authored-by: Bloxster <gianni.morselli@erigon.tech>
@yperbasis
yperbasis requested review from lupin012 and a balanced review from Copilot October 4, 2026 09:22

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.

Copilot review overview

🟡 Changes recommended

The syncing documentation applies the 8-block cutoff to states where the implementation bypasses it.

Review effort: Balanced
Findings: 3 Low severity

Open (3)
Resolved since last review (3)

Comment thread docs/site/docs/interacting-with-erigon/eth.md Outdated
Comment thread docs/site/static/llms-full.txt Outdated
Comment thread llms-full.txt Outdated

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.

Copilot review overview

🔵 Needs a closer look

The compaction guidance materially overstates the required filesystem headroom.

Review effort: Balanced
Findings: None

Resolved since last review (3)
Previously missed (3)

In code that hasn't changed since last review

Low severity Clarify compaction requires space for a second live-data copy

docs/​site/​docs/​fundamentals/​database.md:142

CompactInPlace copies only the database's live data (db/kv/backup/backup.go:120-123), not another full copy of the bloated database. Because auto-compaction targets databases with more than 4× as much free space as live data, saying it needs the “same” space can substantially overstate the required filesystem headroom. Please describe the requirement as a second copy of the live data and regenerate the LLM outputs.

Low severity Correct compaction headroom description to reference live data

docs/​site/​static/​llms-full.txt:1858

The compaction copy contains only live data (db/kv/backup/backup.go:120-123), not a second full copy of the bloated database. This generated paragraph therefore overstates the required filesystem headroom; update the source to say “a second copy of its live data” and regenerate this file.

Low severity Correct compaction headroom description to reference live data

llms-full.txt:1858

The compaction copy contains only live data (db/kv/backup/backup.go:120-123), not a second full copy of the bloated database. This generated paragraph therefore overstates the required filesystem headroom; update the source to say “a second copy of its live data” and regenerate this file.

…res-37-wt

# Conflicts:
#	docs/site/help-center/frequently-asked-questions-faqs.mdx

This branch has not been deployed

No deployments
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.

4 participants