github hashgraph/hedera-mirror-node v0.87.0

latest releases: v0.119.0-rc1, v0.118.0, v0.117.1...
15 months ago

This release wraps up the initiative to ensure we capture all changes to Hedera entities. One of the oldest tickets in the repository going back to 2019 was completed, finally persisting the FreezeTransaction details to the database. There's a new option to store the raw TransactionRecord protobuf bytes that is set to off by default. The custom fee table was split into separate main and history tables for consistency with other data and improved querying efficiency.

An asynchronous database migration was added to efficiently update every account's crypto allowance amount after support for live allowance tracking was implemented in the last release. Furthermore, new crypto and fungible acceptance tests verify the live allowance tracking works correctly. Finally, we now rerun conditional migrations that would historically run only on initial startup. For migrations like balance initialization this means we automatically correct account and token relationship balances after ingesting the first balance file. For other migrations, it means they are triggered automatically based upon a specific record file version being ingested.

The REST API had a couple of noticeable changes. We now show only active allowances in the /api/v1/accounts/{id}/allowances/crypto and /api/v1/accounts/{id}/allowances/tokens REST APIs, providing consistency with how consensus nodes return this data. The /api/v1/network/stake API saw a change in how its stake value is calculated by changing it to stake rewarded plus not rewarded.

HIP-584 EVM Archive Node saw a number of HederaTokenService precompiles implemented including allowance, getApproved, isApprovedForAll updateTokenExpiryInfo, updateTokenInfo, and updateTokenKeys. A large focus on testing resulted in increased integration and acceptance test coverage. The extra coverage resulted in a number of bugs being found and squashed, improving the reliability of /api/v1/contracts/call.

A lot of work went into the operations side of things as well. A good number of metrics and Grafana dashboards saw cleanup and improvements to aid in production monitoring. All chart dependencies saw version bumps and configuration adjustments to bring them up to date. Kubernetes 1.27 compatibility was confirmed as a deployment target while still ensuring backwards compatibility with prior Kubernetes versions. Compressed ZFS volume support now handles Kubernetes upgrades properly. Our Citus deployment saw an upgrade to Citus 12 with PostgreSQL 15. This release brings in the improvements we contributed upstream to Citus' create_time_partitions stored procedure so that it can support the bigint type that we use to store consensus timestamps. This allowed us to remove the pg_partman extension in favor of the native create_time_partitions. The pg_cron extension was also removed in favor of a Java-based scheduled service running on the importer.

Upgrading

If you're using the hedera-mirror-common Helm chart, there are some manual steps required to take before starting the upgrade:

kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml
kubectl apply -f https://raw.githubusercontent.com/traefik/traefik/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusagents.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_scrapeconfigs.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
kubectl apply --force-conflicts --server-side -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.66.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml
kubectl delete statefulset mirror-loki

Enhancements

  • Use @CustomLog instead of @Log4j2 #6673
  • Add persistence for TransactionRecord #6670
  • Remove JUnit Test Report action from CI #6669
  • Disable graphql account tests when no default account configured #6661
  • Improve importer dashboard #6653
  • Add missing graphs to importer dashboard #6652
  • HIP-584: Handle sent HBars for Token Create Precompile #6635
  • HIP-584: Estimate for contract creates and hollow account creation is too low #6620
  • Upgrade to Citus 12 #6611
  • Disable GraphQL 0.0.98 test by default #6610
  • Acceptance tests for token allowance amounts #6592
  • Only show active allowances in REST API #6591
  • Bump hedera-sdk-go to v2.27.0 #6590
  • HIP-584: HTS IsApprovedForAllPrecompile #6589
  • HIP-584: HTS AllowancePrecompile #6588
  • HIP-584: HTS GetApprovedPrecompile #6587
  • HIP-584: Provide implementation for AllowancePrecompile #6583
  • HIP-584: Provide implementation for IsApprovedForAllPrecompile #6582
  • HIP-584: Provide implementation for GetApprovedPrecompile #6581
  • Update chart dependencies #6579
  • Upgrade hedera-sdk-go to v2.27.0 #6578
  • Add async migration to fix crypto allowance amount #6577
  • Acceptance tests for remaining allowances #6576
  • HIP-584: Copy TokenUpdateResourceUsage and TokenUpdateUsage classes needed for token update operation #6573
  • HIP-584: Provide implementation for UpdateTokenKeysPrecompile #6571
  • Provided implementation for UpdateTokenExpiryInfoPrecompile #6570
  • HIP-584: Implement integration tests for token metadata & info functions for estimate_Gas #6569
  • HIP-584: Implement gas_estimate integration tests for erc readonly #6568
  • HIP-584: Add integration tests for getTokenExpiryInfo operation #6567
  • HIP-584: Add integration tests for read-only precompiles #6566
  • Rerun conditional migrations #6565
  • Update network stake to be stake rewarded plus not rewarded #6562
  • Persist freeze transaction details #6561
  • HIP-584: Handle read only precompile calls via ViewExecutor/RedirectViewExecutor #6557
  • Acceptance tests for remaining crypto and token allowance amounts #6553
  • Fix crypto allowance amount #6552
  • HIP-584: Copy abstract token update precompile #6547
  • Handle Kubernetes upgrades when using ZFS volumes #6512
  • HIP-584: Provide integration tests for IsTokenPrecompile #6463
  • HIP-584: Provide integration tests for GetTokenExpiryInfoPrecompile #6462
  • HIP-584: Provide integration tests for GetTokenKeyPrecompile #6461
  • HIP-584: Provide integration tests for GetTokenCustomFeesPrecompile #6460
  • Upgrade to Citus 12 #6449
  • HIP-584: Provide integration tests for AllowancePrecompile #6442
  • HIP-584: Provide integration tests for GetApprovedPrecompile #6441
  • HIP-584: Provide integration tests for IsApprovedForAllPrecompile #6440
  • HIP-584: Provide integration tests for TotalSupplyPrecompile #6439
  • HIP-584: Provide integration tests for TokenURIPrecompile #6438
  • HIP-584: Provide integration tests for SymbolPrecompile #6437
  • HIP-584: Provide integration tests for OwnerOfPrecompile #6436
  • HIP-584: Provide integration tests for NamePrecompile #6435
  • HIP-584: Provide integration tests for DecimalsPrecompile #6434
  • HIP-584: Provide integration tests for BalanceOfPrecompile #6433
  • Ensure time sensitive migrations run again during parser #6397
  • Change stake total to stake rewarded plus not rewarded #6394
  • HIP-584: Copy AbstractTokenUpdatePrecompile #6392
  • HIP-584: Provide implementation for update UpdateTokenExpiryInfoPrecompile #6390
  • HIP-584: Provide implementation for update TokenUpdateKeysPrecompile #6389
  • Crypto / Fungible token allowance REST API show deleted allowances #6380
  • Investigate/Implement solution for GKE when using ZFS #5990
  • Aggregate custom_fee rows and add history table #5775
  • HIP-584: Provide implementation for TokenUpdatePrecompile #5660
  • HIP-584: Provide integration tests for token metadata precompiles #5599
  • HIP-584: Provide integration tests for token info read-only precompiles #5598
  • HIP-584: Provide integration tests for ERC read-only precompiles #5597
  • Store raw TransactionRecord in database #432
  • Freeze Transactions not fully logged in the database #321

Bug Fixes

  • HIP-584: Fix transfer precompile alias conditions #6572
  • Fix HTS allowance when transferring using Ethereum Tools (0.87) #6736
  • HIP-584: Aliases are not resolved in web3 (0.87) #6735
  • HIP-584: Add integration tests for dynamic eth_call - part 1 (0.87) #6734
  • Fix allowance acceptance test failing in previewnet (0.87) #6714
  • Fix alarms caused by premature close error in rest monitor (0.87) #6713
  • Fix race condition in SyntheticCryptoTransferApprovalsMigrationTest #6705
  • Add JsonB Converter to database accessor #6704
  • Custom Fees Acceptance Tests not using ObjectToStringSerializer #6699
  • Fix Citus indexes and properties #6685
  • Adjust Citus settings #6684
  • Fix flaky REST API PostgreSQL test container #6666
  • REST PostgreSQL testcontainer sometimes fails to start #6665
  • Builder failure in github gradle workflow #6664
  • Fix build failure #6663
  • Fix entity stake calculator issues in corner cases #6662
  • Disable itemized transfers by default #6658
  • HIP-584: Alias prioritisation #6656
  • Update History Upserts to persist existing non-updatable values #6655
  • Fix failing chart install workflow #6654
  • Use go 1.20 in rosetta BDD test in workflow #6651
  • Rosetta BDD test fails to build in workflow after upgrading go-ethereum #6650
  • Verify token creation on mirror node during acceptance tests #6649
  • Verify token creation on mirror node during acceptance tests #6648
  • HIP-584: Properly update newly created create2 contract in state #6634
  • HIP-584: Fix too low estimate values for auto account creation and contract create #6633
  • Fix timezone in Java logs #6625
  • Inconsistent timezone in logs #6624
  • Chart install workflow frequently fails #6615
  • Entity stake calculator gets stuck in resettable environment or partial mirrornode #6614
  • Suppress protobufjs false positive #6563
  • The upsert framework may set history row's created_timestamp wrong #6504

Documentation

  • Creating a working example for contract calls #6630

Dependency Upgrades

  • Revert min nodejs to v16.13.0 for hedera-mirror-rest (0.87) #6730
  • Bump gorm.io/gorm from 1.25.3 to 1.25.4 in /hedera-mirror-rosetta #6695
  • Bump github.com/go-playground/validator/v10 from 10.15.0 to 10.15.1 in /hedera-mirror-rosetta #6694
  • Bump @aws-sdk/client-s3 from 3.388.0 to 3.395.0 in /hedera-mirror-rest #6693
  • Bump pg from 8.11.2 to 8.11.3 in /hedera-mirror-rest #6692
  • Bump protobufVersion from 3.24.0 to 3.24.1 #6690
  • Bump com.github.node-gradle:gradle-node-plugin from 5.0.0 to 7.0.0 #6689
  • Bump io.projectreactor:reactor-core-micrometer from 1.0.8 to 1.0.9 #6688
  • Bump software.amazon.awssdk:bom from 2.20.125 to 2.20.130 #6687
  • Bump io.grpc:grpc-bom from 1.57.1 to 1.57.2 #6686
  • Bump Gradle from 8.2.1 to 8.3 #6674
  • Bump rewire from 6.0.0 to 7.0.0 in /hedera-mirror-rest #6646
  • Bump @aws-sdk/client-s3 from 3.385.0 to 3.388.0 in /hedera-mirror-rest #6645
  • Bump testcontainers from 10.0.2 to 10.2.0 in /hedera-mirror-rest #6644
  • Bump gorm.io/gorm from 1.25.2 to 1.25.3 in /hedera-mirror-rosetta #6643
  • Bump github.com/ethereum/go-ethereum from 1.12.0 to 1.12.2 in /hedera-mirror-rosetta #6642
  • Bump software.amazon.awssdk:bom from 2.20.120 to 2.20.125 #6641
  • Bump io.freefair.gradle:lombok-plugin from 8.1.0 to 8.2.2 #6640
  • Bump io.spring.gradle:dependency-management-plugin from 1.1.2 to 1.1.3 #6639
  • Bump protobufVersion from 3.23.4 to 3.24.0 #6638
  • Bump testcontainersSpringBootVersion from 3.0.0-RC8 to 3.0.0-RC9 #6637
  • Bump com.esaulpaugh:headlong from 9.3.0 to 9.4.0 #6636
  • Bump io.grpc:grpc-bom from 1.57.0 to 1.57.1 #6604
  • Bump org.msgpack:jackson-dataformat-msgpack from 0.9.4 to 0.9.5 #6603
  • Bump github.com/go-playground/validator/v10 from 10.14.1 to 10.15.0 in /hedera-mirror-rosetta #6602
  • Bump com.google.guava:guava from 32.1.1-jre to 32.1.2-jre #6601
  • Bump com.hedera.hashgraph:sdk from 2.26.0 to 2.27.0 #6600
  • Bump com.bmuschko:gradle-docker-plugin from 9.3.1 to 9.3.2 #6599
  • Bump software.amazon.awssdk:bom from 2.20.115 to 2.20.120 #6598
  • Bump testcontainers from 9.12.0 to 10.0.2 in /hedera-mirror-rest #6597
  • Bump pg from 8.11.1 to 8.11.2 in /hedera-mirror-rest #6596
  • Bump @aws-sdk/client-s3 from 3.379.1 to 3.385.0 in /hedera-mirror-rest #6595
  • Bump jest-extended from 4.0.0 to 4.0.1 in /hedera-mirror-rest #6594
  • Bump eslint-config-prettier from 8.9.0 to 9.0.0 in /hedera-mirror-rest #6593
  • Update chart dependencies #6580
  • Bump Java from 17.0.7 to 17.0.8 #6575
  • Bump versions for v0.87.0-SNAPSHOT #6560

Contributors

We'd like to thank all the contributors who worked on this release!

Don't miss a new hedera-mirror-node release

NewReleases is sending notifications on new releases.