substreams-solana

Substreams development kit for Solana chains, contains Block model and helpers.

APACHE-2.0 License

Downloads
14.6K
Stars
7
Committers
2

Substreams Solana

Substreams development kit for Solana chains, contains Rust Firehose Block model and helpers

Usage

  • Cargo.toml:
[package]
name = "my-package"
version = "0.1.0"

[lib]
crate-type = ["cdylib"]

[dependencies]
substreams-solana = "0.13"

Protobuf Extern paths

If you have other protobuf objects that refer to the sf.solana.type.v1 types, like the Solana Substreams Foundational Modules you must inform the Protobuf code generator to generate subtreams_solana::pb::sf::solana::type::v1 for messages pointing to sf.solana.type.v1.

Add or modify the buf.gen.yaml file so that it has an extern_path=... option defined like this:

version: v1
plugins:
- plugin: buf.build/community/neoeinstein-prost:v0.2.2 # check compatibility with your 'prost' crate
  out: ./src/pb
  opt:
    - file_descriptor_set=false
    - extern_path=.sf.solana.type.v1=::substreams_solana::pb::sf::solana::type::v1

- plugin: buf.build/community/neoeinstein-prost-crate:v0.3.1 # check compatibility with your 'prost' crate
  out: ./src/pb
  opt:
    - no_features

When you run substreams protogen or buf generate proto, it will generate links to substreams-solana library enabling you to leverage all helpers added by the library to Solana types.

Development

We manually keep in sync the rendered Rust Firehose Block models with the actual Protocol Buffer definitions file found in sf-solana and we commit them to Git.

This means changes to Protobuf files must be manually re-generated and commit, see below for how to do it.

Regenerate Rust Firehose Block from Protobuf

./gen.sh

Community

Need any help? Reach out!

License

Apache 2.0