As of this release, all account and token balances in the REST API will reflect their real time balance information. Historically, the mirror node has relied upon the balance file uploaded by consensus nodes every 15 minutes for its balance information. We've been working towards this milestone for many releases gradually rolling out real-time balance tracking to more entities and more APIs. This release completes this migration with the addition of real time token balances to both the accounts and the balances REST APIs.
The mirror node now implements support for HIP-583 alias on CryptoCreate
transactions. With this, clients can directly set an alias during account creation instead of relying upon the implicit auto-account creation during transfers. The mirror node respects this explicit alias along with the new explicit EVM address in both CryptoCreate
or the TransactionRecord
. This avoids the brittle EVM address calculation on the mirror node that has caused us some trouble in the past.
This release completes the migration from Maven to Gradle for our build process. A lot of work has been put into the new build to improve its performance and stability both locally and in continuous integration (CI). GitHub Actions workflows have been consolidated from one workflow per module to a single Gradle build workflow with a matrix strategy running them in parallel for each module and database schema. This greatly simplifies the workflow configuration making it easier to maintain and debug.
We continue to make progress on our Citus exploration. The v2 schema for Citus now does timestamp based partitioning of data and automates this process via pg_cron. A Citus specific environment was created and we're currently conducting performance tests against it at scale to verify it meets our requirements.
This release adds automation to keep our GCP Marketplace application up to date with each release. While not fully automatic due to the manual nature of Marketplace version submission, now any new production tag will trigger the generation and verification of the marketplace images.
This was a big release and there were a lot of other various improvements and fixes. See the full release note below.
Enhancements
- Fix citus helm release #5058
- Adding citus helm release. #5055
- Write k6 test report.md to custom directory #5053
- Improve k6 rest test suite for automated regression test #5044
- Create a mirror node cluster for CitusDB testing #5043
- Add integration-docker deployment #5035
- Improve REST API auto-scaler #5022
- Remove Maven #5021
- Real Time Token Balances with the Accounts REST API #5018
- Add contract call route to web3 ingress #5017
- Change acceptance tests to use Gradle #5009
- Add Alias support for HIP-583 CryptoCreate Transactions #5007
- Return evm address as address in logs on /contracts/results #5006
- Return evm address as address in logs on /contracts/results #5005
- Add a dependency-check-gradle plugin #4986
- Add contract call route to web3 ingress #4977
- Real Time Token Balances with the Balances REST API #4976
- Add a property to control network supply format #4974
- Add dependency check plugin to Gradle #4971
- Add Spotless to Gradle #4964
- Update GCP marketplace version #4962
- Replace Maven with Gradle in CI #4947
- Return hbars.tinybars in network supply #4944
- Improve REST API autoscaling #4857
- Add Spotless to Gradle #4817
- Update GCP Marketplace #4801
- HIP-583 Alias on CryptoCreate #4800
- Adding citus time based partitioning. #4799
- Citus: Cleanup existing crons before recreating new ones #4797
- Use real-time token balance in accounts API #4777
- Use real-time token balance in balances API #4776
- Citus: Add timestamp based partitioning #2682
Bug Fixes
- Fix gradle release and affected github workflows (0.71) #5136
- Install missing wget in rest and rosetta Dockerfile (0.71) #5122
- Fix github token permission issue in release production workflow (0.71) #5110
- Fix upload artifact error in gradle github workflow (0.71) #5109
- Fix release related github workflows (0.71) #5098
- Disable git pre-commit hook (0.71) #5096
- Fix monitor service catalog watch error #5089
- Monitor KubernetesCatalogWatch Error #5088
- Retry stateproof request in js monitor check #5086
- Fix flaky stateproof integration tests #5085
- Flaky stateproof integration tests in CI #5084
- Changing the type for expiry_timestamp back to a number #5083
- REST API /tokens/{id} response expiry_timestamp incompatible type change #5080
- Revert to hedera-sdk-java 2.18.0 to workaround regression #5077
- Add runtime_bytecode to OpenAPI #5063
- GrpcNoSubscribers alert in previewnet #5062
- OpenAPI spec missing runtime_bytecode #5061
- False positive stateproof API alert #5057
- Fix codecov reporting #5046
- Fix Acceptance Test transfer race condition #5042
- Move dependency check to separate workflow #5034
- Move dependency check to separate workflow #5033
- Switch REST and Rosetta to debian based image #5020
- Build native library for bigint-buffer in rest image #5011
- Rest image falls back to pure JS bigint #5010
- Add a helm release health indicator to monitor #5008
- Fix NoClassDefFoundError in RecordFileParser #4979
- NoClassDefFoundError during parsing #4978
- Fix multi-node citus extension config #4975
- Citus extension not properly configured in multi-node deployment #4972
- Acceptance test transfer race condition #4970
- Switch to s3mock in rest integration test #4969
- S3 Port 4566 not bound failure in REST CI #4930
- Cluster health check returns unhealthy during upgrades #4770
Dependency Upgrades
- Dependabot bump grpc-spring-boot-starter from 2.13.1.RELEASE to 2.14.0.RELEASE #5047
- Bump springdoc-openapi-webflux-ui from 1.6.13 to 1.6.14 #5076
- Bump vertx-pg-client from 4.3.5 to 4.3.6 #5075
- Bump software.amazon.awssdk:bom from 2.18.35 to 2.18.41 #5074
- Bump headlong from 9.1.0 to 9.1.1 #5073
- Bump lombok-plugin from 6.6 to 6.6.1 #5072
- Bump spring-cloud-gcp-dependencies from 3.4.0 to 3.4.1 #5071
- Bump protobufVersion from 3.21.11 to 3.21.12 #5070
- Bump hibernate-types-55 from 2.20.0 to 2.21.0 #5069
- Bump cucumber-bom from 7.10.0 to 7.10.1 #5068
- Bump testcontainers from 9.0.1 to 9.1.1 in /hedera-mirror-rest #5067
- Bump sinon from 15.0.0 to 15.0.1 in /hedera-mirror-rest #5066
- Bump eslint-plugin-jest from 27.1.6 to 27.1.7 in /hedera-mirror-rest #5065
- Bump aws-sdk from 2.1272.0 to 2.1277.0 in /hedera-mirror-rest #5064
- Bump headlong from 7.0.0 to 9.1.0 #5041
- Bump testcontainersSpringBootVersion from 2.2.11 to 2.2.12 #5039
- Bump protobufVersion from 3.21.10 to 3.21.11 #5038
- Bump cucumber-bom from 7.9.0 to 7.10.0 #5037
- Bump software.amazon.awssdk:bom from 2.18.3 to 2.18.35 #5036
- Bump test-retry-gradle-plugin from 1.4.1 to 1.5.0 #5003
- Bump hedera-protobuf-java-api from 0.31.0 to 0.32.0 #5002
- Bump protobufVersion from 3.21.9 to 3.21.10 #5001
- Bump grpc-spring-boot-starter from 2.13.1.RELEASE to 2.14.0.RELEASE #5000
- Bump evm from 22.10.0 to 22.10.2 #4999
- Bump software.amazon.awssdk:bom from 2.18.24 to 2.18.30 #4998
- Bump protobuf-java from 3.21.9 to 3.21.10 #4997
- Bump secp256k1 from 0.6.1 to 0.6.2 #4996
- Bump github.com/jackc/pgtype from 1.12.0 to 1.13.0 in /hedera-mirror-rosetta #4995
- Bump github.com/coinbase/rosetta-sdk-go from 0.8.1 to 0.8.2 in /hedera-mirror-rosetta #4994
- Bump log4js from 6.7.0 to 6.7.1 in /hedera-mirror-rest/check-state-proof #4993
- Bump sinon from 14.0.2 to 15.0.0 in /hedera-mirror-rest #4992
- Bump aws-sdk from 2.1261.0 to 2.1267.0 in /hedera-mirror-rest #4991
- Bump axios from 1.1.3 to 1.2.0 in /hedera-mirror-rest #4990
- Bump log4js from 6.7.0 to 6.7.1 in /hedera-mirror-rest/monitoring/monitor_apis #4989
- Bump testcontainers from 9.0.0 to 9.0.1 in /hedera-mirror-rest #4988
- Bump log4js from 6.7.0 to 6.7.1 in /hedera-mirror-rest #4987
- Bump versions for v0.71.0-SNAPSHOT #4967
- Bump express-openapi-validator from 4.13.8 to 5.0.0 in /hedera-mirror-rest #4932
Contributors
We'd like to thank all the contributors who worked on this release!