# Robinhood Chain public RPC — PastryLabs

> Public, keyless Ethereum-compatible JSON-RPC for Robinhood Chain. Chain ID 4663 (0x1237).

Endpoint: https://hood-rpc.pastrylabs.cloud/. Namespaces: arb, debug, eth, net, rpc, txpool, web3. Fetch linked method/types detail only as needed.

**Usage:** JSON-RPC2 to `POST /`, Content-Type application/json, positional params. Match IDs and validate the entire body; HTTP200 is not RPC success. Native notifications have no JSON-RPC response. Quantities use hex `0x`.

**Limits/safety:** 60 requests/10s/external IP across all routes; incoming bodies5MiB. Honor Retry-After when supplied on429/503; check write acceptance before retrying. Normal traces/diagnostics remain; filesystem and chain/runtime/database mutators are restricted. Operator batches reject before execution (-32601 restricted IDs, -32005 others). Historical proofs require the trie. No public subscriptions/private admin-wallet APIs.

**Cache:** X-RPC-Cache HIT/MISS/BYPASS. Selected reads:0.25s TTL; chainId/net_version:1h. Batches, notifications, writes and handled log pages bypass; RPC HTTP no-store.

**Log pages:** `eth_getLogs` on POST / takes `[filter,page_blocks?]`: integer1..10000/default10000. Eligible identified ranges return ONE COMPLETE PAGE, not the entire requested range while a cursor exists. Result is the native log array; TOP-LEVEL page_from_block/page_to_block/query_to_block/next_block/resume_cursor describe inclusive decimal bounds and continuation. Omitted bounds retain latest/latest; explicit numeric bounds stay exact signed64 even after head rollback; moving tags resolve once. Native-only blockHash/pending and notifications retain native semantics, without artificial cursors. Compatible identified read batches coordinate pages and ordinary siblings with a shared tag snapshot; incompatible mixed batches remain native opaque.

**Continuation/recovery:** Validate full HTTP/RPC success, ID, result array, page bounds and exact cursor: unchanged criteria, fromBlock=page_to_block+1, frozen toBlock=query_to_block. Durably process all logs before saving/following it, INCLUDING EMPTY PAGES. Pass the exact filter with the same width. Null success cursor completes only at the frozen end. Error code/message/data remain native and unchanged; same-page retry cursor is TOP-LEVEL, next_block=null. Error null before bounds resolve is NOT completion. Gateway timeout/capacity guidance may add recommended_endpoint=/, rpc_method=eth_getLogs, partial_results_discarded=true and retry_guidance at top level. Failed replies contain no usable partial logs; global deadline/resource failure discards unpublished batch siblings and retains each original cursor.

**Resources:** Four workers, twenty active response owners, rolling24GiB temporary assembly budget including overhead; ownership lasts through EOF/close/cleanup, including failed workers still finishing. Native page wait190s, tag/ordinary8s, per-request work900s. Pages may independently fail. No traversal-wide timer, automatic retry/backfill, job/token storage or cross-page hash pin. Account for reorgs.

Small read example:
```sh
curl --compressed -sS 'https://hood-rpc.pastrylabs.cloud/' -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'
```

## API reference

- [OpenAPI 3.1](https://hood-rpc.pastrylabs.cloud/openapi.json): full HTTP routes and JSON-RPC request/result/error schemas.
- [Method catalog](https://hood-rpc.pastrylabs.cloud/rpc-reference.json): 127 documented methods, with availability and positional types; filter `methods` by name.
- [Interactive reference](https://hood-rpc.pastrylabs.cloud/#reference): searchable methods and linked schemas.

## Optional

- [Status](https://hood-rpc.pastrylabs.cloud/status.json); [live events](https://hood-rpc.pastrylabs.cloud/status/events).
- [Analytics](https://hood-rpc.pastrylabs.cloud/analytics.json?window=5m): public HTTP aggregates, not private requests.
- [JSON-RPC 2.0](https://www.jsonrpc.org/specification): protocol specification.
