Skip to main content
Common questions about developing with Squid SDK.

Real-World Applications

What are some real-world applications for which Squid SDK was a good fit?

Squid SDK is well-suited for a wide range of blockchain indexing applications:
  • Starknet Analytics - Track Cairo contract events and transactions
  • DeFi Dashboards - Monitor protocol interactions on Starknet
  • NFT Tracking - Index NFT transfers and marketplace activity
Squid SDK excels at applications requiring high-performance indexing, complex data transformations, and real-time processing.

Technical Questions

My squid is slow, failing, or misbehaving — where do I start?

Start with the diagnostic sequence in Squid SDK tips and troubleshooting: it covers indexing speed, batch behavior, memory, reorgs, debug logging, and common error messages. Many production issues can also be prevented by following the SQD Cloud best practices guide.

How does Squid SDK handle unfinalized blocks?

The SQD Network serves finalized blocks and is typically ~1000 blocks behind the tip. Recent and unfinalized blocks are seamlessly handled by the SDK from a complementary real-time data source (RPC, GraphQL, or HTTP API, depending on the chain) configured in your processor. Potential chain reorganizations are automatically handled under the hood, ensuring data consistency. For detailed information, see Indexing unfinalized blocks.

How do squids keep track of their sync progress?

Sync progress tracking depends on the data sink used: TypeORM Database: Processors using TypeormDatabase store their state in a PostgreSQL schema (not a table). By default, the schema is called squid_processor.
The schema name must be overridden in multiprocessor squids.
View sync status:
Reset processor status:
File-based datasets: Squids using file-based storage store their status in status.txt by default. This can be customized via the hooks database option.

How fresh is the data served by squids?

Squid SDK can ingest unfinalized blocks directly from an RPC endpoint, making indexing real-time with minimal latency. Configure your RPC endpoint in the processor to enable real-time indexing of the latest blocks.

How do I enable GraphQL subscriptions for local runs?

Add the --subscription flag to the serve command in your commands.json:
See Subscriptions for detailed configuration options.

Is there a healthcheck endpoint for the indexer?

Yes! The processor exposes Prometheus metrics at the /metrics endpoint (port from PROCESSOR_PROMETHEUS_PORT, falling back to PROMETHEUS_PORT).
For squids deployed to SQD Cloud, metrics are publicly exposed. See Monitoring in the Cloud for details.

Do squids have a debug mode?

Yes. Enable debug mode by setting the SQD_DEBUG environment variable:
Use specific namespaces to focus on particular components and reduce log noise during debugging.