Releases: hashgraph/hedera-mirror-node
v0.92.0
HIP-584 Mirror EVM Archive node saw further refinements in this release. Memory usage was optimized by making most classes stateless and leveraging ThreadLocal
where appropriate. Work continues on making /api/v1/contracts/call
support historical blocks with lower level support for historical contract state, account, and contract information added. Additional test coverage for estimate gas was introduced to compare gas estimation is close to the actual gas used via HAPI. Finally, an issue with the blockhash
operation returning 0x0
was resolved.
We added an option to deduplicate account and token balance data for Citus that can dramatically reduce the size of the balance tables. Balance tables currently consume 50% of the database. In the next release, we will bring this capability to regular PostgreSQL to realize those cost savings there as well. We now no longer update the token history for supply change operations like mint, burn, or wipe thus reducing the amount of data in this table.
Enhancements
- HIP-584 Historical: Added new query for contract state to return historical contract state storage value #7118
- Improve EntityIdService cache lookup #7116
- Extend tests for estimateGas with contract transaction execution #7098
- Remove generation of token history row when total supply changes for Mint/Wipe/Burn #7095
- Add deduplication of entries for Account Balance and Token Balance in v1 #7035
- HIP-584 Historical: Extend entity, account balance and crypto transfer db queries #6966
- HIP-584: Adapt stacked state to use ThreadLocals #6676
Bug Fixes
- Show actual URL in k6 test report #7120
- Suppress Snyk static analysis false positive #7119
- Add grpc inprocess dependency in hedera-mirror-test project #7112
- Remove Rosetta GitHub workflow #7110
- HIP-584: Fix block hash exception due to hash value not being sliced #7091
- Fix EVM address lookup corner case #7088
Documentation
- Remove references to VM deployment #7093
Dependency Upgrades
- Bump chart-testing-action from 2.4.0 to 2.6.0 (0.92) #7151
- Bump github.com/docker/docker from 24.0.5+incompatible to 24.0.7+incompatible in /hedera-mirror-rosetta #7137
- Bump
@aws-sdk
/client-s3 from 3.433.0 to 3.438.0 in /hedera-mirror-rest #7136 - Bump rfc4648 from 1.5.2 to 1.5.3 in /hedera-mirror-rest #7135
- Bump eslint-plugin-jest from 27.4.3 to 27.6.0 in /hedera-mirror-rest #7134
- Bump
@testcontainers
/postgresql from 10.2.1 to 10.2.2 in /hedera-mirror-rest #7133 - Bump mathjs from 11.11.2 to 12.0.0 in /hedera-mirror-rest #7132
- Bump mathjs from 11.11.2 to 12.0.0 in /hedera-mirror-rest/monitoring/monitor_apis #7131
- Bump com.bmuschko:gradle-docker-plugin from 9.3.4 to 9.3.6 #7130
- Bump software.amazon.awssdk:bom from 2.21.5 to 2.21.10 #7129
- Bump commons-io:commons-io from 2.14.0 to 2.15.0 #7128
- Bump gorm.io/driver/postgres from 1.5.3 to 1.5.4 in /hedera-mirror-rosetta #7127
- Bump chart dependencies #7126
- Bump
@aws-sdk
/client-s3 from 3.428.0 to 3.433.0 in /hedera-mirror-rest #7108 - Bump github.com/ethereum/go-ethereum from 1.13.3 to 1.13.4 in /hedera-mirror-rosetta #7107
- Bump github.com/hashgraph/hedera-sdk-go/v2 from 2.30.0 to 2.31.0 in /hedera-mirror-rosetta #7106
- Bump eslint-plugin-jest from 27.4.2 to 27.4.3 in /hedera-mirror-rest #7105
- Bump sinon from 16.1.0 to 17.0.0 in /hedera-mirror-rest #7104
- Bump io.swagger:swagger-annotations from 1.6.11 to 1.6.12 #7103
- Bump org.owasp:dependency-check-gradle from 8.4.0 to 8.4.2 #7102
- Bump software.amazon.awssdk:bom from 2.21.0 to 2.21.5 #7101
- Bump io.grpc:grpc-bom from 1.58.0 to 1.59.0 #7100
- Bump Spring Boot from 3.1.4 to 3.1.5 #7094
- Bump versions for v0.92.0-SNAPSHOT #7083
Contributors
We'd like to thank all the contributors who worked on this release!
v0.92.0-rc2
v0.92.0-rc2
v0.92.0-rc1
v0.92.0-rc1
v0.91.0
This release adds support for ad-hoc transaction filters using the Spring Expression Language (SpEL). SpEL filters can be used for both including or excluding transactions from being persisted to the database. Previous filtering capability allowed mirror node operators to include or exclude certain entity IDs or transaction types, but if they needed something more custom they were out of luck. SpEL itself is pretty powerful and allows access to any bean or class on the classpath, so to reduce the attack surface we limit it to only allow filtering on the TransactionBody and the TransactionRecord contained within the record file. See the docs for additional details and examples. Below is an example that only includes transactions with certain memos:
hedera.mirror.importer.parser.include[0].expression=transactionBody.memo.contains("hedera")
Monitoring saw improvements this release with newly added metrics for the size of table and indexes on disk to help track the growing size of the database. Likewise, new cache metrics were implemented to monitor the cache hit rate and size. Dashboards were updated to visualize these new metrics.
HIP-584 EVM archive node saw support for block.prevrandao
implemented. Also, support for pending
, safe
, and finalized
block types were added with all three being equivalent to latest
since Hedera's blocks are always final. Work has started on historical support for /api/v1/contracts/call
so that specific blocks in the past can be queried. This release saw the lower level queries for token balance implemented.
HIP-794 Sunset account balance saw a couple of remaining items completed. The balance timestamp that was added in v0.89.0 was put to use to provide more accurate timestamps for the accounts and balances REST API. Finally, the reconciliation job was disabled since it doesn't make sense to reconcile from balance data that mirror node generates itself.
Enhancements
- HIP-584 Historical: Support token balance #7044
- Add table disk size metrics & graphs #7017
- Use ContractCallTestScenarioBuilder in web3 k6 test cases #7015
- Disable reconciliation job by default #7013
- Disable shard replication by default #7003
- Improve the efficiency of loading contract initcode #7000
- Add support for dynamic expression-based transaction filters #6979
- Enhance ContractController to handle all remaining block types (pending, safe, finalized) #6975
- Update accounts and balances to use entity.balance_timestamp #6974
Bug Fixes
- HIP-584: Copy HederaPrngSeedOperation from services #7047
- HIP-584: Estimated gas under expected range #7041
- Ignore staking fields before staking was enabled #7019
Documentation
- Document citus backup and restore #7004
Dependency Upgrades
- Bump Node.js from 18.17.1 to 18.18.2 #7081
- Bump
@babel
/traverse from 7.22.20 to 7.23.2 in /hedera-mirror-rest/check-state-proof #7080 - Bump
@babel
/traverse from 7.22.20 to 7.23.2 in /hedera-mirror-rest/monitoring/monitor_apis #7079 - Bump
@babel
/traverse from 7.22.20 to 7.23.2 in /hedera-mirror-rest #7078 - Bump software.amazon.awssdk:bom from 2.20.162 to 2.21.0 #7073
- Bump com.google.guava:guava from 32.1.2-jre to 32.1.3-jre #7072
- Bump io.hypersistence:hypersistence-utils-hibernate-62 from 3.5.3 to 3.6.0 #7071
- Bump io.projectreactor:reactor-core-micrometer from 1.0.10 to 1.0.11 #7070
- Bump testcontainersSpringBootVersion from 3.0.4 to 3.0.5 #7069
- Bump vertxVersion from 4.4.5 to 4.4.6 #7068
- Bump
@aws-sdk
/client-s3 from 3.427.0 to 3.428.0 in /hedera-mirror-rest #7067 - Bump jest-extended from 4.0.1 to 4.0.2 in /hedera-mirror-rest #7066
- Bump mathjs from 11.11.1 to 11.11.2 in /hedera-mirror-rest #7064
- Bump mathjs from 11.11.1 to 11.11.2 in /hedera-mirror-rest/monitoring/monitor_apis #7063
- Bump securego/gosec from 2.17.0 to 2.18.1 #7062
- Bump gorm.io/gorm from 1.25.4 to 1.25.5 in /hedera-mirror-rosetta #7061
- Bump gorm.io/driver/postgres from 1.5.2 to 1.5.3 in /hedera-mirror-rosetta #7060
- Bump github.com/ethereum/go-ethereum from 1.13.2 to 1.13.3 in /hedera-mirror-rosetta #7059
- Bump netty from 4.1.97.Final to 4.1.100.Final #7058
- Bump Go from 1.21.1 to 1.21.3 #7057
- Bump eclipse-temurin from 17.0.8 to 17.0.8.1 #7056
- Bump golang.org/x/net from 0.15.0 to 0.17.0 in /hedera-mirror-rosetta #7046
- Bump github.com/hashgraph/hedera-sdk-go/v2 from 2.29.0 to 2.30.0 in /hedera-mirror-rosetta #7033
- Bump github.com/spf13/viper from 1.16.0 to 1.17.0 in /hedera-mirror-rosetta #7032
- Bump github.com/go-playground/validator/v10 from 10.15.4 to 10.15.5 in /hedera-mirror-rosetta #7031
- Bump
@aws-sdk
/client-s3 from 3.421.0 to 3.427.0 in /hedera-mirror-rest #7030 - Bump sinon from 16.0.0 to 16.1.0 in /hedera-mirror-rest #7029
- Bump stefanzweifel/git-auto-commit-action from 4 to 5 #7028
- Bump io.freefair.gradle:lombok-plugin from 8.3 to 8.4 #7027
- Bump org.sonarsource.scanner.gradle:sonarqube-gradle-plugin from 4.4.0.3356 to 4.4.1.3373 #7026
- Bump org.testcontainers:junit-jupiter from 1.19.0 to 1.19.1 #7025
- Bump testcontainersSpringBootVersion from 3.0.3 to 3.0.4 #7024
- Bump org.gradle:test-retry-gradle-plugin from 1.5.5 to 1.5.6 #7023
- Bump protobufVersion from 3.24.3 to 3.24.4 #7022
- Bump software.amazon.awssdk:bom from 2.20.157 to 2.20.162 #7021
- Bump com.github.node-gradle:gradle-node-plugin from 7.0.0 to 7.0.1 #7020
- Bump Gradle from 8.3 to 8.4 #7011
- Bump github.com/consensys/gnark-crypto from 0.11.2 to 0.12.0 in /hedera-mirror-rosetta #7002
- Bump com.hedera.hashgraph:sdk from 2.28.0 to 2.29.0 #6951
Contributors
We'd like to thank all the contributors who worked on this release!
v0.91.0-rc1
v0.91.0-rc1
v0.90.0
This release was mainly focused on testing and bug fixes. Acceptance tests saw a number of improvements including a reduction in overall costs by caching contract creation used in multiple tests. Acceptance tests were added to verify support for HIP-786 staking properties in network stake REST API. An issue with exchange rates varying in different environments was solved by querying the exchange rate REST API and using that to calculate fees to HAPI. The importer had an option added to fail on recoverable errors to find record stream issues earlier in the lifecycle.
Breaking Changes
We no longer upload binary tgz
artifacts for each GitHub release. It's recommended to utilize our official GCR container images to deploy the mirror node. If JAR artifacts are still needed please checkout the git tag and run ./gradlew clean build -x test
to generate them locally.
Enhancements
- Add contract caching mechanism for acceptance tests #6968
- Network Stake Schema Error In V2 #6939
- HIP-786: Include new staking properties in acceptance test #6926
- Revert "Add a transaction hash pivot timestamp (#6907)" #6921
- Set dynamic value for create token in acceptance tests #6917
- Add a transaction hash pivot timestamp #6907
- Set dynamic value for create token tests #6905
- Change rosetta to not use account balance file #6902
- Option to halt importer on recoverable error #6901
- HIP-786: Include new staking properties in acceptance test #6891
- Add an option to halt importer on recoverable error #6860
- Refresh mainnet staging data #6793
- Implement contract caching mechanism #6789
- Change Rosetta to not use account_balance_file #6682
- Performance test sustained high TPS on Cloud SQL #6671
Bug Fixes
- Fix GCP Marketplace workflow #6999
- HIP-584: Remove unneeded store.wrap() call in ApproveAllowanceLogic #6964
- Unneeded store.wrap() call in ApproveAllowanceLogic #6963
- Marketplace workflow fails #6961
- Fix acceptance test cleanup #6960
- Logs show multiple stacktraces in passing acceptance test #6959
- Make
MirrorEntityAccess.isUsable
not consider expiry #6940 - Fix loading of native libraries in web3 chart #6932
- web3 module MirrorEntityAccess.isUsable is missing logic for autorenew consideration #6928
- Besu internal precompiles require tmp dir #6927
- Add migration for missing nft history timestamp ranges #6925
- Modify
Token
model to make it immutable #6919 - Store models collections are not immutable #6918
- Follow up on regression on
contract/results/<transactionHash>
address to field as 0x #6916 - Fix custom fee schedule not updated properly #6913
- Custom token fees are not updated when cleared #6908
- Regression on
contract/results/<transactionHash>
addressto
field as0x
#6903
Documentation
- Update web3 module README with contracts/call API support #6865
Dependency Upgrades
- Bump commons-io:commons-io from 2.13.0 to 2.14.0 #6995
- Bump uk.org.webcompere:system-stubs-jupiter from 2.1.2 to 2.1.3 #6994
- Bump com.graphql-java-generator:graphql-java-client-runtime from 2.3 to 2.3.1 #6992
- Bump testcontainersSpringBootVersion from 3.0.1 to 3.0.3 #6991
- Bump org.sonarsource.scanner.gradle:sonarqube-gradle-plugin from 4.3.1.3277 to 4.4.0.3356 #6990
- Bump software.amazon.awssdk:bom from 2.20.153 to 2.20.157 #6989
- Bump com.bmuschko:gradle-docker-plugin from 9.3.3 to 9.3.4 #6988
- Bump com.diffplug.spotless:spotless-plugin-gradle from 6.21.0 to 6.22.0 #6987
- Bump glob from 10.3.7 to 10.3.10 in /hedera-mirror-rest/check-state-proof #6986
- Bump github.com/prometheus/client_golang from 1.16.0 to 1.17.0 in /hedera-mirror-rosetta #6985
- Bump github.com/ethereum/go-ethereum from 1.13.1 to 1.13.2 in /hedera-mirror-rosetta #6984
- Bump
@aws-sdk
/client-s3 from 3.418.0 to 3.421.0 in /hedera-mirror-rest #6983 - Bump eslint-plugin-jest from 27.4.0 to 27.4.2 in /hedera-mirror-rest #6982
- Bump graphql-java-generator from 2.2 to 2.3.1 #6981
- Bump snapshot dependencies #6978
- Bump org.msgpack:jackson-dataformat-msgpack from 0.9.5 to 0.9.6 #6957
- Bump org.springframework.boot:spring-boot-gradle-plugin from 3.1.2 to 3.1.4 #6956
- Bump uk.org.webcompere:system-stubs-jupiter from 2.1.1 to 2.1.2 #6955
- Bump io.hypersistence:hypersistence-utils-hibernate-62 from 3.5.2 to 3.5.3 #6954
- Bump org.openapitools:openapi-generator-gradle-plugin from 7.0.0 to 7.0.1 #6953
- Bump com.bmuschko:gradle-docker-plugin from 9.3.2 to 9.3.3 #6952
- Bump software.amazon.awssdk:bom from 2.20.149 to 2.20.153 #6950
- Bump glob from 10.3.4 to 10.3.7 in /hedera-mirror-rest/check-state-proof #6949
- Bump github.com/hashgraph/hedera-sdk-go/v2 from 2.28.0 to 2.29.0 in /hedera-mirror-rosetta #6948
- Bump
@aws-sdk
/client-s3 from 3.414.0 to 3.418.0 in /hedera-mirror-rest #6947 - Bump mathjs from 11.11.0 to 11.11.1 in /hedera-mirror-rest #6946
- Bump mathjs from 11.11.0 to 11.11.1 in /hedera-mirror-rest/monitoring/monitor_apis #6944
- Bump versions for v0.90.0-SNAPSHOT #6899
- Bump docker/setup-qemu-action from 2 to 3 #6881
- Bump docker/build-push-action from 4 to 5 #6880
- Bump docker/setup-buildx-action from 2 to 3 #6879
Contributors
We'd like to thank all the contributors who worked on this release!
v0.90.0-rc1
v0.90.0-rc1
v0.89.0
HIP-786 adds support for enriched staking metadata exports to the record stream for use by downstream systems. The mirror node now ingests the new max_stake_rewarded
, max_total_reward
, reserved_staking_rewards
, reward_balance_threshold
, and unreserved_staking_reward_balance
fields and persists them to the database. The REST API has been updated to expose this data via /api/v1/network/stake
.
HIP-794 Sunsetting Balance File saw further refinements in this release. The mirror node now captures the consensus timestamp at which the balance was updated for both accounts and token relationship. This information will be used in the future to provide more accurate balance timestamps in the API and to deduplicate the balance information. Entity balance tracking and migration was enabled in the Rosetta API. Finally, we now track the balance of all entity types and not just accounts and contracts.
HIP-584 Mirror EVM Archive node continues to improve with the addition of support for the PRNG system contract. Missing Besu internal precompiles for the Istanbul release are now properly registered. A lot of new tests were added in the form of integration, acceptance, and performance tests.
There were a number of technical debt items addressed in this release. The importer component saw noticeable improvements in CPU and memory usage at 10,000 transactions per second. It now uses about 50% less memory and 33% less CPU. The Log4j2 logging framework was replaced with Logback to provide a path to compiling to native code and to simplify configuration. The EntityId
saw its final improvement with the addition of a cache to reduce allocating temporary immutable objects. Tests were standardized to use the simpler and logging framework agnostic OutputCaptureExtension
. Finally, we researched approaches to parallel transaction insertion and saw a path forward for additional ingest scalability.
Enhancements
- Revert "Add a transaction hash pivot timestamp (0.89)" #6923
- Add a transaction hash pivot timestamp (0.89) #6909
- Enable entity balance tracking and migration in rosetta #6885
- Enable entity balance tracking and migration in rosetta #6884
- Expose new HIP-786 staking properties #6863
- HIP-786: Persist new staking properties #6858
- Add balance timestamp to entity and token account #6852
- Replace log4j2 with logback #6838
- Replace Log4j2 with Logback #6837
- Add a cache to EntityId #6834
- Switch tests to use OutputCaptureExtension #6832
- Track balance of all entities #6822
- HIP-584: K6 performance test for estimate precompiles #6814
- HIP-786: Expose new staking properties #6792
- HIP-786: Persist new staking properties #6791
- HIP-786: Enriched staking metadata exports #6790
- HIP-584: Refactor integration tests #6785
- HIP-584: Add acceptance tests for ExchangeRatePrecompiledContract #6784
- HIP-584: Add acceptance tests for PrngSystemPrecompiledContract #6782
- Add a balance timestamp to entity and token account #6683
- HIP-584: Provide implementation for PrngSystemPrecompiledContract #6668
- HIP-584: Support ExchangeRate and Prng precompiles for eth_estimateGas and refactor integration tests in web3 #6657
- HIP-584: Add K6 tests for modification precompiles #6619
- HIP-584: Refactor integration tests #6607
- HIP-584: Provide implementation for PrngSystemPrecompiledContract #6605
- Refactor EntityId #6122
- Research parallel domain ingestion across multiple connections #2677
Bug Fixes
- Make
MirrorEntityAccess.isUsable
not consider expiry (0.89) #6943 - Fix loading of native libraries in web3 chart (0.89) #6934
- Regression on
contract/results/<transactionHash>
address to field as 0x (0.89) #6922 - Fix custom fee schedule not updated properly (0.89) #6915
TokenAccessorImpl
to returns long zero for getApproved operation #6897- Fix
TokenAccessorImpl
to return canonical address #6896 - Workaround testnet acceptance test failures #6894
- Acceptance tests fail against testnet #6893
- Improve importer memory usage #6867
- HIP-584: Register missing besu internal precompiles #6862
- HIP-584: Register missing besu internal precompiles #6861
- Find entity from evm address recovered from EC public key alias #6859
- Add a migration to fix token allowance amount for transferFrom precompile #6851
- Set daemonsets to a higher priority class #6836
- Can’t scale up a node pool because of a failing scheduling predicate #6835
- Unable to find entity for alias #6833
- Fix MessageDeliveryException in importer #6829
- Import halts ingestion with a MessageDeliveryException #6828
- Nullable
to
address for reverted transactions on/contracts/results/<txHash>
route #6827 - Nullable
to
address for reverted transactions on/contracts/results/<txHash>
route #6826 - EsimateGas request returns 400 when from parameter is missing. #6824
- HIP-584: Change InvalidTransactionException type in Store #6788
- Frame does not revert when store calls missingEntityException #6787
- HIP-584: Transfer on estimate gas results in error 400 #6778
- Transfer on estimate gas results in error 400 #6777
- K6 endpoints show regression #6772
- Fix token allowance amount for transferFrom precompile #6741
- Importer shows high memory consumption at the beginning of 10K TPS perf test #6729
Documentation
- Update web3 module README with contracts/call API support (0.89) #6910
Dependency Upgrades
- Revert "Bump quick-lru from 6.1.2 to 7.0.0" #6898
- HIP-786: Finalize protobuf artifact to persist new staking properties #6889
- Bump jest from 29.6.4 to 29.7.0 in /hedera-mirror-rest/monitoring/monitor_apis #6883
- Bump jest from 29.6.4 to 29.7.0 in /hedera-mirror-rest/check-state-proof #6882
- Bump software.amazon.awssdk:bom from 2.20.144 to 2.20.149 #6878
- Bump io.projectreactor:reactor-core-micrometer from 1.0.9 to 1.0.10 #6877
- Bump org.gradle:test-retry-gradle-plugin from 1.5.4 to 1.5.5 #6876
- B...
v0.89.0-rc3
v0.89.0-rc3