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.
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