HIP-584 EVM archive node saw further progress this release with a focus on testing and establishing the foundation for estimate gas functionality in the next release. While consensus nodes undergo a modularization effort that will pay dividends down the road, the archive node needs functionality for estimate gas before that process could be completed. To make progress on HIP-584, the necessary EVM logic was temporarily copied from consensus nodes into the mirror node web3 module. A large focus was placed on increasing acceptance test coverage for contract call with precompiles.
Users writing dApps want to be able to monitor for token approval and transfer events. HAPI transactions like CryptoTransfer
, CryptoApproveAllowance
, CryptoDeleteAllowance
, TokenMint
, TokenWipe
, and TokenBurn
do not emit events that could be captured by monitoring tools like The Graph since they’re executed outside the EVM. To address, the mirror node now generates synthetic contract log events for these non-EVM HAPI transactions.
A new subscription API was designed for HIP-668 GraphQL API. Once it's implemented in a future release, the new contract log subscription will stream contract events to clients via a WebSocket connection.
For our Citus database transition, PostgreSQL 15 compatibility was verified and made the default for this v2 schema. The lookup of historical balance information via /api/v1/balances?timestamp=
was optimized for sharded databases so it stays performant. Performance testing showed a decrease in shard count could greatly improve performance so we lowered the number of shards from 32 to 16. This testing also allowed us to provide an initial recommended resource configuration for the Citus deployment.
There was a large focus on test improvements in this release. In addition to the aforementioned HIP-584 test coverage, we also optimized the acceptance tests to reduce the overall test duration in Kubernetes by half without reducing coverage. The acceptance test logs were cleaned up to reduce unnecessary log statements and standardize its output. The hbar balance used by the tests now is logged at the end of test execution. Acceptance tests for hollow account creation were added. We now generate multi-platform snapshot images from the main
branch for testing with local node. Testkube configuration was enhanced to make it more configurable. Finally, all Java test compiler warnings were fixed and will now fail the build if any future warnings occur.
Known Issues
There is a bug introduced by #5776 that causes the importer to fail on startup. It's recommended to hold off on upgrading to v0.79.0 until we can address this in a v0.79.1. Alternatively, it can be worked around by disabling the faulty migration by setting hedera.mirror.importer.migration.syntheticTokenAllowanceOwnerMigration.enabled=false
.
Enhancements
- Fix sidecar bytecode migration for partial mirror nodes (0.79) #5919
- HIP-584: Move updaters from services (0.79) #5883
- Increase REST API pod resources #5858
- Improve REST API throughput in Kubernetes #5857
- Build multi-platform snapshot images #5856
- Optimize past account balance query with time partitions #5827
- Update Citus to PostgreSQL 15 #5825
- Optimize past account balance query with time partition #5824
- Improve acceptance test node validation performance #5822
- Acceptance test node validation takes a long time #5821
- Allow additional testkube testsuite executionRequest variables #5808
- Allow additional testkube testsuite executionRequest variables #5807
- Improve acceptance test execution time and logs #5796
- Improve acceptance test execution time #5795
- Fix all java test compiler warnings #5773
- Copy unique token store model into hedera mirror web3 #5770
- PostgreSQL 15 support #5769
- Build multi-platform snapshot images #5768
- Reduce Citus default shard count to 16 #5767
- Optimize Go & Node.js docker builds #5766
- Initial design doc for graphql contract log subscriptions #5764
- HIP-584: Copy
UniqueToken
store model intohedera-mirror-web3
#5757 - Fix test compiler warnings #5749
- Add Acceptance Test for Hollow Account to Contract #5688
- Copy GasCalculators from hedera-services #5668
- Citus load balance queries across all nodes #5622
- HIP-584: Copy
GasCalculators
fromhedera-services
intohedera-mirror-web3
#5595 - HIP-584: Copy
hedera-services
prices and fee logic intohedera-mirror-web3
#5594 - HIP-584: Add acceptance tests for contract call with token precompile logic #5527
- Acceptance test finalize hollow account to contract #5423
- Design GraphQL contract log subscription #5411
- Implement creation of synthetic events for HTS transactions #5402
- HIP-584: Add acceptance tests for
eth_call
with token precompile logic #5300 - HIP-584: Add tests for non-fungible tokens #5299
- HIP-584: Add tests for fungible tokens #5298
- Create synth events for HAPI transactions #4738
- HIP-584: Copy price, fee and gas logic into
hedera-mirror-web3
#4007 - Citus: Determine minimum server group architecture #2685
Bug Fixes
- Fix HTS NFT Synthetic events logs (#5861) (0.79) #5884
- Increase importer pod cpu requests (0.79) #5882
- Create a file with 0B then use fileAppend to populate the content in PrecompileContractFeature tests #5816
- Create a file with 0B then use fileAppend to populate the content in PrecompileContractFeature tests #5815
- Fix SQL syntax in FixFungibleTokenTotalSupplyMigration for pg 13 #5811
- HIP-584: Disable allowance ERC precompile #5810
- FixFungibleTokenTotalSupplyMigration fails with pg13.6 #5809
- HIP-584: Fix flaky ERC acceptance tests behaviour #5780
- Add synthetic token allowance migration #5776
- HIP-584: Disable ERC acceptance tests by default #5772
- Refactor custom fee for contract call #5762
- Incorrect token allowance owner for synthetic crypto approve allowance transactions #5715
Dependency Upgrades
- Bump Spring Boot from 2.7.10 to 2.7.11 (0.79) #5885
- Bump github.com/Code-Hex/go-generics-cache from 1.2.1 to 1.3.0 in /hedera-mirror-rosetta #5855
- Bump aws-sdk from 2.1353.0 to 2.1360.0 in /hedera-mirror-rest #5854
- Bump hedera-evm from 0.36.0-alpha.3 to 0.36.2 #5850
- Bump software.amazon.awssdk:bom from 2.20.42 to 2.20.47 #5847
- Bump org.mockito:mockito-inline from 2.7.21 to 5.2.0 #5846
- Bump protobufVersion from 3.22.2 to 3.22.3 #5844
- Bump com.graphql-java:graphql-java-extended-scalars from 20.0 to 20.2 #5843
- Bump io.grpc:grpc-bom from 1.54.0 to 1.54.1 #5842
- Bump reactorGrpcVersion from 1.2.3 to 1.2.4 #5841
- Bump mapStructVersion from 1.5.3.Final to 1.5.4.Final #5840
- Bump github.com/prometheus/client_golang from 1.14.0 to 1.15.0 in /hedera-mirror-rosetta #5839
- Bump long from 5.2.1 to 5.2.3 in /hedera-mirror-rest #5838
- Bump gorm.io/gorm from 1.24.7-0.20230306060331-85eaf9eeda11 to 1.25.0 in /hedera-mirror-rosetta #5837
- Bump github.com/lib/pq from 1.10.7 to 1.10.8 in /hedera-mirror-rosetta #5835
- Bump jest-junit from 15.0.0 to 16.0.0 in /hedera-mirror-rest #5833
- Bump jest-junit from 15.0.0 to 16.0.0 in /hedera-mirror-rest/check-state-proof #5832
- Bump glob from 10.0.0 to 10.1.0 in /hedera-mirror-rest/check-state-proof #5831
- Bump
@godaddy
/terminus from 4.11.2 to 4.12.0 in /hedera-mirror-rest #5830 - Bump testcontainers from 9.4.0 to 9.5.0 in /hedera-mirror-rest #5829
- Bump jest-junit from 15.0.0 to 16.0.0 in /hedera-mirror-rest/monitoring/monitor_apis #5828
- Bump com.bmuschko:gradle-docker-plugin from 9.3.0 to 9.3.1 #5792
- Bump com.diffplug.spotless:spotless-plugin-gradle from 6.17.0 to 6.18.0 #5791
- Bump software.amazon.awssdk:bom from 2.20.37 to 2.20.42 #5790
- Bump com.google.cloud:spring-cloud-gcp-dependencies from 3.4.7 to 3.4.8 #5789
- Bump org.testcontainers:junit-jupiter from 1.17.6 to 1.18.0 #5788
- Bump com.graphql-java-generator:graphql-java-client-dependencies from 1.18.10 to 1.18.11 #5787
- Bump gradle.plugin.com.graphql-java-generator:graphql-gradle-plugin from 1.18.10 to 1.18.11 #5786
- Bump testcontainers from 9.3.0 to 9.4.0 in /hedera-mirror-rest #5785
- Bump mathjs from 11.7.0 to 11.8.0 in /hedera-mirror-rest #5784
- Bump aws-sdk from 2.1348.0 to 2.1353.0 in /hedera-mirror-rest #5783
- Bump glob from 9.3.4 to 10.0.0 in /hedera-mirror-rest/check-state-proof #5782
- Bump mathjs from 11.7.0 to 11.8.0 in /hedera-mirror-rest/monitoring/monitor_apis #5781
- Bump github.com/docker/docker from 20.10.7+incompatible to 20.10.24+incompatible in /hedera-mirror-rosetta #5760
- Bump versions for v0.79.0-SNAPSHOT #5754
- Bump com.hedera.hashgraph:sdk from 2.21.0 to 2.22.0 #5700
Contributors
We'd like to thank all the contributors who worked on this release!