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:

1. Blocks

Cosmos chains use CometBFT (formerly Tendermit BFT), an algorithm used by the network of computers running the Cosmos software to secure the network, validate transactions and commit blocks to the blockchain. These blocks are data structures that wrap a set of transactions and they are the highest-level object in the data we manage at Numia.

2. Transactions

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.

3. Messages

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.

4. Events and Attribute

An Event contains:

  • A type to categorize the Event at a high-level; for example, the Cosmos SDK uses the "message" type to filter Events by Msgs.

  • A list of attributes are 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 message.action={some_action}, message.module={some_module} or message.sender={some_sender}.

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:

Last updated