Subsquid SDK is a TypeScript ETL toolkit for blockchain data, that currently supports
- Ethereum and everything Ethereum-like
- Substrate-based chains
- Solana.
Subsquid SDK stands apart from the competition 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 Subsquid Network.
The latter is a key point, as Subsquid 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 game changing performance over traditional RPC API.
The best way to get started is to install squid CLI and scaffold a squid project with sqd init
.
For step-by-step instructions, follow one of the Quickstart guides.
Our developers are active on Telegram and Discord. Feel free to join and ask any question!
Subsquid is an OpenSource 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.