Introduction

What's Old Faithful, what are CAR files, how to run Faithful RPC

The Old Faithful project has several parts:

Tooling to produce CAR files from Solana snapshots

The core of the Old Faithful is history archives in Content Addressable aRchives (CAR) format (overview, specs). These represent a verifiable, immutable view of Solana's history. The CAR files that this project generates follow a schema specifically developed for Solana’s historical archives.

The content's addressable nature means that each epoch, block, transaction, and shredding is uniquely identified by a content hash. By knowing this content hash, a user can retrieve a specific object of interest in a trustless manner, i.e., retrieve an object verifiably from a non-trusted source.

The tooling operates on (end of epoch) snapshots generated using the default solana-ledger-tool that's used by Solana warehouse nodes to record the full epoch into a single archive. No changes to the default Solana tools are required to produce such archives for Old Faithful.

Read more about Generating Old Faithful archives.

A full, verified genesis archive: OF1

The second component of the Old Faithful project is OF1, a full genesis archive that contains every block from its genesis until the current epoch.

There's a hot copy of the archive hosted by Triton https://files.old-faithful.net, and the cold copy is published to various Filecoin storage providers (SPs).

You can clone and run your own copy of this archive. We strongly recommend doing this if you are an infrastructure provider, indexer, or heavy user.

Read more about hosting your own copy of Old Faithful archives.

An RPC server supporting multiple sources of retrievals

Old Faithful has an RPC server that you can run that supports retrievals from an Old Faithful archive (like OF1) via gRPC and the standard Solana JSON-RPC methods for fetching block and transaction data.

Retrievals can be made via IPFS, the Filecoin network, or even by hosting the CAR files yourself on disk, a CEPH cluster, S3 or alternative compatible object storage services, HTTP (CDN), etc.

The only real requirement is that the retrieval source you provide either publishes a standard Unix filesystem API or supports an HTTP API with range requests support.

Read more about running the RPC server.

Geyser integration & Rust library

There is a Geyser integration that provides an easy way to perform ETL with already existing Solana Geyser plugins. You can run this on an epoch CAR file and receive Geyser notifications with blocks and transactions.

Read more about using the Geyser integration.

Last updated