Fogo Data: Index SVM Trading Activity, Programs, and Token Balances
Index Fogo transactions, program calls, logs, and SPL token balance changes in one pipeline, delivered to your own database. Real-time data from a fast SVM Layer 1, no node to run.
Fogo is an SVM Layer 1 purpose-built for trading. It keeps full compatibility with the Solana Virtual Machine and runs a custom Firedancer-based client tuned for consistent, low-latency block production, with validators colocated near major exchanges. Solana programs and tooling carry over, and so does the Solana data model: transactions are lists of instructions over accounts, identified by signature, with meaning spread across logs and balance changes. You can read how the team frames it at fogo.io.
Short blocks and trading-heavy traffic are the data problem. Fogo produces blocks fast, and much of what lands in them is order flow, cancels, and failed attempts. Indexing Co delivers Fogo blocks in the Solana JSON-RPC shape, runs your transform over every transaction server-side, and lands the rows in your own PostgreSQL, warehouse, or webhook. Real-time, with no node to operate.
Why Fogo data is hard
err field and the logs, not just the successes.
tx.hash and block.number do not fit.
What Indexing Co delivers for Fogo
Stand up and maintain the whole stack yourself.
- Run a Fogo RPC node or find a provider that keeps up with block production.
- Fetch every block and resolve account keys, including lookup-table addresses.
- Parse logs, inner instructions, and token balance deltas per program.
- Build backfill, retries, and real-time delivery from scratch.
One pipeline sources, shapes, and delivers Fogo to your store.
- Full Fogo blocks: transactions, instructions, logs, balances, and rewards.
- Shaped by your JavaScript transform into the schema you define.
- Lands in your PostgreSQL, BigQuery, warehouse, or webhook.
- The same pipeline carries your Solana and EVM chains. No node.
What you can index
| SVM data type | On Fogo, for example |
|---|---|
| Transactions and signatures | Fee payer, fee, success or program error per transaction |
| Instructions and inner instructions | Which trading programs a transaction called, and the calls they made |
| Program log messages | Raw program logs for your own parsing |
| SPL token balance changes | Pre and post token balances by mint and owner |
| Block metadata and rewards | Block height, block time, blockhash, validator rewards |
A transform, not a subgraph
You write the transform in JavaScript, not AssemblyScript, and change it without re-indexing from block zero. Indexing Co runs your function over each block server-side. This one returns a row per transaction with the programs it called and whether it succeeded.
// Indexing Co transform: one row per Fogo transaction, with the programs it called
function transform(block) {
const results = [];
for (const tx of block.transactions || []) {
const msg = tx.transaction?.message || {};
const loaded = tx.meta?.loadedAddresses || {};
// v0 transactions append lookup-table addresses after the static account keys
const keys = [...(msg.accountKeys || []), ...(loaded.writable || []), ...(loaded.readonly || [])];
const programs = [...new Set((msg.instructions || []).map((ix) => keys[ix.programIdIndex]))];
results.push({
chain: block._network,
block_height: block.blockHeight,
block_time: block.blockTime,
signature: tx.transaction?.signatures?.[0],
fee_payer: keys[0],
programs: programs.join(','),
fee: tx.meta?.fee,
succeeded: tx.meta?.err === null,
token_balance_changes: (tx.meta?.postTokenBalances || []).length,
});
}
return results;
}
Fogo with Indexing Co
You want full control of node infrastructure and have the team to keep a Fogo RPC node at the chain head, resolve SVM account keys and lookup tables, and build delivery in-house.
You want Fogo transactions, program calls, logs, and token balance changes delivered to your own database, on a schema shared with your other chains, with no infrastructure to run.
Related Reading
FAQ
Is Fogo data the same shape as Solana?
Yes. Fogo is SVM compatible, so blocks carry Solana-style transactions with signatures, account keys, instructions, and a meta object with logs, fees, errors, and balances. Your Solana transform logic carries over.
How do I identify a Fogo transaction?
By its first signature, tx.transaction.signatures[0]. Blocks carry blockHeight, blockTime, and parentSlot. There is no EVM-style transaction hash or block number.
Can I capture failed transactions?
Yes. Failed transactions are in the block with their fee, logs, and an err value. Keep them or filter them out in your transform.
Does Indexing Co decode Fogo program data?
Indexing Co delivers instructions, inner instructions, raw program log messages, and pre and post token balances. Your transform decides how to interpret them for the programs you care about. There is no automatic IDL decoding claimed here.
Where does the Fogo data go?
Into your own destination: PostgreSQL, BigQuery, a warehouse, or a webhook. You define the output schema and own the storage.
Get Started
Index Fogo in minutes. Set up your first Fogo trading or token pipeline without running a node.