Cosmos SDK Data Schema
Currently, Numia indexes transactional data and all the events generated from each transaction. We don't index states, but we are working to start streaming state changes over time soon. Alternatively, you can reconstruct specific states by adding up transactions as their events represent the deltas in state changes.
In order to understand the data in Numia's dataset you need to understand a few concepts of the Cosmos SDK:
Cosmos Chains user CometBFT (formerly Tendermit BFT) as an algorithm used by the network of computers running the Cosmos software to secure the network, validate transactions and commit blocks to the blockchain. A block is the wraps transactions and is the highest-level object in the data structure we managed at Numia.
When users want to interact with an application and make state changes (e.g. sending coins), they create transactions. Each transaction must be signed using the private key associated with the appropriate account(s) before the transaction is broadcasted to the network. A transaction must then be included in a block, validated, and approved by the network through the consensus process.
Msgs are objects whose end goal is to trigger state transitions. They are wrapped in transactions, which may contain one or more of them. Messages are basically the actions that a transaction is indicated to perform.
An Event contains:
typeto categorize the Event at a high-level; for example, the Cosmos SDK uses the
"message"type to filter Events by
- A list of
attributesare key-value pairs that give more information about the categorized Event. For example, for the
"message"type, we can filter Events by key-value pairs using
Evmos and almost all other Cosmos chain follow the same underlying data model.
Every chain has the same base 4 raw tables. Based on these tables we expand to build additional views for each chain. Here is an overview of the raw data you can access and an explanation of how it matched the standard Cosmos SDK data schema.
In general, we recommend running a simple query for each table and comparing Numia´s data with an explorer like Mintscan to understand the data model: