Skip to main content

Quickstart

This 5-minute tutorial shows you how to grab a Substrate Squid SDK indexer template. At the end you’ll have a complete blockchain indexer that fetches, decodes, and serves KSM transfers data from Kusama.

What you’ll get

Your Substrate indexer (squid) will:
  • Fetch all historical KSM transfers on Kusama
  • Save the data to a local PostgreSQL database
  • Start a GraphQL server with a rich API to query the indexed transfers
This tutorial focuses on Substrate. For other chains, see the EVM Quickstart or Solana 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 substrate template:
or, if you skipped the installation of Squid CLI
3

Inspect the project structure

Explore the project structure:
Key files explained: - src/types - Utility modules generated for interfacing the balances pallet data. - src/model/ - TypeORM model classes used in database operations - processor.ts - Data retrieval configuration - main.ts - Main executable containing processing logic
The processor.ts file defines the SubstrateBatchProcessor object and configures data retrieval:
processor.ts
Next, main.ts defines the data processing and storage logic. Data processing is defined in the batch handler, the callback that the processor.run() main call receives as its final argument:
main.ts
See the full file for details.
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.Add your SQD Network API key to .env before starting the processor:
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.