Chain 99901 · native currency HYPE · independent community infrastructure.
https://rpc.boxa.prowss://rpc.boxa.pro/wsNode availability and synchronization are separate from Elysium batch timing. A quiet chain can keep the same block for hours.
Live verification results and tested SDK versions. net_listening is unavailable on the node and returns an explicit unsupported-method error.
| Interface | Methods / behavior | Limits |
|---|---|---|
| Wallet reads | eth_chainId, net_version, web3_clientVersion, eth_blockNumber, eth_getBalance, eth_getCode, eth_getTransactionCount, eth_gasPrice, eth_feeHistory | Pending nonce support follows the node. An unsupported request returns its error; a queue reservation is never substituted for a chain nonce. |
| Blocks and transactions | Block by number/hash, full transaction bodies, block transaction counts, transaction by hash/block+index, receipts and block receipts. | 256 KiB requests; 16 MiB upstream responses; batches of 1–20 requests. |
| History and storage | eth_getLogs, eth_getStorageAt, eth_getProof | 10,000 blocks per log query; at most 32 proof storage slots. Historical state depends on the node's retained state. No unlimited archive guarantee. |
| Single-call simulation | eth_call, eth_estimateGas, including state overrides. Block overrides on eth_call. | 30 million gas per call; up to 32 override accounts and 64 KiB of override code/storage. |
| Sequential simulation | eth_simulateV1 carries state between calls. Call results, logs, gas and errors remain simulation outputs. | 4 simulated blocks, 64 calls, 50 million aggregate gas. Two concurrent public simulation requests. |
| Tracing | debug_traceCall, debug_traceTransaction with native callTracer and onlyTopCall:true. | 2-second tracer timeout; one concurrent trace. Transaction traces are limited to the latest 1,000 blocks, without historical reconstruction. Other debug/admin methods are unavailable. |
| Subscriptions | eth_subscribe for newHeads and filtered logs; eth_unsubscribe. Read-only RPC over WebSocket. | 64 connections globally, 4 per IP, 4 subscriptions per connection; 2-second polling of observed chain data. Reconnect and resync after gaps/reorgs. |
| Queued transactions | eth_sendRawTransaction stores signed Elysium orders durably. boxa_queueInfo, boxa_getQueuedTransactions, boxa_getQueuedTransaction, boxa_recordParentTransaction. | HTTP only. Acceptance is not execution: the wallet must separately submit on HyperEVM and pay its gas. |
| Execution forecast | GET /__execution or boxa_getExecutionProjection with []. | Observed signed Inbox transactions only; deposits, other message types and unpublished sequencer activity can change results. Forecast balances remain separate from holdings. |
curl https://rpc.boxa.pro \
-H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
# result: "0x1863d"
import { JsonRpcProvider } from 'ethers';
const rpc = new JsonRpcProvider('https://rpc.boxa.pro', 99901);
console.log(await rpc.getNetwork());
console.log(await rpc.getBlockNumber());
console.log(await rpc.getBalance(address));
import { createPublicClient, defineChain, http } from 'viem';
const elysium = defineChain({
id: 99901, name: 'Elysium',
nativeCurrency: { name: 'HYPE', symbol: 'HYPE', decimals: 18 },
rpcUrls: { default: { http: ['https://rpc.boxa.pro'] } },
});
const client = createPublicClient({ chain: elysium, transport: http() });
console.log(await client.getBlockNumber());
Add a custom network with chain ID 99901, RPC https://rpc.boxa.pro, and currency HYPE. EIP-1193, ethers and viem request paths are tested independently of wallet signing. Live extension signing is not certified by read-only SDK tests.
const socket = new WebSocket('wss://rpc.boxa.pro/ws');
socket.onopen = () => socket.send(JSON.stringify({
jsonrpc: '2.0', id: 1, method: 'eth_subscribe', params: ['newHeads'],
}));
socket.onmessage = event => console.log(JSON.parse(event.data));
Logs accept address/topics filters. Connection limits, slow consumers and unavailable history close a connection explicitly. After reconnecting, query eth_getLogs from your last processed block and deduplicate by block hash, transaction hash and log index.
Ordinary reads, simulations and traces have separate capacity pools. Heavy work returns JSON-RPC -32005 when busy; retry with backoff. Invalid parameters return -32602. Contract reverts retain their upstream code and revert data. Parameters are never silently discarded.
Each public client has separate budgets for ordinary reads, simulations and traces: 30 weighted units per second, burst 120 per category. Normal reads including eth_call cost 1, logs 5, gas estimates and sequential simulations 10, and traces 30. Heavy simulation traffic cannot consume ordinary-read tokens. Simulation requests wait up to 1.5 seconds for a slot before returning a capacity error.
Read fallback requires chain ID, pinned genesis and agreement with the last verified primary block. Queue writes are forwarded once and never retried against another node. The secondary uses a separately running node; its availability is shown above.
Only hash-addressed block responses are cached, for at most 60 seconds. Balances, nonces, simulations and transaction receipts are read fresh. JSON health and method timing counters expose no request contents.