Package Logo
my_project
my-project@v0.0.1
README

Substreams Starter Dev Kit

Getting Started

Your first 60h/month are free!

Open in GitHub Codespaces

This will open a fully featured Devcontainer-based development environment, using GitHub Codespaces.

Within the IDE, in a Terminal (F1 -> Terminal: Create New Terminal), run:

substreams init
substreams build
substreams auth
substreams gui
substreams registry login
substreams registry publish

Run help to discover the development environment and then generate sink projects with:

substreams codegen subgraph
substreams codegen sql

Learn more:

Discover community Substreams modules:

Clone in local VSCode

VSCode has excellent support for such containers. See their documentation.

[!NOTE] Devcontainers, the environment proposed here, have greatly matured in the past 3 years. They have been standardized, implemented in multiple IDEs and tools, and are used at scale in great companies (eg. Shopify).

Local install

The Devcontainer is the preferred way to develop Substreams. Our documentation generally assumes this environment.

If you prefer, you can install all components locally by following our installation docs.

Included in the dev environment

  • substreams preinstalled
  • For Substreams development: Rust toolchain, buf and protobuf tooling,
  • For subgraph development: node/npm, along with all subgraph services, running in the devcontainer (graph-node, postgres, ipfs) directly accessible locally or remotely.
  • Pre-configured VSCode extensions for everything, plus a custom VSCode Substreams Extension.
)
Documentation
Modules
Maps icon
Maps

map
map_program_data

1872e00da9a680b6bd8d329dac951d7196c8f836
map map_program_data (
solana:blocks_without_votessf.solana.type.v1.Block
)  -> substreams.v1.program.Data
substreams gui my-project@v0.0.1 map_program_data

map
solana:blocks_without_votes

0be93a73c65aa8ec2de4b1a47209edeea493ff29
map solana:blocks_without_votes (
)  -> sf.solana.type.v1.Block
substreams gui my-project@v0.0.1 solana:blocks_without_votes

map
solana:transactions_by_programid_without_votes

79983641fb21f80af202858c457165e00d9c9c9f
map solana:transactions_by_programid_without_votes (
paramsstring
)  -> sf.substreams.solana.v1.Transactions
Default param : program:4vMsoUT2BWatFweudnQM1xedRLfJgJ7hswhcpz4xgBTy
substreams gui my-project@v0.0.1 solana:transactions_by_programid_without_votes

map
solana:transactions_by_programid_and_account_without_votes

8c597e45e0aacc39d15dda46cbb1babfa6e18abc
map solana:transactions_by_programid_and_account_without_votes (
paramsstring
)  -> sf.substreams.solana.v1.Transactions
Default param : program:4vMsoUT2BWatFweudnQM1xedRLfJgJ7hswhcpz4xgBTy || (account:Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD && program:FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH)
substreams gui my-project@v0.0.1 solana:transactions_by_programid_and_account_without_votes

map
solana:v020:blocks_without_votes

0be93a73c65aa8ec2de4b1a47209edeea493ff29
map solana:v020:blocks_without_votes (
)  -> sf.solana.type.v1.Block

blocks_without_votes allows you to consume a full Solana Block without Vote instructions (Vote111111111111111111111111111111111111111). If you consume it on HISTORICAL data (+1000 blocks from HEAD), you will be reading from the StreamingFast cache, thus saving costs on the amount of TB read.

substreams gui my-project@v0.0.1 solana:v020:blocks_without_votes

map
solana:v020:filtered_transactions_without_votes

ccc3362e519a9eec745093ac483c80abe0134109
map solana:v020:filtered_transactions_without_votes (
paramsstring
)  -> sol.transactions.v1.Transactions
Default param : program:TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA

filtered_transactions_without_votes allows you to consume transactions containing instructions from specific program_id based on a filter string. Supported operators are: logical or ||, logical and && and parenthesis: (). Example: to only consume TRANSACTIONS containing Token or ComputeBudget instructions: program:TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA || program:ComputeBudget111111111111111111111111111111. Transactions containing Vote111111111111111111111111111111111111111 are always excluded.

substreams gui my-project@v0.0.1 solana:v020:filtered_transactions_without_votes
Block Indexes icon
Block Indexes

blockIndex
solana:program_ids_without_votes

811466d12743a8b02be8ba6649cfa9a24aa1af62
substreams gui my-project@v0.0.1 solana:program_ids_without_votes

blockIndex
solana:program_ids_and_accounts_without_votes

ec0d2eb5ebfb384b6befa8aa19f6178b853672fe
blockIndex solana:program_ids_and_accounts_without_votes (
)  -> sf.substreams.index.v1.Keys
substreams gui my-project@v0.0.1 solana:program_ids_and_accounts_without_votes

blockIndex
solana:v020:program_ids_without_votes

811466d12743a8b02be8ba6649cfa9a24aa1af62
blockIndex solana:v020:program_ids_without_votes (
)  -> sf.substreams.index.v1.Keys

program_ids_without_votes creates a cache to efficiently retrieve instructions based on the program ID. For example, the following sets keys for the Token program:

  • program:TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
substreams gui my-project@v0.0.1 solana:v020:program_ids_without_votes
Protobuf

Protobuf Docs Explorer

substreams.v1.program
sf.solana.type.v1
sol.instructions.v1
sol.transactions.v1