A new module type, blockIndex that will be used to create the index used by the filter (extracting labels from transactions, etc.) (this type will have a special handler)
A module of this type does not have params in its input, initialBlock. The output type is forced to be sf.substreams.index.1.Keys (we can still move this around if need be, but it's a core construct of the engine, it could also be renamed Labels as @sduchesneau put it.).
message Keys {
repeated string keys = 1;
}
A new block inside module definitions, called blockFilter, which contains module (the reference to a blockIndex type of module) and query (a string that will be used to evaluate the blocks against the filter, see https://github.com/streamingfast/substreams/issues/409)
blockIndex
that will be used to create the index used by the filter (extracting labels from transactions, etc.) (this type will have a special handler)A module of this type does not have params in its input, initialBlock. The output type is forced to be
sf.substreams.index.1.Keys
(we can still move this around if need be, but it's a core construct of the engine, it could also be renamed Labels as @sduchesneau put it.).blockFilter
, which containsmodule
(the reference to a blockIndex type of module) andquery
(a string that will be used to evaluate the blocks against the filter, see https://github.com/streamingfast/substreams/issues/409)blockFilters
, which allows an override for "params":(this will be done client-side)
[x] Add the necessary fields in the Protobuf definition of the sf.substreams.v1.Module:
new module kind in the
kind
enumnew field "block_filter", of a new type of message "BlockFilter", which contains the
module
andquery
strings.[x] Implement the transformation from substreams.yaml to that protobuf definition, including the replacement of
blockFilters
within modules.