There was a ton of progress towards our goal capturing all entity changes. This release adds the highly requested feature of tracking the remaining hbar and fungible token allowances and showing it via the amount
field on the REST API. Importantly, this tracking only applies to new or updated allowances. Existing allowances will see their remaining allowance adjusted appropriately in the next release.
Traditionally, the mirror node has only stored the aggregated transfers from the transaction record. Now in addition we store the itemized transfers from the transaction body by default and embed it within the transaction
table. For partial mirror nodes, we now create entities during balance initialization. This means even if a mirror node starts up now this migration can be rerun to create every account and contract with accurate balance information. In the next release, we'll extend this to automatically rerun this migration when processing the first account balance file.
Finally, we added an entity_transaction
join table to start tracking all entities associated with a transaction. This will enable us provide a better transaction search experience and find all transactions associated with an entity. This functionality is disabled in this release as we iterate on it to make it performant.
Support for Ethereum transaction type 1 as specified in EIP-2930 is now available. Previously only legacy and type 2 Ethereum transactions were supported. The new EIP-2930 transactions can be sent either directly to HAPI via an EthereumTransaction or via the JSON-RPC Relay.
HIP-584 EVM Archive node saw a large number of precompiles implemented. This includes all of the following:
approve
approveNFT
associateToken
associateTokens
burnToken
createFungibleToken
createFungibleTokenWithCustomFees
createNonFungibleToken
createNonFungibleTokenWithCustomFees
deleteToken
freezeToken
pauseToken
setApprovalForAll
transferFrom
transferFromNFT
transferNFT
transferNFTs
transferToken
transferTokens
unfreezeToken
unpauseToken
Enhancements
- Add Entity Transaction #6521
- HIP-584: Copy
GetTxnRecordResourceUsage
from services #6516 - HIP-584: Copy token update logic #6510
- HIP-584: Copy
GetTxnRecordResourceUsage
from services #6499 - Update testnet bucket name for 2023-07 reset #6497
- Update testnet bucket name for 2023-07 reset #6496
- Add parsing support for EIP 2930 transactions #6495
- Add EIP 2930 transaction parsing support to importer #6494
- HIP-584: Add tests for eth_call functions with alias accounts #6479
- Create entities during balance initialization #6467
- HIP-584: ERC read-only precompiles enabler #6466
- HIP-584: Add tests for eth_call with account alias address #6465
- Apply spotless to all files #6459
- HIP-584: Provide implementation for ERC transfer precompiles #6455
- HIP-584: Copy Freeze/Unfreeze Logics and Precompiles #6453
- HIP-584: copy
SetApprovalForAllPrecompile
#6452 - HIP-584: Copied UnpauseLogic and UnpausePrecompile #6447
- HIP-584: Copy ApprovePrecompile #6446
- HIP-584: Copied PauseLogic and PausePrecompile #6445
- HIP-584: modify
HtsPrecompiledContract
to work with write operations from dynamic context #6444 - HIP-584: Enable shanghai support #6443
- Remove long to Instant conversions in gRPC API #6429
- Reduce unnecessary long to Instant conversion in gRPC API #6427
- HIP-584: Refactor Precompiles #6420
- HIP-584: Copy DeleteLogic and DeleteTokenPrecompile #6419
- HIP-584: Copied RevokeKycPrecompile #6412
- HIP-584: Copy
TokenUpdateLogic
#6393 - HIP-584: Copy
DeleteLogic
#6391 - HIP-584: Copy and adapt implementation for Create Token precompile Part 2 #6386
- Replace non_fee_transfers with itemized transfers #6381
- Track remaining crypto and fungible token allowances #6336
- HIP-584: Copy
UnpausePrecompile
#6327 - HIP-584: Copy
PausePrecompile
#6326 - HIP-584: Copy
UnpauseLogic
#6325 - HIP-584: Copy
PauseLogic
#6324 - Add EntityTransaction #6303
- Store the itemized transfers from the body #6301
- HIP-584: Copy
FreezeLogic
andUnfreezeLogic
#6237 - HIP-584: Provide implementation for transfer precompiles - Part2 #6199
- HIP-584: Provide implementation for RevokeKycPrecompile #5659
- HIP-584: Provide implementation for freeze and unfreeze precompiles #5658
- HIP-584: Provide implementation for
DeleteTokenPrecompile
#5657 - HIP-584: Provide implementation for ERC transfer precompiles #5654
- HIP-584: Copy implementation for approve precompiles #5652
- HIP-584: Provide implementation for crypto transfer precompiles #5650
- HIP-584: Provide implementation for create token precompiles #5649
- Cannot Query Account Balances in v0.67.1 #4763
- HIP-336 Track remaining crypto and fungible token allowances #3576
Bug Fixes
- Move session temp_buffers settings to HikariCP connection init sql #6556
- Importer batch upserter fails #6555
- Fix getNodes API attempting to update stake #6526
- getNodes gRPC API returns Unknown error #6525
- Fix acceptance test network downtime recovery #6524
- Acceptance tests do not recover from consensus node downtime #6523
- Fix slow contracts results REST API endpoint #6515
- /contracts/results times out in k6 perf test #6513
- HIP-584: Adapt resolving address for evm addressed contract with long zero address eth_call #6508
- Fix slow entity stake history migration #6502
- DB migration 1.83.1 entity stake history is very slow #6501
eth_call
returnsINTERNAL_ERROR
when calling a contract by its long zero address #6498- HIP-584: Fix contractId key in contract call #6489
- Check associated flag on token balance endpoint #6482
- Token balance REST API shows dissociated accounts #6481
getTokenKey
method returns empty struct for key of type ContractID #6478- HIP-584: Adapt Mirror Archive Node to respect alias addresses #6454
- HIP-584: Calling eth_call with account alias address returns empty result #6451
- HIP-584: fix
RevokeKycPrecompile
compilation error #6432 - Optimize 10K TPS ingest performance #6295
Dependency Upgrades
- Bump
@aws-sdk
/client-s3 from 3.374.0 to 3.379.1 in /hedera-mirror-rest #6543 - Bump eslint-config-prettier from 8.8.0 to 8.9.0 in /hedera-mirror-rest #6542
- Bump jest from 29.6.1 to 29.6.2 in /hedera-mirror-rest #6541
- Bump jest from 29.6.1 to 29.6.2 in /hedera-mirror-rest/check-state-proof #6540
- Bump node-fetch from 3.3.1 to 3.3.2 in /hedera-mirror-rest/check-state-proof #6539
- Bump node-fetch from 3.3.1 to 3.3.2 in /hedera-mirror-rest/monitoring/monitor_apis #6538
- Bump jest from 29.6.1 to 29.6.2 in /hedera-mirror-rest/monitoring/monitor_apis #6537
- Bump mathjs from 11.9.0 to 11.9.1 in /hedera-mirror-rest/monitoring/monitor_apis #6536
- Bump org.springframework.cloud:spring-cloud-dependencies from 2022.0.3 to 2022.0.4 #6534
- Bump org.gradle:test-retry-gradle-plugin from 1.5.3 to 1.5.4 #6533
- Bump software.amazon.awssdk:bom from 2.20.109 to 2.20.115 #6532
- Bump io.grpc:grpc-bom from 1.56.1 to 1.57.0 #6531
- Revert Dependabot sonarqube bump #6486
- Revert bump org.sonarsource.scanner.gradle:sonarqube-gradle-plugin from 4.2.1.3168 to 4.3.0.3225 #6485
- Bump mathjs from 11.9.0 to 11.9.1 in /hedera-mirror-rest #6480
- Bump
@aws-sdk
/client-s3 from 3.370.0 to 3.374.0 in /hedera-mirror-rest #6477 - Bump
@hashgraph
/proto from 2.12.0 to 2.13.0 in /hedera-mirror-rest #6476 - Bump testcontainers from 9.10.1 to 9.12.0 in /hedera-mirror-rest #6475
- Bump mathjs from 11.8.2 to 11.9.0 in /hedera-mirror-rest #6474
- Bump mathjs from 11.8.2 to 11.9.0 in /hedera-mirror-rest/monitoring/monitor_apis #6473
- Bump com.hedera.hashgraph:sdk from 2.25.0 to 2.26.0 #6472
- Bump org.sonarsource.scanner.gradle:sonarqube-gradle-plugin from 4.2.1.3168 to 4.3.0.3225 #6471
- Bump software.amazon.awssdk:bom from 2.20.103 to 2.20.109 #6470
- Bump com.diffplug.spotless:spotless-plugin-gradle from 6.19.0 to 6.20.0 #6469
- Bump
@hashgraph
/proto from 2.12.0 to 2.13.0 in /hedera-mirror-rest/check-state-proof #6468 - Bump Spring Boot from 3.1.1 to 3.1.2 #6458
- Bump Node.js from 18.16.0 to 18.17.0 #6457
- Bump Gradle from 8.1.1 to 8.2.1 #6450
- Bump versions for v0.86.0-SNAPSHOT #6431
Contributors
We'd like to thank all the contributors who worked on this release!