The Mina Indexer is a redesigned version of the software collectively called the "Mina archive node."
Note: As the project is in active development, be aware that the public APIs and functionalities are subject to change.
Working with the Mina Archive Node can be complex and time-consuming. It requires the exact configuration of multiple components — a Mina Node, an Archive Node, and a Postgres database — and an in-depth knowledge of SQL and the Mina blockchain.
Additionally, even with a proper setup, the Archive Node system is prone to missing blocks, creating gaps in the data. These gaps require manual intervention for resolution, which adds layers of complexity to the system's management.
A major problem with the Archive Node is its reliance on a pg_dump
from a currently active node for initial setup. This approach
centralizes data, necessitating trust from the operator's side.
The Mina Indexer addresses this by simplifying the initial configuration by using precomputed blocks as the source of truth, bypassing the need for external database dumps.
We designed the Mina Indexer to be a comprehensive replacement for the Mina Archive Node, providing an easier-to-use platform with native support for the Rosetta API. We aim to streamline blockchain interaction for developers within the Mina ecosystem by providing developers and operators with a better toolset optimized for the Mina ecosystem.
This project utilizes Nix Flakes for development and building. Install Nix here and enable Flakes using the guide here. No additional dependencies are needed.
Use nix develop
to prepare your development environment. It
configures your current shell with all necessary dependencies and
tools, removing the need for a separate host Rust installation.
Run nix build
to compile the project. This will
compile the mina-indexer
binary and place it in ./result/bin
.
Execute unit tests to validate code functionality with:
just test-unit
To perform regression tests, which check for new bugs in existing features after updates, use:
just test-regression
Building OCI (Docker) images from Nix must happen from x86-64-linux
machine
otherwise you'll need to cross-compile.
Issue the following command to build the image and load it into Docker.
nix build .#dockerImage
docker load < result
docker run --rm -it mina-indexer:<sha> mina-indexer server start --help
Copyright 2022-2024 Granola Systems Inc.
This software is licensed under the Apache License, Version 2.0.
This project uses C4(Collective Code Construction Contract) process for contributions.