1. Read blocks from a source
The archive service requests a block range from a configured ingestion source. It reads line-delimited block records, advances from the last block it received, and retries after a source error. Chain-continuity validation can check that each block’s parent hash matches the previous block’s hash. The current archive implementation supports EVM, Solana, Bitcoin, Tron, and two Hyperliquid dataset types. Other historical datasets can use different ingestion programs while still producing chunks for the same Network path.2. Build a chunk
A chunk is an immutable range of finalized blocks. The archive service groups records into tables and writes the chunk files to persistent storage. The current worker and query implementations read these tables from Parquet files. Chunks are the unit used for storage placement and archival queries. A query for a large block range can therefore cover more than one chunk.3. Publish storage metadata
The scheduler scans the configured dataset locations for chunks it has not seen before. For each chunk it records the dataset, block range, size, and file locations needed to create an assignment. The assignment does not copy the chunk data itself. It tells each worker which chunks it should hold and where to download their files.4. Reconcile worker storage
Each worker polls the Network state for a new assignment. When the assignment changes, the worker compares its desired chunks with its local files:- missing assigned chunks are downloaded from persistent storage;
- chunks in the assignment become available for local queries after download;
- chunks that are no longer assigned can be removed from local storage.
This page describes finalized archival data. Recent, fork-sensitive blocks use
the separate path described in How real-time data is
served.