Reference › JSON-RPC
Endpoints
| HTTPS | https://rpc.btcw.tech — POST to the root path / only; GET returns 405. CORS open. |
|---|---|
| WebSocket | wss://rpc.btcw.tech/ws — idle connections are kept open for up to 1 hour |
| Client | Hyperledger Besu 26.2.0 (web3_clientVersion) |
Enabled namespaces
Only eth_*, net_*, web3_*. Other namespaces return -32604 Method not enabled
(debug_*, trace_*, admin_*…) or -32601 Method not found (txpool_*).
To trace transactions, use the explorer or run a chain fork with anvil (which has debug_traceTransaction) — see Testing on a chain fork.
Batching
Send an array of requests in a single HTTP POST. A batch counts as one request against the rate limit — the cheapest way to read many things. A batch of 101 requests has been tested and returned all 101 results. Request body limit: 256 KB; requests running longer than 30 seconds are cut off.
curl -s https://rpc.btcw.tech -H 'content-type: application/json' -d '[
{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]},
{"jsonrpc":"2.0","id":2,"method":"eth_call","params":[{"to":"0xd953d53414a81eb6AC5a4edE73d13992181aF51E","data":"0x5c975abb"},"latest"]}
]'
Results may come back out of order — match them by id.
Subscriptions
// wss://rpc.btcw.tech/ws
{"jsonrpc":"2.0","id":1,"method":"eth_subscribe","params":["newHeads"]}
{"jsonrpc":"2.0","id":2,"method":"eth_subscribe","params":["logs",{"address":"0x557aDc3d900c471F3907cdDA3a9F5377d6F9E7e0"}]}
A new block every 5 seconds. Connections may close when the server restarts — reconnect automatically and backfill with eth_getLogs from the last block you processed.
Reading logs
eth_getLogs has no block-range cap, but the chain is log-heavy (the price-keeping bot runs continuously — about 18,000 logs per 1,000 blocks).
Use small ranges (1,000–5,000 blocks) and filter by address + topics so responses stay under 30 seconds.
Fees and transactions
eth_gasPrice=0xf4240(1,000,000 wei) — the minimum the node accepts.eth_maxPriorityFeePerGas= 0;baseFeePerGas= 0. EIP-1559 transactions must set bothmaxFeePerGasandmaxPriorityFeePerGas≥ 1,000,000 — the base fee is zero, so the effective price is the priority fee.eth_feeHistoryworks normally.- QBFT has instant finality: a receipt in a block is final, no extra confirmations needed.
Limits
10 requests/second per IP, with bursts up to 40 (HTTPS) or 20 (WebSocket). Beyond that, HTTPS returns 429 (with CORS headers so browsers can read the error) and WebSocket refuses new connections with 503. Details: Limits & error codes. Need more? Batch requests, cache results on your side, or subscribe over WebSocket instead of polling.