Continuing our goal of having up to date balances everywhere, this release now shows the current hbar balance on the balances REST API. If you provide a timestamp
parameter, it will fallback to the previous behavior and use the 15 minute balance file. This allows us to continue to provide a historical view of your balance over time, while also showing the latest balance if no specific time range is requested. Live fungible token balance is actively being worked on for an upcoming release.
Another big feature this release is support for cloud storage failover. The importer can now be configured with multiple S3 download sources and will iterate over each until one is successful. This makes the mirror node more decentralized and provides more resiliency in the face of cloud failure. The existing hedera.mirror.importer.downloader
properties used to configure the cloudProvider
, accessKey
, secretKey
, etc. will continue to be supported and inserted as the first entry in the sources list, but it's recommended to migrate your configuration to the newer format. Also in the downloader, we increased the downloader batch size to 100 to improve historical synchronization speed. A hedera.mirror.importer.downloader.sources.connectionTimeout
property was added to avoid occasional connection errors.
hedera:
mirror:
importer:
downloader:
sources:
- backoff: 30s
connectionTimeout: 10s
credentials:
accessKey: <redacted>
secretKey: <redacted>
maxConcurrency: 50
projectId: myapp
region: us-east-2
type: GCP
uri: https://storage.googleapis.com
- credentials:
accessKey: <redacted>
secretKey: <redacted>
type: S3
HIP-573 gives token creators the option to exempt all of their token’s fee collectors from a custom fee. This mirror node release adds support to persist this new all_collectors_are_exempt
HAPI field and expose it via the /api/v1/tokens/{id}
REST API.
An important characteristic of a mirror node is that anyone can run one and store only the data they care about. The mirror node has supported such capability for a few years now but the configuration syntax was a bit tricky to get correct. To address this shortcoming, we add some examples to the configuration documentation to clarify things. This entity filtering was historically limited to just create, update and delete operations on entities. We've now expanded this filtering to include payer account IDs and accounts or tokens involved in transfers.
Breaking Changes
As part of the S3 failover work, we made a number of changes to existing properties to streamline things and only support one property for all stream types. The hedera.mirror.importer.downloader.(balance|event|record).batchSize
properties were removed in favor of a single, generic hedera.mirror.importer.downloader.batchSize
. Likewise, the hedera.mirror.importer.downloader.(balance|event|record).threads
properties were removed in favor of hedera.mirror.importer.downloader.threads
. The hedera.mirror.importer.downloader.(balance|event|record).prefix
properties were removed in favor of hardcoded configuration since there's never been a need to adjust these. If you're using any of these properties, please adjust your config accordingly.
If you're writing stream files to disk after downloading by enabling the writeFiles
or writeSignatures
properties, there is one other breaking change to be aware of. As part of our migration away from node account IDs, we changed the paths on disk to use the node ID as well. If you'd like to avoid having two directories for the same node please rename your local directories manually. For example, change ${dataDir}/recordstreams/record0.0.3
to ${dataDir}/recordstreams/record0
.
Enhancements
- Use current balance in balances REST API #4592
- Rosetta support transaction memo #4569
- Rosetta support transaction memo #4568
- HIP-573 Custom fees blanket exemptions API #4567
- Expand entity filtering to payer and transfers #4566
- Add a q param to network supply #4565
- Rosetta limit the number of transactions in block response #4564
- Support a simplified response for network supply #4561
- Use ranges to track unreleased supply accounts #4558
- Add Token Account History Table #4557
- Add support for S3 failover #4553
- HIP-573 Custom fees blanket exemptions persistence code and test changes #4537
- Use db owner in java migration when needed #4528
- Bump versions for v0.66.0-SNAPSHOT #4516
- Rosetta limit the number of transaction in block response #4512
- HIP-573 Custom fees blanket exemptions API #4509
- HIP-573 Custom fees blanket exemptions persistence #4508
- Expand entity filtering to include payer account and transfer receivers/senders #4478
- Run integrations tests as regular database user #4474
- Change balances REST API to use current balance when no timestamp parameter provided #4312
- Performance of Token REST API with association limit removal #3488
- Add history table for token_account #3251
- Use NodeId instead of NodeAccountId in Node Signature Verification Flow #1976
- AWS / GCP file fetch automatic failover #54
Bug Fixes
- Fix GCS downloader regression #4571
- Update list of unreleased supply accounts #4555
- Update Unreleased Supply Accounts #4554
- Codecov GitHub Action upgrade from V1 to v3 #4551
- Upgrade to use the v3 codecov github action for github workflows. #4549
- Downloader consensus validation fails when address book is not up to date #4538
- Fix downloader thread blocked #4534
- Change Rosetta reconciliation to use hardcoded balance offset #4533
- Downloader thread blocked #4532
- Allow ContractAction recipient not set #4521
- Importer halt on sidecar transaction record when ContractAction.recipient is not set #4520
- Change Rosetta reconciliation to use hardcoded balance offset #4482
- Run Java migrations as database owner #4475
Documentation
- Add docs on how to filter by entity and transaction type #4525
- Document how to config importer to filter by entities and transaction types #4097
- The default order of /api/v1/accounts/:idOrAlias/allowances/crypto is desc #3491
Dependency Upgrades
- Bump github.com/Code-Hex/go-generics-cache from 1.1.0 to 1.2.0 in /hedera-mirror-rosetta #4498
- Bump openapi-generator-maven-plugin from 6.1.0 to 6.2.0 #4552
- Bump software.amazon.awssdk:bom from 2.17.279 to 2.17.281 #4550
- Bump gorm.io/gorm from 1.23.9 to 1.23.10 in /hedera-mirror-rosetta #4547
- Bump gorm.io/driver/postgres from 1.3.9 to 1.3.10 in /hedera-mirror-rosetta #4545
- Bump github.com/coinbase/rosetta-sdk-go from 0.8.0 to 0.8.1 in /hedera-mirror-rosetta #4544
- Bump
@hashgraph
/proto from 2.9.0 to 2.10.0 in /hedera-mirror-rest/check-state-proof #4543 - Bump evm from 22.7.2 to 22.7.3 #4542
- Bump spring-boot-starter-parent from 2.7.3 to 2.7.4 #4541
- Bump aws-sdk from 2.1218.0 to 2.1223.0 in /hedera-mirror-rest #4540
- Bump
@hashgraph
/proto from 2.9.0 to 2.10.0 in /hedera-mirror-rest #4539 - Bump software.amazon.awssdk:bom from 2.17.271 to 2.17.278 #4527
- Bump junit-platform-suite from 1.9.0 to 1.9.1 #4526
- Bump dependency-check-maven from 7.2.0 to 7.2.1 #4522
- Bump protobuf-java from 3.21.5 to 3.21.6 #4515
- Bump maven-jar-plugin from 3.2.2 to 3.3.0 #4514
- Bump grpc.version from 1.49.0 to 1.49.1 #4513
- Bump github.com/go-playground/validator/v10 from 10.11.0 to 10.11.1 in /hedera-mirror-rosetta #4500
- Bump github.com/hellofresh/health-go/v4 from 4.6.0 to 4.7.0 in /hedera-mirror-rosetta #4499
- Bump gorm.io/gorm from 1.23.8 to 1.23.9 in /hedera-mirror-rosetta #4497
- Bump github.com/ethereum/go-ethereum from 1.10.23 to 1.10.25 in /hedera-mirror-rosetta #4496
- Bump mathjs from 11.1.0 to 11.2.1 in /hedera-mirror-rest #4495
- Bump nodemon from 2.0.19 to 2.0.20 in /hedera-mirror-rest #4494
- Bump testcontainers from 8.13.2 to 8.14.0 in /hedera-mirror-rest #4493
- Bump aws-sdk from 2.1213.0 to 2.1218.0 in /hedera-mirror-rest #4492
- Bump nodemon from 2.0.19 to 2.0.20 in /hedera-mirror-rest/monitoring/monitor_apis #4491
- Bump mathjs from 11.1.0 to 11.2.1 in /hedera-mirror-rest/monitoring/monitor_apis #4489
Contributors
We'd like to thank all the contributors who worked on this release!