This release continues the focus on Smart Contracts 2.0. The mirror node is useful for debugging a smart contract execution and our focus has been on providing APIs to make developers' lives easier. To that end, we added support for transaction ID nonce, a new contract logs REST API, and a new web3 API component.
The new Web3 API module provides an implementation of existing JSON-RPC APIs for the Hedera network. JSON-RPC API is a widely used standard for interacting with distributed ledgers. The aim in providing a Hedera implementation of these APIs is to ease the migration of existing dApps to Hedera and simplify the developer on-ramp. Currently, the Web3 module only provides a partial implementation of the Ethereum JSON-RPC API. Specifically, only the eth_blockNumber
method has been implemented in this release as we focused on putting the groundwork in place first.
As part of HIP-32 and HIP-206 a nonce
field was added to the TransactionID
protobuf to guarantee uniqueness for platform generated transactions. This nonce
field was added to any REST API that returns transaction data. A nonce
query parameter was added to /api/v1/transactions/:transactionId
, /api/v1/transactions/:transactionId/stateproof
, and /api/v1/contracts/results/:transactionId
to be able to distinguish between a user-submitted transaction and an internal transaction generated as a result of that transaction. Note that /api/v1/transactions/:transactionId
without a nonce
parameter will default to returning all transactions regardless of nonce while the other APIs will default nonce
to 0
.
The new /api/v1/contracts/{id}/results/logs
REST API provides a search API to query for logs across contract executions for a particular contract. Searching by consensus timestamp and topics is supported. Note that for performance reasons it doesn't currently support pagination and requires a timestamp or timestamp range be provided to search by topic.
GET /api/v1/contracts/0.0.4660/results/logs
{
"logs": [
{
"address": "0x0000000000000000000000000000000000001234",
"contract_id": "0.0.4660",
"data": "0x8f705727c88764031b98fc32c314f8f9e463fb62",
"index": 0,
"root_contract_id": "0.0.1",
"timestamp": "12345.10002",
"topics": [
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
"0x59d088293f09d5119d5b55858b989ffce4d398dc"
]
},
{
"address": "0x0000000000000000000000000000000000001234",
"contract_id": "0.0.4660",
"bloom": "0x8f705727c88764031b98fc32c314f8f9e463fb62",
"data": "0x1513001083c899b1996ec7fa33621e2c340203f0",
"index": 1,
"root_contract_id": "0.0.2",
"timestamp": "12345.10002",
"topics": [
"af846d22986843e3d25981b94ce181adc556b334ccfdd8225762d7f709841df0",
"0000000000000000000000000000000000000000000000000000000000000765"
]
}
]
}
Enhancements
- Support Transaction ID nonce #3041
- Increase wait time in rosetta-api github workflow #3021
- Add hedera-mirror-web3 module #3014
- Update REST models to use getFullName #3008
- Add contract results support to acceptance tests #3003
- List contracts in descending order by default #2974
- Web3 eth_blockNumber #2953
- Support Transaction ID nonce #2952
- Contract logs REST API #2930
- Set Contract List REST API ordering to DESC #2915
- Web3 API module #2873
- Search contract logs REST API #2871
Bug Fixes
- Fix auto created account alias not cached (0.47) #3059
- Downgrade Flyway from 8.0.4 to 7.15.0 for PostgreSQL 9.6 compatibility (0.47) #3058
- Fix test image build #3051
- Fix accounts query with balance only query param performance regression #3018
- Fix account balance file ingestion performance issue #3000
- Update GCP Marketplace #2996
- INSUFFICIENT_GAS during acceptance test #2981
- Timeout chart workflow #2973
- Fix artifact name clash in rosetta-api.yml #2971
- Artifact name clash in rosetta-api github workflow #2970
- Account balance file parsing is very slow #2967
Dependency Upgrades
- Bump reporting-plugin from 7.0.0 to 7.1.1 #3048
- Bump dependency-check-maven from 6.5.0 to 6.5.1 #3047
- Bump express from 4.17.1 to 4.17.2 in /hedera-mirror-rest #3046
- Bump vertx-pg-client from 4.2.1 to 4.2.2 #3045
- Bump docker-maven-plugin from 0.38.0 to 0.38.1 #3044
- Bump testcontainers from 8.1.0 to 8.1.2 in /hedera-mirror-rest #3037
- Bump software.amazon.awssdk:bom from 2.17.99 to 2.17.100 #3034
- Bump jest from 27.4.4 to 27.4.5 in /hedera-mirror-rest/monitoring/monitor_apis #3033
- Bump springdoc-openapi-webflux-ui from 1.6.0 to 1.6.2 #3032
- Bump grpc.version from 1.42.1 to 1.43.0 #3031
- Bump rewire from 5.0.0 to 6.0.0 in /hedera-mirror-rest #3029
- Bump http-errors from 1.8.1 to 2.0.0 in /hedera-mirror-rest/monitoring/monitor_apis #3028
- Bump express from 4.17.1 to 4.17.2 in /hedera-mirror-rest/monitoring/monitor_apis #3027
- Bump log4j2 from 2.16.0 to 2.17.0 #3026
- Bump json-schema from 0.2.3 to 0.4.0 #3019
- Bump swagger-ui-express from 4.2.0 to 4.3.0 #3016
- Bump log4j2 from 2.15.0 to 2.16.0 #3004
- Bump jest from 27.4.3 to 27.4.4 in /hedera-mirror-rest #2995
- Bump embedded.testcontainers.version from 2.0.16 to 2.0.18 #2994
- Bump github.com/coinbase/rosetta-sdk-go from 0.7.1 to 0.7.2 in /hedera-mirror-rosetta #2993
- Bump jest from 27.4.3 to 27.4.4 in /hedera-mirror-rest/check-state-proof #2992
- Bump springdoc-openapi-webflux-ui from 1.5.13 to 1.6.0 #2991
- Bump software.amazon.awssdk:bom from 2.17.96 to 2.17.99 #2989
- Bump body-parser from 1.19.0 to 1.19.1 in /hedera-mirror-rest/monitoring/monitor_apis #2988
- Bump qs from 6.10.1 to 6.10.2 in /hedera-mirror-rest #2987
- Bump jest from 27.4.3 to 27.4.4 in /hedera-mirror-rest/monitoring/monitor_apis #2986
- Bump spring-cloud-gcp-dependencies from 2.0.5 to 2.0.6 #2985
- Bump body-parser from 1.19.0 to 1.19.1 in /hedera-mirror-rest #2984
- Bump aws-sdk from 2.1043.0 to 2.1046.0 in /hedera-mirror-rest #2983
- Bump testcontainers from 7.24.0 to 8.1.0 in /hedera-mirror-rest #2982
- Disable log4j2 message lookups #2980
- Bump log4j2 to 2.15.0 #2976
- Bump spring-boot-starter-parent from 2.5.6 to 2.6.1 #2933
Contributors
We'd like to thank all the contributors who worked on this release!