# Mandragora's completed, in progress, and future work - Namada Community Bonfire (extended version)
Hi everyone! Firstly, I will be briefly introducing our team and our contributions in general. After that, I will explain what we have been and are working on for almost 8–9 months already, especially in regard to Undexer and Shielded Live explorer.
We, Mandragora's team, based in Barcelona, Spain, have been actively involved in Namada since February/March 2023 (a year and a half already - what a journey!). Since then, we really hard worked and actively contributed, and we keep contributing nowadays, in things as varied as continuous participation on early and current testnets, technical, validator and general support, technical assistance to the team, feedback via public channels, DMs, issues or PRs, guides, technical edition via third-party companies collaborating with Namada, English to Spanish translations/proofreading, Spanish-speaker regional community management, continuous development of key tools and explorers such as Undexer and Shielded Live, etc.
That being said, I will now give further details about two of our main and key contributions to Namada, which we currently keep improving and maintaining - Undexer and Shielded Live explorer. In regard to Undexer, I will provide a brief definition of it and then expand to project's goals, design, overview, key features, and CLI. Finally, in Shielded Live explorer's case, I will highlight current features and future ones in the pipeline.
## Undexer (Namada network indexer)
The Undexer is a caching and reporting layer which sits in front of the nodes of the Namada network. Its purpose is to respond to queries faster than the node can do, and to support queries that for reasons of efficiency the node cannot or will not support itself.
## Goals
- **Versioned API**: Implement a versioning strategy for the API to ensure backward compatibility and allow for future updates without breaking existing integrations. This helps to manage changes and provide a stable interface for clients.
- **Rapid Sync Speed**: Optimize the sync process to achieve faster data synchronization. This can involve improving algorithms, utilizing parallel processing, optimizing database queries, or implementing efficient caching mechanisms. By reducing sync times, you can provide real-time or near real-time data updates to users.
- **Lean, Fast, and Easy Development and Deployment**: Focus on improving the Undexer’s performance, reducing resource consumption, and enhancing its development and deployment process. Employ efficient coding practices, utilize lightweight frameworks, and automate deployment pipelines to streamline development and ensure faster, hassle-free deployments.
- **Reliable Paginated Retrieval**: Enhance the API endpoints to support reliable paginated retrieval of information. Implement mechanisms such as cursor-based pagination or offset-based pagination to allow clients to retrieve data in manageable chunks, improving performance and preventing overwhelming large result sets.
- **Complex Search Queries**: Enable the ability to perform complex search queries across multiple endpoints. Implement advanced search capabilities, such as filtering, sorting, and aggregations, to empower users to retrieve specific and relevant information from the Undexer. This can be achieved by integrating powerful search engines or implementing custom search functionalities.
Implementation keeping these goals in mind should result in an Undexer usable as a data source for the frontend, as well as a generic service component in any other setup working with Namada network.
## Design
The design decision with the greatest impact was adding support for Namada to [Fadroma](https://fadroma.tech/), our FOSS cross-chain toolkit. Decoding of binary data in [the @fadroma/namada package](https://www.npmjs.com/package/@fadroma/namada) is achieved using [a custom Rust/WASM module](https://github.com/hackbg/fadroma/tree/v2/packages/namada/src), and supplemented by [@hackbg/borshest](https://github.com/hackbg/toolbox/tree/main/borshest), our enhanced Borsh decoding library.
The extension of this decision is running a custom WASM precompile with the Undexer logic when targeting complex data retrieval via RPC queries (non-existent on the base Tendermint ABCI endpoints or the official SDKs e.g. namada-shared, light-sdk).
The benefits of these decisions were:
- Richer data availability
- Easier integration between backends and frontents
- Much simpler and cheaper flow of data
- Significant speedup in syncing
- Greater stability
- Easier deployment and upgrading
## Project Overview
- **Namada Undexer REST API**
Provides access to Namada blockchain data.
- **Blockchain Status Retrieval**
Retrieve real-time information about the blockchain’s current status and health.
- **Search Capabilities**
Search blockchain data via string queries, covering blocks, transactions, addresses, and proposals.
## Key Features
- **Block Information**
Retrieve blocks with optional pagination and filters. Limit the number of blocks or retrieve blocks before/after specific block IDs. Get block details by height or hash, including transaction count and proposer data.
- **Transaction Data**
Retrieve a paginated list of transactions or query specific transactions by hash. Optional limit and offset for pagination. Each transaction contains data on public keys, gas limits, fees, and more.
- **Validator Information**
Get paginated validator lists or retrieve details of specific validators by public key. Filter validators by states such as consensus, below capacity, below threshold, jailed, and inactive. Includes validator uptime, stake, metadata, and more.
- **Governance Proposals**
Get lists of governance proposals, including their status, results, and types. Filter by proposal type (e.g., payment, steward) and order by status or result. Retrieve specific proposal details or votes by proposal ID.
- **Transfers**
Query transfer transactions filtered by sender, receiver, or both. Includes sender and receiver details for tracking purposes.
- **Parameters**
Retrieve all protocol parameters set by the network.
- **Epoch and Staked Information**
Get the current epoch information and total staked amount across the network.
- **Addresses & Balances**
Get the current address balances and transactions history.
## CLI
The Undexer project also provides a Command-Line Interface (CLI) for developers and operators to interact directly with the Namada blockchain. This CLI allows users to query blockchain data, such as blocks, transactions, validators, and governance proposals, from their terminal. By offering a streamlined, text-based interface, it complements the REST API by enabling automation, custom data fetching, and more flexible blockchain exploration, making it easier for developers to build applications or manage blockchain data without relying on a graphical interface.

# Shielded Live Explorer
## Main features
- View real-time data on blockchain status, transactions, and block details.
- Search blocks, transactions, epochs, and accounts for quick data retrieval.
- Track validator status and performance.
- Access governance proposals and voting details.
## Planned features
- MASP metrics section page.
- All transactions types history in the account view.
- Delegations/unbondings/redelegations made/ongoing in the acccount view.
- Power events and delegators list in the validator view.
- Uptime tracker section page adding missed blocks/blocks to downtime jailing metric.
- And more minor improvements.