Skip to main content

Streams Data Sources: Datasets by Chain

Updated on
Jul 20, 2026

What is a Dataset?

A dataset is a specific type of blockchain data that Streams delivers to your destination. Blockchains produce several types of data — blocks, transactions, event logs, receipts — and each serves different purposes.

How Datasets Work with Streams

When you create a stream, you configure two things:


  1. Network — The blockchain you want data from (e.g., Ethereum Mainnet, Polygon, Solana)
  2. Dataset — The type of data you want to receive (e.g., blocks, transactions, logs)

Your stream then delivers that data type from that network to your destination. For example, selecting ethereum-mainnet + logs delivers all smart contract event emissions from Ethereum.

Why Different Datasets Exist

Blockchains produce data at multiple levels:


  • Blocks contain a header plus all transactions that were included
  • Transactions are individual operations submitted to the network
  • Logs (EVM chains) are events emitted by smart contracts during execution
  • Receipts contain execution results like status, gas used, and logs

Streaming full blocks when you only need transfer events wastes bandwidth and processing power.

Available Data Sources

The available datasets vary by blockchain. Select a chain below to see its supported datasets and data schema.

Ethereum & EVM9 datasets

EVM-compatible chains — Ethereum, Base, Arbitrum, Optimism, Polygon, and more.

Bitcoin1 dataset

Bitcoin mainnet block and transaction data.

Solana2 datasets

High-throughput block and program data from the Solana network.

XRPL1 dataset

XRP Ledger data including transactions and ledger metadata.

Stellar1 dataset

Stellar network ledger data with full transaction details.

hyperliquidHyperliquid8 datasets

HyperEVM supports standard EVM datasets. Hypercore supports specialized datasets including trades, orders, and market events.

Choosing the Right Dataset

Select your blockchain to see available datasets and when to use each one.


Ethereum, Polygon, Base, Arbitrum, and other EVM-compatible chains.

DatasetDescriptionUse When
BlockBlock header and all transactionsYou need full block context
TransactionsIndividual transaction dataTracking specific transactions or addresses
LogsSmart contract event emissionsMonitoring events like transfers, swaps, mints
ReceiptsExecution results with status and gas usedVerifying transaction success or gas analysis
Block with ReceiptsBlock data combined with all receiptsNeed both block and execution data together
Traces (debug)Internal transaction traces via debug_traceBlockDebugging or analyzing internal calls
Traces (trace_block)Transaction traces via trace_blockTracing with Parity/OpenEthereum style
Block + Receipts + debugCombined block, receipts, and debug tracesComplete block data with execution traces
Block + Receipts + trace_blockCombined block, receipts, and trace_blockComplete block data with Parity-style traces

Payload Structure

Each stream delivery contains two top-level fields:


  • data — The dataset content. The structure depends on the selected dataset and follows the chain's native data format.
  • metadata — Information about the stream and current batch (see below).
{
"data": [
// array of blocks, transactions, logs, etc. — shape varies by dataset
],
"metadata": {
"network": "ethereum-mainnet",
"dataset": "block",
"batch_start_range": 19271200,
"batch_end_range": 19271294,
// ... see Stream Metadata below
}
}

Stream Metadata

Metadata is included with every delivery:


  • HTTP headers: Metadata fields are sent as HTTP headers on every delivery request.
  • Payload body: Metadata is included as a metadata object in the JSON payload body.
  • Filter function: The full payload (including metadata) is passed to your filter function when one is configured.

Note: Metadata is sent once per batch, not per individual data record.

You can access metadata fields in your filter function like this:

function main(stream) {
const network = stream.metadata.network; // e.g. "ethereum-mainnet"
const dataset = stream.metadata.dataset; // e.g. "block"
const startRange = stream.metadata.batch_start_range; // e.g. 19271200
const endRange = stream.metadata.batch_end_range; // e.g. 19271294
const streamId = stream.metadata.stream_id;

// ... rest of your filter
return stream.data;
}
Stream Metadata Properties (once per batch)
PropertyTypeHeader NameDescriptionExample
batch_start_rangeintegerBatch-Start-RangeStarting block of the current batch19271200
batch_end_rangeintegerBatch-End-RangeEnding block of the current batch19271294
data_size_bytesintegerBatch-Data-Size-BytesTotal size of the raw data content in bytes48230
blocks_reorgedarray | nullBatch-Blocks-ReorgedBlock numbers delivered as a result of a chain reorganization. null in body when empty, [] in headers.[19271293, 19271294]
reorgsarray | nullBatch-ReorgsDetailed reorg info including block number, hash, and timestamp of the displaced block. null in body when empty, [] in headers.[{"block_number": 19271294, ...}]
datasetstringStream-DatasetType of dataset"block"
networkstringStream-NetworkBlockchain network"ethereum-mainnet"
start_rangeintegerStream-Start-RangeStarting range of data capture for the stream100
end_rangeintegerStream-End-RangeEnding range of data capture for the stream200
keep_distance_from_tipintegerStream-Keep-Distance-From-TipDistance from the chain tip0
stream_idstringStream-IdID of the stream"f6ad6459-..."
stream_namestringStream-NameName of the stream"stream test1"
stream_regionstringStream-RegionRegion of the stream"usa_east"

Payload Examples


HTTP Headers:

Stream-Id: f6ad6459-b5ad-4183-b370-1c1388e47e83
Stream-Name: stream test1
Stream-Region: usa_east
Stream-Network: ethereum-mainnet
Stream-Dataset: block
Stream-Start-Range: 100
Stream-End-Range: 200
Stream-Keep-Distance-From-Tip: 0
Batch-Start-Range: 19271200
Batch-End-Range: 19271294
Batch-Data-Size-Bytes: 48230
Batch-Reorgs: []
Batch-Blocks-Reorged: []

Payload Body:

{
"data": [
// Dataset content structure varies by dataset type
// and maintains the original format from the data source
],
"metadata": {
"stream_id": "f6ad6459-b5ad-4183-b370-1c1388e47e83",
"stream_name": "stream test1",
"stream_region": "usa_east",
"network": "ethereum-mainnet",
"dataset": "block",
"start_range": 100,
"end_range": 200,
"keep_distance_from_tip": 0,
"batch_start_range": 19271200,
"batch_end_range": 19271294,
"data_size_bytes": 48230,
"reorgs": null,
"blocks_reorged": null
}
}
Share this doc