Repository navigation
Docs
- Document the per-store size limit on StreamingFast-hosted endpoints is now 3.5GiB (up from 1GiB), following
the move to the mmap stores backend. The binary default remains 1GiB, overridable with the tier1
--substreams-tier1-store-size-limitflag.
Server
-
Tier1 accepts a forkable hub from the process through
Tier1Modules.ForkableHubinstead of building its own, so an app running next to tier1 (firehose infirecore) can share it and hold live blocks in memory once.NewLiveHubbuilds that hub andHubKeepFinalBlocksgives how many final blocks it keeps. -
Tier1 now handles Ethereum partial blocks about 20x faster, with almost no allocations. It reads the
transaction traces straight from the encoded block and drops the ones already sent by copying bytes,
instead of decoding and re-encoding the whole block for every partial. -
Add the
external_calls_<kind>metering metrics (for exampleexternal_calls_eth_call), counting the calls
made by WASM extensions. A batch counts for as many calls as it contains. Extensions report them with
metering.AddExternalCalls.
CLI
-
Breaking for Rust modules:
substreams buildandsubstreams protogengenerate buffa bindings for a
project whoseCargo.tomldepends onbuffa, usingbuf.build/anthropics/buffa:v0.9.2. This pairs with
substreams0.8.0, which replaced prost with buffa as its protobuf implementation. See Migrating from prost to buffa.A project that depends on
prost, or that names neither implementation, gets
buf.build/community/neoeinstein-prostoutput. Generating buffa bindings for code written against prost
does not compile, so buffa is used only where the manifest asks for it. Addbuffato[dependencies]
before building againstsubstreams0.8.0.The on-the-wire protobuf encoding is unchanged. Existing packages keep streaming, cached module outputs
stay valid, and sinks read the same bytes. -
substreams buildandsubstreams protogenwarn when an existingbuf.gen.yamlgenerates for a different
protobuf implementation thanCargo.tomldepends on, a combination that does not compile. -
substreams buildandsubstreams protogenwrite themod.rstying buffa's generated files together,
which no buffa plugin produces, wherebuf.gen.yamlgenerates them. A prost project is unaffected: the
prost-crateplugin writes its own. The file starts with// @generated by substreams, and one without
that line is left alone, so a hand-writtenmod.rsis never overwritten; amod.rsthat has gone missing
is written back without regenerating the bindings. -
Fixed
substreams buildandsubstreams protogenskipping generation as already up to date when the code on
disk was generated for a different target. The cache key now covers thebuf.gen.yamlplugins and their
out:paths, so repointing it at another plugin regenerates instead of leaving stale code in place, and a
project whosebuf.gen.yamlwas deleted, which is what the stack-mismatch warning above tells the reader to
do, always regenerates. The search for abuf.gen.yamlnow stops at the repository root, so a project nested
in a repository that configuresbuffor something else at its root is no longer generated with that
configuration. -
Fixed
substreams buildandsubstreams protogenfailing with two definitions of the same type when a
package carries its own copy of a protobuf that later became a system one. System protobufs are now matched
by the fully qualified types they declare rather than by file name, and the package's copy is the one that
stays, since it is what its modules were built against.substreams-sink-sql'sservices.protoholds the
messages this project now ships asdeprecated.proto. -
substreams protogen --output-pathnow overrides the output directory only when it is given on the
command line. Without it, an existingbuf.gen.yamlthat generates somewhere other thansrc/pbis
followed, somod.rslands beside the files it includes instead of in a directory those files were
never written to. Theout:path written into a generatedbuf.gen.yamlis now resolved relative to
that file rather than to the manifest, which is the same directory in a project whosebuf.gen.yaml
sits beside its manifest.
Dependencies
- Bumped
github.com/streamingfast/bstreamto pick up two fixes: a stream can skip the partial blocks of a
forkable hub it shares with another app, andblockstreamdetects a dead relayer in about 40s instead of
5 minutes.