Old Faithful and the x402 Hackathon

Old Faithful and the x402 Hackathon

Triton One is offering a $2,500 prize at the x402 Hackathon for the best integration of x402 with Old Faithful:

This guide should help you get started. If you have any questions - don’t hesitate to reach out on X!

What’s Old Faithful?

Old Faithful is the only validated and verified, open source and publicly available data set and data tooling for all of Solana’s history. It is also the highest performance way to get access to Solana’s history, allowing streams of 10s of gbps and millions of TPS per second without breaking a sweat. It was built by Triton One in collaboration with the Solana Foundation and currently covers all epochs since genesis. 

The Old Faithful archive contains all blocks produced by validators, fully PoH verified and with rewards and metadata available. It’s encoded binary data in CBOR with an IPLD schema organised in a DAG structure - read more about the data format here.

Getting started

First, a good source to start from are the Old Faithful docs and the Old Faithful GitHub repo. You can also review the daily updated report that lists and links to all the data that is available. All source code is available under AGPL, and the dataset is currently completely freely available under files.old-faithful.net

You can run the Old Faithful binary, which offers gRPC and JSON-RPC interfaces, to consume the data without having anything more than a config file pointing at the Old Faithful CAR files and indexes. 

For example, to run a faithful JSON-RPC server for epoch 800, first create a config file called epoch-800.yml with the following contents:

version: 1
epoch: 800
data:
  car:
    uri: https://files.old-faithful.net/800/epoch-800.car
  filecoin:
    enable: false

indexes:
  cid_to_offset_and_size:
    uri: https://files.old-faithful.net/800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-cid-to-offset-and-size.index
  slot_to_cid:
    uri: https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-slot-to-cid.index
  slot_to_blocktime:
    uri: https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-slot-to-blocktime.index
  sig_to_cid:
    uri:  https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-sig-to-cid.index
  sig_exists:
    uri: https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-sig-exists.index

Then run the faithful CLI like this:

$ ./faithful-cli rpc --listen :8000 --grpc-listen :8001 epoch-800.yml

This should give you an output like this:

:FAITHFUL_VERSION_BEGIN:{"-compiler":"gc","GOAMD64":"v1","GOARCH":"amd64","GOOS":"linux","commit":"35bc2981eaafffeb27529ee9017f719cf5692c8e","date":"2025-11-06T04:52:27Z","go_version":"go1.24.4","num_cpu":"2","tag":"v0.7.13","vcs":"git","vcs.modified":"false","vcs.revision":"35bc2981eaafffeb27529ee9017f719cf5692c8e","vcs.time":"2025-10-23T15:28:57Z"}:FAITHFUL_VERSION_END:
I1106 04:52:27.514522    8158 cmd-rpc.go:152] Found 1 config files:
2025/11/06 04:52:27 Pyroscope profiling is DISABLED. Set PYROSCOPE_SERVER_ADDRESS or --pyroscope-server-address to enable it.
I1106 04:52:27.546012    8158 cmd-rpc.go:222] Loaded 1 epoch configs
I1106 04:52:27.546028    8158 cmd-rpc.go:223] Initializing epochs async...
I1106 04:52:27.546155    8158 multiepoch.go:242] RPC server listening on :8000
I1106 04:52:27.546156    8158 storage.go:34] opening index file from "https://files.old-faithful.net/800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-cid-to-offset-and-size.index" as HTTP remote file
I1106 04:52:27.546217    8158 telemetry.go:72] Telemetry configured to export to stdout (no OTEL_EXPORTER_OTLP_ENDPOINT set)
I1106 04:52:27.546294    8158 telemetry.go:89] Telemetry initialized successfully
I1106 04:52:27.546701    8158 grpc-server.go:70] gRPC server starting with telemetry enabled on :8001
I1106 04:52:27.546164    8158 multiepoch.go:244] Prometheus metrics available at :8000/metrics
I1106 04:52:28.733242    8158 storage.go:34] opening index file from "https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-slot-to-cid.index" as HTTP remote file
I1106 04:52:30.146289    8158 storage.go:34] opening index file from "https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-sig-to-cid.index" as HTTP remote file
I1106 04:52:32.081458    8158 storage.go:77] opening CAR file from "https://files.old-faithful.net/800/epoch-800.car" as HTTP remote file
I1106 04:52:32.477861    8158 storage.go:34] opening index file from "https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-sig-exists.index" as HTTP remote file
I1106 04:52:33.950494    8158 storage.go:34] opening index file from "https://files.old-faithful.net//800/epoch-800-bafyreihbskxs2lpeheihm2plzlf7vo6gguczmnb7xntm2qf2tkpowc5do4-mainnet-slot-to-blocktime.index" as HTTP remote file
I1106 04:52:36.639902    8158 cmd-rpc.go:291] Initialized 1/1 epochs in 9.093844329s

And that’s all there is to it! You now have a server that can respond to requests for blocks and transactions. Try it out from another terminal:

$ curl -X POST http://localhost:8000 -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"getBlock","params":[345601001]}'

Speeding it up!

Now, when run in this mode, it will be quite slow! This is because Old Faithful needs to query the indexes remotely from files.old-faithful.net and those round trips take time. To speed it up, you can choose to stream blocks sequentially. Streaming is enabled both by the Faithful gRPC interface as well as tools such as Anza’s Jetstreamer. You can also clone the index files or even the car files locally from files.old-faithful.net (use aria2c for max speed!).

Cloning the data locally or streaming it can let you suck down history data as fast as your internet connection can manage. Speed like 25 gbps is not difficult with the right hardware:

Ay, there’s the rub!

Did you see it? Maybe you missed it because those transactions flew by fast. Well, 12 epochs per hour, at ~500 gb per epoch is 6 TB per hour, 144 TB per day or 1 petabyte per week!

Triton One runs a dedicated infrastructure for generating, managing and serving this massive dataset. In the future, we hope that more entities on Solana will do the same and that we’ll have multiple, publicly available archives. However, as more automated tooling is built on top of this along with AI agents who want to be able to analyse and work with Solana’s history, we need ways to make serving this sustainable for us and for others in the ecosystem.

x402 is a protocol that is perfect to let data hoarders (whether AI or human) pay their way and enable entirely new integrations of Solana history data that does not depend upon you first having to set up a subscription with your favourite RPC provider…and this comes back to why we are offering $2,500 for the best integration of x402 with Old Faithful.

So…why are you still here? Go build!  

Deadline for submissions is 11/11/25.

Don’t hesitate to reach out on Telegram!

Checkout our Docs and GitHub to find more awesome projects we've built!