feat(rpc): add web3, net namespaces and expand debug/eth for tooling compatibility#120
Merged
prestwich merged 15 commits intoMar 31, 2026
Merged
Conversation
6 tasks
prestwich
marked this pull request as draft
March 26, 2026 11:07
prestwich
force-pushed
the
prestwich/eng-960-rpc-namespace-completeness
branch
from
March 26, 2026 15:29
9af104c to
4dd2e29
Compare
prestwich
force-pushed
the
prestwich/eng-1899
branch
from
March 26, 2026 15:37
dfd1229 to
b87e46b
Compare
prestwich
force-pushed
the
prestwich/eng-960-rpc-namespace-completeness
branch
from
March 26, 2026 15:38
4dd2e29 to
03bbd7c
Compare
prestwich
force-pushed
the
prestwich/eng-1899
branch
from
March 26, 2026 21:41
b87e46b to
112c417
Compare
prestwich
force-pushed
the
prestwich/eng-960-rpc-namespace-completeness
branch
from
March 26, 2026 21:41
03bbd7c to
c0379af
Compare
rswanson
approved these changes
Mar 27, 2026
Fraser999
reviewed
Mar 30, 2026
Member
Author
|
[Claude Code] Code reviewFound 1 issue:
Additionally, several lower-confidence findings were identified (not posted here as they scored below threshold): 🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
prestwich
force-pushed
the
prestwich/eng-960-rpc-namespace-completeness
branch
from
March 30, 2026 17:35
c0379af to
f3d693c
Compare
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Extract trace_block_inner() so it can be reused by the new debug_traceBlock (raw RLP) handler. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Decodes an RLP-encoded block, recovers transaction senders, and traces all transactions using the shared trace_block_inner loop. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
eth_protocolVersion is now implemented, so the test that expected method_not_found is updated to assert the "0x44" response. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
- Document partial-move pattern in get_raw_receipts - Consolidate duplicate -32602 error code arms in DebugError - Fix resolve_header error mapping: use Resolve(e) instead of BlockNotFound(id) to preserve the distinction between "block not found" (-32001) and "storage layer failed" (-32000). The resolve_error_message helper already sanitizes DB errors to the opaque "server error" string, so no internals are leaked. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
9 methods (trace_block, trace_transaction, trace_replayBlockTransactions, trace_replayTransaction, trace_call, trace_callMany, trace_rawTransaction, trace_get, trace_filter) for Blockscout/tooling compatibility. ENG-1064, ENG-1065. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
12 tasks covering TraceError, param types, config, Parity tracer functions, block replay helpers, 9 trace_ endpoints, and router wiring. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
- Replace EvmHalt with Internal for task panic/cancellation errors - Replace EvmHalt with Internal for resolve_evm_block error mapping - Use unwrap_or_default() for optional tracer options per Geth spec - Change pub(super) to pub(crate) on all debug handler functions - Replace glob import with explicit imports in web3 test module - Remove accidentally committed planning/spec documents Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
prestwich
force-pushed
the
prestwich/eng-960-rpc-namespace-completeness
branch
from
March 31, 2026 11:30
f3d693c to
f945ca7
Compare
prestwich
marked this pull request as ready for review
March 31, 2026 11:31
prestwich
enabled auto-merge (squash)
March 31, 2026 12:04
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
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.
Summary
[Claude Code]
Adds standard Ethereum JSON-RPC namespaces and methods for general tooling compatibility (Blockscout, Routescan, wallets, etc.). Driven by ENG-960.
web3namespace:clientVersion,sha3netnamespace:version,listeningeth:protocolVersiondebug:getRawHeader,getRawTransaction,getRawBlock,getRawReceipts,traceBlock(raw RLP),traceCallTotal: 56 routes across 5 namespaces (eth 41, debug 9, signet 2, web3 2, net 2).
Methods that don't apply to Signet (mining, keystore, txpool, proofs, blobs,
net_peerCount) are not registered and returnmethod_not_found.Key implementation details
debug_traceBlockdecodes raw RLP, recovers senders, reuses extractedtrace_block_innershared tracing loopdebug_traceCallcombines EVM state resolution (likeeth_call) with the tracer infrastructuredebug_getRawReceiptsreconstructs consensusReceiptEnvelopefromColdReceipt(strips RPC log metadata)debug_getRawBlockassembles full block from separately-stored header + transactionsDebugErrorvariants:RlpDecode,SenderRecoveryTest plan
test_not_supported→test_protocol_version)web3_sha3,web3_clientVersion,DebugErrorvariants--all-features --all-targets)Review Fixes
EvmHaltwithInternalfor task panic/cancellation in allawait_handler!sitesEvmHaltwithInternalforresolve_evm_blockerror mapping indebug_traceCallunwrap_or_default()for optional tracer options per Geth spec (all 4 handlers)pub(super)topub(crate)on all debug handler functionsuse super::*glob import with explicit imports in web3 testsReviewed and updated by Claude Code.
🤖 Generated with Claude Code