Skip to main content

Midnight Indexer

The Midnight Indexer is a set of components designed to optimize the flow of blockchain data from a Midnight node to end-user applications. It retrieves history of blocks, processes them, stores indexed data efficiently, and provides a GraphQL API for queries and subscriptions.


24 March 2024

Midnight Indexer 1.0.0 Release Notes

Stable Release

Version: 1.0.0 Audience: Node operators, developers integrating with the Midnight ecosystem Environment: Production-ready

This release (1.0.0) is considered stable and production-ready. It can safely be deployed in public and production environments.

Key Changes & Highlights

Midnight Indexer 1.0.0 is the first production release of the new Rust-based Indexer, replacing the legacy Scala implementation. It significantly improves performance, modularity, and deployment flexibility across environments.

note

This release requires wallet-sdk v4.0.0+ (compatible with Lace Wallet v2.0.0 or higher).

  • Rust-Based Rewrite: A full rewrite in Rust for enhanced performance, reliability, and maintainability.
  • Optimized Blockchain Data Processing: Indexes Midnight blockchain data directly from node endpoints.
  • Wallet-Aware Indexing: Links transactions with wallet addresses for personalized query results.
  • GraphQL API Support: Offers queries, mutations, and real-time subscriptions.
  • Flexible Deployment: Supports local single-binary deployments and distributed microservices for cloud environments.
  • Multiple Storage Backends: Supports PostgreSQL (cloud) and SQLite (local/test).
  • Real-Time Event Subscriptions: Enables listening for new blocks, contract events, and wallet-specific activity.

Changelog

Added

  • Rust-based implementation of Midnight indexer
  • GraphQL interface with query, mutation, and subscription support
  • Event-driven real-time subscription system
  • Wallet-aware transaction indexing
  • SQLite support for local dev/test
  • PostgreSQL support for production/cloud deployments

Changed

  • Architecture moved from Scala monolith to modular Rust services

Deprecated

  • Scala-based indexer (deprecated but still operational during transition)

Breaking Changes

Migration from Scala-based to Rust-based indexer

Impact: API endpoints are similar, but internal implementation and performance characteristics differ Action Required:

  • Test integrations against the new Rust-based indexer at: https://indexer-rs.testnet-02.midnight.network/api/v1/graphql
  • Begin migration from the old endpoint (indexer.testnet-02...)
  • Monitor for upcoming deprecation of Scala indexer in future release

Known Issues

  • macOS Compatibility: Limited testing on macOS. Users may experience issues with native SQLite integration.
  • Windows Support: Functional but not officially supported. Linux is the recommended environment.

Compatibility

  • Operating Systems: Fully supported on Linux. Limited support for macOS and Windows.
  • Third-Party Tools: Compatible with monitoring and analytics platforms; may require minor configuration updates.
  • Midnight Ecosystem: Fully compatible with Midnight node APIs and associated infrastructure.

Additional Resources

  • Documentation: Midnight Indexer Docs (add link)
  • Community Support: Join the discussion on Discord or via Midnight Forums

Upgrade/Migration Guide

Prerequisites

  • PostgreSQL installed and configured (for production)
  • Network access to a Midnight node

Installation & Migration:

  • Deploy new indexer binary
  • Connect to appropriate backend (SQLite or PostgreSQL)
  • Point your API integration to the new endpoint

Post-Upgrade Checks

  • Confirm GraphQL queries resolve as expected
  • Monitor logs for error-free startup

Artifacts