Solana Transactions
Reading time: 3 minutes
Learn how to initialize a Solana-based Substreams project within the Dev Container.
Note: This guide excludes Account Changes.
Options
If you prefer to begin locally within your terminal rather than through the Dev Container (VS Code required), refer to the Substreams CLI installation guide.
Step 1: Initialize Your Solana Substreams Project
-
Open the Dev Container and follow the on-screen steps to initialize your project.
-
Running
substreams init
will give you the option to choose between two Solana project options. Select the best option for your project:- sol-minimal: This creates a simple Substreams that extracts raw Solana block data and generates corresponding Rust code. This path will start you with the full raw block, and you can navigate to the
substreams.yaml
(the manifest) to modify the input. - sol-transactions: This creates a Substreams that filters Solana transactions based on one or more Program IDs and/or Account IDs, using the cached Solana Foundational Module.
- sol-anchor-beta: This creates a Substreams that decodes instructions and events with an Anchor IDL. If an IDL isn’t available (reference Anchor CLI), then you’ll need to provide it yourself.
- sol-minimal: This creates a simple Substreams that extracts raw Solana block data and generates corresponding Rust code. This path will start you with the full raw block, and you can navigate to the
The modules within Solana Common do not include voting transactions. To gain a 75% reduction in data processing size and costs, delay your stream by over 1000 blocks from the head. This can be done using the sleep
function in Rust.
To access voting transactions, use the full Solana block, sf.solana.type.v1.Block
, as input.
Step 2: Visualize the Data
-
Run
substreams auth
to create your account and generate an authentication token (JWT), then pass this token back as input. -
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.
Step 3: Load the Data
To make your Substreams queryable (as opposed to direct streaming), you can automatically generate a Substreams-powered subgraph or SQL-DB sink.
Subgraph
- Run
substreams codegen subgraph
to initialize the sink, producing the necessary files and function definitions. - Create your subgraph mappings within the
mappings.ts
and associated entities within theschema.graphql
. - Build and deploy locally or to Subgraph Studio by running
deploy-studio
.
SQL
- Run
substreams codegen sql
and choose from either ClickHouse or Postgres to initialize the sink, producing the necessary files. - Run
substreams build
build the Substream SQL sink. - 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 Solana application.
- The Dev Container Reference helps you navigate the container and its common errors.
- The CLI reference lets you explore all the tools available in the Substreams CLI.
- The Components Reference dives deeper into navigating the
substreams.yaml
.