SIGN IN SIGN UP

Per chain rpc settings (#6459)

* ethereum, node: Per-chain RPC settings via TOML config

Introduce a ChainSettings struct that holds Ethereum RPC tuning
parameters (timeouts, retries, batch sizes, block ranges, etc.)
per chain instead of reading them from global ENV_VARS. Settings
are parsed from [chains.<name>] TOML sections with serde defaults
falling back to the existing environment variables, preserving full
backwards compatibility.

Thread ChainSettings through Chain, EthereumAdapter, and the
free receipt-fetching functions so each chain can be independently
tuned.

* docs: Document per-chain RPC settings in config and env vars

Add the full list of per-chain Ethereum RPC tuning settings to
docs/config.md with env var fallback defaults, and add a
cross-reference note in docs/environment-variables.md.

* node: Validate per-chain settings on config load

Reject invalid ChainSettings values at startup: max_block_range_size
and max_event_only_range must be positive (i32), and block_batch_size,
block_ptr_batch_size, block_ingestor_max_concurrent_json_rpc_calls,
and get_logs_max_contracts must be non-zero (used as .buffered() args
or filter batch limits where 0 would panic or silently break).

* node, docs: Address review feedback on per-chain settings

- Guard ChainSettings::validate() to Ethereum chains only
- Add zero-value validation for polling_interval, json_rpc_timeout,
  request_retries, and target_triggers_per_block_range
- Fix ETHEREUM_POLLING_INTERVAL env var name in doc comment (drop GRAPH_ prefix)
- Fix polling_interval default in docs (500ms → 1000ms)
M
Maksim Dimitrov committed
0c9940a6c285f29f54baf3bf02cbfbd9b72082b2
Parent: 1d39f7d
Committed by GitHub <noreply@github.com> on 4/1/2026, 10:18:57 AM