Logs stream

Filtered event logs, ABI-decoded where the contract is known.

Standard EVMrhrpc.v1.ChainStream/StreamLogs

What it carries

Standard EVM log filtering by address and topic, evaluated server-side before bytes leave us. Logs from contracts with a known ABI arrive decoded into typed events alongside the raw data.

Key fields

FieldTypeDescription
addressaddressEmitting contract.
topics[]hash[]Indexed topics.
decodedDecodedEvent?Typed name, signature and parameters.
removedboolTrue when removed by a reorg.

Delivery semantics

Compatible with the standard eth_subscribe logs shape, so existing tooling works unmodified. Reorgs are additionally emitted as explicit REORGED records rather than only setting removed.

Volume: Depends entirely on your filter breadth. Every record carries a dedup_key and a monotonic sequence, so at-least-once delivery is deterministic to deduplicate.

Server-side filters

  • addresses
  • topics (positional, any-of)
  • block range
  • include_unconfirmed

Filters are evaluated before bytes leave us, so a narrow subscription costs you nothing in bandwidth or parse time.

Subscribe

import { RobinhoodRPC } from "@robinhoodrpc/sdk"; const client = new RobinhoodRPC({ apiKey: process.env.RHRPC_KEY! }); // Backfill then live: omit toBlock to tail indefinitely.for await (const msg of client.logs.stream({  fromBlock: 4_200_000,})) {  handle(msg);}

Sample message

{  "address": "0xc41d…",  "topics": ["0xddf252ad…", "0x0000…2f9b", "0x0000…88a1"],  "block_number": 4512889,  "decoded": {    "name": "Transfer",    "signature": "Transfer(address,address,uint256)",    "params": [      { "name": "from", "type": "address", "value": "0x2f9b…", "indexed": true },      { "name": "to", "type": "address", "value": "0x88a1…", "indexed": true },      { "name": "value", "type": "uint256", "value": "18250000000000000000" }    ]  }}

Correctness notes

Prices in this stream are already multiplier-adjusted where the field says so. Robinhood’s own REST endpoint returns raw underlying values and Chainlink’s feed returns multiplier-adjusted ones; mixing them without applying the multiplier — or applying it twice — is the most common source of silent error on this chain.

The full set of rules is published at /docs/equities/correctness-rules.

Related streams