The new /api/v1/contracts/call
REST API as specified in HIP-584 is finally ready for initial production use. This release adds support for rate limiting the API with an initial value of 100 requests per second per instance. Tags were added to the gas per second metric to indicate if the request was a call, an estimate, or resulted in an error for increased observability. Various bug fixes were also addressed.
HIP-668 GraphQL API was added to our deployment with the addition of a new helm chart for this API. This will allow for initial use of the API in all environments with the understanding that it's still very much alpha and subject to change.
We made a lot of headway on our Citus integration. Citus was upgraded to 11.2 which showed a nice 15-20% performance boost for a number of query patterns. We optimized the contract results APIs performance by distributing based upon contract ID instead of payer account. Search for a transaction by its hash on Citus was improved by adding the distribution column to the query and limiting the results to a timestamp range. The search for an account by its ID also saw improvements on Citus.
Breaking Changes
The Helm charts contain some breaking changes to be aware of. The hedera-mirror
wrapper chart enables the new hedera-mirror-graphql
sub-chart by default. The GraphQL deployment requires a new mirror_graphql
database user to exist for it to successfully start up. You can create the user by logging into the database as owner and executing the following SQL query:
create user mirror_graphql with login password 'password' in role readonly;
If you're using the embedded PostgreSQL sub-chart (which we don't recommend for production use), then you'll have to delete its StatefulSet before upgrading due to a major bump in its chart version.
The hedera-mirror-common
chart had all of its components upgraded to new major versions that include breaking changes. If you're using this chart, run the following commands before upgrading:
kubectl delete daemonset mirror-prometheus-node-exporter
kubectl delete daemonset mirror-traefik
kubectl delete statefulset mirror-loki
kubectl delete ingressroute mirror-traefik-dashboard
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml
kubectl apply --server-side --force-conflicts=true -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.63.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml
Enhancements
- Improve the performance of the contract results API for Citus #5441
- Upgrade Citus to v11.2.0 #5438
- HIP-584: Add revert reason for failing requests in web3 module #5399
- HIP-584: Enhance gas per second metrics with dynamic tags #5397
- Add GraphQL Helm chart #5380
- Adding rate limit capabilities for eth_call #5363
- Optimize search transaction by hash query for citus #5353
- Improve performance of get account by ID on Citus #5351
- GraphQL Helm chart #5305
- Citus optimize get contract results query #5232
- Citus optimize get account by id query #5228
- Citus optimize search transaction by hash query #5227
- HIP-584: Implement rate limit strategy for the Spring Webflux layer in web3 #5051
Bug Fixes
- Ensure OS packages are kept up to date #5510
- OS packages out of date #5509
- Fix gRPC dashboard #5478
- Broken graphs on gRPC Grafana dashboard #5477
- Add fungible token transfers to errata migration #5473
- Errata migration missed fungible token transfers #5472
- Add errata for missing transactions #5440
- Errata for mainnet issue #5437
- Eth_call account operation with eth address fix #5436
- Revert spring-cloud-gcp-dependencies #5418
- Fix rest-monitor production docker image build #5414
- Gradle build job in github workflow ignores test failure #5401
Documentation
- Create a bucket restructuring HIP #4875
Dependency Upgrades
- Bump io.freefair.gradle:lombok-plugin from 6.6.2 to 6.6.3 #5496
- Bump body-parser from 1.20.1 to 1.20.2 in /hedera-mirror-rest #5489
- Bump github.com/ethereum/go-ethereum from 1.11.1 to 1.11.2 in /hedera-mirror-rosetta #5488
- Bump mathjs from 11.5.1 to 11.6.0 in /hedera-mirror-rest #5485
- Bump mathjs from 11.5.1 to 11.6.0 in /hedera-mirror-rest/monitoring/monitor_apis #5482
- Bump body-parser from 1.20.1 to 1.20.2 in /hedera-mirror-rest/monitoring/monitor_apis #5480
- Bump yargs from 17.6.2 to 17.7.1 in /hedera-mirror-rest/check-state-proof #5465
- Bump gorm.io/driver/postgres from 1.4.7 to 1.4.8 in /hedera-mirror-rosetta #5463
- Bump github.com/ethereum/go-ethereum from 1.10.26 to 1.11.1 in /hedera-mirror-rosetta #5462
- Bump protobufVersion from 3.21.12 to 3.22.0 #5461
- Bump com.esaulpaugh:headlong from 9.1.1 to 9.2.0 #5459
- Bump software.amazon.awssdk:bom from 2.20.2 to 2.20.7 #5458
- Bump io.freefair.gradle:lombok-plugin from 6.6.1 to 6.6.2 #5456
- Bump org.sonarsource.scanner.gradle:sonarqube-gradle-plugin from 3.5.0.2730 to 4.0.0.2929 #5455
- Bump org.openapitools:openapi-generator-gradle-plugin from 6.3.0 to 6.4.0 #5454
- Bump org.owasp:dependency-check-gradle from 8.0.2 to 8.1.0 #5453
- Bump swagger-ui-express from 4.6.0 to 4.6.1 in /hedera-mirror-rest #5452
- Bump jest from 29.4.2 to 29.4.3 in /hedera-mirror-rest #5451
- Bump jest from 29.4.2 to 29.4.3 in /hedera-mirror-rest/check-state-proof #5449
- Bump jest from 29.4.2 to 29.4.3 in /hedera-mirror-rest/monitoring/monitor_apis #5447
- Bump
@hashgraph
/proto from 2.11.2 to 2.12.0 in /hedera-mirror-rest/check-state-proof #5446 - Bump jest-extended from 3.2.3 to 3.2.4 in /hedera-mirror-rest #5445
- Bump testcontainers from 9.1.2 to 9.1.3 in /hedera-mirror-rest #5444
- Bump golang.org/x/net from 0.5.0 to 0.7.0 in /hedera-mirror-rosetta #5439
- Update chart dependencies #5427
- Revert spring-cloud-gcp-dependencies version bump #5420
- Bump versions for v0.76.0-SNAPSHOT #5413
- Update chart dependencies #5407
- Bump software.amazon.awssdk:bom from 2.19.31 to 2.20.2 #5396
- Bump com.diffplug.spotless:spotless-plugin-gradle from 6.14.1 to 6.15.0 #5393
- Bump io.grpc:grpc-bom from 1.52.1 to 1.53.0 #5392
- Bump com.google.cloud:spring-cloud-gcp-dependencies from 3.4.3 to 4.1.0 #5391
- Bump com.bmuschko:gradle-docker-plugin from 9.2.0 to 9.2.1 #5390
- Bump gorm.io/driver/postgres from 1.4.6 to 1.4.7 in /hedera-mirror-rosetta #5389
- Bump github.com/jackc/pgtype from 1.13.0 to 1.14.0 in /hedera-mirror-rosetta #5388
- Bump express-openapi-validator from 5.0.1 to 5.0.2 in /hedera-mirror-rest #5387
- Bump jest from 29.4.1 to 29.4.2 in /hedera-mirror-rest/check-state-proof #5386
- Bump testcontainers from 9.1.1 to 9.1.2 in /hedera-mirror-rest #5385
- Bump jest from 29.4.1 to 29.4.2 in /hedera-mirror-rest #5384
- Bump jest from 29.4.1 to 29.4.2 in /hedera-mirror-rest/monitoring/monitor_apis #5383
- Bump aws-sdk from 2.1309.0 to 2.1313.0 in /hedera-mirror-rest #5382
Contributors
We'd like to thank all the contributors who worked on this release!