Blockchain Datasets: A Practical Guide to Historical On-Chain Data for Analytics, AI and Research
What is a blockchain dataset? Learn how raw blockchain data, RPC, APIs, warehouses and versioned Parquet datasets differ, and how to choose reliable historical on-chain data for analytics, AI and research.
A blockchain is public. That does not mean its history is immediately ready for analysis.
On-chain data begins as blocks, transactions, instructions, logs and state changes. To answer practical questions—such as “which wallets first bought a token?”, “how much DEX volume occurred last quarter?” or “can I train a model without future leakage?”—you need a dataset with defined records, documented fields and known coverage.
This guide explains what blockchain datasets are, how they differ from RPC and APIs, what a good historical dataset should include, and how to choose data for analytics, quantitative research and machine learning.
Quick answer: what is a blockchain dataset?
A blockchain dataset is an organized, queryable representation of historical on-chain information. It can contain raw blocks and transactions, decoded protocol events, account state, market data or derived analytical tables.
The quality of a dataset depends on more than how many rows it has. You need to know:
- what chain and exact time/slot range it covers;
- what one row represents;
- whether records are raw, decoded or derived;
- how protocol upgrades and corrections are handled;
- how duplicates and gaps are represented;
- how the files and schema are versioned;
- whether you can reproduce a result from the same input.
Blockchain data is not one thing
“Blockchain data” can refer to very different layers.
| Data layer | Example | Best for |
|---|---|---|
| Block | Block header, time, validator, transaction list | Chain-level auditing and ordering |
| Raw transaction | Signature, account keys, instruction bytes, logs | Custom decoding and forensic work |
| Execution metadata | Token balances, inner instructions, fees, errors | Understanding what executed |
| Decoded protocol event | Swap, borrow, NFT mint, liquidation | Protocol analytics |
| State/history table | Pool reserves, token holders, order book | Market and state analysis |
| Derived dataset | OHLCV, wallet label, PnL, feature table | A specific analytical product |
Each layer can be valid. Problems begin when a provider calls everything “transaction data” without saying which layer it actually delivers.
For example, a raw Solana transaction may contain an aggregator instruction, several inner AMM instructions and multiple token transfers. A decoded DEX swap is a specific interpretation of that execution. A daily OHLC candle is an additional aggregation. They should not be treated as interchangeable.
RPC, API or blockchain dataset: what is the difference?
These tools overlap, but they are built for different jobs.
RPC: request/response access to the chain
An RPC endpoint lets software request a transaction, account state, block or other chain information. It is essential for application development, transaction submission and small targeted lookups.
Use RPC when you need:
- the current state of an account;
- a known transaction by hash/signature;
- a small amount of history;
- to submit or simulate a transaction.
RPC is usually not the ideal way to repeatedly scan billions of old records. Each historical research run can otherwise become a long sequence of network calls, decoding and pagination.
API: a provider’s query interface
An indexed API packages data into convenient endpoints such as wallet transactions, token transfers or trades. This is useful for product backends and interactive queries.
Use an API when you need:
- a current/recent answer quickly;
- a small number of scoped queries;
- provider-managed indexing;
- an application-serving interface.
Check its retention, rate limits, pagination rules and export options before treating it as your complete historical store.
Dataset: files or tables you can retain and query
A bulk dataset gives you the underlying historical records as files/tables—often partitioned by date and designed for analytical engines. You can keep it, load it into your warehouse, and run repeated scans without making the same API request every time.
Use a dataset when you need:
- large historical analysis;
- repeated backtests or feature-generation runs;
- model-training inputs;
- an internal data platform;
- reproducible research;
- control over your own compute and storage.
| Requirement | Better starting point |
|---|---|
| Current account balance | RPC |
| Send a transaction | RPC |
| Display recent wallet activity in an app | API/indexer |
| Query a known protocol over months/years | Bulk dataset |
| Train models on historical behavior | Bulk dataset/warehouse |
| Build a universal indexer | Raw archive + decoder |
| Audit raw chain execution | Raw transaction/archive data |
Raw, decoded and derived data
The most important dataset question is: what transformations have already happened?
Raw blockchain data
Raw data preserves the chain’s native form: blocks, transactions, instruction payloads, logs and state changes.
It is right for:
- building a custom indexer;
- verifying a provider’s interpretation;
- supporting unknown programs;
- forensic/audit workflows;
- deriving a novel data product.
Its trade-off is that you have to do the decoding, normalization and version management yourself.
Decoded blockchain data
Decoded data converts program-specific actions into typed records. Instead of parsing generic instruction bytes, you may receive rows such as:
timestamp
transaction_id
pool
user
input_mint
output_mint
input_amount
output_amount
feeThis is usually the right starting point for protocol research. It removes repeated parsing work, but it must remain traceable to the underlying chain transaction and instruction.
Derived blockchain data
Derived data applies another layer of policy or calculation: USD prices, OHLCV, wallet labels, PnL, market caps, token categories or model features.
Derived data can be useful, but it needs stronger documentation because it contains assumptions. Ask how the price was built, how missing data is treated, what the label means and whether the calculation uses future information.
What makes a blockchain dataset reliable?
Reliability is a set of concrete properties, not a marketing adjective.
1. Clear coverage
Every dataset should state its coverage at the table level:
- earliest and latest timestamp/slot;
- chain/network;
- protocols/program versions included;
- whether coverage is continuous or has gaps;
- whether failed transactions are retained;
- differences between tables.
“One year of blockchain data” is incomplete if one table begins a year ago and another begins last month.
2. A documented schema
You should be able to inspect columns, types, definitions and sample rows before committing to a large download or purchase.
This is particularly important for ambiguous names:
amountmay be an input, output, fee or balance delta;timestampmay be a chain time, indexer receipt time or file time;usermay be a signer, token-account owner, sender or recipient;pricemay be an observed trade price, an oracle price or a derived USD estimate.
3. Stable identifiers and lineage
A decoded row should retain enough keys to trace it back to the blockchain. Depending on the chain, that may include:
- transaction hash/signature;
- block number/slot;
- transaction and instruction index/path;
- program/contract address;
- event index;
- source table and schema version.
Lineage lets you audit a surprising result, correct a decoder and join related records safely.
4. Explicit delivery semantics
Streaming and batch data can replay records. A good provider explains whether data is exactly once, at least once or subject to corrections, and it documents a business key/deduplication approach.
Never assume that one transaction hash is one business event. A transaction can emit multiple events, and a program event can occur inside an inner instruction.
5. Versioning and corrections
Historical data can be corrected when a decoder bug, protocol upgrade or coverage issue is discovered. Silent in-place changes make prior research impossible to reproduce.
A reliable delivery model publishes a new version, states what changed and leaves a durable record of the earlier version used in past research.
6. Integrity information
A manifest and per-file checksums let you confirm that a delivery is complete and unchanged. This is routine practice for serious research and data engineering—not an optional extra.
Why Parquet is common for blockchain datasets
Blockchain history becomes large quickly. For analytics, an open columnar format such as Apache Parquet is often a practical choice.
The Apache Parquet project describes Parquet as an open-source, column-oriented file format designed for efficient storage and retrieval, with compression and encoding for bulk data.
That matters when a table has many fields but a query needs only a few.
All fields: signature, logs, accounts, amounts, fees, pool state, metadata …
Query requires: timestamp, wallet, mint, amountWith a columnar dataset, an analytical engine can avoid reading many unrelated columns. Parquet also works across common tools such as DuckDB, Polars, ClickHouse, Spark, Snowflake and BigQuery.
Parquet is not a transaction-serving database. It is most useful for bulk scans, aggregations, feature pipelines and warehouse loading. For frequent row-level updates or interactive point reads, an API or database layer may be better.
How to use a blockchain dataset
The right data architecture is usually simple at first:
versioned Parquet files
→ local query engine or warehouse
→ validated analytical tables
→ research, dashboard, model or application outputQuery locally with DuckDB
For an exploratory query, you can query Parquet directly:
SELECT
mint,
COUNT(*) AS trades,
COUNT(DISTINCT user) AS traders
FROM read_parquet('solana/pumpfun/trade_event/date=*/part-*.parquet')
WHERE is_buy = TRUE
GROUP BY mint
ORDER BY trades DESC
LIMIT 100;The exact table names and fields should come from the delivered schema. The point is that the analysis runs over files you control rather than being constrained to a provider’s query endpoint.
Load into a warehouse
For team-wide or recurring workloads, load the files into ClickHouse, Snowflake, BigQuery, Spark or another warehouse. Keep source files immutable and create derived models separately:
raw delivered files
→ normalized protocol tables
→ analytics/feature tables
→ dashboards and modelsThis separation makes it much easier to re-run transformations when a schema changes or a business definition evolves.
Blockchain data for analytics
Analytical questions often need protocol semantics rather than a raw transaction list.
Examples include:
- DEX volume by pool or token;
- wallet participation and retention;
- liquidity added and removed;
- token-launch cohorts;
- lending borrows, repays and liquidations;
- validator and staking activity;
- cross-protocol user behaviour.
For each question, define the unit of observation before aggregating.
For example, Solana routing creates a common pitfall. A Jupiter user swap can execute across multiple underlying pools. You may count one user-facing routed swap or several pool-level legs, depending on the metric. Do not add both together as independent volume.
Blockchain data for machine learning
Machine learning benefits from datasets because feature logic usually changes more often than source history.
An ML pipeline may generate features such as:
- trailing trade count and volume;
- buy/sell imbalance;
- unique wallet count;
- pool-liquidity changes;
- creator/wallet behaviour observed to date;
- token age;
- transaction frequency;
- cross-protocol activity.
The non-negotiable rule is causality:
A feature used to make a historical prediction must use only information that was available at the prediction time.
If a feature uses tomorrow’s wallet label, end-of-day token state or a future price, the model is learning future information rather than an actionable relationship.
Use chronological train/validation/test splits, retain the exact dataset version used by each run, and record your feature code/version alongside it.
Blockchain datasets for backtesting
Backtesting needs more than a price series. A robust backtest needs:
- a historical trading universe, including assets that failed;
- ordered market/protocol events;
- a point-in-time feature set;
- venue/pool state sufficient for the execution model;
- trading, network and protocol fees;
- a model for slippage, latency and partial/no fills;
- an exit rule that does not rely on future knowledge.
For a Pump.fun-to-PumpSwap strategy, that may mean joining token creation, bonding-curve trades, curve completion/migration and post-migration AMM data. A chart alone cannot establish when the venue transition occurred or which pool a token migrated into.
How to evaluate a blockchain dataset before buying or downloading it
Use this checklist.
| Question | Why it matters |
|---|---|
| What exact network and time/slot range is included? | Defines the population you can study |
| Are records raw, decoded or derived? | Defines what you must build and what assumptions exist |
| Are schemas and sample rows available? | Lets you verify field meaning before ingesting terabytes |
| Are program upgrades/versions handled? | Prevents silent schema/semantic changes |
| Are failed transactions represented? | Important for the interpretation of activity and execution |
| Are nested events/inner instructions retained? | Needed for many protocol decoders |
| How are duplicates and replays handled? | Prevents inflated counts and volume |
| Are data gaps documented? | Prevents false continuity assumptions |
| Can records be traced to the chain? | Supports auditability and debugging |
| Is the data versioned? | Makes research reproducible |
| Is there a manifest and checksum? | Lets you verify delivery integrity |
| Can you retain/query the files yourself? | Avoids dependence on repeated API calls |
Common blockchain-dataset mistakes
Mistake 1: Choosing based only on row count
A large raw transaction count says little about protocol coverage, schema quality or whether the data answers your question.
Mistake 2: Confusing raw and decoded data
Raw data gives flexibility but requires engineering. Decoded data is faster for known protocols but must be documented and traceable.
Mistake 3: Treating an API response as an immutable research input
API answers can change with indexing, retention or provider corrections. Export and version the data you actually used for a research run.
Mistake 4: Ignoring coverage differences between tables
An overall dataset window may hide that the table needed for a specific join starts much later.
Mistake 5: Assuming one transaction equals one economic event
Transactions can contain several instructions, inner events and token movements. Use protocol-specific semantics and chain lineage.
Mistake 6: Treating current labels as historical facts
Current token categories, wallet scores or market caps can leak future information into historical analysis.
Mistake 7: Skipping integrity checks
At minimum, validate files against their manifest/checksums and check dates, row counts and null rates before building a research product on top.
Where can you get blockchain datasets?
You can build them from an archive node and your own indexer, consume an API/warehouse, use open datasets where available, or obtain prepared historical files for the protocols you need.
datastore.sh provides historical Solana and Hyperliquid blockchain datasets as typed, versioned Parquet. The catalog includes decoded protocol instructions, events, state and market tables for products such as Pump.fun, PumpSwap, Jupiter, Raydium, Meteora, Orca and Hyperliquid. Each dataset page documents available tables, schemas and delivery details, so coverage should be evaluated at the protocol/table level before use.
Frequently asked questions
What is a blockchain dataset?
A blockchain dataset is a structured collection of historical on-chain records. It can contain raw blocks/transactions, decoded protocol events, historical state or derived analytical tables.
Where can I download blockchain data?
You can obtain data through archival infrastructure, blockchain APIs, data warehouses, open datasets or downloadable protocol-specific datasets. The right option depends on whether you need raw chain evidence, live application queries or repeated large-scale analysis.
What is the difference between blockchain data and an RPC?
RPC is a request/response interface for interacting with and retrieving chain information. A dataset is an organized historical input designed to be retained, queried and analysed at scale.
Is Parquet good for blockchain data?
For analytical workloads, yes. Parquet is columnar, compressed and supported by many query engines. It is useful when you repeatedly scan selected fields across large historical tables. It is not a replacement for a transaction-submission RPC or a low-latency serving database.
Can I use blockchain datasets for machine learning?
Yes. They are well suited to repeatable feature generation and training, provided the pipeline enforces strict point-in-time causality and retains data/code versions for reproducibility.
Can I use blockchain datasets for trading backtests?
Yes, but you need more than historical prices. Include the tradeable universe, ordered events, venue state, fees and a realistic execution model. Do not let later outcomes enter historical features.
Does datastore.sh provide blockchain datasets?
Yes. datastore.sh provides downloadable historical blockchain datasets for Solana and Hyperliquid as typed, versioned Parquet files. You can inspect the available protocol schemas and samples before choosing a dataset and coverage window.
The key takeaway
The blockchain may be public, but a useful dataset is engineered.
Choose the data layer that matches the question, verify its coverage and semantics, retain lineage back to the chain, and version every file set used in serious analysis. That turns on-chain history from a pile of raw records into reliable infrastructure for analytics, AI and research.
Explore historical blockchain datasets on datastore.sh to browse documented Solana and Hyperliquid datasets in Parquet.
Data Platform
datastore.sh engineering
The team that operates capture, decoding, and reconciliation for every dataset in the catalog.