Firehose

The extraction layer everything else stands on. You will probably never touch it, and knowing what it does explains why the layers above behave as they do.

5 of 8 in the Developer path advanced 8 min

Checked against Graph Horizon (2025-12-11)

Last read 2026-08-30 Due again 2026-11-30

Every protocol claim below was read at these sources on 2026-08-30. Where they disagree with each other, the lesson says so.

Firehose is the layer that gets data out of a chain node efficiently. Most developers never interact with it directly, and understanding it explains a great deal about everything above.

The problem it solves.

A chain node’s RPC interface was designed for asking specific questions: give me this block, this receipt, these logs. It is request-response, and every answer is a round trip.

Reading an entire chain history through that interface means an enormous number of round trips. The bottleneck is not the data volume, it is the protocol. You are asking a question and waiting, several million times.

Firehose instruments the node to emit everything as it processes, writing an ordered stream of flat files. Reading history then becomes reading files sequentially, which is what disks and networks are good at.

instrumented node flat files sequential read

What this makes possible upstream.

Three things, and each one is a property of a layer above:

Substreams parallelism. Because the input is a file stream rather than a stateful cursor into a node, different block ranges can be read by different machines at the same time.

Deterministic replay. The stream is a fixed artefact. Running the same transformation over it twice gives the same result, which is the property the whole protocol’s verification depends on.

Cheaper backfill. Reading history stops being a per-block negotiation with a node and becomes a sequential read.

Who actually runs it.

Infrastructure operators, mostly. If you are running indexing infrastructure at scale, or integrating a chain that does not have support yet, you are in Firehose territory. If you are building an application, you are not.

It is Apache-2.0 licensed and developed in the open, which matters for the same reason it matters that subgraph mappings are deterministic: an extraction layer nobody can inspect would be a trust assumption underneath everything.

What to take from this.

If somebody says a pipeline is Firehose-based, they mean the slow part was replaced with a sequential read of a fixed artefact. That is why Substreams can parallelise, why backfills are faster, and why the results are reproducible.

That is genuinely all you need unless you are operating the infrastructure, in which case the specification and the chain integration process are the places to go.

Check yourself

What is the bottleneck Firehose removes?

Which property above Firehose depends on it emitting a fixed, ordered artefact?