HyperEVM (Chain ID: 999) has two distinct node pools with different transaction visibility:
| Type | Node | Description | Use Case |
|---|
systx* | nanoreth | Full archive nodes, includes system transactions | Indexing, historical queries, debugging |
standard* | hlnode | Realtime-optimized nodes, excludes system transactions | Frontend 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()