feat(rpc): add web3, net namespaces and expand debug/eth for tooling compatibility#120
feat(rpc): add web3, net namespaces and expand debug/eth for tooling compatibility#120prestwich wants to merge 14 commits intoprestwich/eng-1899from
Conversation
9af104c to
4dd2e29
Compare
dfd1229 to
b87e46b
Compare
4dd2e29 to
03bbd7c
Compare
b87e46b to
112c417
Compare
03bbd7c to
c0379af
Compare
crates/rpc/src/debug/endpoints.rs
Outdated
| H: HotKv + Send + Sync + 'static, | ||
| <H::RoTx as HotKvRead>::Error: DBErrorMarker, | ||
| { | ||
| let opts = opts.ok_or(DebugError::InvalidTracerConfig)?; |
There was a problem hiding this comment.
According to claude: "Per the Geth spec, the tracer options parameter is optional and should default to the struct logger when omitted."
| let opts = opts.ok_or(DebugError::InvalidTracerConfig)?; | |
| let opts = opts.unwrap_or_default(); |
It seems this is what we already have for existing endpoints, so they should probably all be changed.
crates/rpc/src/debug/endpoints.rs
Outdated
| H: HotKv + Send + Sync + 'static, | ||
| <H::RoTx as HotKvRead>::Error: DBErrorMarker, | ||
| { | ||
| let opts = opts.ok_or(DebugError::InvalidTracerConfig)?; |
There was a problem hiding this comment.
| let opts = opts.ok_or(DebugError::InvalidTracerConfig)?; | |
| let opts = opts.unwrap_or_default(); |
|
[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 👎. |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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) <noreply@anthropic.com>
- 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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
- 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) <noreply@anthropic.com>
c0379af to
f3d693c
Compare
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