When is using case about 'Hooks'?

I want to make Indexer on Cosmos-SDK.

What is the most efficient and reliable approach to retrieving validator-level staking information and delegation states?

I’m currently considering several options:

  • CometBFT RPC/ gRPC / REST API queries

  • Hook-based ETL using event or log streams

  • Instrumenting additional logging at the core level

I’d like to experiment with all three approaches and compare their trade-offs in practice, but I’m not sure what the right contribution workflow is.

Should I create a separate branch for this kind of exploratory work, or is there a recommended way to prototype and share findings before proposing a concrete change?

I’m still new to this codebase and ecosystem, so any guidance would be greatly appreciated.

  • I want to Study about NodeOps like Polkachu. But I don’t know about easy to talking about Study..I found about NodeOps channel. Plz recommend.

hey, not 100% clear on the goal - do you want to index validator/staking data for an explorer, analytics tool, or something else? either way, no need to touch the gaiad or cosmos-sdk codebase - everything you need is already available off-chain via existing endpoints and event streams.

usually the best approach for indexers is to use cometbft websocket subscriptions to stream blocks and tx events in real-time. the staking module emits detailed events for all delegation changes, which you can use to update data in your indexer db.

trade-offs on your options:

  • cometbft rpc/grpc/rest queries: best to use for current-state queries, reliable and simple, but it’s polling, so rate limits are likely
  • hook-based etl via event/log streams (aka websocket subscribe): most efficient and reliable for indexing - real-time updates with low overhead, no polling. just need to make sure to add proper error handling to not miss blocks if connection drops
  • instrumenting additional logging at core level: i wouldn’t recommend that, the chain already emits everything you might need via events

you can study existing indexers and just use them or get some inspiration from their implementation: Bryanlabs indexer, Citizen Web3 indexer.


for node ops - you can ask questions here or join interchain discord, get “Dev” and “Nodes” roles to get access to relevant channels (#dev-support-ai and #node-operators), where you can ask questions if anything is not clear. there are also tutorials such as this.

1 Like