跳转至主要内容

Streams Data Sources: Datasets by Chain

更新于
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 + 日志 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.

Dataset描述Use When
BlockBlock header and all transactionsYou need full block context
交易Individual transaction dataTracking specific transactions or addresses
日志Smart 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:


  • 数据 — The dataset content. The structure depends on the selected dataset and follows the chain's native data format.
  • 元数据 — 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 元数据 object in the JSON payload body.
  • Filter function: The full payload (including 元数据) 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)
Property类型Header Name描述示例
batch_start_range整数Batch-Start-RangeStarting block of the current batch19271200
batch_end_range整数Batch-End-RangeEnding block of the current batch19271294
data_size_bytes整数Batch-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, ...}]
dataset字符串Stream-DatasetType of dataset"block"
网络字符串Stream-NetworkBlockchain network"ethereum-mainnet"
start_range整数Stream-Start-RangeStarting range of data capture for the stream100
end_range整数Stream-End-RangeEnding range of data capture for the stream200
keep_distance_from_tip整数Stream-Keep-Distance-From-TipDistance from the chain tip0
stream_id字符串Stream-IdID of the stream"f6ad6459-..."
stream_name字符串Stream-NameName of the stream"stream test1"
stream_region字符串Stream-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
}
}