In this release we made the highly requested change to show the list of NFT transfers on the transactions list REST API. Originally, only the /api/v1/transactions/{id}
showed the list of nft_transfers
due to performance concerns with joining on another large table for such a heavily used and heavyweight API. To show this information while staying performant, we had to denormalize the NFT transfer information to nest it under the transaction
table as a JSONB column. This avoids an extra join and allows us to return the given information with the existing query.
The mirror node is focused on tracking all possible changes to Hedera entities over time. To that end a NFT history table was created to capture all possible changes to a NFT over time. In addition to persisting this data, we're also exposing more of this historical information via the API. Now when the timestamp
parameter is supplied on the /api/v1/accounts/{id}
endpoint it will show the historical view of that account. Previously, the parameter would only be used for displaying the list of transactions
at the given time. Expect additional improvements around historical entity information in the next release.
HIP-584 continues to make strides every release. This release focused on improving precompile support for /api/v1/contracts/call
. There is now support for the CREATE2 opcode along with non-static contract state reads for precompile and non-precompile functions. Non-static contract modifications for non-precompile functions (excluding lazy account creation) was also worked on. Finally, acceptance test coverage was greatly increased and a number of bugs were addressed.
This release adds integration with the Stackgres Operator to provide a highly available Citus deployment. Stackgres is an established Kubernetes operator for PostgreSQL and their support for the Citus extension has made it easy to provide a production ready deployment without depending upon expensive, cloud-specific managed database services. This along with the ZFS volume compression we added in a previous release should greatly reduce the total cost of running a mirror node while providing horizontal scalability.
Upgrading
Expect upgrading to take about an hour due to the large NFT transfer migration in this release. As always, it's recommended upgrades be completed in a staging environment first (e.g. a red/black deployment) to allow for deployment verification and reduce downtime before being opened up to customer traffic.
Enhancements
- HIP-584: Add tests for eth_call with modification functions #6240
- HIP-584: Update openapi specification support table for web3 calls #6234
- Show NFT transfers on transactions list API #6217
- Make the prune SQL from history repositories more efficient. #6216
- Change /transactions/{id} to use nested NFT transfers #6212
- Add NFT transfers to transactions list API #6208
- Change NFT history api to use nft table and nft_transfer jsonb column #6198
- Reverting changes to enable workflows on nft transfer epic branch. #6197
- Inefficient history repo prune SQL #6195
- Add a highly available Citus deployment via Stackgres Operator #6192
- HIP-584: Implement
AssociatePrecompile
#6173 - Add NFT history table #6172
- HIP-584: Copy Associate logic #6168
- HIP-584: Alias improvements #6161
- HIP-584: Provide implementation for transfer precompiles - Part1 #6155
- HIP-584: Enable CREATE2 operation by saving new alias to alias map #6154
- Cache and utilize StreamFilename path and incorporate node ID based path access in LocalStreamFileProvider #6153
- Migrate data in nft_transfer table to transaction table #6129
- Revert changes to enable workflows on nest nft transfer epic branch #6126
- HIP-584: Implement account deletion in Updater #6123
- HIP-584: Implement account deletion in Updater #6119
- Fix nft balance and state tracking with nested nft transfer #6116
- NFT history table #6112
- HIP-584: Add tests for eth_call modification functions #6108
- HIP-584: Integrate aliases map #6087
- HIP-584: Copy AbstractAutoCreationLogic into hedera-mirror-web3 #6086
- Enable LocalStreamFileProvider to access stream files from new node ID based bucket structure #6079
- HIP-584: Return correct address for CREATE2 in
HederaEvmStackedWorldStateUpdater
#6077 - HIP-584: Copy
AbstractAutoCreationLogic
intohedera-mirror-web3
#6076 - Remove networkPrefix property and rework network property usage. #6072
- HIP-584: Integrate aliases map into
StackedStateFrames
#6052 - Add support for historical account details on accounts endpoint #6034
- Create a
NestNftTransferMigration
async migration #6028 - HIP-584: Adapt MirrorHTSPrecompiledContract to accept precompile calls #6022
- Add NFT transfers to transactions list API #6011
- Change NFT history API to use nested NFT transfers #6010
- Change transaction by ID API to use nested NFT transfers #6009
- Nest NFT transfers under transaction #6008
- HIP-584: Adapt MirrorHTSPrecompiledContract to accept precompile calls #6005
- HIP-584: eth_estimateGas w/o precompiles tests #5973
- HIP-584: Copy
AssociateLogic
intohedera-mirror-web3
#5907 - Add support for historical account details on accounts API #5862
- Store/Cache pathName derived for NodeId based path #5759
- HIP-584: Copy precompile pricing logic for
gasFeeInTinybars
into hedera-mirror-node #5722 - HIP-584: Acceptance tests for simple
eth_estimateGas
scenarios #5499 - Citus investigate high availability #5233
- Show NFT transfers on transactions list API #4099
Bug Fixes
- Fix acceptance tests creating extra tokens (0.83) #6292
- HIP-584: Stabilize acceptance tests suite #6245
- HIP-584: Fix build #6211
- Disable network address book update in Rosetta #6206
- Rosetta unit test fails after address book update #6205
- Zero pad contract log data field #6189
- ZeroPad unformatted data fields in contract log #6188
- HIP-584: Fix regression issues with acceptance tests #6170
- Fix slow token account upsert #6157
- Token account upsert is slow #6152
- Fix null sender id in Synthetic Nft Allowance Migration #6151
- Synthetic Nft Allowance Owner Migration fails for null owner #6150
- HIP-584: Stabilize acceptance tests related to web3 module #6145
- Fix GCR image cleanup workflow regression #6128
- GCR image cleanup workflow fails after dedup fix #6127
- Fix GCR image cleanup workflow #6118
- Nightly GCR image cleanup workflow fails #6117
- Handle null hapiVersion in blocks API #6115
- hapi_version is null.null.null on blocks API #6069
Documentation
- Fix: typos #6190
Dependency Upgrades
- Bump netty from 4.1.92.Final to 4.1.94.Final #6247
- Bump io.hypersistence:hypersistence-utils-hibernate-62 from 3.4.2 to 3.4.4 #6233
- Bump software.amazon.awssdk:bom from 2.20.83 to 2.20.87 #6232
- Bump org.sonarsource.scanner.gradle:sonarqube-gradle-plugin from 4.2.0.3129 to 4.2.1.3168 #6230
- Bump com.hedera.hashgraph:hedera-protobuf-java-api from 0.38.10 to 0.39.1 #6229
- Bump testcontainersSpringBootVersion from 3.0.0-RC7 to 3.0.0-RC8 #6228
- Bump io.grpc:grpc-bom from 1.55.1 to 1.56.0 #6226
- Bump io.projectreactor:reactor-core-micrometer from 1.0.6 to 1.0.7 #6225
- Bump
@aws-sdk
/client-s3 from 3.350.0 to 3.354.0 in /hedera-mirror-rest #6224 - Bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 in /hedera-mirror-rosetta #6223
- Bump testcontainers from 9.8.0 to 9.9.1 in /hedera-mirror-rest #6222
- Bump sinon from 15.1.0 to 15.1.2 in /hedera-mirror-rest #6221
- Bump mathjs from 11.8.0 to 11.8.1 in /hedera-mirror-rest #6220
- Bump mathjs from 11.8.0 to 11.8.1 in /hedera-mirror-rest/monitoring/monitor_apis #6219
- Bump swagger-stats from 0.99.6 to 0.99.7 in /hedera-mirror-rest #6218
- Bump docker/build-push-action from 3 to 4 #6215
- Bump crazy-max/ghaction-import-gpg from 5.2.0 to 5.3.0 #6204
- Bump peter-evans/create-pull-request from 4 to 5 #6203
- Bump securego/gosec from 2.15.0 to 2.16.0 #6202
- Bump snakeyaml from 1.33 to 2.0 #6193
- Bump vertxVersion from 4.4.2 to 4.4.3 #6184
- Bump software.amazon.awssdk:bom from 2.20.78 to 2.20.83 #6183
- Bump com.google.guava:guava from 32.0.0-jre to 32.0.1-jre #6182
- Bump com.graphql-java-generator:graphql-java-client-runtime from 2.0 to 2.1 #6181
- Bump commons-io:commons-io from 2.12.0 to 2.13.0 #6180
- Bump parse-duration from 1.0.3 to 1.1.0 in /hedera-mirror-rest #6179
- Bump
@aws-sdk
/client-s3 from 3.345.0 to 3.350.0 in /hedera-mirror-rest #6178 - Bump jest-extended from 3.2.4 to 4.0.0 in /hedera-mirror-rest #6177
- Bump glob from 10.2.6 to 10.2.7 in /hedera-mirror-rest/check-state-proof #6176
- Bump parse-duration from 1.0.3 to 1.1.0 in /hedera-mirror-rest/monitoring/monitor_apis #6175
- Remove NPM overrides #6147
- Bump github.com/spf13/viper from 1.15.0 to 1.16.0 in /hedera-mirror-rosetta #6144
- Bump org.sonarsource.scanner.gradle:sonarqube-gradle-plugin from 4.1.0.3113 to 4.2.0.3129 #6143
- Bump org.testcontainers:junit-jupiter from 1.18.1 to 1.18.3 #6142
- Bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 in /hedera-mirror-rosetta #6141
- Bump io.hypersistence:hypersistence-utils-hibernate-62 from 3.4.1 to 3.4.2 #6140
- Bump software.amazon.awssdk:bom from 2.20.74 to 2.20.78 #6139
- Bump io.swagger.parser.v3:swagger-parser-v3 from 2.1.14 to 2.1.15 #6138
- Bump github.com/hashgraph/hedera-sdk-go/v2 from 2.24.2 to 2.24.3 in /hedera-mirror-rosetta #6137
- Bump io.cucumber:cucumber-bom from 7.12.0 to 7.12.1 #6136
- Bump github.com/stretchr/testify from 1.8.3 to 1.8.4 in /hedera-mirror-rosetta #6135
- Bump github.com/go-playground/validator/v10 from 10.14.0 to 10.14.1 in /hedera-mirror-rosetta #6134
- Bump
@aws-sdk
/client-s3 from 3.341.0 to 3.345.0 in /hedera-mirror-rest #6133 - Bump swagger-stats from 0.99.5 to 0.99.6 in /hedera-mirror-rest #6131
- Bump versions for v0.83.0-SNAPSHOT #6121
Contributors
We'd like to thank all the contributors who worked on this release!