Squid SDK is a TypeScript ETL toolkit for blockchain data, that currently supports
- Ethereum and everything Ethereum-like
- Substrate-based chains
- Solana.
Squid SDK is distinguished by
- Being a toolkit (rather than an indexing app like TheGraph or Ponder)
- Fast binary data codecs and type-safe access to decoded data
- Native support for sourcing the data from SQD Network.
The latter is a key point, as SQD Network is a decentralized data lake and query engine, that allows to granularly select and stream subset of block data to lightweight clients while providing high performance compared to traditional RPC APIs.
Install the SQD CLI and scaffold a new project:
npm install -g @subsquid/cli
sqd init my-squidFor step-by-step instructions, follow the How to start guide.
- Full documentation: docs.sqd.dev
- SQD CLI reference: docs.sqd.dev/en/cloud/reference/cli
- Website: sqd.dev
Our developers are active in the SQD developer community on Telegram. Feel free to join and ask any question!
SQD is an open-source project, contributions are welcomed, encouraged and will be rewarded!
Please consult CONTRIBUTING.md for hacking instructions and make sure to read our code of conduct.
This project uses Rush for monorepo management. When making changes to packages, you need to document them using the rush change system:
-
After making your changes and committing them, run:
rush change -b origin/master
-
Follow the interactive prompts to:
- Select the type of change (major, minor, patch, or none)
- Provide a clear description of what changed
- The description should explain the feature/fix from a user's perspective
-
Change types:
major: Breaking changes that require users to update their codeminor: New features that are backward compatiblepatch: Bug fixes and small improvementsnone: Internal changes that don't affect the public API
-
Best practices:
- Write clear, concise descriptions
- Focus on what changed from the user's perspective
- Include relevant technical details when necessary
- Use present tense ("Add feature X" not "Added feature X")
The change files are automatically generated in common/changes/@subsquid/[package-name]/ and will be used to generate changelogs during the release process.