StreamingFast Substreams frequently asked questions
Substreams is an exceptionally powerful processing engine capable of consuming streams of rich blockchain data. Substreams refines and shapes the data for painless digestion by end-user applications, such as decentralized exchanges.
Developers do not need a dedicated installation of Firehose to use Substreams. StreamingFast provides a public Firehose endpoint made available to developers.
Substreams is the name of the engine, and of the product. It is to be capitalized and kept plural. One can speak of an individual module or individual stream but in general, when speaking about the engine, you would use the word "Substreams".
Authentication tokens are required to use Substreams and connect to the public Firehose endpoint. Full instructions for obtaining a StreamingFast authentication token are available in the Substreams documentation.
Substreams and Firehose work together to index and process blockchain data. Substreams is used for transforming rich blockchain data and exposing it to the needs of application developers.
Yes, Substreams is an open-source project and there are free (albeit rate-limited) endpoints available.
Substreams is not meant to be piped to a web UI, it’s a data transformation layer. Substreams reaches Subgraphs, as a data source, and makes GraphQL available for web consumption. Other sinks might expose APIs for web browsers, however, it's not the responsibility of Substreams.
Specifying a stop block value of zero (0), the default enables transparent handoff from historical to real-time blocks.
StreamingFast was originally called dfuse. The company changed its name and is in the process of rebranding.
StreamingFast is a protocol infrastructure company providing a massively scalable architecture for streaming blockchain data. StreamingFast is one of the core developers working alongside The Graph Foundation.
The first unknown is the system you are compiling on, and the second is the system you are targeting.
“Compile on almost any machine, run on almost any machine.”
Check to make sure the module's output type matches the protobuf definition. In some cases, the renamed protobuf package isn't updated in the
module.output.typefield, creating an incompatibility.