JSON-RPC API
The RPC namespaces a node operator or dApp developer actually uses against a running Geth instance.
Third-party documentation. This is independently authored analysis of the public Go Ethereum (Geth) codebase — not the official docs, and not reviewed or endorsed by the Go Ethereum (Geth) team.
JSON-RPC API
Geth exposes JSON-RPC over HTTP, WebSocket, and IPC (the recommended local transport). Namespaces group the surface: eth for chain data everyone uses, plus operator namespaces enabled deliberately.
The eth namespace
eth_blockNumber,eth_getBlockByNumber,eth_getTransactionByHash,eth_getTransactionReceipt— the read core.eth_getBalance,eth_getStorageAt,eth_getCode— account-level reads, optionally at historical blocks on archive nodes.eth_call— read-only execution of a message against any state; never persists effects.eth_estimateGas— binary-search gas prediction for a hypothetical transaction.eth_sendRawTransaction— submit a signed transaction into the pool.eth_getLogs— receipt-log queries by fromBlock/toBlock/address/topics.
Subscriptions (WebSocket/IPC)
eth_subscribe pushes events: newHeads, logs filtered server-side, and pending transactions.
Operator namespaces
engine_*— the Engine API; reserved for the consensus client, authenticated and not for public exposure.txpool_content— inspect pending/queued pool entries per sender.debug_*/dbg_*— structured EVM traces (debug_traceCall,debug_traceTransaction), block re-execution, and chain inspection. Powerful; gate it.admin_*— peer management and node control. Local-only in sane deployments.
Exposure guidance
Bind RPC to localhost or a private interface; front public traffic with a proxy that filters namespaces, caps batch sizes, and rate-limits — Geth trusts whoever holds an RPC socket far more than a public caller deserves.
Interface
eth_blockNumber() -> quantityeth_getBalance(address, block?) -> quantity (wei)eth_call(tx, block?) -> data # read-only simulationeth_sendRawTransaction(data) -> 32-byte hasheth_getLogs(filter) -> log[]eth_syncing() -> progress | falsedbg_traceTransaction(hash) -> structured EVM tracetxpool_content() -> pending/queued pools by senderadmin_peers() -> connected peer descriptors
