Description
After upgrading from op-reth (ghcr.io/paradigmxyz/op-reth:latest) to base-reth-node v0.7.6 using the base/node repository with CLIENT=reth and USE_BASE_CONSENSUS=true, WebSocket subscriptions (eth_subscribe("newHeads")) accept the subscription but never emit any events.
Environment
- Execution client: base-reth-node v0.7.6 (
reth/v1.11.3-d6324d6/x86_64-unknown-linux-gnu/base/v0.7.6)
- Consensus client: base-consensus v0.7.6
- Network: Base Mainnet
- Instance: AWS i4i.4xlarge (16 vCPUs, 128GB RAM, NVMe instance store)
- Docker: Using official
base/node docker-compose with CLIENT=reth
Steps to Reproduce
- Set up node using
base/node repo with CLIENT=reth, USE_BASE_CONSENSUS=true
- Node syncs and tracks chain tip successfully (execution logs show "Received new payload from consensus engine" every 2 seconds)
- HTTP RPC works fine (
eth_blockNumber returns current block)
- Connect to WebSocket on port 8546:
import websocket, json
ws = websocket.create_connection("ws://localhost:8546", timeout=15)
ws.send(json.dumps({"jsonrpc":"2.0","method":"eth_subscribe","params":["newHeads"],"id":1}))
sub = ws.recv()
print("Sub:", sub) # Returns valid subscription ID
msg = ws.recv() # Hangs forever — no events
- Also tested
newPendingTransactions — same result (subscription accepted, no events)
- Verified WS flags are correct in the running process:
--ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.api=web3,debug,eth,net,txpool
What We Tried
--engine.persistence-threshold 0 — No effect. Events still don't fire.
- Multiple WebSocket clients — All receive subscription IDs but no events.
- Previous setup worked: The same data directory with
op-reth + op-node had fully working newHeads subscriptions.
Expected Behavior
After subscribing to newHeads, the WebSocket should emit a JSON message for each new block, containing the block header data.
Actual Behavior
eth_subscribe returns a valid subscription ID
- No events are ever emitted
- The node IS processing blocks (logs show new payloads every 2 seconds)
- HTTP RPC works normally
Impact
This is a critical issue for DeFi applications running on Base. Many bots, indexers, and MEV systems rely on newHeads subscriptions for block-by-block execution. Without working WebSocket subscriptions, these applications cannot detect new blocks in real-time and must fall back to HTTP polling, which adds latency.
With the Base Mainnet Azul activation targeted for May 13, 2026, all node operators will need to upgrade, and this will break any application depending on WebSocket subscriptions.
Workaround
Currently using HTTP polling (eth_blockNumber every 200ms) as a workaround, but this adds ~100-200ms latency compared to WebSocket push notifications.
Description
After upgrading from
op-reth(ghcr.io/paradigmxyz/op-reth:latest) tobase-reth-nodev0.7.6 using thebase/noderepository withCLIENT=rethandUSE_BASE_CONSENSUS=true, WebSocket subscriptions (eth_subscribe("newHeads")) accept the subscription but never emit any events.Environment
reth/v1.11.3-d6324d6/x86_64-unknown-linux-gnu/base/v0.7.6)base/nodedocker-compose withCLIENT=rethSteps to Reproduce
base/noderepo withCLIENT=reth,USE_BASE_CONSENSUS=trueeth_blockNumberreturns current block)newPendingTransactions— same result (subscription accepted, no events)--ws --ws.addr=0.0.0.0 --ws.port=8546 --ws.api=web3,debug,eth,net,txpoolWhat We Tried
--engine.persistence-threshold 0— No effect. Events still don't fire.op-reth+op-nodehad fully working newHeads subscriptions.Expected Behavior
After subscribing to
newHeads, the WebSocket should emit a JSON message for each new block, containing the block header data.Actual Behavior
eth_subscribereturns a valid subscription IDImpact
This is a critical issue for DeFi applications running on Base. Many bots, indexers, and MEV systems rely on
newHeadssubscriptions for block-by-block execution. Without working WebSocket subscriptions, these applications cannot detect new blocks in real-time and must fall back to HTTP polling, which adds latency.With the Base Mainnet Azul activation targeted for May 13, 2026, all node operators will need to upgrade, and this will break any application depending on WebSocket subscriptions.
Workaround
Currently using HTTP polling (
eth_blockNumberevery 200ms) as a workaround, but this adds ~100-200ms latency compared to WebSocket push notifications.