Skip to main content
HyperEVM (Chain ID: 999) has two distinct node pools with different transaction visibility:
TypeNodeDescriptionUse Case
systx*nanorethFull archive nodes, includes system transactionsIndexing, historical queries, debugging
standard*hlnodeRealtime-optimized nodes, excludes system transactionsFrontend dApps, realtime data
If you don’t specify a node type, requests may load-balance across both pools, causing inconsistent results.

Archive Nodes (with system transactions)

https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=systx*
curl "https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=systx*" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["0x1", true],"id":1}'
import { JsonRpcProvider } from 'ethers'

const provider = new JsonRpcProvider(
  'https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=systx*'
)
// Archival data with system transactions
const block = await provider.getBlock(1)
import { createPublicClient, http } from 'viem'

const client = createPublicClient({
  transport: http('https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=systx*')
})
const block = await client.getBlock({ blockNumber: 1n })

Realtime Nodes (without system transactions)

https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=standard*
curl "https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=standard*" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
import { JsonRpcProvider } from 'ethers'

const provider = new JsonRpcProvider(
  'https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=standard*'
)
const blockNumber = await provider.getBlockNumber()
import { createPublicClient, http } from 'viem'

const client = createPublicClient({
  transport: http('https://edge.goldsky.com/standard/evm/999?secret=YOUR_SECRET&use-upstream=standard*')
})
const blockNumber = await client.getBlockNumber()