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:
Triton One is adding an additional track to the current Solana Hackathon with a $2500 bounty! Build the best integration of x402 payments into Old Faithful to automate sustainable access to all of Solana’s history.
— Triton One 🌊🌋 (@triton_one) November 5, 2025
Details: https://t.co/RW3y9dVyh5
More resources below!
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:
Proud to announce the initial public release of #Jetstreamer ✈️ which can stream all transactions and blocks since #Solana genesis against a local plugin at 2.7M+ TPS or 12 epochs/hour 🔥! Powered by @triton_one's Old Faithful archive, free for everyone!https://t.co/yWZRq9Xa13 pic.twitter.com/TAA28uINup
— Sam0xSol (@Sam0xSol) October 22, 2025
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!