The Cosmos Foundational modules are Substreams modules extracting common data from different Cosmos blockchains (e.g. Injective or Mantra).
This module is a general Cosmos foundational module, so it can be run within any Cosmos blockchain. For example, to run it against the Injective endpoint:
substreams gui cosmos-common-v0.0.1.spkg all_events -e mainnet.injective.streamingfast.io:443
However, StreamingFast recommends using the blockchain-specific foundational modules specified (for example, injective-common
for Injective or mantra-common
for Mantra), instead of this generic Cosmos package.
Usually, foundational modules are directly imported and used in other Substreams. All the official foundational modules are stored in substreams.dev.
specVersion: v0.1.0
package:
name: my_project
version: v0.1.0
imports:
cosmos: https://spkg.io/streamingfast/cosmos-common-v0.0.1.spkg # Import the package from substreams.dev
modules:
- name: my_events # Define your Substreams module
use: cosmos:filtered_events # Use the imported package
initialBlock: 70000000
params:
my_events: "(type:message && attr:action) || (type:wasm && attr:_contract_address)" # Pass the filter as parameter to the module
For a full example of importing the SPKG, take a look at the derived-substreams.yaml
file, which defines a Substreams that imports the Cosmos foundational module.
Retrieves all the events in the Cosmos blockchain without any filtering.
The module create an index (a cache) to efficiently retrieve events by their type and/or attribute keys.
The module sets the keys corresponding to all event 'types' and 'attribute keys' in the block For example: type:coin_received
, attr:action
, attr:sender
...
The attribute values are never indexed because they have a high cardinality and would be too expensive to index.
The module reads from all_events
and applies a filter on the event types and attribute keys, only outputing the events that match the filter.
The filter is specificed in the parameters of the module.
...
params:
filtered_events: "(type:rewards && attr:validator)"
The module reads from all_events
and applies a filter on the event types and attribute keys, outputing all the events from transactions that have at least one event matching the filter.
params:
filtered_event_groups: "type:rewards && attr:validator"
The module reads from all_events
and applies a filter on the event types, attribute keys and values, only outputing the events that match the filter.
NOTE: This module does not use the index created by index_events
.
params:
filtered_events_by_attribute_value: "type:rewards && attr:validator:any_validator"
The module reads from all_events
and applies a filter on the event types, attribute keys and values, outputing all the events from transactions that have at least one event matching the filter.
NOTE: This module does not use the index created by index_events
.
params:
filtered_event_groups_by_attribute_value: "type:rewards && attr:validator:any_validator"
all_events
reads from the sf.cosmos.type.v2.Block
source and outputs a list of all events in the block.
Some events are at the block level, others appear inside the transactions.
substreams gui cosmos-common@v0.1.1 all_events
substreams gui cosmos-common@v0.1.1 filtered_events
substreams gui cosmos-common@v0.1.1 filtered_event_groups
substreams gui cosmos-common@v0.1.1 filtered_events_by_attribute_value
substreams gui cosmos-common@v0.1.1 filtered_event_groups_by_attribute_value
substreams gui cosmos-common@v0.1.1 index_events