gRPC overview

No other provider on Robinhood Chain offers a gRPC interface. Here is ours.

Endpoint

TLS is required. Authentication is an authorization metadata header carrying a bearer token — the same key that works on every other interface.

grpc.robinhoodrpc.io:443          # gRPChttps://grpc-web.robinhoodrpc.io  # gRPC-Web, no proxy needed grpcurl -H 'authorization: Bearer $RHRPC_KEY' \  grpc.robinhoodrpc.io:443 list

Why gRPC specifically

At roughly 100 millisecond blocks, JSON over WebSocket costs parse time on every message and provides no schema contract. Binary protobuf removes both problems, HTTP/2 multiplexes many streams over one connection, and flow control gives real backpressure instead of an unbounded client buffer.

Solana's ecosystem has treated gRPC streaming as table stakes for years. The EVM side has not caught up, which on a chain built for trading is an unforced gap.

Services

FieldTypeDescription
ChainStreamserviceStreamBlocks, StreamLogs, StreamTransactions.
EquitiesStreamserviceStreamPrices, StreamCorporateActions.
TapeserviceStreamTape, StreamQuotes, StreamCandles.
PortfolioserviceGetBalances, GetPositions, GetNetWorthHistory, StreamBalances.

Design rules

Numbers are strings. Chain integers exceed 64 bits and money must never touch a float, so Decimal and Uint256 wrap base-10 strings. A client parsing these into a double is wrong, and the type makes that visible.

Every stream is resumable: reconnect with the last cursor and delivery continues without a gap. Backfill and live arrive through one call — supply a from_block and omit to_block to replay then tail.

Delivery is at-least-once with an explicit dedup key and a monotonic sequence, so consumers deduplicate deterministically rather than guessing.

Correctness

Correctness note

Confirmation state is explicit on every record: SEQUENCED, INCLUDED, FINALIZED, DROPPED, REORGED. Choose your own tolerance rather than assuming a record you received is final — and handle DROPPED before you act on pre-confirmation data.

Related