# Sentio > Sentio is developer-first, AI-powered Web3 data infrastructure. Index on-chain data with TypeScript processors or hosted subgraphs, query it with SQL, build dashboards, alerts and API endpoints on it, and debug or simulate transactions, across EVM chains, Aptos, Sui, IOTA, Solana, Bitcoin, Fuel and more. Sentio is building a decentralized data and compute network. The hosted platform runs at https://app.sentio.xyz, and the documentation at https://www.sentio.xyz/docs publishes its own llms.txt. - To write a processor, query indexed data or call the REST API, start from the documentation links below; the product pages on this site are overviews. - Processors are written with the `@sentio/sdk` npm package and deployed with the `sentio` CLI. - Sentio Connect is an MCP server that gives AI assistants read access to a user's wallets, balances and DeFi positions. ## Docs - [Documentation index](https://www.sentio.xyz/docs/llms.txt): llms.txt listing every documentation page - [Full documentation](https://www.sentio.xyz/docs/llms-full.txt): The complete documentation as a single markdown file - [Getting Started](https://www.sentio.xyz/docs/quickstart): Create, build and deploy a first processor - [Sentio Processor](https://www.sentio.xyz/docs/processor-engine): How processors are configured, run and managed - [Hosted Subgraphs](https://www.sentio.xyz/docs/hosted-subgraphs): Run The Graph subgraphs on Sentio - [Supported Networks](https://www.sentio.xyz/docs/supported-network) - [Data Studio](https://www.sentio.xyz/docs/data-studio): Query metrics, event logs and entities with SQL and build dashboards - [Alerts](https://www.sentio.xyz/docs/alerts) - [Endpoint](https://www.sentio.xyz/docs/endpoint): Turn SQL or GraphQL into REST API endpoints - [Debugger](https://www.sentio.xyz/docs/debugger-overview) - [AI Skills](https://www.sentio.xyz/docs/ai-skills): Agent skills for building processors and using the platform - [Sentio Connect](https://www.sentio.xyz/docs/connect): Add wallets and DeFi positions to Claude, ChatGPT, Codex or any MCP client - [CLI Reference](https://www.sentio.xyz/docs/cli-reference) - [API Reference](https://www.sentio.xyz/docs/reference): The Sentio REST API ## Products - [Network](https://www.sentio.xyz/): The decentralized data and compute network - [Platform](https://www.sentio.xyz/platform/): Unified observability platform - [Indexer](https://www.sentio.xyz/indexer/): Up to 5x faster indexing, with one-click subgraph migration - [Analytics](https://www.sentio.xyz/analytics/): Historical and real-time analytics - [Alerts](https://www.sentio.xyz/alerts/): Alerts delivered to your preferred channels - [Debugger](https://www.sentio.xyz/debugger/): Inspect every detail of a transaction and debug it with single-stepping - [Simulator](https://www.sentio.xyz/simulator/): Preview transaction results, 3x-10x faster - [Code Intelligence](https://www.sentio.xyz/code/): Fast code search with all the context you need - [Collaboration](https://www.sentio.xyz/collaboration/): Built for teams - [Integration](https://www.sentio.xyz/integration/): Chrome extension, Hardhat plugin and more - [Connect](https://www.sentio.xyz/connect/): Bring wallets, positions and transactions into any MCP-compatible AI agent - [Point Tracking](https://www.sentio.xyz/solution/point/): Track points and rewards programs - [Chain Support](https://www.sentio.xyz/solution/chain/): Sentio for chain ecosystems ## Blog The full text of every post on https://www.sentio.xyz/blog/, newest first. --- # OBIB: An Open Blockchain Indexer Benchmark — Workloads, Methodology, and Initial Results Source: https://www.sentio.xyz/blog/obib-open-blockchain-indexer-benchmark/ Published: 2026-05-22 Description: A standardized, open benchmark for blockchain indexers — events, RPC-augmented events, blocks, transactions, traces, and factory templates — verified for completeness and run on a unified RPC endpoint. A growing number of platforms — Sentio, Envio HyperIndex, Ponder, Subsquid, The Graph, and others — offer indexing infrastructure for on-chain data, differing in execution model, API surface, supported data categories, and completeness guarantees. Yet there is no shared methodology for comparing them: existing benchmarks measure a single workload (commonly Uniswap swap events), run on different infrastructure, and rarely verify data completeness. This article introduces **OBIB (Open Blockchain Indexer Benchmark)**: standardized workloads spanning events, RPC-augmented events, blocks, transactions, traces, and factory templates, each verified against expected record counts and executed against a unified RPC endpoint. Methodology, configurations, and data are open on [GitHub](https://github.com/sentioxyz/open-blockchain-indexer-benchmark). We report initial results on six platforms below, and invite the community to extend OBIB to additional platforms, workloads, and chains. ## The Problem With Existing Benchmarks Envio's 2023 benchmark showed [9.67-minute sync times for Uniswap V3 events — 2x faster than Subsquid, 80x faster than Ponder, 100x faster than The Graph](https://docs.envio.dev/blog/indexer-benchmarking-results). Subsquid has their own numbers claiming [200x faster than The Graph](https://medium.com/subsquid/indexing-uniswap-v3-with-subsquid-vs-the-graph-first-impressions-68a5216d107b). Ponder claims 10x faster than Graph Node. Ormi Labs published rankings with Ormi at number one. Every vendor wins their own benchmark. The problems are always the same: - **One test case.** Usually event processing. Nobody tests blocks, transactions, or traces. - **No completeness checks.** Nobody asks "did you get all the data?" - **Mixed infrastructure.** Cloud vs local, different RPC providers, different hardware. Impossible to compare across studies. When Envio forked our earlier benchmark repo to add their results, they mixed HyperSync (a raw data extraction engine) times with full indexer times — comparing a data dump tool against platforms that parse, transform, store, and serve data through APIs. That comparison made it into their marketing materials. ## What We Tested Six cases on Ethereum mainnet. Each one isolates a different capability. | Case | Data Type | Block Range | Expected Records | What It Tests | | ------ | ------------- | ------------------------- | ---------------- | --------------------------------------------------- | | Case 1 | Events | 0 → 22,200,000 | 294,278 | LBTC transfers. No RPC calls. Write-only. | | Case 2 | Events + RPC | 22,400,000 → 22,500,000 | 7,634 | Events with RPC calls and read-after-write. | | Case 3 | Blocks | 0 → 100,000 | 100,001 | Raw block data. Metadata extraction. | | Case 4 | Transactions | 22,280,000 → 22,290,000 | 1,696,641 | Gas usage across ~1.7M transactions. | | Case 5 | Traces | 22,200,000 → 22,290,000 | 50,191 | Internal call traces. Hardest to get right. | | Case 6 | Templates | 19,000,000 → 19,010,000 | 35,039 | Uniswap V2 factory pattern. Dynamic contract registration. | Six platforms: - **Sentio** — cloud-hosted, native indexing with SQL and cross-chain support (SDK 3.1.0) - **Envio HyperIndex** — local, Docker-based indexing framework with GraphQL (v2.32.3) - **Ponder** — local, Node.js framework for blockchain data APIs (v0.16.1) - **Subsquid (SQD)** — local, batch-processing framework with decentralized data network (v1.27.3) - **Subgraph (The Graph Studio)** — cloud-hosted on Graph Studio infrastructure (graph-cli v0.97.0) - **Sentio Subgraph** — same Subgraph runtime, Sentio's infrastructure. Same code, different infra. Included to isolate the infrastructure variable. ### Methodology All local platforms used Sentio's RPC service. This is the biggest methodological improvement over previous benchmarks — everyone gets the same RPC. Local tests ran on a MacBook Air M3 (24 GB RAM). Cloud platforms (Sentio, Subgraph, Sentio Subgraph) ran on their own infrastructure. This means cloud platforms pay network latency that local platforms don't. We kept it this way because that's how people actually use these tools — nobody self-hosts The Graph Studio, nobody deploys Ponder to a cloud. 72-hour timeout per test. Sentio ran 5 iterations per case with anomaly exclusion. Other platforms ran single iterations. ## Event Indexing (Cases 1 and 2) Case 1 is the test every benchmark runs. Case 2 is the test that actually matters — events plus RPC calls plus read-after-write, which is what production indexers do. ### Case 1: Events Only | Platform | Time (min) | Records | | ---------------- | ---------- | --------- | | Envio HyperIndex | 6.94 | 294,278 | | Sentio | 11.02 | 294,278 | | Sentio Subgraph | 14.90 | 294,278 | | Ponder | 34.80 | 294,278 | | Subsquid | 40.94 | 294,278 | | Subgraph | 188.79 | 294,278 | Envio wins. All platforms returned correct data. Not much to say here — this is table stakes. ### Case 2: Events + RPC Calls | Platform | Time (min) | Records | | ---------------- | ---------- | ------- | | Sentio | 7.78 | 7,634 | | Envio HyperIndex | 8.54 | 7,634 | | Sentio Subgraph | 29.23 | 7,634 | | Subsquid | 46.85 | 7,634 | | Ponder | 64.86 | 7,634 | | Subgraph | 66.41 | 7,634 | Add RPC calls and the rankings change. Sentio edges ahead at 7.78 minutes, Envio close behind at 8.54. Everyone else is 29 minutes or more. This is the more useful test. In production you're almost always fetching balances, computing derived values, or reading contract state while processing events. Pure event throughput is a different skill than handling that full workload. All platforms returned correct data for both cases. ## Beyond Events (Cases 3, 4, and 5) Most indexers were built for events. Here's what happens when you need something else. ### Case 3: Blocks | Platform | Time (min) | Records | Completeness | | ---------------- | ---------- | ------- | -------------- | | Subsquid | 0.17 | 100,001 | 100% | | Sentio | 2.51 | 100,001 | 100% | | Sentio Subgraph | 2.67 | 100,001 | 100% | | Ponder | 9.63 | 100,001 | 100% | | Subgraph | 50.58 | 100,001 | 100% | | Envio HyperIndex | N/A | — | Not supported | Subsquid: 10 seconds, complete data. Clearly the fastest here. Everyone who supports blocks got 100%. One thing we learned the hard way: Subsquid's `.addTransaction()` method silently skips blocks with no transactions. Early Ethereum (blocks 0–46,000) is mostly empty blocks, so using the wrong API call drops ~87% of the range without any warning. The correct method is `.includeAllBlocks()`. We burned time debugging this before figuring it out — worth knowing if you're writing a Subsquid block indexer. Envio HyperIndex can't do blocks natively. HyperSync can (see below), but you'd be building the pipeline yourself. ### Case 4: Transactions | Platform | Time (min) | Records | Completeness | | ---------------- | ---------- | --------- | --------------------- | | Subsquid | 1.25 | 1,696,641 | 100% | | Sentio | 22.12 | 1,696,641 | 100% | | Ponder | Timeout | — | 2.5% after 2 hours | | Envio HyperIndex | N/A | — | Not supported | | Subgraph | N/A | — | Not supported | | Sentio Subgraph | N/A | — | Not supported | Two platforms finished. Subsquid handled 1.7 million transactions in 1.25 minutes — genuinely impressive for a local setup. Sentio took 22 minutes from the cloud. Ponder made it to 2.5% in two hours and we stopped it. Three platforms can't process transactions at all. ### Case 5: Traces This is where it gets interesting. | Platform | Time (min) | Records | Completeness | | ---------------- | ---------- | ------- | ------------- | | Sentio Subgraph | 2.17 | 45,895 | 91% | | Sentio | 2.54 | 50,191 | 100% | | Subsquid | 7.42 | 50,191 | 100% | | Subgraph | 17.81 | 29,058 | 58% | | Ponder | 74.71 | 44,400 | 88% | | Envio HyperIndex | N/A | — | Not supported | Expected: 50,191 traces. Sentio and Subsquid got all of them. Sentio Subgraph got 91%. Ponder got 88%. Subgraph got 58%. That Subgraph number deserves an explanation. Subgraph uses `callHandlers`, which only see direct calls to a contract. When a user wallet calls the Uniswap V2 Router, Subgraph sees it. When an aggregator or MEV bot calls the router through an intermediary contract — an internal transaction — Subgraph doesn't. About 40% of V2 swaps happen that way. This also breaks sender identification: Subgraph found ~427 unique senders where trace-based indexers found ~1,200, because `call.from` returns the calling contract, not the original wallet. This isn't a config issue — it's how the Subgraph runtime works. ### A note on Envio HyperSync Envio offers HyperSync, a raw data extraction engine. No schema management, no database, no GraphQL — just raw blockchain data. It's fast: | Case | HyperSync Time | Records | | --------------------- | -------------- | --------- | | Case 3 (blocks) | 3.19 s | 100,001 | | Case 4 (transactions) | 128.64 s | 1,696,423 | | Case 5 (traces) | 33.84 s | 50,191 | But comparing these to indexer times is apples to oranges. HyperSync gives you raw data. You still need to decode it, transform it, store it, and serve it. That's the part that takes time. ## Templates and the Counting Problem (Case 6) Uniswap V2, SushiSwap, most AMMs — they all use factory contracts that deploy pair contracts dynamically. Indexers need to detect new contracts on the fly and start tracking them. | Platform | Time (min) | Records | vs Expected: 35,039 | | ---------------- | ---------- | ------- | ------------------- | | Envio HyperIndex | 1.92 | 35,039 | ✓ | | Sentio Subgraph | 4.26 | 75,951 | 2.2x | | Subsquid | 5.34 | 33,972 | 97% | | Ponder | 6.44 | 182,767 | 5.2x | | Sentio | 14.36 | 75,951 | 2.2x | | Subgraph | 16.83 | 35,039 | ✓ | Envio is fastest. But the record counts are all over the place. Expected: 35,039. Envio and Subgraph match. Subsquid is close at 33,972. Then Sentio reports 75,951 and Ponder reports 182,767. Same contracts, same block range, wildly different counts. This isn't a bug in any platform. There's simply no standard for what "count the template events" means. Some platforms count only events from dynamically created contracts. Others include factory events. Others count differently when one transaction fires events across multiple related contracts. Until the industry agrees on a methodology, these numbers aren't directly comparable. One operational note: Subsquid's template support requires you to manually update config at fixed block numbers when new contracts are created. Fine for a handful of contracts. Not practical if your factory creates thousands. ## Feature Support The feature matrix matters more than any speed number. If a platform can't do what you need, it doesn't matter how fast it is. | Feature | Sentio | Envio | Ponder | Subsquid | Subgraph | | -------------------- | ------ | ------- | ------ | -------- | -------- | | Event Handler | Yes | Yes | Yes | Yes | Yes | | Block Handler | Yes | Limited | Yes | Yes | Yes | | Transaction Handler | Yes | Limited | Yes | Yes | No | | Trace Handler | Yes | Limited | No | Limited | Limited | | Native RPC Calls | Yes | Limited | No | No | No | | SQL Querying | Yes | Yes | Yes | Yes | No | | GraphQL API | Yes | Yes | Yes | No | Yes | | Factory Templates | Yes | Yes | Yes | Limited | Yes | | Batch RPC (Multicall)| Yes | Yes | Yes | Yes | No | "Limited" means: - **Envio:** Blocks/transactions/traces require HyperSync + manual decoding + client-side reorg handling. Not native to HyperIndex. - **Subsquid:** Traces come as raw bytes. You decode them yourself. - **Subsquid:** Templates need manual config updates at fixed blocks. - **Subgraph:** Traces only capture direct contract calls. Internal transactions are invisible (~58% capture rate, broken sender identification). ### Chain Support | Chain | Sentio | Envio | Ponder | Subsquid | Subgraph | | -------- | ------- | ----- | ------ | -------- | -------- | | EVM | Yes | Yes | Yes | Yes | Yes | | Sui | Yes | — | — | — | — | | Aptos | Yes | — | — | — | — | | Fuel | Yes | Yes | — | Yes | — | | Solana | Limited | — | — | Yes | Limited | | Bitcoin | Limited | — | — | — | Yes | Sentio has the widest coverage. Subsquid and Subgraph each cover a few non-EVM chains. Envio and Ponder are EVM-only. ## What Should You Use? Depends on what you're building. - **Event indexing, speed matters most:** Envio. Fastest in Case 1 by a clear margin. Requires Docker locally. - **Events with RPC calls and complex logic:** Sentio and Envio are within a minute of each other in Case 2. Pick based on other factors — chain support, infrastructure preference, whether you want managed or self-hosted. - **Blocks, transactions, or traces:** Sentio is the only platform that handles all three natively with complete data. Subsquid is strong on blocks and transactions but traces require manual decoding. Subgraph has a 58% capture rate on traces — if your app needs trace data, that's a dealbreaker. - **Multi-chain:** Sentio. Nobody else covers EVM + Sui + Aptos + Fuel. - **Biggest ecosystem:** The Graph. Thousands of existing subgraphs, mature tooling, large developer community. The Subgraph standard is the closest thing this space has to an industry standard. Slower sync, but the ecosystem has real value. - **Self-hosted with minimal setup:** Ponder. Plain Node.js, no Docker. The team joined Monad in February 2026, so the project's future direction may tilt toward Monad-specific work. - **Already on Subgraph, want it faster:** Sentio Subgraph. Same runtime, different infrastructure. Case 1 went from 188 minutes to 14 minutes. No code changes. ## The Point We need better benchmarks. Not just faster-than-thou blog posts with one test case and a bar chart. We're publishing everything — methodology, data, source code — so anyone can verify or challenge these results. The [code and data is on GitHub](https://github.com/sentioxyz/open-blockchain-indexer-benchmark). If we got a configuration wrong, open a PR. If you can make one of these platforms perform better, show us. That's how this should work. --- *Benchmark data collected January 2026. Source code and data at [github.com/sentioxyz/open-blockchain-indexer-benchmark](https://github.com/sentioxyz/open-blockchain-indexer-benchmark).* --- # From Transaction to Dashboard: A Developer’s Guide to Monitoring IOTA Source: https://www.sentio.xyz/blog/from-transaction-to-dashboard-a-developers-guide-to-monitoring-iota/ Published: 2025-09-03 If you're here, you've probably already decided to build on IOTA. You were drawn in by its powerful Move VM, its focus on real-world assets, and its incredible performance. But now your smart contracts are deployed, and you're facing the big question: **what's actually happening inside them?** When you're dealing with everything from complex DeFi protocols to enterprise-grade logistics, just "shipping it" isn't enough. You need to see everything—performance bottlenecks, user activity, and especially that one weird transaction that failed for no apparent reason. This guide is your practical walkthrough for getting that deep visibility. We'll show you how to use Sentio, a monitoring platform designed specifically for Move-based chains like IOTA, to go from flying blind to having a complete mission control for your DApp. ## **What Makes IOTA Special? A Quick Refresher** Before we dive into the "how," let's quickly recap the "why." IOTA isn't just another Layer 1; its new architecture combines several key innovations that make it unique. - **Move VM at the Core**: IOTA utilizes the Move VM for exceptionally secure and efficient Layer 1 smart contracts. Its design treats digital assets like physical objects, inherently preventing common token vulnerabilities. - **Lightning-Fast Consensus**: The network’s delegated Proof-of-Stake (dPoS) system achieves finality in under a second and handles over 50,000 transactions per second. With up to 150 validator slots, it’s built for genuine decentralization. - **Smart Tokenomics**: IOTA has a balanced economic model designed for sustainability. It mints new tokens to reward participants and burns transaction fees to counteract inflation. - **The Best of Both Worlds (Dual-Layer):** A dual-layer system gives developers ultimate flexibility. They can use high-performance Move on Layer 1 or familiar EVM-compatible chains on Layer 2 without compromise. - **A Focus on the Real World**: IOTA is dedicated to enterprise adoption with tangible projects like the Trade Worldwide Information Network (TWIN). It partners with major organizations to tokenize real-world assets like global trade. Whether you're building for DeFi or digitizing trade finance, IOTA provides the foundation. Now, let's make sure you have the tools to monitor everything you build on it. ## **1. First, Let's Get the Data: Indexing IOTA's Move Architecture** Before you can analyze anything, you need a clean, reliable stream of data. IOTA's Move-based contracts generate a ton of it—object changes, events, resource transfers—and you need a way to capture it all without the headache of running your own infrastructure. Sentio’s indexing engine is purpose-built for Move. It understands objects, resources, and events right out of the box. Let's see this in action with a real-world example: building a dashboard to monitor IOTA's validators. We want to track every time someone stakes, and we also want to get performance reports for each validator at the end of an epoch. It only takes a few lines to start listening to the core validator contracts: ```typescript import { validator, validator_set } from '@sentio/sdk/iota/builtin/0x3' import { IotaNetwork } from '@sentio/sdk/iota' // First, let's watch for anyone staking with a validator validator.bind({ network: IotaNetwork.MAIN_NET, startCheckpoint: 1000000n }).onEventStakingRequestEvent( async (evt, ctx) => { // We get fully-typed data right from the event const { validator_address, staker_address, amount } = evt.data_decoded; const scaledAmount = amount.scaleDown(9); // IOTA uses 9 decimals // Log the raw event for later analysis ctx.eventLogger.emit('stake_action', { action: 'stake', amount: scaledAmount, validator: validator_address, delegator: staker_address, }); // And update some real-time metrics for our dashboard ctx.meter.Counter('total_stakes').add(1, { validator: validator_address }); ctx.meter.Counter('staking_volume').add(scaledAmount, { validator: validator_address }); }, { allEvents: true } // Process events from all validator objects ); // Next, let's grab the performance report for each validator every epoch validator_set.bind({ network: IotaNetwork.MAIN_NET }).onEventValidatorEpochInfoEventV1( async (evt, ctx) => { const { validator_address, stake, voting_power, performance_score } = evt.data_decoded; // We'll use Gauge metrics here since these values can go up or down ctx.meter.Gauge('validator_stake').record(stake.scaleDown(9), { validator: validator_address }); ctx.meter.Gauge('validator_voting_power').record(voting_power, { validator: validator_address }); ctx.meter.Gauge('validator_performance_score').record(performance_score, { validator: validator_address }); }, { allEvents: true } ); ``` Just like that, we're pulling in crucial network health data. You can find the [Just like that, we're pulling in crucial network health data. You can find the **full source code on GitHub**. The same pattern works for any DApp you build—DeFi, gaming, enterprise, you name it.](https://github.com/sentioxyz/sentio-processors/tree/main/iota/validator) ## **2. A Saner Way to Code: The Type-Safe SDK** Working with raw blockchain data can feel like a guessing game. Is that amount field a u64 or a u128? Did I spell that event name correctly? Sentio’s SDK is designed to eliminate that guesswork. When you point it at your Move module's ABI, it automatically generates TypeScript interfaces for all your events, functions, and resources. This means you get full autocompletion in your IDE and the compiler will catch your typos, not your users. ```typescript // Imagine this is from your own custom DEX module on IOTA import { dex } from './types/iota/0xYourPackage.dex' dex.bind({ network: IotaNetwork.MAIN_NET, startCheckpoint: 1000000n }).onEventSwapEvent(async (evt, ctx) => { // No more guesswork! The `evt.data_decoded` object is fully typed. const { amount_in, amount_out, user } = evt.data_decoded; // Your IDE knows the type of amount_in, amount_out, and user. }); ``` And depending on what you need to track, Sentio gives you a few different tools for the job: - **IotaObjectProcessor**: Need to watch one *specific* object? Use this. - **IotaObjectTypeProcessor**: Want to track *every* object of a certain type, like all NFT listings across the entire network? This is your go-to. - **IotaAddressProcessor**: Want to see all the transactions and objects associated with a specific address? Here you go. ## **3. What Can You Do With the Data? Turning It Into Insights** Collecting data is one thing; making it useful is another. Sentio gives you several ways to shape your indexed data into actionable insights. - **Metrics:** These are your numbers, the vital signs of your DApp. They're perfect for tracking things like transaction volume, daily active users, or the TVL in your protocol. Metrics power dashboards and alerts, giving you a high-level view at a glance. ```typescript // Examples of different metrics you could track ctx.meter.Counter('user_transactions').add(1, { user_type: 'enterprise' }); ctx.meter.Gauge('active_objects').record(object_count); ``` - **Event Logs:** This is the detailed story of your DApp. Think of it as a perfectly structured, human-readable log of everything that happens. It's invaluable for debugging or analyzing specific user journeys. ```typescript // Log rich data for every validator epoch report ctx.eventLogger.emit('validator_epoch_info', { validator: validator_address, stake, voting_power, performance_score }); ``` - **Entities:** This lets you store and query the relationships between things in your DApp. By using entity store, you now have the capability to organize your data based on a predefined schema. This structured data can be accessed during the processor's execution and can also be retrieved using our SQL and GraphQL APIs. ## **4. Your Mission Control: The Data Studio** You've done the hard work of collecting and processing your data. Now for the fun part: seeing it come to life. You shouldn't need a data science degree or a front-end team to build a powerful dashboard. With Sentio's Data Studio, any metric you created in your code instantly becomes available to visualize. Better yet, you can write SQL to query your Event Logs and build incredibly detailed analytics. Let's take our validator data from Step 1 and ask some real questions: **"Which validators are earning the most?"** ```sql -- Top performing validators by rewards SELECT validator, SUM(pool_staking_reward) as total_rewards FROM validator_epoch_info WHERE timestamp >= NOW() - INTERVAL '30 days' GROUP BY validator ORDER BY total_rewards DESC LIMIT 20; ``` **"Validatos’ staking activities"** ```sql SELECT DATE_TRUNC('hour', timestamp) AS hour_timestamp, SUM(CASE WHEN action = 'stake' THEN amount ELSE 0 END) as staked, SUM(CASE WHEN action = 'unstake' THEN ABS(amount) ELSE 0 END) as unstaked FROM `stake_action` WHERE validator = $validator AND timestamp >= CURRENT_TIMESTAMP() - INTERVAL '7' DAY GROUP BY hour_timestamp ORDER BY hour_timestamp ``` You can build dashboards to answer almost any question, from user retention in your DeFi app to asset flows in a logistics platform. And, you can set up alerts to ping you on Slack or Telegram if something looks off, like a validator's performance suddenly dropping. ![image](https://www.sentio.xyz/blog/from-transaction-to-dashboard-a-developers-guide-to-monitoring-iota/1963095790563557379.jpg) You can explore the project on the[ live validator dashboard](https://app.sentio.xyz/iota/iota-validator/dashboards//b4GEIwp5). **Beyond Your Custom Data: Ready-to-Use IOTA Datasets** But here's where it gets even better: you don't have to build everything from scratch. Sentio provides a comprehensive set of IOTA datasets right out of the box through the **Schema Panel**: - **balance_changes**: Track how token balances shift across addresses - **events**: Access all emitted events from smart contracts - **move_calls**: See every function call made to Move modules - **object_changes**: Monitor state changes to IOTA objects - **transactions**: Complete transaction data with full context These aren't just raw blockchain dumps—they're clean, structured datasets that Sentio maintains and continuously updates. Think of them as your analytics foundation, ready to query without any preprocessing headaches. ## **5. Why Did My Transaction Fail? Debugging Move with a Tracer** We’ve all been there. A transaction mysteriously fails, and you're left staring at a transaction hash, wondering what went wrong. Sentio's Transaction Tracer is like a super-powered debugger for your DApp. It gives you a complete, step-by-step replay of the entire transaction, showing you: - **The Full Call Stack:** Trace the flow of logic through every function call, even across different modules. - **Gas Usage Analysis**: The debugger shows resource consumption patterns and state changes, helping you identify performance bottlenecks. This turns debugging from a frustrating guessing game into a precise, analytical process. ![image](https://www.sentio.xyz/blog/from-transaction-to-dashboard-a-developers-guide-to-monitoring-iota/1963095898290061313.jpg) ![image](https://www.sentio.xyz/blog/from-transaction-to-dashboard-a-developers-guide-to-monitoring-iota/1963095961800167424.jpg) ## **6. Dedicated RPC Nodes** Sentio provides high-performance RPC endpoints for both IOTA mainnet and testnet, giving you fast, reliable access to query object states, read historical data, and subscribe to real-time object changes—all without the hassle of building and maintaining your own nodes. **What You Get from Sentio RPC** - **Complete Historical Data**: Every transaction, every state change, from day one. Whether you're debugging something that happened last week or analyzing trends over months, it's all there. - **Real-Time Monitoring**: Built-in dashboards show you exactly what's happening. Request latency, throughput, error rates—you'll spot issues before your users do. - **Always Available**: Distributed infrastructure means your calls get through, even when things get busy. No more wondering if your RPC provider is the bottleneck. **Two Options to Fit Your Needs** Sentio offers two types of RPC nodes: - **Public Nodes**: Free access with rate limits—perfect for development and testing. - Mainnet: [https://rpc.sentio.xyz/iota](https://rpc.sentio.xyz/iota) - Testnet: [https://rpc.sentio.xyz/iota-testnet](https://rpc.sentio.xyz/iota-testnet) - **Archive Nodes**: Pay-as-you-go pricing with full historical access and no rate limits—ideal for production applications that need complete blockchain data.