A Hedera mirror node is several services that share a PostgreSQL database. Consensus nodes write record and event files (plus sidecar files for richer smart contract data) to cloud object storage. The mirror node pulls those files down, validates them, populates the database, and exposes the data through several APIs. Repo:Documentation Index
Fetch the complete documentation index at: https://hedera-0c6e0218-chore-hide-placeholder-pages.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
hiero-ledger/hiero-mirror-node. License: Apache-2.0.
Component overview
The pieces, by role
Importer
The data-ingestion service. Polls the configured cloud bucket (GCS for the Hedera-hosted mirror nodes; S3 is also supported), pulls down each new file, verifies signatures match the network’s supermajority, parses contents, and writes rows into PostgreSQL. Implemented in Java with Spring Boot. This is the most resource-intensive component because signature verification and high-volume inserts both happen here. Run it via the project’s Gradle target (./gradlew :importer:run) or the official Docker image.
PostgreSQL database
A single Postgres instance (or cluster, in production) holds every parsed transaction, account state snapshot, token, topic message, smart contract event log, and address book change. Schemas track entity history so callers can read state at a specific consensus timestamp. Default port is5432.
The Hedera-hosted mainnet database is on the order of several terabytes. Self-hosters typically partition by consensus timestamp and prune older partitions to control disk.
REST API
Default port5551. Exposes the standard Hedera mirror node endpoints documented under the Mirror Node REST API: GET /api/v1/transactions/{id}, /accounts/{id}, /tokens/{id}, /contracts/{id}, etc. Read-only, no authentication required, no transaction fees. This is the API most application code talks to.
gRPC API
Default port5600. Streams Hedera Consensus Service topic messages as they’re imported. Clients subscribe to a topic ID and receive messages in consensus order. SDKs (Java, Go, JavaScript) wrap this through their TopicMessageQuery API.
The public Hedera-hosted gRPC mirror endpoints require TLS and apply per-IP throttling.
Web3 API
Answers the read-side of Ethereum’s JSON-RPC:eth_call, eth_getBalance, eth_getCode, eth_getStorageAt, debug_traceTransaction. The JSON-RPC relay forwards these methods to the Web3 API instead of to consensus nodes, because consensus nodes don’t keep historical state.
Together with the JSON-RPC relay, the Web3 API is what makes EVM tooling work against Hedera.
Other services
The repo also ships GraphQL, REST Java, Rosetta, and Monitor services. They share the same database and are independently deployable; each is its own subdirectory in the repo (graphql/, rest-java/, rosetta/, monitor/). Most self-hosters don’t run them unless they have a specific reason.
How data flows for a single transaction
- A client submits a transaction to a consensus node.
- Consensus nodes reach agreement, assign a consensus timestamp, and execute the transaction.
- After the record-file close interval, the consensus node uploads the record file, its signature, and any sidecar files to the cloud bucket.
- The importer pulls the file, verifies signatures, parses the record, writes rows to PostgreSQL.
- The transaction is now visible at
GET /api/v1/transactions/{id}and via the gRPC and Web3 APIs.
See also
Mirror Node REST API
Full endpoint reference for the REST API surface.
Run your own mirror node
GCS- or S3-backed deployment guide for hosting your own mirror node.