Skip to content
Hedera Mirror Node mirrors data from Hedera nodes and serves it via an API
Java JavaScript PLpgSQL TSQL Shell HTML Other
Branch: master
Clone or download
steven-sheehy Fix S3 not connecting to specific region endpoint (#507)
Signed-off-by: Steven Sheehy <steven.sheehy@hedera.com>
Latest commit 9fc7ab8 Jan 22, 2020
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Implemented perf module utilizing jmeter to run multi thread GRPC loa… Jan 15, 2020
.github Update bug report and contributing Aug 29, 2019
.mvn/wrapper Add Maven Wrapper Aug 15, 2019
docs Final protobuf & bump to v0.5.1-rc1 (#492) Jan 9, 2020
hedera-mirror-coverage Fix parsing ConsensusCreateTopic with existing autorenew account (#502) Jan 20, 2020
hedera-mirror-datagenerator Fix parsing ConsensusCreateTopic with existing autorenew account (#502) Jan 20, 2020
hedera-mirror-grpc Fix monitor API returning invalid JSON when REST API down (#503) Jan 21, 2020
hedera-mirror-importer Fix S3 not connecting to specific region endpoint (#507) Jan 22, 2020
hedera-mirror-protobuf Fix parsing ConsensusCreateTopic with existing autorenew account (#502) Jan 20, 2020
hedera-mirror-rest Fix monitor API returning invalid JSON when REST API down (#503) Jan 21, 2020
hedera-mirror-test Fix parsing ConsensusCreateTopic with existing autorenew account (#502) Jan 20, 2020
.editorconfig Use application.yml for rest-api (#336) Oct 31, 2019
.gitignore Merge master to hcs branch (#425) Dec 30, 2019
CHANGELOG.md Add missing validDuration and maxFee columns (#334) Oct 28, 2019
CODE_OF_CONDUCT.md Update to oss@hedera.com Aug 27, 2019
CONTRIBUTING.md Update bug report and contributing Aug 29, 2019
LICENSE Initial commit Jul 17, 2019
README.cn.md Software logic flow in chinese Aug 8, 2019
README.md Change to at least 1/3 consensus and 13 node address book (#489) Jan 8, 2020
codecov.yml Switch to codecov.io Sep 19, 2019
docker-compose.yml Remove hcs from artifacts and bump to 0.5.0-beta1 (#471) Dec 31, 2019
lombok.config HCS Topic Listener (#438) Dec 30, 2019
mvnw Add Maven Wrapper Aug 15, 2019
mvnw.cmd Add Maven Wrapper Aug 15, 2019
pom.xml Fix S3 not connecting to specific region endpoint (#507) Jan 22, 2020

README.md

CircleCI codecov GitHub

Hedera Mirror Node

Hedera Mirror Node exposes Hedera Hashgraph transactions, transaction records, account balances, and events generated by the Hedera mainnet (or testnet, if so configured) via a REST API.

Overview

Hedera mirror nodes receive the information from the mainnet nodes and they provide value-added services such as providing audit support, access to historical data, transaction analytics, visibility services, security threat modeling, data monetization services, etc. Mirror nodes can also run additional business logic to support applications built using Hedera mainnet.

While mirror nodes receive information from the mainnet nodes, they do not contribute to consensus on the mainnet, and their votes are not counted. Only the votes from the mainnet nodes are counted for determining consensus. The trust of Hedera mainnet is derived based on the the consensus reached by the mainnet nodes. That trust is transferred to the mirror nodes using cryptographic signatures on a chain of records (account balances, events, transactions, etc).

Beta Mirror Node

Eventually, the mirror nodes can run the same code as the Hedera mainnet nodes so that they can see the transactions in real time. To make the initial deployments easier, the beta mirror node strives to take away the burden of running a full Hedera node through creation of periodic files that contain processed information (such as account balances or transaction records), and have the full trust of the Hedera mainnet nodes. The beta mirror node software reduces the processing burden by receiving pre-constructed files from the mainnet, validating those, populating a database and providing REST APIs.

Advantages

  • Lower compute, bandwidth requirement
  • It allows users to only save what they care about, and discard what they don’t (lower storage requirement)
  • Easy searchable database so the users can add value quickly
  • Easy to consume REST APIs to make integrations faster

Description

The beta mirror node works as follows:

  • When a transaction reaches consensus, Hedera nodes add the transaction and its associated record to a record file.

  • The file is closed on a regular cadence and a new file is created for the next batch of transactions and records. The interval is currently set to 5 seconds but may vary between networks.

  • Once the file is closed, nodes generate a signature file which contains the signature generated by the node for the record file.

  • Record files also contain the hash of the previous record file, thus creating an unbreakable validation chain.

  • The signature and record files are then uploaded from the nodes to Amazon S3 and Google File Storage.

  • This mirror node software downloads signature files from either S3 or Google File Storage.

  • The signature files are validated to ensure at least 1/3 of the nodes in the address book (stored in a 0.0.102 file) have the same signature.

  • For each valid signature file, the corresponding record file is then downloaded from the cloud.

  • Record files can then be processed and transactions and records processed for long term storage.

  • Event files are handled in exactly the same manner.

  • In addition, nodes regularly generate a balance file which contains the list of Hedera accounts and their corresponding balance which is also uploaded to S3 and Google File Storage.

  • The files are also signed by the nodes.

  • This mirror node software can download the balance files, validate at least 1/3 of nodes have signed and then process the balance files for long term storage.

Getting Started

Ensure OpenJDK 11 and Docker Compose are installed, then run:

git clone git@github.com:hashgraph/hedera-mirror-node.git
cd hedera-mirror-node
./mvnw clean install -DskipTests
docker-compose up

NOTE: This defaults to a bucket setup for demonstration purposes. The real bucket name is not currently publicly available.

Documentation

Contributing

Contributions are welcome. Please see the contributing guide to see how you can get involved.

Code of Conduct

This project is governed by the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to oss@hedera.com

License

Apache License 2.0

You can’t perform that action at this time.