Now available: Public mainnet mirror node managed by Hedera
Jun 25, 2021
by Hedera Hashgraph
Hedera is the most used, sustainable, enterprise-grade public network for the decentralized economy.

We are happy to announce the availability of a publicly accessible, free-to-use, mainnet Mirror Node operated by the Hedera team.

This non-production mainnet Mirror Node is meant to support developers who are beginning their journey of building on Hedera, who want to receive and verify transaction data for their application without needing to operate a mainnet Mirror Node themselves. It’s provided via a set of publicly accessible endpoints and offers the fastest way to begin your development journey.

This Mirror Node is not intended for production usage. It’s designed to accelerate developer adoption while showing how Mirror Nodes can add value to application architectures. There are a number of production-ready third-party Mirror Nodes and data APIs, including Dragonglass and Kabuto. Additionally, developers routinely run their own Mirror Node for production purposes by using the open source Mirror Node software maintained by Hedera.

What does the Mirror Node provide?

Mirror Nodes store the full history of all transactions from the Hedera Mainnet. They receive transaction records from Mainnet Nodes and store them in a queryable database. This offers developers the ability to receive and verify data processed by the Hedera Mainnet so that applications can easily query anything that’s happened on the network. Queryable data includes anything from getting a token balance for an account or looking up details of a Hedera Consensus Service (HCS) topic ID.

The Hedera Public Mirror Node is a deployed version of the official open source Hedera Mirror Node software. It was built by Hedera Hashgraph LLC and supports every Hedera network service and feature available on the Hedera Mainnet. It’s routinely updated to support new capabilities delivered in the Hedera Service Code, optimize performance, and patch any bugs.

In addition, the Mirror Node provides the ability to generate a State Proof Alpha which is a verifiable proof of a specific transaction on the Hedera Mainnet. You can find more information on the value of State Proofs from our launch blog post for the feature.

How do I access the Mirror Node?

Developers can access the public Mirror Node by connecting to the endpoints provided in the official Hedera documentation. You can interact with the mirror node via REST and gRPC APIs. Both the gRPC and REST API are available on the same endpoint: mainnet-public.mirrornode.hedera.com:443

The REST API enables applications to query information on transactions and entities on the Hedera Mainnet. The gRPC API enables application developers to subscribe to Hedera Consensus Service topics to receive messages on the subscribed topic.

Are there any limitations (throttles, etc.) that I should expect when using this mirror node?

Both the gRPC and REST APIs are currently throttled to 100 requests per second (RPS). This may change in the future depending upon performance or security considerations. At this time, no authentication is required in order to access the endpoints but we might add API keys or other authentication in a future release.

The gRPC API now requires TLS and is no longer offered on the previous cleartext port of 5600. Older versions of the Hedera SDKs do not support TLS, so you’ll need to use Hedera Java SDK 2.0.6, Hedera JavaScript SDK 2.0.23, or Hedera Go SDK 2.1.9 or greater to connect.

This environment should see updates every few weeks to be kept up to date with new releases from the open source mirror node. As it’s not recommended for production use, any issues with the environment will be addressed during normal business hours.

Do I have to pay to use this mirror node?

No, the public Mirror Node is hosted by Hedera and is available free for use. Please note that Hedera does not guarantee the uptime or availability of the Mirror Node and it should not be used for production purposes.

Where and how is the mirror node hosted?

The public Mirror Node is operated in the Google Cloud Platform in both North America and Europe. Users will be routed to the instance to which they are closest. In the case that one goes down or is being upgraded, traffic will automatically be routed to the other.

A large amount of engineering effort has gone into converting the original VM-based deployment to a Kubernetes-based deployment which can scale in line with public use. We’ve dockerized all the Mirror Node components and packaged them as Helm charts for easy deployment.

An active-active architecture with two GKE clusters is used to provide high availability during upgrades and long-running database migrations. The database was upgraded from PostgreSQL 9.6 to 13 to take advantage of new features and performance improvements. We added liveness probes and leader election to the importer component so that multiple can run concurrently and quickly failover if one of them becomes unhealthy. The other components all saw various performance optimizations as well.

A GitOps-based deployment tool called Flux allows us to declaratively specify the expected state of the Mirror Node in git and manage our rollouts. You can browse our deployment branch and see the exact config and versions rolled out to various clusters and environments.


How can I trust this mirror node?

Mirror Nodes exist as windows into the Hedera Mainnet. They provide a transaction history from Mainnet nodes and, therefore, inherit their trust. However, applications can and should independently verify data so as not to be reliant on a single 3rd party Mirror Node.

Applications can gain a higher degree of trust for a given transaction by:

  1. Querying other mirror nodes (Kabuto, DragonGlass) and comparing the results.

  2. Generating a State Proof Alpha to cryptographically validate a transaction provided by the Mirror Node (this offers a mathematical guarantee that the mirror node is telling the truth).

  3. Run a mirror node on your own using the open source Mirror Node code or using a Mirror Node image on the Google Cloud Marketplace.

Where can I go to learn more?

To learn about Hedera Mirror Nodes, visit our documentation page which provides an overview of the Mirror Node features and how to leverage them within your application.

Who can provide me support?

Join our Discord channel to ask any questions or get help when accessing the Hedera Mirror Node. Discord is filled with both community members and Hedera team members who will help you troubleshoot to the best of their ability.

To report bugs, please create issues in the Hedera Mirror Node open source project.

The Mirror Node status will also be reflected on status.hedera.com.

Transactions:

Code Snippet Background

$ curl -s https://mainnet-public.mirrorn...

{

"transactions": [

{

"charged_tx_fee": 64842,

"consensus_timestamp": "1621458101.967799000",

"entity_id": "0.0.131457",

"max_fee": "4000000",

"memo_base64": "",

"name": "CONSENSUSSUBMITMESSAGE",

"node": "0.0.3",

"result": "SUCCESS",

"scheduled": false,

"bytes": null,

"transaction_hash": "3ytCQUbM10nnK+fwI69YPjoaq0VBAT+w/eFlyAAu2MVFGV6zgowRDX6SLl54uwhS",

"transaction_id": "0.0.41104-1621458089-645411108",

"transfers": [

{

"account": "0.0.3",

"amount": 2154

},

{

"account": "0.0.98",

"amount": 62688

},

{

"account": "0.0.41104",

"amount": -64842

}

],

"valid_duration_seconds": "120",

"valid_start_timestamp": "1621458089.645411108"

}

],

"links": {

"next": "/api/v1/transactions?limit=1×tamp=lt:1621458101.967799000"

}

}


Balances:

Code Snippet Background

$ curl -s https://mainnet-public.mirrorn...

{"timestamp":"1621458000.471806000","balances":[{"account":"0.0.98","balance":284913982412407,"tokens":[]}],"links":{"next":null}}

Tokens:

Code Snippet Background

$ curl -s https://mainnet-public.mirrorn...

{

"admin_key": {

"_type": "ED25519",

"key": "f8061b336cf60c9f9feb983a3631837b21dffb1981dc235833ab1f5fa6633840"

},

"auto_renew_account": "0.0.253964",

"auto_renew_period": "7776000",

"created_timestamp": "1621318167.461861000",

"decimals": "0",

"expiry_timestamp": null,

"freeze_default": false,

"freeze_key": {

"_type": "ED25519",

"key": "f8061b336cf60c9f9feb983a3631837b21dffb1981dc235833ab1f5fa6633840"

},

"initial_supply": "50000",

"kyc_key": null,

"modified_timestamp": "1621318167.461861000",

"name": "Emission Allowance Certificate",

"supply_key": {

"_type": "ED25519",

"key": "f8061b336cf60c9f9feb983a3631837b21dffb1981dc235833ab1f5fa6633840"

},

"symbol": "TCO2E",

"token_id": "0.0.254458",

"total_supply": "50000",

"treasury_account_id": "0.0.253964",

"wipe_key": {

"_type": "ED25519",

"key": "f8061b336cf60c9f9feb983a3631837b21dffb1981dc235833ab1f5fa6633840"

}

}