One request in. Parquet out. No machine left behind.
Each job gets its own machine. It starts after you pay, scans your range, uploads the result, and then we delete it.
wget -i, or DuckDB on the URLs.You send a scan request
Name a preset, or send a filter and an optional Anchor IDL. Add a first and a last epoch. The control plane checks the filter and the IDL before any payment, so a bad request costs nothing.
The control plane gives a firm price
It reads the exact size of each epoch file from the archive, and keeps it, because an epoch file never changes. The price is $2 for each TB of archive scanned (launch price; list price $5), rounded up to the cent, with a $4 minimum. The 402 response holds the price and the payment details.
You pay
Send the same request again with an
X-PAYMENTheader, from any x402 client. The payment is USDC on Solana. When it settles, the job starts and you get a job id.One machine starts for your job
A dedicated 4 vCPU machine in Amsterdam boots a prebuilt scan binary. It streams each epoch from the archive, tests every transaction against your filter, and decodes each match with the IDL.
Parquet goes to R2 during the scan
The scan closes a file at 2 GB. The machine uploads it at once and deletes its copy, while the scan continues. A file over 4 GiB goes up in 512 MiB parts.
We delete the machine
The machine reports the result, and the control plane deletes it.
GET /job/<id>returns a download URL for each file, a manifest forwget -i, and a ready DuckDB query.
You get a credit, not a loss
- If the scan fails, you get a credit for the full price. Send the same job again with
X-CREDIT: <id>, and you pay nothing. - If the machine hangs, a watchdog deletes it at twice the expected run time and issues a credit. It runs every 10 minutes.
- If the scan stops early, the files it uploaded stay available for 7 days. You still get the credit.
Your filter runs on a machine with no keys
- The machine holds no long-lived secret. It gets presigned URLs and a token for one job.
- The control plane makes each storage key from the job id. A machine cannot write outside its own job or read another result.
- Names from your IDL become file names, so three separate checks clean them.
- R2 deletes each result after 7 days.
Five states. Two of them cost money.
paid ──▶ running ──▶ done
│
├──▶ failed the scan or the upload failed → credit
└──▶ timeout the watchdog deleted it → credit
The watchdog looks at paid and running jobs, and at any machine that no open
job claims.
See it on your own range.
Select a preset and an epoch. The price comes back before you pay anything.