---
# System prepended metadata

title: Cross-client RPC method matrix

---

# Cross-client RPC method matrix

Comparison of JSON-RPC methods exposed by six execution clients against the `ethereum/execution-apis` spec.

**Clients:** geth (G), Nethermind (N), Besu (B), Erigon (E), Reth (R), ethrex (X). **Spec column (S):** ✓ if `- name:` entry exists in `src/eth/`, `src/debug/`, `src/txpool/`, or `src/engine/`. Otherwise blank.


## Methodology

- **Spec:** every `^- name:` line in `src/eth/`, `src/debug/`, `src/txpool/`.
- **geth:** every exported method on RPC-registered API types in `internal/ethapi/`, `eth/api*.go`, `eth/tracers/`, `eth/syncer/`, `eth/filters/`. Subscription topics extracted by signature `(*rpc.Subscription, error)`.
- **Nethermind:** every method on `IEthRpcModule`, `IDebugRpcModule`, `ITxPoolRpcModule`, `INetRpcModule`, `ISubscribeRpcModule` interfaces with `[JsonRpcMethod]` attribute.
- **Besu:** wire names from `RpcMethod` enum and per-namespace registry classes (`EthJsonRpcMethods`, `DebugJsonRpcMethods`, `TxPoolJsonRpcMethods`, `NetJsonRpcMethods`).
- **Erigon:** exported methods on `EthAPI`, `PrivateDebugAPI`, `TxPoolAPI`, `NetAPI` interfaces in `turbo/jsonrpc/`.
- **Reth:** `#[method(name = "...")]` attributes inside `#[rpc(server, namespace = "...")]` traits in `crates/rpc/rpc-eth-api/src/` and `crates/rpc/rpc-api/src/`.
- **ethrex:** string literals matched in the dispatch logic at `crates/networking/rpc/rpc.rs`.

Out of scope: `admin`, `miner`, `web3`, `personal`, `trace` (parity), `engine`, `ots`, `parity`, `bor`, `erigon` (vendor), Reth's internal `reth` namespace, Nethermind's vendor namespaces, and L2-specific namespaces.

---

## eth namespace

| Method | S | G | N | B | E | R | X |
|---|---|---|---|---|---|---|---|
| eth_accounts | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_baseFee |   |   |   |   | ✓ |   |   |
| eth_blobBaseFee | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_blockNumber | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_call | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_callMany |   |   |   |   | ✓ | ✓ |   |
| eth_capabilities |   |   |   | ✓ |   |   |   |
| eth_chainId | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_coinbase | ✓ |   | ✓ |   | ✓ | ✓ |   |
| eth_config |   | ✓ | ✓ | ✓ | ✓ |   | ✓ |
| eth_createAccessList | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_estimateGas | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_feeHistory | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_fillTransaction |   | ✓ |   |   |   | ✓ |   |
| eth_gasPrice | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getAccount |   |   | ✓ |   |   | ✓ |   |
| eth_getAccountInfo |   |   | ✓ |   |   | ✓ |   |
| eth_getBalance | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getBlockAccessList | ✓ |   |   | ✓ | ✓ |   |   |
| eth_getBlockAccessListByHash |   |   | ✓ |   |   |   |   |
| eth_getBlockAccessListByNumber |   |   | ✓ |   |   |   |   |
| eth_getBlockAccessListByBlockHash |   |   |   |   |   | ✓ |   |
| eth_getBlockAccessListByBlockNumber |   |   |   |   |   | ✓ |   |
| eth_getBlockAccessListRaw |   |   |   |   |   | ✓ |   |
| eth_getBlockByHash | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getBlockByNumber | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getBlockReceipts | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getBlockTransactionCountByHash | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getBlockTransactionCountByNumber | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getCode | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getFilterChanges | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getFilterLogs | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_getHeaderByHash |   | ✓ |   |   |   | ✓ |   |
| eth_getHeaderByNumber |   | ✓ |   |   |   | ✓ |   |
| eth_getLogs | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getProof | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getRawTransactionByBlockHashAndIndex |   | ✓ |   |   | ✓ | ✓ |   |
| eth_getRawTransactionByBlockNumberAndIndex |   | ✓ |   |   | ✓ | ✓ |   |
| eth_getRawTransactionByHash |   | ✓ | ✓ |   | ✓ | ✓ |   |
| eth_getStorageAt | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getStorageValues | ✓ | ✓ | ✓ |   | ✓ | ✓ |   |
| eth_getTransactionByBlockHashAndIndex | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getTransactionByBlockNumberAndIndex | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getTransactionByHash | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getTransactionBySenderAndNonce |   |   |   |   |   | ✓ |   |
| eth_getTransactionCount | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getTransactionReceipt | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_getUncleByBlockHashAndIndex |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_getUncleByBlockNumberAndIndex |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_getUncleCountByBlockHash | ✓ |   | ✓ | ✓ | ✓ | ✓ |   |
| eth_getUncleCountByBlockNumber | ✓ |   | ✓ | ✓ | ✓ | ✓ |   |
| eth_getWork |   |   |   |   | ✓ | ✓ |   |
| eth_hashrate |   |   |   |   | ✓ | ✓ |   |
| eth_maxPriorityFeePerGas | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_mining |   |   |   | ✓ | ✓ | ✓ |   |
| eth_newBlockFilter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_newFilter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_newPendingTransactionFilter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_pendingTransactions |   | ✓ | ✓ |   |   |   |   |
| eth_protocolVersion |   |   | ✓ | ✓ | ✓ | ✓ |   |
| eth_resend |   | ✓ |   |   |   |   |   |
| eth_sendRawTransaction | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_sendRawTransactionSync |   | ✓ |   |   | ✓ | ✓ |   |
| eth_sendTransaction | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_sign | ✓ | ✓ | ✓ |   | ✓ | ✓ |   |
| eth_signTransaction | ✓ | ✓ |   |   | ✓ | ✓ |   |
| eth_signTypedData |   |   |   |   |   | ✓ |   |
| eth_simulateV1 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| eth_snapshot |   |   | ✓ |   |   |   |   |
| eth_submitHashrate |   |   |   |   | ✓ | ✓ |   |
| eth_submitWork |   |   |   |   | ✓ | ✓ |   |
| eth_syncing | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| eth_uninstallFilter | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

## debug namespace

| Method | S | G | N | B | E | R | X |
|---|---|---|---|---|---|---|---|
| debug_accountAt |   |   |   | ✓ | ✓ |   |   |
| debug_accountRange |   | ✓ |   | ✓ | ✓ | ✓ |   |
| debug_backtraceAt |   |   |   |   |   | ✓ |   |
| debug_batchSendRawTransaction |   |   |   | ✓ |   |   |   |
| debug_blockProfile |   |   |   |   |   | ✓ |   |
| debug_chainConfig |   |   |   |   |   | ✓ | ✓ |
| debug_chaindbCompact |   | ✓ |   |   |   | ✓ |   |
| debug_chaindbProperty |   | ✓ |   |   |   | ✓ |   |
| debug_codeByHash |   |   |   |   |   | ✓ |   |
| debug_cpuProfile |   |   |   |   |   | ✓ |   |
| debug_dbAncient |   | ✓ |   |   |   | ✓ |   |
| debug_dbAncients |   | ✓ |   |   |   | ✓ |   |
| debug_dbGet |   | ✓ |   |   |   | ✓ |   |
| debug_deleteChainSlice |   |   | ✓ |   |   |   |   |
| debug_dumpBlock |   | ✓ | ✓ |   |   | ✓ |   |
| debug_executePayload |   |   |   |   |   | ✓ |   |
| debug_executionWitness |   | ✓ | ✓ |   | ✓ | ✓ | ✓ |
| debug_executionWitnessByBlockHash |   |   |   |   |   | ✓ | ✓ |
| debug_executionWitnessCall |   |   | ✓ |   |   |   |   |
| debug_freeOSMemory |   |   |   |   | ✓ | ✓ |   |
| debug_freezeClient |   |   |   |   |   | ✓ |   |
| debug_gcStats |   |   | ✓ |   | ✓ | ✓ |   |
| debug_getAccessibleState |   | ✓ |   |   |   | ✓ |   |
| debug_getBadBlocks | ✓ |   | ✓ | ✓ | ✓ | ✓ |   |
| debug_getBlockAccessList |   |   |   |   |   |   | ✓ |
| debug_getChainLevel |   |   | ✓ |   |   |   |   |
| debug_getConfigValue |   |   | ✓ |   |   |   |   |
| debug_getFromDb |   |   | ✓ |   |   |   |   |
| debug_getModifiedAccountsByHash |   | ✓ |   |   | ✓ | ✓ |   |
| debug_getModifiedAccountsByNumber |   | ✓ |   |   | ✓ | ✓ |   |
| debug_getRawBlock | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| debug_getRawHeader | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| debug_getRawReceipts | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| debug_getRawTransaction | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| debug_getRawTransactions |   |   |   |   |   | ✓ |   |
| debug_getSyncStage |   |   | ✓ |   |   |   |   |
| debug_getTrieFlushInterval |   | ✓ |   |   |   |   |   |
| debug_goTrace |   |   |   |   |   | ✓ |   |
| debug_insertReceipts |   |   | ✓ |   |   |   |   |
| debug_intermediateRoots |   | ✓ |   |   |   | ✓ |   |
| debug_memStats |   |   | ✓ |   | ✓ | ✓ |   |
| debug_metrics |   |   |   | ✓ |   |   |   |
| debug_migrateReceipts |   |   | ✓ |   |   |   |   |
| debug_mutexProfile |   |   |   |   |   | ✓ |   |
| debug_preimage |   | ✓ |   |   |   | ✓ |   |
| debug_printBlock |   | ✓ |   |   |   | ✓ |   |
| debug_replayBlock |   |   |   | ✓ |   |   |   |
| debug_resetHead |   |   | ✓ |   |   |   |   |
| debug_resyncWorldState |   |   |   | ✓ |   |   |   |
| debug_seedHash |   |   | ✓ |   |   | ✓ |   |
| debug_setBlockProfileRate |   |   |   |   |   | ✓ |   |
| debug_setGCPercent |   |   |   |   | ✓ | ✓ |   |
| debug_setHead |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| debug_setMemoryLimit |   |   |   |   | ✓ |   |   |
| debug_setMutexProfileFraction |   |   |   |   |   | ✓ |   |
| debug_setTrieFlushInterval |   | ✓ |   |   |   | ✓ |   |
| debug_simulateV1 |   |   | ✓ |   |   |   |   |
| debug_stacks |   |   |   |   |   | ✓ |   |
| debug_standardTraceBadBlockToFile |   | ✓ | ✓ | ✓ |   | ✓ |   |
| debug_standardTraceBlockToFile |   | ✓ | ✓ | ✓ |   | ✓ |   |
| debug_startCPUProfile |   |   |   |   |   | ✓ |   |
| debug_startGoTrace |   |   |   |   |   | ✓ |   |
| debug_stateRootWithUpdates |   |   |   |   |   | ✓ |   |
| debug_stateSize |   | ✓ |   |   |   |   |   |
| debug_stopCPUProfile |   |   |   |   |   | ✓ |   |
| debug_stopGoTrace |   |   |   |   |   | ✓ |   |
| debug_storageRangeAt |   | ✓ |   | ✓ | ✓ | ✓ |   |
| debug_sync |   | ✓ |   |   |   |   |   |
| debug_traceBadBlock |   | ✓ |   |   |   | ✓ |   |
| debug_traceBlock |   | ✓ | ✓ | ✓ |   | ✓ |   |
| debug_traceBlockByHash |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| debug_traceBlockByNumber |   | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| debug_traceBlockFromFile |   | ✓ | ✓ |   |   |   |   |
| debug_traceCall |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| debug_traceCallMany |   |   | ✓ |   | ✓ | ✓ |   |
| debug_traceChain |   | ✓ |   |   |   | ✓ |   |
| debug_traceTransaction |   | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| debug_traceTransactionByBlockAndIndex |   |   | ✓ |   |   |   |   |
| debug_traceTransactionByBlockhashAndIndex |   |   | ✓ |   |   |   |   |
| debug_traceTransactionInBlockByHash |   |   | ✓ |   |   |   |   |
| debug_traceTransactionInBlockByIndex |   |   | ✓ |   |   |   |   |
| debug_verbosity |   |   |   |   |   | ✓ |   |
| debug_vmodule |   |   |   |   |   | ✓ |   |
| debug_writeBlockProfile |   |   |   |   |   | ✓ |   |
| debug_writeMemProfile |   |   |   |   |   | ✓ |   |
| debug_writeMutexProfile |   |   |   |   |   | ✓ |   |

## txpool namespace

| Method | S | G | N | B | E | R | X |
|---|---|---|---|---|---|---|---|
| txpool_besuPendingTransactions |   |   |   | ✓ |   |   |   |
| txpool_besuStatistics |   |   |   | ✓ |   |   |   |
| txpool_besuTransactions |   |   |   | ✓ |   |   |   |
| txpool_content | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| txpool_contentFrom | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| txpool_inspect |   | ✓ | ✓ | ✓ |   | ✓ | ✓ |
| txpool_status | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

## net namespace

| Method | S | G | N | B | E | R | X |
|---|---|---|---|---|---|---|---|
| net_enode |   |   |   | ✓ |   |   |   |
| net_listening |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| net_localAddress |   |   | ✓ |   |   |   |   |
| net_localEnode |   |   | ✓ |   |   |   |   |
| net_peerCount |   | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| net_services |   |   |   | ✓ |   |   |   |
| net_version | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

## eth_subscribe topics

| Topic | S | G | N | B | E | R | X |
|---|---|---|---|---|---|---|---|
| droppedPendingTransactions |   |   | ✓ | ✓ |   |   |   |
| logs |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| newHeads |   | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| newPendingTransactions |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |
| newPendingTransactionsWithBody |   |   |   |   | ✓ |   |   |
| syncing |   |   | ✓ | ✓ |   | ✓ |   |
| transactionReceipts |   | ✓ | ✓ | ✓ | ✓ | ✓ |   |

The user's branch is `add-eth-subscribe-methods`, so `eth_subscribe` itself is being added. Topic coverage in spec is unconfirmed on this branch  verify against `src/eth/subscribe.yaml` if present.

---

## Overlap summary

### Methods missing from spec but implemented in 5–6 clients

These have the strongest interop case for standardization.

| Method | Clients | Count |
|---|---|---|
| eth_config | G, N, B, E, X | 5 |
| eth_getUncleByBlockHashAndIndex | G, N, B, E, R | 5 |
| eth_getUncleByBlockNumberAndIndex | G, N, B, E, R | 5 |
| debug_setHead | G, N, B, E, R | 5 |
| debug_traceBlockByHash | G, N, B, E, R | 5 |
| debug_traceBlockByNumber | G, N, B, E, R, X | 6 |
| debug_traceCall | G, N, B, E, R | 5 |
| debug_traceTransaction | G, N, B, E, R, X | 6 |
| txpool_inspect | G, N, B, R, X | 5 |
| net_listening | G, N, B, E, R | 5 |
| net_peerCount | G, N, B, E, R, X | 6 |
| logs (eth_subscribe) | G, N, B, E, R | 5 |
| newHeads (eth_subscribe) | G, N, B, E, R, X | 6 |
| newPendingTransactions (eth_subscribe) | G, N, B, E, R | 5 |
| transactionReceipts (eth_subscribe) | G, N, B, E, R | 5 |

### Methods missing from spec but implemented in 3–4 clients

| Method | Clients | Count |
|---|---|---|
| eth_callMany | E, R | 2 |
| eth_getRawTransactionByBlockHashAndIndex | G, E, R | 3 |
| eth_getRawTransactionByBlockNumberAndIndex | G, E, R | 3 |
| eth_getRawTransactionByHash | G, N, E, R | 4 |
| eth_protocolVersion | N, B, E, R | 4 |
| eth_sendRawTransactionSync | G, E, R | 3 |
| eth_mining | B, E, R | 3 |
| debug_accountRange | G, B, E, R | 4 |
| debug_dumpBlock | G, N, R | 3 |
| debug_executionWitness | G, N, E, R, X | 5 |
| debug_getModifiedAccountsByHash | G, E, R | 3 |
| debug_getModifiedAccountsByNumber | G, E, R | 3 |
| debug_storageRangeAt | G, B, E, R | 4 |
| debug_standardTraceBadBlockToFile | G, N, B, R | 4 |
| debug_standardTraceBlockToFile | G, N, B, R | 4 |
| debug_traceBlock | G, N, B, R | 4 |
| debug_traceCallMany | N, E, R | 3 |
| syncing (eth_subscribe) | N, B, R | 3 |
| droppedPendingTransactions (eth_subscribe) | N, B | 2 |

### Spec methods not implemented by all clients

| Method | Missing from |
|---|---|
| eth_accounts | ethrex |
| eth_coinbase | geth, Besu, ethrex |
| eth_getBlockAccessList | Nethermind, Reth, ethrex (Nethermind/Reth use split by-hash/by-number naming; ethrex puts it under `debug_`) |
| eth_getFilterLogs | ethrex |
| eth_getStorageValues | Besu, ethrex |
| eth_getUncleCountByBlockHash | geth, ethrex |
| eth_getUncleCountByBlockNumber | geth, ethrex |
| eth_newBlockFilter | ethrex |
| eth_newPendingTransactionFilter | ethrex |
| eth_sendTransaction | ethrex |
| eth_sign | Besu, ethrex |
| eth_signTransaction | Nethermind, Besu, ethrex |
| eth_simulateV1 | ethrex |
| debug_getBadBlocks | geth |

ethrex is the youngest client and consistently has the smallest method set; that's expected.

### Truly client-only methods (not shared with any other client and not in spec)

**geth-only:** `eth_resend`, `debug_getTrieFlushInterval`, `debug_stateSize`, `debug_sync`.

**Nethermind-only:** `eth_snapshot`, `debug_deleteChainSlice`, `debug_executionWitnessCall`, `debug_getChainLevel`, `debug_getConfigValue`, `debug_getFromDb`, `debug_getSyncStage`, `debug_insertReceipts`, `debug_migrateReceipts`, `debug_resetHead`, `debug_simulateV1`, `debug_traceTransactionByBlockAndIndex`, `debug_traceTransactionByBlockhashAndIndex`, `debug_traceTransactionInBlockByHash`, `debug_traceTransactionInBlockByIndex`, `net_localAddress`, `net_localEnode`.

**Besu-only:** `eth_capabilities`, `debug_batchSendRawTransaction`, `debug_metrics`, `debug_replayBlock`, `debug_resyncWorldState`, `txpool_besuStatistics`, `txpool_besuTransactions`, `txpool_besuPendingTransactions`, `net_enode`, `net_services`.

**Erigon-only:** `eth_baseFee`, `debug_setMemoryLimit`, `newPendingTransactionsWithBody` (subscription topic).

**Reth-only:** `eth_getTransactionBySenderAndNonce`, `eth_signTypedData`, `eth_getBlockAccessListRaw`, `debug_backtraceAt`, `debug_blockProfile`, `debug_codeByHash`, `debug_cpuProfile`, `debug_executePayload`, `debug_freezeClient`, `debug_goTrace`, `debug_mutexProfile`, `debug_setBlockProfileRate`, `debug_setMutexProfileFraction`, `debug_stacks`, `debug_startCPUProfile`, `debug_startGoTrace`, `debug_stateRootWithUpdates`, `debug_stopCPUProfile`, `debug_stopGoTrace`, `debug_verbosity`, `debug_vmodule`, `debug_writeBlockProfile`, `debug_writeMemProfile`, `debug_writeMutexProfile`, `debug_getRawTransactions`.

**ethrex-only:** `debug_getBlockAccessList` (note: ethrex puts it under `debug_`, while spec puts it under `eth_`).

### Naming divergence on the same concept

| Concept | Spec | Variants in clients |
|---|---|---|
| Block access list | `eth_getBlockAccessList` (single method) | Nethermind: `eth_getBlockAccessListByHash`, `eth_getBlockAccessListByNumber`; Reth: `eth_getBlockAccessListByBlockHash`, `eth_getBlockAccessListByBlockNumber`, `eth_getBlockAccessListRaw`; ethrex: `debug_getBlockAccessList` |
| Trace transaction by index | (none) | Nethermind has four variants: `traceTransactionByBlockAndIndex`, `traceTransactionByBlockhashAndIndex`, `traceTransactionInBlockByHash`, `traceTransactionInBlockByIndex`. No other client implements these. |

---

## Lower-confidence items

1. **Reth `debug_*` profiling/diagnostic methods** (`debug_cpuProfile`, `debug_mutexProfile`, `debug_writeBlockProfile` etc.) are declared in trait files at `crates/rpc/rpc-api/src/debug.rs`. Whether every method is registered with the running RPC server in default node configurations is not confirmed; some may be feature-gated.

2. **ethrex subscription topics**  only `newHeads` was confirmed by string match in `subscription_manager.rs`. ethrex may support more topics than I surfaced; the dispatch code in `rpc.rs` only mentions `eth_subscribe` and `eth_unsubscribe` as wire methods, not the topic names themselves.

3. **Erigon `eth_baseFee`**  present in the agent's report from `EthAPI` interface "implements" comments. I did not verify the registration path independently.

4. **Besu's `eth_mining`, `eth_protocolVersion`** may be stub returns for backwards compatibility rather than functional methods. Spec status unaffected.

5. **`eth_config`**  five clients expose it. Geth's version returns `*configResponse` (unexported type), which sometimes blocks Go RPC reflector registration. Worth verifying geth's wire-level exposure with a live call before treating it as universally available.

6. **Nethermind's `debug_simulateV1`**  semantically distinct from `eth_simulateV1`. It's a tracing wrapper that runs the simulation and returns geth-style traces. Don't confuse with `eth_simulateV1` standardization.

