Skip to main content

Quickstart

This 5-minute tutorial shows you how to grab a Solana Squid SDK indexer template. At the end you’ll have a complete blockchain indexer that fetches, decodes, and serves data on Whirlpool swaps on the USDC-SOL pair.

What you’ll get

Your Solana indexer (squid) will:
  • Fetch all historical USDC-SOL swaps made on Whirlpool
  • Save the data to a local PostgreSQL database
  • Start a GraphQL server with a rich API to query the indexed swaps
This tutorial focuses on Solana. For other chains, see the EVM Quickstart or Substrate Quickstart.

Prerequisites

Before you begin, ensure you have:
1

(Optional) Install Squid CLI

Install the Squid CLI globally:
Verify installation by running sqd --version
Squid CLI is a multi-purpose utility tool for scaffolding and managing indexers, both locally and in SQD Cloud.
2

Scaffold the indexer project

Create a new squid project from the Whirlpool USDC-SOL swaps example:
or, if you skipped the installation of Squid CLI
3

Inspect the project structure

Explore the project structure:
Key files explained: - src/abi - Utility modules generated from the Whirlpool program IDLs (src/abi/whirlpool) and handwritten (src/abi/token-program.ts) used in filtering and decoding of program data - src/model/ - TypeORM model classes used in database operations - main.ts - Main executable containing data retrieval configuration and processing logic
The main.ts file first defines the data source object and configures its data retrieval options:
main.ts
Next, main.ts defines the data processing and storage logic. Data processing is defined in the batch handler, the callback that the run() function receives as its final argument:
main.ts
4

Install dependencies and build

Install dependencies and build the project:
Verify the build completed successfully by checking for the lib/ directory.
5

Start the database and processor

The processor continuously fetches data, decodes it, and stores it in PostgreSQL. All logic is defined in main.ts and is fully customizable.First, start a local PostgreSQL database (the template includes a Docker Compose file):
The processor connects to PostgreSQL using connection parameters from .env. Ensure the database is running before proceeding.
Apply database migrations:
Then start the processor:
The indexer is now running and will begin processing blocks.
6

Start the GraphQL API

Start the GraphQL API to serve the transfer data:
7

Query the data

You can now query your indexed data! Check it out at the GraphiQL playground at localhost:4350/graphql.