on Starknet

In this guide, you'll learn how to initialize a Starknet-based Substreams project within the Dev Container.

Step 1: Initialize Your Starknet Substreams Project

  1. Open the Dev Container and follow the on-screen steps to initialize your project.

  2. Running substreams init will give you the option to choose between two Starknet project options. Select the one that best fits your requirements:

    • starknet-minimal: Creates a simple Substreams that extracts raw Starknet block data and generates corresponding Rust code. This path will start you with the full raw block, you can navigate to the substreams.yaml (the manifest) to modify the input.

    • starknet-events: Creates a Substreams that extracts and decodes Starknet events and calls using the cached Starknet Foundational Module, filtered by one or more smart contract addresses. Contract ABIs are retrieved from Starkscan. If an ABI isn’t available, you’ll need to provide it yourself.

Note: Starknet ABIs are mutable within blocks, therefore the current ABI of your smart-contract may change in a future block.

Step 2: Visualize the Data

  1. Run substreams auth to create your account and generate an authentication token (JWT), then pass this token back as input.

  2. Now you can freely use the substreams gui to visualize and iterate on your extracted data.

Step 2.5: (Optionally) Transform the Data

Within the generated directories, modify your Substreams modules to include additional filters, aggregations, and transformations, then update the manifest accordingly. To learn more about this, visit the How-to-Guides

Step 3: Load the Data

To make your Substreams queryable (as opposed to direct streaming), you can automatically generate a Subgraph (known as a Substreams-powered subgraph) or SQL-DB sink.

Subgraph

  1. Run substreams codegen subgraph to initialize the sink, producing the necessary files and function definitions.

  2. Create your subgraph mappings within the mappings.ts and associated entities within the schema.graphql.

  3. Deploy

SQL

  1. Run substreams codegen sql and choose from either ClickHouse or Postgres to initialize the sink, producing the necessary files.

  2. Run substreams build build the Substreams:SQL sink.

  3. Run substreams-sink-sql to sink the data into your selected SQL DB.

Note: Run help to better navigate the development environment and check the health of containers.

Additional Resources

You may find these additional resources helpful for developing your first Starknet application.

Dev Container Reference

The Dev Container Reference helps you navigate the container and its common errors.

CLI Reference

The CLI reference lets you explore all the tools available in the Substreams CLI.

Substreams Components Reference

The Components Reference dives deeper into navigating the substreams.yaml.

Last updated