Practical overview
When it fits
Use Eth Indexer when you need a self-hosted MySQL dataset of Ethereum blocks, transactions and address-level state changes for your own queries or analytics.
Who it is for
- Teams building internal analytics or reporting from Ethereum block and account data.
- Go developers who want to query indexed Ethereum records from MySQL.
- Operators comfortable setting up a Docker Compose stack with persistent Geth and MySQL data.
Documented uses
- Collect Ethereum block and transaction records into a MySQL database.
- Capture address-level state differences for historical analysis.
- Query block headers, transactions and account balances.
- Use the indexed data as a basis for internal dashboards, reports or ERC-20 balance analysis.
Requirements & limits
The project is public source code licensed under LGPL-3.0. Its documented deployment uses Docker and Docker Compose.
- The pipeline combines a modified Geth component, an indexer and MySQL; it is not just a database schema or query client.
- MYSQL_DATA_PATH and GETH_DATA_PATH are required for persistent data in the documented Compose setup.
- Configuration supports YAML files and command-line flags, with flags overriding matching YAML settings.
- The README’s examples cover block headers, transactions and account balances, with ERC-20 guidance in a test case.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Build and start the Docker Compose indexer
Build the project containers, initialize the database schema and start indexing Ethereum data.
Before you start
- Docker and Docker Compose
- The repository cloned locally
- MYSQL_DATA_PATH and GETH_DATA_PATH set to local persistent data directories
Steps
Set MYSQL_DATA_PATH and GETH_DATA_PATH, using a .env file beside docker-compose.yml or environment variables.
From the repository directory, run docker-compose build.
Create the MySQL and Geth data directories, then run docker-compose up idx-database idx-migration with MYSQL_DATA_PATH set to initialize the schema.
After the migration exits successfully, run docker-compose up with both data-path variables set to start the indexer.
Expected outcome
The indexer starts reading from Geth and writing indexed data to MySQL; indexing messages appear in the logs.
Guide limitations
- The documented setup is for Docker Compose and requires the two persistent data paths.
- The README says to wait a few minutes for indexing messages; it does not specify an indexing completion point.
Query indexed Ethereum records
Use the stored MySQL data to retrieve block, transaction or account information.
Before you start
- An Eth Indexer database containing indexed data
- Go for the account-query example
Steps
Connect to the MySQL database using the project’s query example.
Query block_headers or transactions for block and transaction records.
For account data, use the account store example to look up an address and read its balance and block number.
Consult the repository’s ERC-20 test case for its ERC-20 balance example.
Expected outcome
The documented examples provide a starting point for reading indexed block, transaction, account and ERC-20 balance data.
Guide limitations
- The README notes that balance queries differ from the block_headers and transactions examples.
- The query guidance assumes indexed data is already present in MySQL.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 16 October 2026
- Original website title
- getamis/eth-indexer · Official homepage title · retained in its source language

