Release v0.68
Release Highlights
Release v0.68 prepares the Hiero Consensus Node for Dynamic Address Book (DAB) node account ID changes as well as scheduled contract calls on Hiero Consensus Node. These changes are now live on Hedera testnet (Nov 13, 2025) and are scheduled for mainnet on Dec 10, 2025What's new in Release v0.68?
What's new in Release v0.68?
Build 0.68.2
What's Changed
What's Changed
- ci: Use mirrornode v0.142.2 in release/0.68 by @rbarker-dev in #22209
- chore: wait for process termination (#21986) by @poulok in #22217
Build 0.68.1
What's Changed
What's Changed
- feat: Cherry-pick (v68): Use streaming merkle trees for block proof hashes by @mhess-swl in #21994
- chore: (Cherry-pick) Add executed_hook_id to EvmTransactionResult by @Neeharika-Sompalli in #22017
- chore: cherry-pick PR #22019 (changing block item overhead to 5 bytes) by @timfn-hg in #22038
- fix: Always clear state when exiting RPC sync protocol (#22081) by @abies in #22089
- fix: BlockBufferService forceful BN Switch (#21803) by @derektriley in #21998
- ci(bug-fix): Get the tag for the release labeled latest (#22157) by @rbarker-dev in #22163
- fix: cherry-pick Block merkle tree optimizations by @derektriley in #22162
- fix: Re-enable gas throttle; disable ops duration throttle by @lukelee-sl in #22164
Build 0.68.0
What's Changed
What's Changed
- ci: Update SDPT and SDLT workflow to only tag when build ID is present by @andrewb1269hg in #20984
- fix: Add scheduling.maxExpirySecsToCheckPerUserTxn by @tinker-michaelj in #20987
- chore: Update incident_types by @rbarker-dev in #21055
- chore: replace input.ref with github.ref in single day controllers by @andrewb1269hg in #20988
- chore: Minor Version Roll to 0.67.0-SNAPSHOT by @andrewb1269hg in #21072
- feat: 17002: A concept of default MerkleDb instance seems redundant by @artemananiev in #19700
- chore: state validator rehash is too slow by @OlegMazurov in #21013
- chore(20698): Invert PlatformWiring and PlatformCoordinator relationship by @mxtartaglia-sl in #20758
- ci: Automatically generate the GH release by @rbarker-dev in #20970
- chore: Rework block node communication metrics by @timfn-hg in #20885
Release v0.67
Release Highlights
Release v0.67 enhances the stability and performance of the Hiero Consensus Node and updates. Continued progress was made on HIP-1081 Block Nodes, adding features to improve connectivity and metrics.What's new in Release v0.67?
What's new in Release v0.67?
- Improved Block Streaming Metrics: Metrics for communication between consensus and block nodes have been reworked for clarity and utility. Metric names no longer include the self-node ID, as this is now automatically added as a label
- Block Streaming Service Lifecycle: The startup and shutdown procedures for the
BlockBufferServiceandBlockNodeConnectionManagerhave been improved to ensure more reliable initialization and termination. - Enhanced Testing and CI: A large effort was invested in improving the test infrastructure, including adding test container support for block nodes, increasing test coverage for block node communication, and parallelizing test suite runs to accelerate the development cycle.
- Besu Upgrade: Upgraded Besu EVM to 25.2.2. The update introduces Besu Native Libraries Verification, which ensures that required native libraries are available on the host operating system. When these libraries are missing, Besu falls back to non-native implementations, which can reduce performance. This verification helps maintain optimal execution efficiency and consistency across nodes.
Build 0.67.2
What's Changed
What's Changed
- feat: Block Node communication cherry-picks by @derektriley in #21742
- fix(bug): (cherry-pick) Fix typo in GitHub release step (#21563) by @andrewb1269hg in #21760
- fix: Disable RPC sync by @abies in #21841
- fix: Re-enable gas throttle; disable ops duration throttle by @lukasz-hashgraph in #21845
Build 0.67.1
What's Changed
What's Changed
- chore: (0.67) Revert
HookDispatchauth by @tinker-michaelj in #21424 - chore: cherry-pick: improve BN communication logging (#20584) by @derektriley in #21486
- fix: 21374: Backport the fix for 19574 to release 0.67 by @artemananiev in #21393
- chore: cherry-pick return the old debug log message receiving acknowledgements (#21383) by @derektriley in #21526
- chore: cherry-pick Fix BN Comms tests in release candidate (#21537) by @derektriley in #21547
- fix: 21677: (0.67) Virtual pipeline should ignore detached copies by @artemananiev in #21678
- fix: 21696: (0.67) Temporary snapshots are not removed from data/saved/swirlds-tmp/ by @artemananiev in #21697
Build 0.67.0
What's Changed
What's Changed
- ci: Update SDPT and SDLT workflow to only tag when build ID is present by @andrewb1269hg in #20984
- fix: Add
scheduling.maxExpirySecsToCheckPerUserTxnby @tinker-michaelj in #20987 - chore: Update incident_types by @rbarker-dev in #21055
- chore: replace input.ref with github.ref in single day controllers by @andrewb1269hg in #20988
- chore: Minor Version Roll to 0.67.0-SNAPSHOT by @andrewb1269hg in #21072
- feat: 17002: A concept of default MerkleDb instance seems redundant by @artemananiev in #19700
- chore: state validator rehash is too slow by @OlegMazurov in #21013
- chore(20698): Invert PlatformWiring and PlatformCoordinator relationship by @mxtartaglia-sl in #20758
- chore: Fix
BalanceValidationflake by @Neeharika-Sompalli in #21306 - feat: CryptoTransfer changes for HookExecution by @Neeharika-Sompalli in #21279
Release v0.66
Release Highlights
With the introduction of batch transactions, Release v0.66 marks a key milestone in enhancing flexibility and certainty when executing complex use cases.What's new in Release v0.66?
What's new in Release v0.66?
Batch Transaction Processing (HIP-551)
Historically, Hiero developers have been limited to submitting and processing transactions individually. To create complex flows developers relied on smart contracts to execute the series of transactions and mirror node queries to monitor the status of submitted transactions, leading to increased latency, added code complexity, and greater risk of partial failures or errors.Release v0.66 introduces HIP-551 - Batch Transactions, allowing multiple transactions to be bundled and submitted as a single unit that guarantees ACID properties (atomicity, consistency, isolation, and durability). The network handles the batch atomically, ensuring consistent execution while providing granular receipts for each inner transaction. This new feature unlocks capabilities like streamlined dApp interactions, atomic multi-step operations, and consolidation of multiple transactions into one HAPI call.Key benefits:- Efficiency Gains: Increases efficiency by processing multiple transactions in one submission, ideal for high-volume applications like DeFi or NFTs.
- Developer Flexibility: Enables new use cases, such as batch token minting or multi-account updates, without requiring smart contracts.
- User Experience Improvements: Simplifies interactions for end-users, e.g., executing a series of approvals and transfers in a single step.
| SDK | Version |
|---|---|
| Java | v2.55.0+ |
| JavaScript | v2.64.0+ |
| Go | v2.61.0+ |
| Rust | v0.39.0+ |
| C++ | v0.40.0+ |
Advancements in Block Node Communication
The development of Block Nodes (HIP-1081) continues with this release, with the following development being done:State Export Tools: New commands and improvements for exporting states (Issue: #20622). This is a part of enabling block nodes to improve state snapshotting.Block Node Communication: Enhancements to the communication protocol between consensus nodes and block nodes. Provides better recovery and shutdown procedures to minimize downtime during events like freezes. (Issues: #20858, #20874)\Build 0.66.0
What's Changed
What's Changed
- chore(ci): Update Promote Build Candidate to include SDLT trigger by @rbarker-dev in #20552
- feat: 20383 Added
exportcommand by @imalygin in #20528 - chore: fixed the script name for sdct workflow by @tomzhenghedera in #20562
- test: Implement end to end cross-service test cases for Token Service and Crypto Service by @Evdokia-Georgieva in #19853
- chore: Add methods to suppress multiple node results in Otter by @poulok in #20525
- chore: Make
NetworkandNodeinterface getter methods consistent by @poulok in #20538 - test: Verify schedule execution independent of batch failure by @mhess-swl in #20496
- feat: 20383
exportcommand improvement by @imalygin in #20573 - test: Implement end to end test cases for auto account creation in batch transaction by @Evdokia-Georgieva in #20462
- chore: fix version setter name by @poulok in #20572
- fix: Include gRPC cert hash in synthetic
Node{Create,Update}by @tinker-michaelj in #20539 - chore: fix bug in SDLT workflow to report test pass fail correctly by @andrewb1269hg in #20575
- feat: add new coin field to event by @lpetrovic05 in #20501
- test: Implement end to end cross-service test cases for Token Service and Consensus Service by @Evdokia-Georgieva in #20529
- chore: Change BlockBufferService backpressure logic based on BlockStreamConfig StreamMode by @derektriley in #20516
- feat: Added health-check command for pcli by @abies in #20581
- feat: Create GenerateStateTool for Otter by @timo0 in #20591
- chore: Reenable
TraceabilitySuite.assertSidecars()by @tinker-michaelj in #20605 - chore: Separate Otter container gRPC APIs by @poulok in #20600
- chore: update test report titles in Slack reporting by @andrewb1269hg in #20550
- feat: move pre handle after consensus by @lpetrovic05 in #20598
- feat:
STALEStatus Code in Transaction Receipts by @derektriley in #20595 - chore: Update
PrivilegesVerifierfor0.0.<alias>account ids by @tinker-michaelj in #20592 - feat: HIP-1215 Define the java function selectors needed in schedule contract translator by @gkozyryatskyy in #20437
- chore: upgrade to teleport version 18.1.4 by @andrewb1269hg in #20621
- refactor: Refactor Otter container file system structure by @timo0 in #20617
- fix: Flaky keyRotationDoesNotChangeEvmAddress HAPI test by @JivkoKelchev in #20614
- refactor: Logging in container should use
WORKING_DIRby @timo0 in #20623 - refactor: small improvements related to the VMM by @thenswan in #20618
- test: crypto service mono parity tests by @joshmarinacci in #20197
- feat: 20609 Implemented export for all the states by @imalygin in #20622
- chore: Run the node in a separate container in Otter by @poulok in #20626
- test: to run LNG in Debug mode #20514 by @alex-kuzmin-hg in #20568
- test: #20579 To migrate CronClean to CN, under small-schedule runner to increase Uploaders’s resources for Cheetah by @alex-kuzmin-hg in #20580
- ci: add fail tags to single day test workflows by @andrewb1269hg in #20641
- feat: move transaction pool to execution by @lpetrovic05 in #20341
- refactor: move EntityIdFactory to app-spi by @thenswan in #20653
- chore: Cleanup legacy sys accounts by @tinker-michaelj in #20608
- refactor: 19307 Moved
MerkleStateRootand related classes to testFixtures by @imalygin in #20513 - fix: Fix the Otter Reconnect Test by @poulok in #20639
- chore: Replace tag-sdlt-passing tag-sdlpt-passing with appropriate tag-*-result by @rbarker-dev in #20669
- fix: Get batch state changes only when block stream is enabled by @JivkoKelchev in #20624
- test: Edge cases - Smart Contracts Service Tests Part 6 by @vtronkov in #20082
- docs: Clarify use of the term “far future” event by @poulok in #20661
- fix: pass sender and relayer for eth calls by @stoyanov-st in #20625
- refactor: move swirlds-state-api info package to the app-spi module by @thenswan in #20658
- chore: 20629: Default max VM size should be decreased to 1B by @artemananiev in #20630
- refactor: 19307 Moved
MerkleStateRootand related classes to testFixtures - revert by @imalygin in #20684 - chore: Revert feat:
STALEStatus Code in Transaction Receipts by @derektriley in #20656 - chore: UnzipUtility constraints not needed by @derektriley in #20690
- chore: update hederaCryptography package to 2.0.1 by @andrewb1269hg in #20685
- fix: Flaky keyRotationDoesNotChangeEvmAddress HAPI test by @JivkoKelchev in #20646
- fix: State Validator: reHash validation is trivial by @thenswan in #20613
- feat: ensure consensus engine event contract by @lpetrovic05 in #20672
- fix: 20691 Introduced
initialCapacitytoMerkleDbConfigby @imalygin in #20692 - fix: 20609 Fixed JSON output of
exportcommand by @imalygin in #20700 - fix: Remove
UnsupportedOperationExceptionfromRecordStreamBuilderby @tinker-michaelj in #20697 - feat: Re-enable batch transaction processing (HIP-551) by @mhess-swl in #20678
- fix: Turtle logging is too verbose by @timo0 in #20649
- ci: Remove milestone check from PR Formatting workflow by @rbarker-dev in #20716
- chore: Adapt Otter Consensus Assertion by @poulok in #20686
- docs(20242): Proposal refactoring the platform’s state synchronization by @mxtartaglia-sl in #20616
- fix: Shutdown channel at end of container tests by @poulok in #20727
- fix: Update verbage in SDLT to add clarity by @rbarker-dev in #20726
- ci: Update XTS and Build Promotion cron schedules by @rbarker-dev in #20734
- chore: Update Otter Container docs by @poulok in #20657
- feat: provide all stale events by @lpetrovic05 in #20721
- chore: 20706: Upgrade PBJ version in CN to 0.11.15 by @artemananiev in #20707
- chore: Isolate and partition nodes in Turtle by @netopyr in #20675
- feat: update multipliers to reflect worst case by @lukelee-sl in #20702
- fix: Fix DocExamplesTest.testDeterministicBehavior by @netopyr in #20761
- fix: Input param checks, add first unit tests by @mhess-swl in #20387
- build(deps): bump io.netty:netty-bom from 4.2.2.Final to 4.2.4.Final in /hiero-dependency-versions by @dependabot[bot] in #20176
- chore: Simplify ParallelExecutor API by @abies in #20647
- ci: require TCK test pass for XTS pass tag by @andrewb1269hg in #20747
- fix: HIP-632 isAuthorizedRaw to use proper signature verification by @bubo in #19728
- ci: Revert “ci: require TCK test pass for XTS pass tag (#20747)” by @andrewb1269hg in #20768
- ci: Add HAPI Testing (Misc Records) to PR checks and MATS by @rbarker-dev in #20394
- chore: Isolate container nodes by @netopyr in #20757
- ci: Integrate rootly incident action with XTS workflows by @rbarker-dev in #20602
- build: update hederaCryptography package to 2.0.2 by @anthony-swirldslabs in #20796
- fix: validator runs out of memory on large states by @OlegMazurov in #20793
- test: Switched NLG to version 0.6.2 by @alex-kuzmin-hg in #20765
- ci: Update rootly integration to use both rootly-alert-action and rootly-incident-action by @rbarker-dev in #20805
- fix: Fix flaky partition Otter tests by @poulok in #20785
- ci: Integrate rootly with deploy production release by @rbarker-dev in #20807
- ci: Integrate rootly with Prepare XTS by @rbarker-dev in #20815
- test: JMH score for CryptoBenchMerkleDb is unreliable by @OlegMazurov in #20814
- ci: Add rootly integration to zxcron-promote-build-candidate by @rbarker-dev in #20822
- ci: Integrate Rootly with MATS tests by @rbarker-dev in #20827
- feat: 20823 Added progress output to
exportcommand by @imalygin in #20825 - fix: StateAnalyzer throws IndexOutOfBoundsException by @OlegMazurov in #20832
- chore: Implement
HasScheduleCapacityCallby @tinker-michaelj in #20689 - fix(ci): result check missing from promote build failure report by @rbarker-dev in #20840
- chore: Add first yahcli-integrated @hapitest (v2) by @mhess-swl in #20826
- ci: Add mirror-node-regression workflow and add it to the XTS test suite by @rbarker-dev in #20749
- feat: Update
EndOfStreamhandling for acknowledgements by @derektriley in #20732 - test: Add more batch tests by @JivkoKelchev in #20799
- ci: Integrate rootly alerting within SDPT by @rbarker-dev in #20844
- fix: state validator rehash hangs on large states by @OlegMazurov in #20845
- chore: reduce logging levels to DEBUG for BN communication by @AlexKehayov in #20839
- feat: Utilize PbjGrpcClient stubs by @petreze in #20842
- ci: Add rootly integration to SDLT by @rbarker-dev in #20849
- ci: Build docker determinism with Jammie & Noble by @rbarker-dev in #20853
- ci: Add rootly integration to SDCT by @rbarker-dev in #20850
- ci: require TCK test pass for XTS pass tag by @andrewb1269hg in #20770
- chore: Implement
yahcli ivy vs --cryptoby @tinker-michaelj in #20846 - fix(ci): Invalid syntax wheen assigning rootly title to bash variable by @rbarker-dev in #20869
- test: #20553 added alerts/comparison to min thresholds in benchmarks by @alex-kuzmin-hg in #20837
- feat: BlockNodeConnection
CLOSEDstate by @derektriley in #20858 - chore: update teleport to new token by @andrewb1269hg in #20860
- feat: Block buffer resiliency by @timfn-hg in #20141
- feat: add block node communication XTS check by @MiroslavGatsanoga in #19244
- fix: Update BlockNodeConnectionManager starting stream block by @derektriley in #20874
- feat: Update ops duration throttle handling by @lukasz-hashgraph in #20583
- ci: add workflow to generate release notes by @andrewb1269hg in #18149
- test: Regression cases for
accountscommand examples by @mhess-swl in #20881 - chore: Remove incident creation from MATS by @rbarker-dev in #20899
- fix: Change gas refund percentage by @stoyanov-st in #18530
- feat: turn on ops per sec throttles by @lukelee-sl in #20703
- ci: Turn off incident creation on deploy release artifact for now. by @rbarker-dev in #20905
- ci: Enable AdHocSD runners for Single Day Performance and Longevity Tests by @rbarker-dev in #20912
- ci: Add json-rpc-relay-regression workflow and add it to the XTS test suite by @rbarker-dev in #20752
- chore: Update DEV
application.propertiesby @derektriley in #20743 - fix: Attempted fix of flaky Otter reconnect test by @poulok in #20910
- chore: Replace all still-used
ValidationScenarioswithyahcli ivy scenariosby @tinker-michaelj in #20903 - ci: add missing secret to mirror node regression workflow call by @andrewb1269hg in #20931
- chore: Introduce MATS tag to subset of misc hapi tests by @mhess-swl in #20870
- test: Verify batch inner txn time range by @mhess-swl in #20937
- chore: state validator keeps all read entities in memory, exhausts the Java heap by @OlegMazurov in #20914
- ci(bug): Use correct ref in build-application when finding commit info by @rbarker-dev in #20939
- feat: 20877 Validator needs additional parameter to configure
swirlds-tmplocation by @imalygin in #20880 - test: Yahcli node tests by @ibankov in #20886
- chore: Update README for
yahcli ivy, small fixes by @tinker-michaelj in #20943 - feat: Reduce amount of stale events generated by @abies in #20763
- fix: set
maxAutomaticTokenAssociationsto -1 for contract hollow account creation by @lukelee-sl in #20950 - chore: Various minor fixes in Otter framework by @netopyr in #20819
- ci(fix): Fix bug - SDPT/SDLT fail to create rootly incidents/alerts by @rbarker-dev in #20955
- chore: [Hip 1215] add a possibility to run smart contract tests wo mocks against local node by @gkozyryatskyy in #20723
- ci: Add block-node-regression workflow and add it to the XTS test suite by @andrewb1269hg in #20754
- docs(20960): update wiring diagram by @mxtartaglia-sl in #20961
- ci(fix): Add missing slack webhook to XTS workflow by @andrewb1269hg in #20966
- test: Yahcli keys tests by @ibankov in #20887
- chore: Use FakeTime in TurtleNode Logs by @poulok in #20940
- ci: Dynamically assign k8s-cluster value in SDPT/SDLT by @rbarker-dev in #20964
- ci(fix): Add missing secrets to XTS Dry Run workflow by @andrewb1269hg in #20976
- chore: add back health check to transaction pool by @lpetrovic05 in #20896
- fix: revert hip 1249 by @lukelee-sl in #20977
- chore: use custom solo-cheetah image with fixed resource limits for CITR tests by @nathanklick in #20794
- test: NLG 0.6.3 by @alex-kuzmin-hg in #21009
- ci(bug): Fix rootly incident creation in SDPT and SDLT by @rbarker-dev in #21041
Performance Results

Release v0.65
Release Highlights
Release v0.65 highlights include Virtual Mega Map, enforcement ofmax_custom_fees for HIP-991 scheduled transactions, and Block Stream improvements including forward-compatibility and unified transaction records. Together, these changes introduce powerful new state management capabilities, scheduled transaction fee controls, and continued advancements toward production-ready Block Streams.
What's new in Release 0.65?
What's new in Release 0.65?
Virtual Mega Map
The Virtual Mega Map enhances Hedera’s internal state data structure by consolidating all entities—including singletons, queues, and maps—into a single virtual map. This ensures the entire state rolls up to one root hash.Key benefit:- Enhanced Verifiability: A unified root hash simplifies state and block item proofs, used for block streams.
HIP-991 Enhancements: max_custom_fees for Scheduled Transactions
Release v0.65 adds support for max_custom_fees in scheduled transactions with HIP-991 topics.Key benefits:- Predictable Fees: Ensures maximum custom fee limits are enforced.
- Alignment with HTS: Extends scheduled transaction functionality to better match Hedera Token Service features.
- Developer Guardrails: Protects applications and users from unexpected fee outcomes.
Advancements in HIP-1056 & HIP-1127: Block Streams
Building on the Block Stream work from v0.64, this release delivers major steps toward a unified, verifiable stream layer.New developments:HIP-1127: Unified Transaction Record in Block Stream: Addresses historical duplication in how transactions are represented and creates a single, unified standard for the block stream. It achieves this while ensuring complete backward compatibility for existing applications, requiring no code changes for developers submitting transactions.Key benefits:- Performance & Scalability: Improves throughput and reduces latency when handling accounts, tokens, and other stateful data.
- Future-Proofing: Provides a foundation for ongoing state service optimization.
- Reduces State: Reduces the size and cost of the data stream
Build 0.65.1
What's Changed
What's Changed
- fix: Fall back to
parseAndCheck()ifparseSignedAndCheck()isINVALID_TXby @tinker-michaelj in #20859 - chore: state validator fixes (0.65) by @OlegMazurov in #20792
- feat: 20823 Added progress output to
exportcommand (#20825) by @imalygin in #20835
Build 0.65.0
What's Changed
What's Changed
- test: Edge cases - Smart Contracts Service Tests Part 3 by @vtronkov in #19987
- test: Edge cases - Smart Contracts Service Tests Part 4 by @vtronkov in #20014
- chore: update test URL for JTR by @lpetrovic05 in #20067
- build(deps): bump testContainers from 1.21.0 to 1.21.1 in /hiero-dependency-versions by @dependabot[bot] in #19445
- chore: update hiero gradle conventions to v0.4.9 by @andrewb1269hg in #20062
- chore: Move EthereumSuite to long running tests bucket by @stoyanov-st in #20066
- fix: 19107: Corrected
classIdofBenchmarkMerkleInternalto preventclassIdconflict by @imalygin in #19122 - chore: Update CODEOWNERS for SC contributions (#20027) by @gkozyryatskyy in #20084
- chore: Add ability to debug docker nodes by @timo0 in #20051
- chore: Rename commonly used Turtle components to Otter by @timo0 in #20100
Performance Results

Release v0.64
Release Highlights
Release v0.64 significantly improves the developer experience for frontend applications by introducing dynamic gRPC-Web endpoint discovery. This simplifies development workflows, enhances scalability, and sets the stage for a more decentralized and robust Hedera network. Additionally, this release includes important important block stream feature development, bug fixes, optimizations, and dependency updates that contribute to the overall stability and performance of the Hiero Consensus Node.What's new in Release 0.64?
What's new in Release 0.64?
HIP-1046: gRPC-Web Proxy Endpoint Support To the Address Book
Historically, connecting frontend applications to Hedera using the JavaScript SDK has been challenging due to browser security restrictions. gRPC-Web was used as a workaround, but the necessary endpoints were hardcoded into the SDK. This approach required manual updates and coordination, which could become problematic as Hedera grows and more independent nodes operate.To address this issue, release v0.64.0 introduces dynamic endpoint discovery for gRPC-Web, as described in HIP-1046. The Hedera address book now includes gRPC-Web endpoint information, which the JavaScript SDK uses dynamically. This eliminates the need for hardcoded endpoints and simplifies connecting frontend applications to the Hedera network, even as endpoints change.Key benefits:- Simplified Development: Eliminates the need for manual SDK updates to reflect endpoint changes.
- Enhanced Scalability: Supports the growing number of nodes on the Hedera network.
- Improved User Experience: Provides a more seamless and robust connection experience for frontend applications.
- Update to the latest Hedera JavaScript SDK to leverage this feature. The SDK will now automatically retrieve gRPC-Web endpoints from the address book.
- Applications or tools that manually maintained lists of gRPC-Web endpoints should now query the mirror node for the latest list.
Advancements in HIP-1056: Block Streams
Version 0.64 introduces substantial progress on HIP-1056, which aims to create Block Streams—a unified, verifiable data stream that combines Hedera’s existing event, record, and sidecar streams into a single efficient output. These enhancements focus on making Block Streams production-ready by prioritizing efficiency, cost-effectiveness, and security.Key developments in this release include:- Stream Size Optimization: The block stream has been refined to minimize its size, reducing storage and transmission costs while maintaining high performance and scalability. This release represents a partial update, with more enhancements to follow.
- Batch Transaction Support: Added functionality to include batch transactions into the block stream.
- Consensus Node-to-Block Node Communication: Established secure and reliable communication channels between consensus nodes and block nodes including features like acknowledgments and resend mechanisms. This release represents a partial update, with more enhancements to follow.
Other updates:
In addition to the aforementioned features, release 0.64 introduces other updates:- Added TCK tests to the continuous integration pipeline ( #18727 ) to improve testing coverage and software quality.
- Disallowed setting duplicate rosters ( #19072 ) to optimize storage and CPU usage.
- Several dependency updates ( #18714, #18841, #19074 ) to leverage the latest improvements and security patches.
Build 0.64.2
What's Changed
What's Changed
- fix: Remove
UnsupportedOperationExceptions that fail whenstreamMode=RECORDSby @tinker-michaelj in #20391 - fix: (0.64) Fix else if -> else bytecode sidecar construct by @tinker-michaelj in #20478
- chore: Disable bytecode sidecar check for r64 by @tinker-michaelj in #20505
Build 0.64.1
What's Changed
What's Changed
- fix: (0.64) Query new account balance in throttling tests by @tinker-michaelj in #20130
- build: (0.64) add ‘hedera-protobuf-java-api’ to published artifacts by @andrewb1269hg in #20154
- chore: (0.64) update CITR SDPT workflow for Kubernetes by @andrewb1269hg in #20226
- chore: cherry pick final change for release/0.64 infra changes by @rbarker-dev in #20290
- fix: Revert Autorenew error code translation by @ibankov in #20292
- chore: Update UBUNTU_TAG to use debian bookworm-20250630-slim (#20296) by @rbarker-dev in #20312
Build 0.64.0
What's Changed
What's Changed
- Make worker loop sleep duration configurable (#20007)
- Add transaction support for the container environment (#19941)
- end the stream if block node is too far behind (#19434)
- replace hashmap with an array to improve performace for ops duration lookups (#19836)
- Apply EIP-3529 refund limits (#19769) (#19821)
Bug Fixes
- remove workflow dispatch inputs when calling integration workflow (#20046)
- 18458 Pces file writer rollback (#20038)
- false positive tests used ‘numeric contract complex’ from numeric validation test (#19954) (#20037)
- resolve issues with the integration trigger workflow (#20026)
- Restore missing deps, META-INF files (#20031)
Performance Results

Release v0.63
Release Highlights
Release v0.63 introduces three focused improvements: birth-round based ancient event handling, low overhead SDK usage metrics, and full support for non-zero realm IDs.What's new in Release 0.63?
What's new in Release 0.63?
gRPC_usage metrics every 15m. This will give node and network operators granular visibility with minimal overhead.Non-Zero Realm SupportShard and realm default values on Hiero have previously assumed 0 values, sometimes with hardcoded logic limiting our ability to test future multi value shard and realm network implementations. All APIs and services now accept arbitrary shard and realm IDs. Moving forward we can consistently test future network upgrades in a way that validates non zero realm and shard network configurations.Summary
Release 0.63 aligns ancient event handling with consensus time, adds actionable higher resolution SDK telemetry, and removes limitations to implementing non zero realm and shard value tests. This improves Hiero network operational robustness, and expands test configurations.Build 0.63.9
What's Changed
What's Changed
- fix(18458): Pces file writer rollback by @mxtartaglia-sl in #20019
- fix: Fix SteadyStateThrottlingTest by @tinker-michaelj in #20040
- chore: (0.63) move scripts from paa to hcn by @andrewb1269hg in #20042
Build 0.63.7
What's Changed
What's Changed
- ci: fix typo in secret by @andrewb1269hg in #19893
Build 0.63.6
What's Changed
What's Changed
- ci: remove windows-2019 runner option (#19491) by @tinker-michaelj in #19608
- fix: (0.63) Log active config after initializing props and permissions facilities by @tinker-michaelj in #19619
- chore: Remove
AtomicBatchfrom prod throttles (#19213) by @tinker-michaelj in #19555 - chore: (0.63) Reclaim ingest throttle capacity after other failures by @tinker-michaelj in #19502
- chore: Cherry pick changes that update publishing mech to use central publishing portal (#19567) by @rbarker-dev in #19869
- chore: (0.63) Assess fractional fees relative to non-exempt credits and debits by @tinker-michaelj in #19883
- chore: (0.63) Restore 0.62 token auto-renew period validations by @tinker-michaelj in #19882
- chore: (0.63) Adds
application-override.propertiesby @Neeharika-Sompalli in #19889
Build 0.63.0
What's Changed
What's Changed
Features
- remove shard/realm negative check in asTokenId (#19355)
- 8841: Need a way to change the number of object key buckets in MerkleDb (#18910)
- Support nonzero shard/realm in yahcli sys commands (#19297)
- remove genesis freeze time (#19298)
- Bump PBJ version and use Block Stream Publish Service (#19290)
- overwrite default config converters (#18617)
- Support nonzero shard/realm in fee and schedule commands (#19279)
- add throttle for ops duration (#19053)
- UnitTest of BirthRound Ancient Mode (#11560) (#19252)
- Support accepting/declining rewards in yahcli DAB transactions (#19255)
- Add ops duration (#18921)
- limit birth round when freezing (#19193)
- Enable Birth Rounds as Ancient Threshold (#19208)
- Implement nonzero shard/realm for yahcli DAB transactions (#19166)
- Migrate logging validation to
assertThatfor OtterTests (#19159) - 18458 Guarantee events are written on pces before handling that round (#18811)
- stop consensus on freeze (#18937)
- Yahcli nonzero shard/realm implementations for crypto transfers and sys file updates (#19063)
- Implement feature flag for gRPC web proxy endpoint (#19051)
- Implement staking activation with nonzero shard/realm (#19010)
- Implement fee changes for HIP-991 (#18991)
- add proper handling for unknown function calls in system contracts (#18733)
- Capture GRPC/SDK usage metrics (#18469)
- enable the jumbo transaction feature flag (#18969)
- enhance logging validation for otter tests (#18897)
- local deterministic generation (#18930)
- add debug logs on key places (#18890)
- Limit the callData field instead of ethereumData (#18647)
Bug Fixes
- Keep node weights in
HintsConstruction(#19344) - Improve error handling when setting auto renew period (#19303)
- 19319: Improve MerkleDb reconnect / compaction synchronization (#19321)
- 19301 Updated
StateIdentifierenum (#19302) - 19259 Fix race condition when setting freeze round value (#19299)
- Fix batch transaction fees (#19101)
- Correct HapiCryptoCreate staked account ID parsing (#19283)
- ConcurrentModificationException in InMemoryAppender (#19266)
- Fix the transactionFee in the record for ConsensusSubmitMessage with custom fees (#19201)
- Move jumbo transaction size check only at ingest (#19118)
- Remove default shard and realm constants (#19123)
- Only use inner results for
BATCH_INNERdispatches (#19157) - Use
CompositeFilterfor console logging (#19171) - 19162 Open clause for JMS runtime for junit-extensions (#19163)
- Decouple shard/realm from hapiTestMisc (#19083)
- Inner transaction node setting in test-clients (#19150)
- asTokenId can generate TokenId with negative shard and realm (#18997)
- Fix error in
TipsetEventCreatorTests(#19120) - Decouple hapiTestSmartContracts shard and realm (#19077)
- Update to respect 0.2.3-SNAPSHOT max CRS parties (#19106)
- 19054: Need a way to check if a MerkleDb compaction tasks are running (#19069)
- Change default
decline_rewardto true for nodes created during genesis (#19086) - NoArgsConstructor has duplicated get() method (#19089)
- Decouple hapiTestToken (#18985)
- Update Roster Schema isUpgrade check (#19006)
- add required module to Otter tests test fixtures module info (#19024)
- Flaky Jumbo transactions tests (#19015)
- Improve exception handling when payer account is not meeting the specifications (#18995)
- migrate judge hashes on birth rounds (#19000)
- Assign nGen for GUI generated events (#18986)
Performance Results

Release v0.62
Release Highlights
Release 0.62 delivers substantial improvements in Ethereum compatibility, continuing Hedera’s commitment to providing a seamless and cost-effective experience for developers and ecosystem participants building with Ethereum tools and infrastructure. In addition, this release updates the HIP-991 SubmitMessage fees and lays the groundwork for block streams. What’s new in Release 0.62?Jumbo Ethereum Transaction Support (HIP-1086)
Historically, the Hedera API (HAPI) transaction size has been limited to 6 KB. Many Ethereum smart contracts and certain Ethereum contract calls exceed this limit. To work around this, developers previously had to utilize Hedera’s file service to upload larger contracts or call data in multiple 6 KB chunks — a process that added complexity, cost, and latency. Release 0.62 eliminates this friction by supporting a significantly larger transaction size of almost 128 KB for smart contract transactions, thereby simplifying EVM developer workflows and improving performance. Key benefits:- Simplified development: Eliminates the need to write and maintain custom code to handle 6 KB chunking.
- Reduced cost and latency: Streamlines common operations such as ContractCreate, ContractCall, and
EthereumTransaction. - Improved cost efficiency for JSON-RPC relays: Lowers operational costs for relay providers.
- Enhanced Ethereum compatibility: Brings the experience of creating and calling smart contracts on Hedera closer to native Ethereum workflows.
Zero-Cost EthereumTransaction on Success (HIP-1084)
A frequently reported pain point from JSON-RPC relay operators has been the cost of submitting wrapper EthereumTransactions. While gas costs for contract execution are typically borne by the calling entity (EOA or contract), relay operators have been required to fund the HBAR-based transaction fee — resulting in reduced adoption and ecosystem participation. Release 0.62 addresses this by eliminating the cover charge for EthereumTransactions where the inner call completes and pays for the gas consumed.Key benefits:
- Simplified relay operation: Removes the need for relay operators or embedded relays in dApps to maintain funded HBAR accounts for successful calls.
- Enhanced Ethereum compatibility: Further enhances Hedera’s Ethereum compatibility by charging all costs in gas alone.
- Better ecosystem support: Encourages greater participation by third-party relay operators and dApp developers.
Other updates:
In addition to the aforementioned features that improve Ethereum compatibility, Release 0.62 introduces two other updates:- SubmitMessage API calls for an HCS topic with Custom Fees (HIP-991) have been updated to $0.05 for the Hedera network.
- Foundational improvements in block stream management and handling workflows that will enable future features in block streaming capabilities and performance in upcoming releases.
Summary:
Release 0.62 represents an important milestone toward making Hedera a highly competitive platform for Ethereum-compatible applications, completes the implementation of HIP-991, and sets up the foundation for streaming the network blocks and state information.Build 0.62.6
What's Changed
What's Changed
- chore: Add overrides for
nodes.nodeRewardsEnabled=falseby @Neeharika-Sompalli in #19422 - fix: (0.62) Reclaim ingest throttle capacity after failure by @tinker-michaelj in #19525
Build 0.62.5
What's Changed
What's Changed
- chore: Remove the migration code for setting
declineReward=truefor all nodes on upgrade (#19338)
Build 0.62.4
What's Changed
What's Changed
- chore: Remove the migration code for setting
declineReward=truefor all nodes on upgrade by @Neeharika-Sompalli in #19338
Build 0.62.3
What's Changed
What's Changed
- fix: Fix the transactionFee in the record for ConsensusSubmitMessage with custom fees by @Neeharika-Sompalli in #19198
- chore: Remove
AtomicBatchfrom prod throttles by @tinker-michaelj in #19216 - feat: Bump PBJ version and use Block Stream Publish Service by @derektriley in #19256
- chore: (0.62) Use app fee charging mechanisms for gas by @tinker-michaelj in #19254
Build 0.62.2
What's Changed
What's Changed
- fix: (cherry-pick) Change default
decline_rewardto true for nodes created during genesis by @Neeharika-Sompalli in #19087 - chore: Disable Batch Transactions by @Neeharika-Sompalli in #19115
- chore: Config changes for batch transactions by @Neeharika-Sompalli in #19130
- fix: (cherry-pick) Flaky Jumbo transactions tests by @derektriley in #19140
- chore: increase transactionMaxBytes by @lpetrovic05 in #19104
- fix: 19107 Corrected classId of
BenchmarkMerkleInternalto preventclassIdconflict. by @imalygin in #19108 - chore: Fix the ConsensusSubmitMessage fee scaling for topic with customFees by @Neeharika-Sompalli in #19144
Build 0.62.1
What's Changed
What's Changed
- feat: Limit the callData field instead of ethereumData (cherry-pick) by @vtronkov in #18968
- chore: (cherry-pick) Write marker files for sidecars (#18916) by @Neeharika-Sompalli in #18992
- feat: enable the jumbo transaction feature flag (cherry-pick) by @vtronkov in #19012
- fix: (cherry-pick) Update Roster Schema isUpgrade check (#19006) by @derektriley in #19057
- feat: Implement fee changes for HIP-991 (#18991) by @Neeharika-Sompalli in #19050
- feat: Cherry-pick: Implement feature flag for gRPC web proxy endpoint (#19051) by @mhess-swl in #19073
Build 0.62.0
What's Changed
What's Changed
- remove code deposit gas charge waiver (#18797)
- decouple backend throttle config from front end and add support for burst (#18743)
- Update consensus to use nGen for determining when to recalculate metadata (#18882)
- add cGen (#18867)
- HIP-1046 Extend node address book with gRPC web proxy endpoint (#18766)
- EventCreator uses nGen instead of generation (#18737)
- Otter test logging improvements (#18850)
- Add new v0.62 module and HederaEVM class (#18535)
- Modifications to
EventHeaderfor Block Stream (#18548) - Add otter test module (#18646)
- handle
ResendBlockblock node responses (#18747) - Handle
BlockAcknowledgementsreceived from Block Nodes (#18536) - 18593: Need a mechanism to repair key to path mapping from data files at startup (#18625)
- Jumbo bytes throttle (#18389)
- Use existing key to create an account (#18611)
- Remove use of generation from sync (#18590)
- move parent event descriptors (#18524)
- Long Term Schedule Transaction Support For DAB transactions (#18539)
- Implement Non-deterministic Generation (#18506)
- Stream to Block Node’s immediately without waiting
BlockProofs (#18450) - Enhance yahcli rekey with ECDSA support (#18515)
- Implement daily node rewards (#18441)
- add HAPI verb to override the hederaFunctionality (#18481)
- Increase the buffer size of ethereumCall gRPC endpoint (#18321)
- Add ingest workflow jumbo checks (#18312)
- try using non-zero realm/shard (#18092)
- 18903: Tighten HDHM repair checks (#18906)
- detach FCQueue copy when serializing (#18863)
- Fix failing test in crypto-base (#18888)
- fix copy paste error in TipsetEventCreatorTests (#18876)
- disable GasCalculationIntegrityTest test suite (#18868)
- 18844: HDHM repair mechanism should not be enabled for snapshots (#18859)
- 18856: ReconnectHashLeafFlusher uses a wrong config (#18857)
- NPE in HalfDiskHashMap (#18854)
- Remove unused injections and fix tests (#18651)
- Fix
transactionFeein batch transactions (#18835) - Correctly populate sysfiles with node info (#18834)
- Revalidate collector token association on transfer (#18674)
- Fix the NPE in DefaultIssDetector.handleCatastrophic (#18830)
- flaky
completedHollowAccountOperationsFuzzingtest (#18816) - Fix flakiness in HIP-1064 tests (#18822)
- 18813: VirtualMapLargeReconnectTest.multipleAbortedReconnectsCanSucceed is unstable (#18814)
- Use getIfUsable() in ApproveAllowanceValidator (#18580)
- add auto-renew check for negative values (#18765)
- 18795: HDHM repair mechanism can be improved to clean stale buckets (#18796)
- Only allow creation of accounts that match the configured shard/realm (#18806)
- Move sort before
filterLikelyDuplicates(#18802) - adding validation for deleted token on unpause (#18671)
- Update flow-pull-request-formatting.yaml (#18790)
- 18658: ReconnectNodeRemover.setPathInformation() may cause OOM (#18708)
- Remove mono logic returning the wrong response code (#18698)
- 1280 hip 1056 block item with failed contract create result contains a contract (#18728)
- Improved error handling for airdrops with multiple senders (#18604)
- Use getIfUsable() when validate custom fees (#18576)
- Fix TokenCreateTransaction TCK issues (#18577)
- Add guard around LATEST_XTS_PASS_TAG (#18687)
- Also archive config.txt as part of network archiving process (#18427)
- Add back sorting of sync events (#18657)
- memory leak in HalfDiskHashMap.endWriting() (#18659)
- Call
endRoundafter dispatch (#18620) - Only “go back” in cons time for post-restart system work (#18654)
- 18561 Threads outlive the SequentialTaskScheduler created during test (#18391)
- airdrop TCK issues fixes (#18582)
- 18571: Current path range should be respected when path to hash and path to KV indices are restored (#18592)
- contract get bytecode query to return the redirect code for hts token addresses (#18464) (#18563)
- Fix flaky PcesFile tests (#18474)
- Utilize more than one thread for SSL accept handling (#18557)
- Ensure
BlockStreamManager#endRound()is called after dispatching system txns (#18554) - 17180 EventCreator ignores HealthMonitor update when squelching enabled (#18387)
- Import sentinel key from hapi utils (#18512)
- compile fix (#18510)
- Should reject a FILE_UPDATE to 0.0.123 with an invalid throttle definition (#18417)
- 18410: Bucket integrity check in HDHM.ReadUpdateBucketTask can be improved (#18411)
- HIP-1028 cleanup and versioning for GetTokenKey (#18304)
- update reference to
unhexmethod (#18470)
Performance Results

Release v0.61
Release Highlights
This release focuses on enhancing network incentivization and improving overall system robustness and developer experience.Hiero Improvement Proposals (HIPs)
- Daily rewards for active nodes HIP-1064: Full implementation of a daily reward mechanism for active consensus nodes, including an option for node operators to decline these rewards. This enhances network health by incentivizing consistent node uptime and participation, while providing operators flexibility in managing their rewards and improving network decentralization. Please note this feature will be disabled until a July 1, 2025 launch date.
-
HIP-551 (Atomic Batch Transactions): HIP-551 This release includes the implementation of Atomic Batch Transactions; however, due to technical challenges identified in testing, this feature has been temporarily disabled.
As a result, users attempting to submit Atomic Batch Transactions will receive a status code of
BUSYfrom the network. We are actively working to resolve these issues and plan to enable this feature in a future update.
New Features
- Node Reward Opt-Out (HIP-1064): Node operators can now decline daily node rewards using a new decline_reward boolean flag in NodeCreateTransactionBody and NodeUpdateTransactionBody. This offers greater control and flexibility for node operators based on their specific requirements. The default value for this flag will be set to true to decline rewards by default.
-
Notable Bug Fixes
- #17478: Corrected Cancun SELFDESTRUCT Semantics: Fixed incorrect
SELFDESTRUCTbehavior per EIP-6780 post-Cancun, where a contract specifying itself as the beneficiary in a non-creation transaction erroneously triggered aSELF_DESTRUCT_TO_SELFerror. The fix ensures compliance with EIP-6780, allowing the operation to proceed without deleting the contract or transferring its balance, including native tokens. Additionally, refactored CustomSelfDestructOperation.execute to streamline validation checks before state changes. Impact: Enhances EVM compatibility and reliability on Hedera for contracts usingSELFDESTRUCT, ensuring correct execution under post-Cancun rules.
Build 0.61.10
What's Changed
What's Changed
- chore: (cherry-pick to tag 0.61.10) Disable the defaults for
contracts.evm.ethTransaction.zeroHapiFees.enabledandnodes.nodeRewardsEnabledby @Neeharika-Sompalli in #19521
Build 0.61.9
What's Changed
What's Changed
- chore: (cherry-pick to tag 0.61.9) Disable
nodes.nodeRewardsEnabledby @Neeharika-Sompalli in #19519
Build 0.61.8
What's Changed
What's Changed
- chore: (cherry-pick for 0.61.8) Reclaim throttle capacity after ingest failure by @Neeharika-Sompalli in #19526
Build 0.61.7
What's Changed
What's Changed
- fix: Fix the
transactionFeein the record forConsensusSubmitMessagewith custom fees by @Neeharika-Sompalli in #19195 - chore: Disable
AtomicBatchprod throttles by @tinker-michaelj in #19217
Build 0.61.6
What's Changed
What's Changed
- chore: Config changes for batch transactions by @Neeharika-Sompalli in #19127
Build 0.61.5
What's Changed
What's Changed
- chore: Disable Batch Transactions by @Neeharika-Sompalli in #19114
Build 0.61.4
What's Changed
What's Changed
- fix: 0.61 cherry-pick: Correctly populate sysfiles with node info by @mhess-swl in #18884
- fix: 18771: Backport fixes for 18593, 18795, 18844, and 18903 to release 0.61 by @artemananiev in #18799
- chore: (0.61) add fee refund mechanism, use for successful EthereumTransaction by @tinker-michaelj in #18913
Build 0.61.3
What's Changed
What's Changed
- chore: (cherry-pick) Update flow-pull-request-formatting.yaml by @derektriley in #18792
- chore: (cherry-pick) adjust path to protobufs in ‘Update Hedera Protobufs’ step by @derektriley in #18787
- chore: (cherry-pick) remove github-committers team from codeowners by @derektriley in #18808
- chore: (cherry-pick) Update CODEOWNERS for tools-and-libs rename by @derektriley in #18788
- chore: (cherry-pick) update codeowners with new team names by @derektriley in #18807
- fix: Cherry-pick
transactionFeefix for atomic batch transactions by @Neeharika-Sompalli in #18853
Build 0.61.2
What's Changed
What's Changed
- chore: (cherry-pick) Delay initializing snark keys (#18699) by @Neeharika-Sompalli in #18701
- fix: (cherry-pick) Utilize more than one thread for SSL accept handling (#18557) by @abies in #18586
- fix: 18720: Backport the fix for 18571 to release 0.61 by @artemananiev in #18736
- feat: (cherry-pick) try using non-zero realm/shard by @derektriley in #18732
Build 0.61.1
What's Changed
What's Changed
What’s Changed
- chore: Remove the entityCounts migration code in 0.61 (#18500) by @Neeharika-Sompalli in #18511
- refactor: cherry-pick “Use a list of signed bytes for transactions in AtomicBatchTransaction” by @ibankov in #18522
- fix: State changes out of order in HAPI Tests (Restart) by @derektriley in #18564
- fix: 18410: Bucket integrity check in HDHM.ReadUpdateBucketTask can be improved - rel/0.61 by @imalygin in #18505
- fix: Ensure
BlockStreamManager#endRound()is called after dispatching by @tinker-michaelj in #18562 - feat: Cherry-pick Daily Node Rewards by @Neeharika-Sompalli in #18570
- fix: Call
BlockRecordManager.endRoundafter system dispatch by @Neeharika-Sompalli in #18621 - fix: Only “go back” in cons time for post-restart system work by @tinker-michaelj in #18660
- chore: cherry-pick fix NPE when using records by @Neeharika-Sompalli in #18679
- chore: Cherry-pick Add metrics for active node percentage by @Neeharika-Sompalli in #18680
Build 0.61.0
What's Changed
What's Changed
- Dynamic peers for the sync network (#18051)
- Add JumboTransactionsConfig (#18277)
- implement exponential backoff for connections to Block Nodes (#18055)
- HIP-1028 Fungible and NFT Token Info versioning (#18013)
- add SCHEDULE_EXPIRY_NOT_CONFIGURABLE validation (#18239)
- Add messages for skip and resend block to block service (#18133)
- Create a HAPI test to validate birth round migration (#18005)
- Close blocks during fatal ISS (#17942)
- HIP-1028 apply versioning to Update Token and Update Token Keys System Contracts (#17994)
- Add feature flag for CRS (#18073)
- change version to 0.61 (#18088)
- Support non-zero realms for contracts service (#18010)
- HIP-551 atomic batch transactions (#17333)
- Detect ISSes when states are not produced for every round (#18399)
- remove @OrderedInIsolation from contract bdd tests (#18400)
- HIP-632 fix alias length check (#18385)
- Extended suite failure during insertRemoveAndModifyOneMillion (#18407)
- 18393 metrics not updated in PlatformWiring (#18394)
- Fix candidate roster adoption logic (v61) (#18372)
Performance Results

Release v0.60
Release Highlights
This release focuses on significant performance improvements, enhanced developer tooling, and improved error handling.Hiero Improvement Proposals (HIPs)
HIP-1021: Improve Assignment of Auto-Renew Account ID for Topics- Full implementation of improved auto-renew account ID assignment for topics, enabling setting
autoRenewAccountIdduring topic creation without an admin key. - Developers benefit from simplified topic management and reduced risk of unexpected expirations.
Build 0.60.1
What's Changed
What's Changed
- fix: Update MTT Version by @timo0 in #18423
- fix: 18424 Fixed initialization of MigrationTestingToolState by @imalygin in #18432
- fix: 18722: Backport the fix for 18571 to release 0.60 by @artemananiev in #18723
Build 0.60.0
What's Changed
What's Changed
- feat: add feature flag for disabling precompile contracts by @lukelee-sl in #17548
- fix: Fail cleanly on negative gas limit by @kimbor in #17486
- test: fix
MerkleRehashTests.failedRehash()unit test by @OlegMazurov in #17575 - feat: Use
decrementCounteronENTITY_COUNTSwhenremove()is called by @Neeharika-Sompalli in #17513 - feat: Implement ECDSA key support for yahcli accounts create by @mhess-swl in #17293
- feat: update
onSealConsensusRound()to return a boolean by @mhess-swl in #17529 - fix: Reference correct
mainobj in test by @mhess-swl in #17581 - ci: Fix Check Integration Job State step to detect properly by @rbarker-dev in #17583
- feat: add synthetic node creates to record stream at genesis by @MiroslavGatsanoga in #17461
- fix(17537): Fix Test Flake startAtFirstFileDiscontinuityInMiddleTest by @mxtartaglia-sl in #17580
Performance Results

Release v0.59
Release Highlights
HIPs:
HIP-991: Topic Fees
- Description: HIP-991 introduces an optional fee system for submitting messages to topics on the Hedera network, aiming to enhance economic scalability and simplify operations for topic operators.
- Benefits: Empowers topic operators with greater control over their topics, offering mechanisms to monetize and manage access. Key features include:
- Optional Submission Fees: Topic operators can set optional fees for message submissions, payable in HBAR or Hedera Token Service (HTS) fungible tokens.
- Fee Schedule Key: A new ‘Fee Schedule Key’ allows operators to manage and update fee structures. This key must be set during topic creation.
- Custom Fee Distribution: Collected fees can be distributed to multiple accounts, supporting both HBAR and HTS tokens.
- Fee Exemptions: Operators can specify a list of keys that are exempt from fees, allowing certain users to submit messages without incurring charges.
HIP-755: Schedule Service System Contract signSchedule(address, bytes)
- Description: This HIP introduces a Schedule Service System Contract to enhance the Hedera Smart Contract Service (HSCS) by enabling smart contracts to interact with scheduled transactions. This release includes signSchedule(address, bytes).
- Benefits: HIP-755 introduces a Schedule Service System Contract to enhance the Hedera Smart Contract Service by enabling smart contracts to interact with scheduled transactions. signSchedule(address, bytes) method, allows smart contracts to pass along the signature from an EOA needed for a scheduled transaction.
HIP-756: Scheduled Token Create/Update Transactions via Smart Contract
- Description: Enables scheduling token create and update operations through smart contracts, with implementation of the scheduleNative system contract function.
- Benefits: Expands smart contract functionality by allowing developers to schedule token operations directly from smart contracts, providing more flexibility in DApp development.
Build 0.59.5
What's Changed
What's Changed
Build 0.59.4
What's Changed
What's Changed
- fix: 18267: Backport the fix for 18235 to 0.59 by @artemananiev in #18303
- fix: 18268: Bucket integrity check in HDHM.ReadUpdateBucketTask can be improved by @artemananiev in #18272
Build 0.59.3
What's Changed
What's Changed
- chore: Prohibit all airdrop royalty fees by @tinker-michaelj in #18261
Build 0.59.2
What's Changed
What's Changed
- chore: (0.59) Cherry-pick misc fixes by @tinker-michaelj in #18128
Build 0.59.0
What's Changed
What's Changed
- refactor: 16436 Removed
MerkleRootinterface. by @imalygin in #17130 - fix: move and change value of Dockerfile environment variable by @matteriben in #16239
- build: Roll hiero gradle conventions to version 0.1.4 by @andrewb1269hg in #17149
- build(deps): bump actions/setup-java from 4.5.0 to 4.6.0 by @dependabot in #17113
- build(deps): bump gradle/actions from 4.2.1 to 4.2.2 by @dependabot in #17111
- chore: Update hedera-services to rename develop as main by @rbarker-dev in #17091
- chore: Update workrflow names to point to main instead of develop by @rbarker-dev in #17158
- ci: Update Check Integration/XTS Job State to include GH_TOKEN by @rbarker-dev in #17160
- ci: add id_token write permission to node-flow-deploy-release-artifact.yaml by @rbarker-dev in #17161
- feat: Support overwrites for interface bindings and endpoints by @timo0 in #17117
- chore: Refactor hapi tests to use
hapiTest(...)instead ofdefaultHapiSpec(...)(Part 3) by @mhess-swl in #16698 - feat: consolidate hbar transfer list when decoding cryptoTransfer function by @lukelee-sl in #17165

Release v0.58
Release Highlights
This release introduces several new features, improvements, and bug fixes, including:HIPs
- HIP-423 Long-Term Scheduled Transactions: Update to ScheduleSign throttles changed: The ScheduleSign transaction is now throttled like other transactions and can now be managed by the default throttling mechanism on the network. (#16958, #16959) This completes HIP-423.
- HIP-755 authorizeSchedule(address)
Adds functionality to the Hedera Schedule Service System contract so that a smart contract can sign a referenced scheduled transaction using its contract key, enabling automated execution of scheduled transactions directly from smart contracts. (#16983), the remaining outstanding features to complete HIP-755 will be provisioned in release .59.
Other Notable Changes
- Enabled mirror node to simulate contract calls: The standalone transaction executor now supports custom Operations. Developers can use this feature to create and execute custom operations that are not part of the standard Hedera API. (#17354)
- Enhancing Dynamic Address Book v2 NodeCreate and NodeDelete transaction signature requirements changed:
- The NodeCreate transaction now requires the admin key and one of the treasury account key, system admin key, or address book admin key to sign.
- Ensuring state changes are now in block streams: Refactored out-of-band state modifications: All out-of-band state modifications have been refactored to be done in Schemas. (#16843)
- Increased CryptoGetAccountBalance throttle: The throttle for the CryptoGetAccountBalance query has been increased to the number of network nodes times 1,000,000 plus a buffer. This change addresses an issue where the throttle was too low, leading to throttling errors. (#16850, #16857)
Build 0.58.13
What's Changed
What's Changed
- Fail NFT airdrops that would trigger royalty fee payments.
Build 0.58.11
What's Changed
What's Changed
- Add safety checks before Besu secp256k1 native library invocations (c.f. here.
- Ignore approval flag when de-duplicating account ids in a
TokenTransferList.
Build 0.58.10
What's Changed
What's Changed
Build 0.58.9
What's Changed
What's Changed
- chore: Use weights from reclamped stakes in current address book by @tinker-michaelj in #17777
Build 0.58.8
What's Changed
What's Changed
v0.58.7 to trigger workflow- chore: (0.58) Remove unwanted post-upgrade work by @tinker-michaelj in #17637
- chore: 0.58-specific state migrations by @tinker-michaelj in #17690
Build 0.58.7
What's Changed
What's Changed
- chore: (0.58) Remove unwanted post-upgrade work by @tinker-michaelj in #17637
- chore: 0.58-specific state migrations by @tinker-michaelj in #17690
Build 0.58.6
What's Changed
What's Changed
- chore: Reapply “FileService address book and node details” by @mhess-swl in #17543
Build 0.58.5
What's Changed
What's Changed
- fix: 17283: Backport the fix for #17218 to release 0.58 by @artemananiev in #17296
- chore: (0.58) Support custom
Operations in standalone executor by @tinker-michaelj in #17354 - fix: retain override values on
ConfigProviderImpl.update()(#17424) by @tinker-michaelj in #17430 - fix: cherry-pick: FileService address book and node details should be updated at genesis by @iwsimon in #17368
- fix: 17467: Back out changes for 15448 from release 0.58 by @artemananiev in #17473
- fix: Revert “cherry-pick: FileService address book and node details” by @mhess-swl in #17539
Build 0.58.3
What's Changed
What's Changed
Build 0.58.0
What's Changed
What's Changed
- chore: Modify and mount default block streams output directory by @mhess-swl in #16719
- fix: 16657: State validation fails for round 191161423 on LSE by @artemananiev in #16757
- feat: Add time-driven event processing for triggering scheduled transactions by @JivkoKelchev in #16017
- chore: Integrate latest cryptography library changes by @Neeharika-Sompalli in #16615
- fix: Add validation for grpc certificate hash by @Neeharika-Sompalli in #16776
- ci: Add workflow for manual XTS failed tests log collection by @mishomihov00 in #16662
- ci: Update slack reporting for XTS failure and CITR build promotion by @rbarkerSL in #16760
- ci: Change from setup-gradle action to ./gradlew command usage by @mishomihov00 in #16706
- build(deps): bump codecov/codecov-action from 5.0.2 to 5.0.7 by @dependabot in #16725
- fix: 16748 Fixed serialization for AddressBookTestingToolState by @imalygin in #16799
- build(deps): bump docker/setup-qemu-action from 3.0.0 to 3.2.0 by @dependabot in #16232
- @boooby19 made their first contribution in #16767
- @PavelSBorisov made their first contribution in #16701
- @timfn-hg made their first contribution in #16917

Release v0.57
Release Highlights
This release introduces several new features, improvements, and bug fixes, including:HIPs
- HIP-423: Long-Term Scheduled Transactions: This release completes the implementation of HIP-423, enabling schedules to execute transactions at a future date and time. This provides developers with a powerful tool for automating on-chain actions and building time-based applications. Benefits include:
- Automated Transactions: Schedule transactions to execute automatically at a specific time.
- Time-Based Applications: Build applications that rely on time-based events, such as recurring payments or token distributions.
- Enhanced Security: Schedule transactions can be signed by multiple parties, ensuring that they are executed only when all required approvals are obtained.
New Features
- Node Operator Queries: This release introduces a dedicated gRPC port for node operators to perform free queries. This enables node operators to monitor the network and their nodes more efficiently without incurring transaction fees.
- Proxy Redirect Contract for Schedule Entities: This release adds support for a proxy redirect contract for calls to schedule transactions. This allows EOAs to make function calls in schedule entity addresses, enabling more flexible and dynamic interactions with scheduled transactions.
- HSS System Contract: This release introduces the Hedera Schedule Service (HSS) system contract, providing a set of functions for managing scheduled transactions, including signing and authorizing schedules.
- Support for Extra Dispatch Authorizations: The
ScheduleSignHandlernow supports authorizingKey{contractID=0.0.X}andKey{delegatable_contract_id=0.0.X}keys in a schedule’s signatories list, enabling more granular control over schedule execution.
Build 0.57.5
What's Changed
What's Changed
- chore: Cherry pick fixes for update of default branch to main (#17200) by @rbarkerSL in #17235
Build 0.57.4
What's Changed
What's Changed
- chore: (0.57) Keep default schedule lifetime 30min no matter max lifetime by @tinker-michaelj in #17196
Build 0.57.3
What's Changed
What's Changed
Build 0.57.2
What's Changed
What's Changed
- fix: Revert HIP-796 Protobuf changes (cherry-pick 0.57) by @thomas-swirlds-labs in #17028
Build 0.57.1
What's Changed
What's Changed
- ci: Fix cron jobs to use github token for gh cli calls and specify java version by @rbarkerSL in #16175
- build(deps): bump actions/setup-java from 4.0.0 to 4.5.0 by @dependabot in #16168
- build(deps): bump actions/setup-python from 5.0.0 to 5.3.0 by @dependabot in #16169
- build(deps): bump actions/cache from 4.0.1 to 4.1.2 by @dependabot in #16101
- refactor: create event creator modules by @mustafauzunn in #16138
- refactor: gossip module names and extract FallenBehindManager to gossip module by @mustafauzunn in #16113
- ci: disable release 0.53 regression by @JeffreyDallas in #16188
- feat: HIP-904 Reject Tokens System Contract implementation by @stoyanov-st in #16118
- feat: HIP 904 SetUnlimitedAutoAssociations System Contract Implementation by @stoyanov-st in #16141
- fix: LegacyConfigPropertiesLoader should not suppress ParseException by @leninmehedy in #16133
Performance Results

Release v0.56
Release Highlights
HIPs
HIP-869 Dynamic Address Book—Stage 1: This release includes the implementation of HIP-869, enabling the Dynamic Address Book. Node operators can now update node details and address books via Hedera transactions. This streamlines network operations and enables node operators to manage their associated node entries directly in the Address Book. HIP-904 System Contract Functions: Implements the System Contract Functions section within HIP-904. Introduces Hedera Token Service (HTS) support for the airdrop-related capabilities. These functions are implemented as system contract functions, making it possible for smart contracts to issue Frictionless Airdrops, Token Reject, and AutomaticToken Association configurations for efficient management.HIP-632 - isAuthorized(): The isAuthorized() function introduced in HIP-632 extends the Hedera Account Service (HAS) System Contract, enabling smart contracts to authenticate signatures against Hedera accounts. This provides functionality akin to the validation step following Ethereum’s ECRECOVER, without recovering public keys. It supports ECDSA, ED25519, and complex keys such as threshold keys, though ECDSA is recommended for compatibility and interoperability with Ethereum. This builds on the previous functionality of isAuthorizedRaw() released in 0.52.
Other Notable Changes:
Block Streams - Dev Access Preview: Block Streams is a new output stream that will replace Hedera’s existing event and record streams into a single stream of verifiable data. This consolidated approach not only simplifies data consumption but also enhances Hedera’s capabilities by including state data.
Starting with version 0.56, consensus nodes will publish preview block stream files alongside the existing record stream, which remains the authoritative source of truth for Hedera. This preview allows the community to explore, test, and provide feedback on this new feature, paving the way for its future adoption.
Migration from .pfx to .pem Cryptography Files: The consensus node cryptography system was migrated from using .pfx files to more manageable .pem files.
Build 0.56.7
What's Changed
What's Changed
Build 0.56.6
What's Changed
What's Changed
- chore: Cherry Pick: Modify and mount default block streams output directory by @mhess-swl in #16753
Build 0.56.5
What's Changed
What's Changed
- fix: correct a missing conversion between AddressBook cert hash hex-string-as-bytes and actual SHA2-384 hash bytes for Node entries. by @jsync-swirlds in #16659
- chore: Do stricter validation of X.509 gossip cert in DAB transactions by @tinker-michaelj in #16666
Build 0.56.0
What's Changed
What's Changed
- test: Added a test to submit DAB transactions for JRS test by @Neeharika-Sompalli in #15549
- chore: cover HIP-869 test plan by @tinker-michaelj in #15568
- test: Use DAB upgrade test in CI runs by @Neeharika-Sompalli in #15618
- ci: continuous integration tests and release initial phase 1 changes by @rbarkerSL in #15363
- perf: increase Health Monitor invocation frequency by @OlegMazurov in #15627
- feat: created iterface for inline PCES writer by @timo0 in #15629
- feat: Add TSS related system transaction and state protobufs (Services) by @thomas-swirlds-labs in #15515
- feat: increase version to 0.56 by @povolev15 in #15765
- ci: Remove unnecessary check in node-flow-deploy-release-artifact by @rbarkerSL in #15768
- feat: Activate smart contract module 0.51 by @david-bakin-sl in #15772
- chore: Add missing config files to
previewnetconfig dir by @mhess-swl in #15778 - test: Extend HAPI tests for TokenAirdrop with custom fees - royalty fees by @Evdokia-Georgieva in #15518
- feat: Added states for TssService by @Neeharika-Sompalli in #15622
- chore: remove unnecessary checks for value xfer to system contracts by @lukelee-sl in #15774
- chore: Cleanup
Signatureby @timo0 in #15570 - chore: Add configuration properties for HIP-904 System Contracts by @stoyanov-st in #15800
- feat: Regenerate keys and update node names for tests by @anthony-swirldslabs in #15793
- feat: Replaced AddressBook based NetworkInfo implementations by @Neeharika-Sompalli in #15781
- chore: Address review comments by @Neeharika-Sompalli in #15826
- chore: add node details/address book export validation in
DabEnabledUpgradeTestby @tinker-michaelj in #15764 - fix: Handle non-existent token IDs in token fee schedule updates by @mhess-swl in #15831
- chore: Add Configuration support for GRPC messages by @thomas-swirlds-labs in #15472
- feat: use FileChannel for PCES by @lpetrovic05 in #15604
- feat: create inline pces wiring by @lpetrovic05 in #15785
- chore: remove nextNodeId from config.txt by @edward-swirldslabs in #15791
- chore: Make hedera-services also code owner of hedera-app by @netopyr in #15911
- fix(container): adds resiliency to the deterministic image entrypoint script by @nathanklick in #15914
- chore: Correct locations of various TSS protos by @mhess-swl in #15780
- chore: Add constructor for
BytesinHashto avoid copying by @timo0 in #15783 - fix: Add query handling metrics upload by @mhess-swl in #15900
- fix: Airdrop transfer list size validation by @JivkoKelchev in #15933
- ci: Move jenkins checks into its own workflow that executes when node-zxc-build-release artifact completes by @rbarkerSL in #15928
- ci: Fix invalid workflow introduced by 15928 by @rbarkerSL in #15948
- ci: Add skipped status as possible triggering conclusion by @rbarkerSL in #15956
- ci: ensure prepare xts branch launches when node deploy production build finishes by @rbarkerSL in #15957
- fix: 15959: Add more logging for 12311 by @artemananiev in #15960
- chore: remove unused wiring options by @lpetrovic05 in #15931
- build(deps): bump actions/upload-artifact from 4.3.1 to 4.4.3 by @dependabot in #15940
- build(deps): bump actions/checkout from 4.1.1 to 4.2.1 by @dependabot in #15902
- ci: Checkout the code with GH_ACCESS_TOKEN and persist the credentials by @rbarkerSL in #15965
- ci: Updated XTS job to check statuses and added gpg key to prepare XTS by @rbarkerSL in #15967
- ci: Update tag scheme in prepare XTS flow by @rbarkerSL in #15968
- ci: Add message parameter to forced tag step by @rbarkerSL in #15970
- fix: support restarting from
RECORDS->BOTHby @tinker-michaelj in #15904 - ci: Fix issue with zxf prepare extended test suite by @rbarkerSL in #15974
- fix: ensure configuration loading and name resolution is resilient by @nathanklick in #15943
- feat: wire skeleton
TssBaseServicehandlers to submission-enabledAppContextby @tinker-michaelj in #15975 - feat: permit unpaid queries when executed from localhost by @MiroslavGatsanoga in #15554
- feat: introduce NodeId.of(long) by @anthony-swirldslabs in #15952
- feat: 15154 Added
createSnapshotmethod to State API by @imalygin in #15543 - fix: 15994: Need more logging in AbstractHashListener by @artemananiev in #15995
- build(deps): bump org.gradlex:java-module-dependencies from 1.7 to 1.7.1 in /gradle/plugins by @dependabot in #15958
- fix: Ensure
getAccountInforeturns correct EVM address by @tinker-michaelj in #15969 - chore: Fix compiler warnings in token service by @derektriley in #15265
- test: add block contents validator by @MiroslavGatsanoga in #15522
- build: update Java Module patching by @jjohannes in #15578
- chore: add links to TSS issues by @tinker-michaelj in #15999
- build: generalize publishing setup by @jjohannes in #15471
- fix: detect post-upgrade txn in presence of pre-upgrade events by @tinker-michaelj in #15834
- fix: update the Schema class import statement by @albertopasqualetto in #15927
- fix: stabilize
keyRotationDoesNotChangeEvmAddress()by @tinker-michaelj in #16006 - feat: updateNode needs both admin key and council to sign. by @iwsimon in #15988
- chore: enable
BLOCKS-only stream mode by @tinker-michaelj in #15634 - test: create fake TSS library for testing by @MiroslavGatsanoga in #15908
- chore: Fix ownership of services protobufs by @netopyr in #16015
- feat: Remove default memo for lazy created accounts and auto created accounts by @netopyr in #15302
- chore: use
0sas@RepeatableHapiTestvalid start offset by @tinker-michaelj in #16028 - fix: DefaultKycStatusCall correct returned values from System Contract by @stoyanov-st in #15595
- chore: Remove hedera-base as code owner by @netopyr in #16043
- chore: use
fireAndForget()for freeze period background traffic by @tinker-michaelj in #16031 - chore: cherry-pick, Do not update file 102 during the first transaction after a freeze upgrade when DAB is disabled by @iwsimon in #16050
- chore: tolerate nextNodeId field in config.txt by @edward-swirldslabs in #16048
- feat: 14726: Proposal for consensus node architecture update by @rbair23 in #14772
- refactor: gossip modules creation by @mustafauzunn in #15837
- ci: Updating workflow permissions as per step-security recommendations. by @san-est in #16036
- chore: standardize and simplify
ScheduleServiceby @tinker-michaelj in #16053 - ci: Enable build promotion tagging and XTS completion by @rbarkerSL in #15971
- feat: Readable and Writable Roster state stores by @derektriley in #16120
- chore: eliminate duplicated signature verification logic by @tinker-michaelj in #16075
- test: add test to validate null admin key for contract can still xfer value by @lukelee-sl in #16063
- feat: Add logic for
TssMessageHandlerfor happy path by @Neeharika-Sompalli in #16062 - ci: Temporarily disable Trigger ZXF Deploy Integration. by @rbarkerSL in #16122
- feat: HIP-904 Token Airdrop System Contract by @stoyanov-st in #15912
- docs: Provide Design document for HIP-904 System Contracts flows by @stoyanov-st in #15435
- chore: migrate cryptography from .pfx to .pem files by @edward-swirldslabs in #16025
- ci: Add logic to only delete xts-candidate tag if it already exists by @rbarkerSL in #16140
- ci: Fix ZXCron Promote Build Candidate Checkout Tagged Code step by @rbarkerSL in #16154
- ci: Fix bug with deleting xts-candidate tag prior to creation or use by @rbarkerSL in #16159
- feat: HIP-904 Implement TokenClaimAirdrop System Contract by @stoyanov-st in #16054
- ci: Specify java major minor and patch versions by @mishomihov00 in #16176
- feat: counting get balance throttle by @netopyr in #16178
- feat: HIP-904 Implement Token Cancel Airdrop System Contract by @stoyanov-st in #15996
- feat: align state and records for self managed contract keys on create by @lukelee-sl in #16095
- feat: Update BlockStreamConfig StreamMode default to BOTH by @derektriley in #16167
- chore: replace usages of AddressBook with Roster in tipset by @anthony-swirldslabs in #16102
- chore: Address review comments on PR #420 in protobufs by @Neeharika-Sompalli in #16148
- feat: throttled tx metrics by @kimbor in #16130
- feat: Set TSS candidate roster logic by @mhess-swl in #16131
- chore: schedule 0.56 release branch creation by @kimbor in #16184
- feat: Initial TssVoteHandler by @derektriley in #16061
- @albertopasqualetto made their first contribution in #15927
- @san-est made their first contribution in #16036
- @mishomihov00 made their first contribution in #16176
Performance Results

Release v0.55
Release Highlights
Notable Change
Throttle forAccountBalanceQuery
- A new throttle for
AccountBalanceQueryrequests to manage and optimize query load on the network.
Build 0.55.2
What's Changed
What's Changed
- chore: 16356 cherry pick java version fixes by @rbarkerSL in #16358
- feat: Cherry-Pick (0.55): Define throttle for GetBalance queries by @vtronkov in #16339
Build 0.55.1
What's Changed
What's Changed
- chore: cherry-pick, do not update file 102 during the first transaction after a freeze upgrade when DAB is disabled by @iwsimon in #16045
Build 0.55.0
What's Changed
What's Changed
- docs: tss ledger id platform design proposal by @edward-swirldslabs in #13747
- chore: remove unused
hedera-evm-*andcli-clientsmodules by @tinker-michaelj in #15271 - chore: 11771 Added more unit tests for
WritablePlatformStateStoreby @imalygin in #15268 - test: Token Claim Airdrop with receiverSigReq test by @ibankov in #15279
- chore: rename directory ‘swirlds-jasperdb’ to ‘swirlds-merkledb’ by @jjohannes in #15143
- chore: remove ‘itest’ test set by @jjohannes in #15276
- fix: code style and javadoc fixes by @kimbor in #15298
- test: add a sigRequired true additional test by @povolev15 in #15267
- fix: use
ServicesSoftwareVersionby @tinker-michaelj in #15294 - fix: if the directory exist, don’t create it in UnzipUtility by @iwsimon in #15319
- fix: 10342: HashListByteBuffer releases DirectByteBuffers lazily, adds memory pressure by @artemananiev in #15296
- feat: 15146 Added
calculateHash,setHashandgetHashmethods toStateinterface by @imalygin in #15274 - chore: Refactor and Remove Duplicate Documentation in Services by @thomas-swirlds-labs in #15286
- fix: stop using raw types in
Call{Attempt,Translator}by @tinker-michaelj in #15331 - chore: Integrate protobufs to build by @tinker-michaelj in #15324
- ci: disable release 0.52 regression by @JeffreyDallas in #15228
- chore: Remove the script forensic/start-investigation.py by @tungbq in #14264
- chore: add unit tests for
ServicesSoftwareVersionutilities by @tinker-michaelj in #15326 - fix: Prevent designating deleted accounts as custom fee collectors by @mhess-swl in #15339
- chore: Bump services version to 0.55 by @mhess-swl in #15321
- fix: skip checkSignatures when state.isPcesRound() by @edward-swirldslabs in #15289
- fix: ensure
StakePeriodManagercurrent stake period is always up-to-date by @tinker-michaelj in #15346 - feat: HIP-632 alias-to-accounts and back by @david-bakin-sl in #15281
- fix: allow absent agreement keys on disk and in state by @edward-swirldslabs in #15340
- chore: Allow injection of CacheWarmer’s Executor by @netopyr in #15353
- fix: complete block -> record translation for all PR checks by @tinker-michaelj in #15300
- chore: logging config is automatically reloaded by @hendrikebbers in #13919
- build: update to latest versions - Gradle / Develocity plugin / Dependency Analysis plugin by @jjohannes in #15372
- build: add ‘timeConsuming’ test set by @jjohannes in #15371
- fix: Remove HederaFileNumbers and HederaAccountNumbers by @povolev15 in #15360
- chore: cleanup exception behavior and add javadocs by @lukelee-sl in #15364
- chore: use correct Nullable annotation in ‘smart-contract-service-impl’ by @jjohannes in #15373
- feat: add PBJ support to platform streams by @lpetrovic05 in #15400
- chore: Use GossipEvent in PlatformEvent by @timo0 in #15207
- build: avoid mergeJar / Protobuf gRPC update by @jjohannes in #15374
- chore: improve
noStakingInteractionsForExtendedPeriodIsFine()spec by @tinker-michaelj in #15388 - chore: 15405 move tss to hedera cryptography by @mxtartaglia-sl in #15406
- docs: 15091: Design proposal: migrate Queue states from FCQueue to VirtualMap by @artemananiev in #15165
- chore: add
StateHashedNotificationby @tinker-michaelj in #15395 - chore: remove hapiProtoVersion by @jjohannes in #15399
- chore: implement and test indirect block proofs by @tinker-michaelj in #15387
- fix: set active
ExchangeRateSeton triggered txn receipts by @tinker-michaelj in #15396 - chore: fix/disable hammer tests that are not working by @jjohannes in #15370
- chore: default
TransactionExecutorsimulator to no-op system contract authorization checks by @tinker-michaelj in #15392 - fix: 15385 Used
MerkleStateRoot.getReadablePlatformStatewhere possible to prevent race conditions by @imalygin in #15389 - fix: permit 100:1 deflation for upgrade ZIP files by @tinker-michaelj in #15422
- feat: BlockStreams-Inversion of control by @Neeharika-Sompalli in #15325
- fix: Check for usability in various ops by @mhess-swl in #15390
- chore: Remove PeerInfo.nodeName by @anthony-swirldslabs in #15441
- refactor: remove AbortException by @lukelee-sl in #15004
- feat: metadata view functions via smart contracts by @mustafauzunn in #15019
- fix: freeze time reset check by @tinker-michaelj in #15429
- chore: correct the variable name in roster.proto by @edward-swirldslabs in #15465
- fix: Precision loss for gas calculation of HTS system contracts v2 by @stoyanov-st in #15446
- feat: introduce PbjRecordHasher and RosterUtils.hash(Roster) by @anthony-swirldslabs in #15457
- feat: Add TokenUpdateNFTs as a smart contract operation v2 by @stoyanov-st in #15445
- chore: remove snapshot ops by @tinker-michaelj in #15462
- fix: 15167: Remove timeout from reconnect/rehash Iterators by @artemananiev in #15468
- chore: testnet event hashing by @lpetrovic05 in #15432
- docs: Proposal Process Update - Specify post-acceptance non-material update procedure by @poulok in #15447
- fix: recreate block hash from state by @tinker-michaelj in #15444
- test: fix CryptographyTests by @OlegMazurov in #15529
- build: cleanup settings.gradle.kts / remove build.gradle.kts by @jjohannes in #15470
- fix: 15438: Eliminate busy loop in HalfDiskHashMap.endWriting() by @artemananiev in #15439
- docs: tss block signing proposal by @edward-swirldslabs in #15160
- fix: 15494: Improve VirtualLeafRecord serialization to bytes during flushes by @artemananiev in #15512
- feat: migrate event serialization to protobuf by @lpetrovic05 in #15417
- fix: Validate
CustomFeesinput arrays inUpdateTokenCustomFeesDecoderby @stoyanov-st in #15520 - chore: Add missing javadocs in Consensus Service by @petreze in #15299
- chore: add
TracerBindinginterface forTransactionExecutors. by @tinker-michaelj in #15480 - test: unit test verifySyncInvalidEd25519() is not stable by @OlegMazurov in #15534
- test: New HAPI test for TokenAirdrop transaction by @Evdokia-Georgieva in #15348
- fix: remove dependencies to ‘org.testcontainers’ in production code by @jjohannes in #15473
- chore: use 4.28.2 for
com.google.protobufartifacts by @tinker-michaelj in #15564 - refactor: 15413 Split
PlatformStateAccessorinto two interfaces by @imalygin in #15544 - feat: decouple event constraints from deserialization by @lpetrovic05 in #15519
- feat: add file 101 update during the first transaction after a freeze upgrade by @iwsimon in #15563
- docs: Update Tss-Library proposal by @mxtartaglia-sl in #15170
- chore: reduce
EthereumTransactionrelayer fees by @tinker-michaelj in #15577 - chore: Remove
ImmutableHashby @timo0 in #15556 - feat: create release branch 0.55 by @povolev15 in #15609
- test: (cherry-pick) Added a test to submit DAB transactions for JRS test (#15549) by @Neeharika-Sompalli in #15616
- ci: cherry pick changes to HAPI version checks into release 0.55 by @rbarkerSL in #15771
- feat: cherry pick smart contract module 051 activation by @david-bakin-sl in #15776
- chore: (Cherry Pick) Standardize previewnet config dir with other envs by @mhess-swl in #15779
- fix: Cherry-Pick: Handle non-existent token IDs in token fee schedule updates by @mhess-swl in #15832
- fix: Cherry-Pick: Add query handling metrics upload by @mhess-swl in #15901
- fix: Cherry-Pick (0.55): Airdrop transfer list size validation by @mhess-swl in #15936
- chore: disable dab in 0.55 by @iwsimon in #15951
- fix: (0.55) post-upgrade txn detection in presence of pre-upgrade events by @tinker-michaelj in #15835
Performance Results

Release v0.54
Release Highlights
This release introduces exciting new features and improvements, including HIP-904 for token airdrops, and HIP-1010 for updating custom fee via smart contracts.HIPs
HIP-904: Token Airdrops and Claims Implementation: Partial implementation Delivered in this release:- TokenAirdrop transaction is similar to crypto transfers, but differs in one fundamental way - when an airdrop is performed and the receiver does not have available or automatic association slots, rather than failing, the transfer will be kept in state as a pending transfer.
- TokenClaimAirdrop transaction introduced for recipients to claim pending airdropped tokens.
- TokenCancelAirdrop transaction introduced giving senders the ability to cancel unclaimed airdrops.
- Streamlines token distribution, empowers token creators, developers, and projects by allowing them to distribute tokens more efficiently to a wider audience.\
- updateFungibleTokenCustomFees system contract function for updating custom fees for fungible tokens.
- updateNonFungibleTokenCustomFees system contract function for updating custom fees for non-fungible tokens.
- Enables smart contracts to manage token custom fees, providing more dynamic and autonomous token management capabilities.
Build 0.54.2
What's Changed
What's Changed
- fix: Cherry-Pick (0.54): Airdrop transfer list size validation by @mhess-swl in #15937
Build 0.54.1
What's Changed
What's Changed
- fix: cherry-pick: remove dependencies to ‘org.testcontainers’ in production code by @iwsimon in #15559
- chore: reducer EthTx relayer fees by @tinker-michaelj in #15580
Build 0.54.0
What's Changed
What's Changed
- feat: Enable health monitor by @litt3 in #14392
- chore: rename detailed consensus event by @lpetrovic05 in #14364
- refactor: Use PBJ EventDescriptor by @timo0 in #14432
- fix: split new Reconnect metrics by NodeId in Grafana by @anthony-swirldslabs in #14430
- perf: VirtualHasher.hash() keeps too many tasks in memory by @OlegMazurov in #14470
- feat: refactor CryptoTransferHandler by @JivkoKelchev in #14278
- feat: improve hashing performance by @lpetrovic05 in #14444
- test: add test for validating numeric values for HAS and ExchangeRate functions by @stoyanov-st in #14424
- ci: Add registry mirrors to daemon-config on crazy-max/ghaction-setup-docker by @rbarkerSL in #14469
- docs: Update glossary defns of aliases, triplets by @david-bakin-sl in #14372
Performance Results

Release v0.53
Binaries
Binaries
Release Highlights
HIP-719: Associate and Dissociate Tokens via Facade Contract
Functionality
Delivered in release 0.53isAssociatedfor token association via proxy facade contract.- Syntax
<tokenAddress>.isAssociated()
- Example
- IHRC719(<tokenAddress>).isAssociated()
- Syntax
- Associate and Dissociate Tokens via proxy facade contract
- Enables developers to call functions in a way familiar to ERC-20 and ERC-721.
- Token functions are callable by both EOAs and contracts.
HIP-904: tokenReject, account infinite maxAutoAssociation & Sender pays auto association
Functionality
Partial completion of HIP-904 Delivered in 0.53- Sender pays for association
- Sender now pays for token association at the time of HTS transaction execution.
- Max_auto_associations
- Default value for
max_auto_assocationswill now be-1meaning that if an account is created automatically by performing a token transfer to an alias that does not yet exist the account is configured with unlimited automatic token association. - HAPI:CryptoCreate will continue to have
max_auto_associationsdefaulting to0. - Accounts created before the launch of this feature will remain unchanged.
- Default value for
- Token reject
- Introduces TokenReject Transaction.
Benefits
maxAutoAssociationusers can update their account preferences to unlimited association giving the ability to receive any airdrops without explicitly having to associate with that token.- Slots are only paid for when used, and are initially paid for by the sender during automatic associations.
HIP-850: HTS Mutable metadata in treasury
Functionality
- Entire scope of HIP-850 delivered in release 0.53.
- Enables the Supply Key to update an NFT metadata field while the NFT is held in the treasury account via TokenUpdateNftsTransaction function for a specific NFT serial number.
Benefits
- NFT owners can return an NFT to treasury custody in order to update parameters within the metadata of the NFT.
- NFT cannot be updated by unauthorized parties once distributed.
HIP-993: Improve record stream legibility and extensibility
Functionality
Delivered in release .53:- Itemized auto-creation fees
- Unified child consensus times
- Clean hollow account completion records
- Synthetic file creations at genesis
- Use natural order for preceding dispatch records
- Fail fast on throttled child transactions
Benefits
- This HIP refines the legibility and extensibility of the record stream.
Build 0.53.5
What’s Changed
- feat: add enableDAB flag to enable and disable DAB features by @iwsimon in #15232
- ci: resolves release issue preventing the publication of the docker images by @nathanklick in #15158
- fix: hedera-evm and hedera-evm-impl are overwriting each other in MC by @rbarkerSL in #15175
Build 0.53.1
What’s changed
- fix: change order of descriptor variables by @lpetrovic05 in #15016
Build 0.53.0
What's Changed
What's Changed
- docs: 13690 Added a design doc for
Ledger State APIby @imalygin in #13730 - chore: update Gradle to 8.8 / setup-gradle to v3.4.2 by @jjohannes in #13757
- chore: Cleanup obsolete
test-clientscode and resources by @tinker-michaelj in #14050 - docs: update token reject design doc by @MiroslavGatsanoga in #14061
- fix: passing upgrade
@HapiTestby @tinker-michaelj in #13992 - feat: Ensure overwritten operations check for sufficient gas first by @lukelee-sl in #11441
- test: HIP-904 Create HAPI tests for a hollow account on an alias on which we have a deleted account by @zhpetkov in #14036
- feat: HIP-904 Charge automatic associations during
CryptoTransferby @Neeharika-Sompalli in #14107 - chore: inline pces proposal 2.0 by @cody-littley in #14056
- feat: implement HIP-632
isAuthorizedRawmethod by @david-bakin-sl in #14130
Performance Results

Release v0.52
Release Highlights
HIP-632 - isAuthorizedRaw
Functionality
- Accepts three parameters:
addressmessageHashsignatureBlob
- Validates the provided address (Hedera Account ID or virtual address)
- Determines signature type based on
signatureBloblength:- 65 bytes: ECDSA
- 64 bytes: ED25519
ECDSA Signature Handling
- Extracts
v,r, andscomponents - Runs ECRECOVER to recover signing address
- Compares result with the account’s virtual addresses
ED25519 Signature Handling
- Retrieves Hedera address
- Checks for single associated key on account
- Verifies signature against message hash and account key
Benefits
- Similar functionality to Ethereum’s ECRECOVER precompile
- Supports both ECDSA and ED25519 signature verification
- Works with Hedera Account IDs and virtual addresses
- Simplifies signature verification in smart contracts
- Streamlines transaction authentication within contracts
- Enhances Hedera-Ethereum authorization flow compatibility
- Improves developer experience with familiar authorization mechanism
HIP 904
TokenRect Functionality
- Allows users to reject undesired tokens
- Transfers thefull balance of one or more tokens from the requesting account to the treasury
- Supports rejection of both fungible and non-fungible tokens
- Handles up to 10 token rejections in a single transaction
- Bypasses custom fees and royalties defined for the rejected tokens
Benefits of TokenReject
- Enables users to remove unwanted tokens from their accounts
- Protects users from potential scams or unwanted airdrops
- Allows rejection of tokens regardless of how they were acquired (manual or automatic association)
- Helps users manage their token holdings more effectively
- Prevents users from being forced to pay exorbitant or potentially malicious fees to remove tokens
- Maintains account association with the token, allowing for future transactions if desired
- Provides a simple mechanism for users to clean up their accounts
- Enhances user control over their token portfolio
- Improves overall user experience in token management
Build 0.52.3
What’s Changed
- fix: invalid
feeSchedules.jsonby @Neeharika-Sompalli in #14881
Build 0.52.2
What’s Changed
- chore(0.52): updates the buildkit and docker daemon configuration to use the registry mirror by @nathanklick in #14777
- fix: immediately finalize transfer lists for scheduled crypto transfer by @tinker-michaelj in #14799
Build 0.52.1
What’s Changed
- ci: fix gradle publish failures in release-0.52 for hedera.com.evm by @rbarkerSL in #14513
- fix: 14489 cherry pick docker rate limit fix in release052 by @rbarkerSL in #14490
- fix(bug): Removed daemon config changes (#14599) by @rbarkerSL in #14602
- fix: cherry pick misc fixes by @tinker-michaelj in #14609
Build 0.52.0
What’s Changed
- The
accounts.maxNumberandnfts.MaxAllowedMintsvalues both remain at 20 million for this release - feat: extract
HederaNetworkinterface with initialSubProcessNetworkimpl by @tinker-michaelj in #13540 - build: make annotation library dependencies transitive by @jjohannes in #13643
- chore: Address compiler warnings in LoggerApiSpecAssertions by @jjohannes in #13644
- chore: disabled new backpressure via settings by @cody-littley in #13635
- chore: Add
FakePlatformandFakeServicesRegistryby @Neeharika-Sompalli in #13549 - docs: File Service design doc by @derektriley in #13615
- build: (de)activate selection of javac lint features by @jjohannes in #11838
- fix(reconnect): use AtomicLong for anticipatedMessages counter by @anthony-swirldslabs in #13650
- feat: Move to fully connected network by @kfa-aguda in #13010
- docs: add design document for HIP-904 token cancel airdrop transaction by @MiroslavGatsanoga in #12787
Performance Results

v0.51
Release Highlights
HIP 206
Functionality- Defines a new function to the Hedera Token Service system contract that allows for the atomic transfer of HBAR, fungible tokens and non-fungible tokens.
- Function cryptoTransfer(TransferList transferList,TokenTransferList[] tokenTransfer)
- Exposes an existing HAPI call via smart contracts.
- Transfer respects granted allowances.
- Enables native royalty support on the EVM since native $hbar can now be transferred using spending allowances
- Direct interaction with HBAR and HTS tokens
- Eliminates the need for token wrapping.
- Enhances efficiency and reduces complexity.
- Cuts costs by removing intermediary steps i.e., wrapping assets to interact with them.
- Enables native royalty support on the EVM since native HBAR can now be transferred using spending allowances
HIP 906
Functionality- Introduces a new Hedera Account Service system contract.
- Enables querying and granting approval of HBAR to a spender account from smart contracts code
- hbarAllowance, hbarApprove
- Developers do not have to context switch out of smart contract code
- Introduces new account proxy contract for HBAR allowances
- Enables grant, retrieve, and manage HBAR allowances within smart contracts
- Developers do not have to context switch out of smart contracts code
- Simplifies workflows and enhances security
- Expands potential use cases, especially for DeFi and token marketplaces
0.51.5
What’s Changed
- feat(reconnect): introduce ReconnectMapStats interface by @anthony-swirldslabs in #13027
- chore: revert removal of CLI report tool by @lpetrovic05 in #13002
- docs: add design document for HIP-904 token reject operation by @MiroslavGatsanoga in #12786
- feat: gossip facade by @cody-littley in #12897
- feat: add the ability to disable the running event hasher by @cody-littley in #13083
- fix: ignore token expiry status in
TokenDissociateby @tinker-michaelj in #13104 - feat: add javadoc and diagram, delete dead code by @tinker-michaelj in #13070
- fix: use civilian payer for modified variants by @tinker-michaelj in #13020
- fix: 12853: Memory leak from MerkleDbDataSource.copyStatisticsFrom() by @artemananiev in #13097
- feat: Updated hedera-services code to support DAB protobuf changes. by @iwsimon in #13090
Performance Results

v0.50
0.50.1
What’s Changed
- chore: Cherry pick 13648 into release 0.50 branch by @lukelee-sl in #13662
- fix(ci): cherry pick milestone assignee checks rel 50 by @rbarkerSL in #13712
- fix: (cherry-pick) Use restart method to all token schemas by @Neeharika-Sompalli in #13676
- fix: Enable tokens.balancesInQueries.enabled by @netopyr in #13716
- chore: Enable tokens.balancesInQueries in code by @netopyr in #13769
0.50.0
What’s Changed
- feat: reorganize ISS wiring by @alittley in #11685
- feat(diff-testing): Script (python) to pull intervals - up to a day - from GCP by @david-bakin-sl in #11409
- fix: 11750 Fixed synchronization in
BreakableDataSource.saveRecordsby @imalygin in #11756 - feat: Differential testing: Enhance account store dumper to handle modular representation by @vtronkov in #11489
- test: add security v2 model tests for token associate by @anastasiya-kovaliova in #11327
- fix: stop checking for minimum birth round by @cody-littley in #11769
- feat: make the state compatible with birth rounds by @cody-littley in #11780
- fix: FilteredLoggingMonitor by @mxtartaglia-sl in #11754
- feat: diagram tweaks by @cody-littley in #11801
- fix: wait longer for freeze transaction to be handled by @JeffreyDallas in #11790
Performance Results

v0.49
0.49.7
What’s Changed
- fix: support crypto admin keys in system contract
tokenCreate()by @tinker-michaelj in #13148 - fix: remove balance adjustment limit from record in state, use
0for initial gas snapshot by @tinker-michaelj in #13185
0.49.6
What’s Changed
- fix: cherry-pick midnight rate management on restart (#13071) by @povolev15 in #13091
- feat: auto-resubmit operations with modifications (#12811) by @Neeharika-Sompalli in #13088
- fix: ignore token expiry status in
TokenDissociateby @tinker-michaelj in #13106 - fix: avoid NPE when migrating from genesis (non-prod) state by @tinker-michaelj in #13123
0.49.5
What’s Changed
- fix: storage link management by @tinker-michaelj in #13056
0.49.1
What’s Changed
- fix: manage
StakingInfosin restart by @tinker-michaelj in #12911
0.49.0
What’s changed
- feat: address cold read issue in ExtCodeHash operation by @lukelee-sl in #11323
- fix: 11348: The fix for 11231 doesn’t cover ParsedBucket by @artemananiev in #11349
- chore: Create ISS detector component by @lpetrovic05 in #11075
- chore: Add
orderedSolderTomethod to OutputWire by @poulok in #11330 - chore: remove hashgraph demo by @lpetrovic05 in #11352
Performance Results

v0.48
0.48.1
What’s Changed
- fix: remove adjustments limit by @tinker-michaelj in #12826
0.48.0
What’s Changed
Performance Results

v0.47
0.47.4
What’s Changed
- chore: cherry-pick unified CryptoCreate throttle reclamation (#12339).
0.47.3
What’s Changed
- chore: Configure
maxAggregateRelsto 15 million (all envs) (#12053).
0.47.2
What’s Changed
- fix: Update Configuration
hashesRamToDiskThresholdto 0 inMerkleDbConfig - fix: Backport the fix for virtual map flushes.
0.47.1
What’s Changed
- fix: only compare child time created against self-parent time created by @alittley in #11673
- chore: add an old-style queue thread for intake by @cody-littley in #11671
- fix: 11746: Backport the fix for #11304 to release 0.47 by @artemananiev in #11747
0.47.0
What’s Changed
- fix: bug when node is removed by @cody-littley in #10687
- fix: Fuzzy matching for CreateOperationSuite and Create2OperationSuite 09431 by @JivkoKelchev in #10185
- fix: recordCache to commit added entries and implemented correctly the remove elements from the queue by @povolev15 in #10523
- fix: Fix and enable all Schedule HapiTests by @povolev15 in #10551
- fix: implement sidecars by @JivkoKelchev in #9815
- feat: add setting for birth round ancient threshold by @cody-littley in #10660
- chore: drop chatter by @cody-littley in #10670
- chore: remove state info by @cody-littley in #10685
- chore: Rename contract causing services regression due to long name by @stoqnkpL in #10700
- fix: state leak by @cody-littley in #10690
Performance Results

v0.46
0.46.3
What’s Changed
- chore: bump HAPI proto version by @tinker-michaelj in #11232
0.46.2
What’s Changed
- fix: Ensure that the pending creation customizer applies to the address being created by @lukelee-sl in #11213
0.46.1
What’s Changed
- chore: bump HAPI proto version by @tinker-michaelj in #11232
0.46.0
What’s Changed
- feat: wiring diagram improvements by @cody-littley in #10233
- chore: Change
HashMaptoLinkedHashMapin custom fees assessment by @Neeharika-Sompalli in #10240 - feat: add implementation in throttling facility to handle N-Of-Unscaled type of throttling by @MiroslavGatsanoga in #10142
- build: do not publish test fixtures by @jjohannes in #10147
- build: patch everything we use to be a real Java Module by @jjohannes in #10056
- chore!: More common tests moved to correct module by @hendrikebbers in #10133
- feat: Config constants created & used by @hendrikebbers in #10117
- feat: script for cleaning build files by @cody-littley in #10190
- fix: Compact last PCES file at boot time by @cody-littley in #10257
- feat: sync++- by @cody-littley in #10260
Performance Results

v0.45
0.45.2
What’s Changed
- fix: Added a feature flag which is by default enabled to disable tokenBalances and tokenRelationships in
getAccountInfo,getAccountBalanceandgetContractInfoqueries. #10639
0.45.0
- Populate evm function result on failing eth transaction by @stoqnkpL in #9453
- Disable compression. by @cody-littley in #9554
- Fix tests in unique token management spec by @mhess-swl in #9537
- enaled one more test and remove the other one that not really in use by @povolev15 in #9557
- Enable tests from CannotDeleteSystemEntitiesSuite by @Ivo-Yankov in #9440
- Fix tests in ContractBurnHTSSuite by @agadzhalov in #9572
- Tune dependency scopes by @jjohannes in #8455
- unneeded calls to swirlds-common removed by @hendrikebbers in #9003
- Fixed CryptoRecordsSanityCheckSuite by @iwsimon in #9551
- Enable test from AssociatePrecompileSuite by @mustafauzunn in #9571
Performance Results

v0.44
0.44.3
What’s Changed
- Enforce NFT allowance check on auto-creation by @tinker-michaelj in e69d0a9
0.44.2
What’s Changed
- Catch UncheckedIOException during PCES file copy. (#10083) by @cody-littley in #10087
0.44.1
Bug Fixes
0.44.0
Features
- Re-add bootstrap.properties file to maintain downstream processes and increase accounts.maxNumber=20_000_000 #8915
- 8815: sort dirty leaves during flush #8981
- Add setting to disable critical quorum. #8961
- Add a doc for all system entity numbers #8993
- 08566 - Validate PCES Events When Loading State On Different Network #8568
- Differential testing analytic engine: State file file dumper now dumps special files #8991
- Added improved startup ASCII art. #9028
- Characterize invalid id failure modes for classic HTS calls #9053
- Add ordinals to status diagram, and update javadocs #9108
- 5552: Create a Grafana Data Dashboard to view all existing relevant data metrics #8845
- Update Besu to version 23.10.0 #9168
Performance Results

v0.43
- HIP-786 (#8620)
Enhancements
Services v0.43.0 adds the following enhancements:- Update Besu to 23.10.0 - cherry pick (#9199)
- Update the Besu EVM library to version 23.7.2 (#8472)
- “Productizing” contract disassembler at last (#8563)
- Auto sidecar validations (#8404)
- Create fat jar with services CLI so it can be run standalone (#8519)
Performance Results

v0.42
0.42.6
This release updates the platform SDK version from0.42.0 to 0.42.6, which removes reconnect.asyncStreamTimeout from the settings files. Doing so ensures that this property will default to the value specified in code (300 seconds).
Changes
- Upgrade platform SDK (#9224)
0.42.2
Changes
- 0.42 account balance test (#8866)
- Re-add bootstrap.properties file and increase
accounts.maxNumber=20_000_000(#8928)
0.42.1
Changes
- Chore: normalize configuration values (release/0.42) (#8668)
- 8751: No data source metrics for accounts, NFTs, or token rels (#8798)
0.42.0
- Add EIP 2930 support to EthTXData (#7696)
- Provide entity and throttle dashboards (#7774)
- 07748 Postconsensus signature gathering (#7776)
- Enable EIP-2930 transactions by default (#7786)
- 7570: Remove JasperDB (#7803)
- Remove support for legacy sync gossip. (#8059)
- Disable account balance exports (#8272)
- Modify config to support state on disk by default (#8510)
Performance Results

v0.41
- Ethereum transaction type support is expanded to include type 1 transactions (#7670) which follow EIP 2930 RLP encoding. This increases the number of native EVM tools and scenarios the Hedera Smart Contract Service supports.
- NFT mint pricing is changed to linearly scale based on number of serials minted. Also, minting a single NFT in collection is changed to cost 0.05. #7769
Performance Results

v0.40
CREATE1 addresses (once these are set by default in release 0.41+).
Open source contributors to the project will notice major refinements in the Gradle build, thanks to @jjohannes’s expert touch.
Performance Results

v0.39
- VirtualRootNode constructor creates a cache object that doesn’t get reused #6321
- Implement blocklisting of EVM addresses #5799
- Optimize virtual node cache flush strategy #5568
- HIP-721: 06026 - add software version to events #6236
- Implement CryptoCreate handle method #6112
- UtilPrng handle Implementation #6310
- Add a PCLI sub command to sign services stream files #6309
- Implement token freeze handling #6467
- Implement token unfreeze handle() #6502
- Combine Admin and Network modules #6511
- Implement the modular Pre-Handle Workflow #6291
- Move hashes out of leaves node in VirtualMap #5825
- TokenFeeScheduleUpdate handle() implementation #6582
- Basic File service implementation #6522
- Implement Token Association to Account #6609
- Implementation of handle workflow #6476
- Implement the modular record cache #6754
- CryptoDelete handle implementation #6694
Performance Results

v0.38
- Upgrade EVM to Shanghai #5964
- EVM version update and optimizations #5962
- Turn on the Shanghai version of the EVM in previewnet #6212
- Update hedera-protobufs-java version to 0.38.10 #6579
- Add PCLI command to sign account balance files #6264
Performance Results

v0.37
Features
- Implement topic deletion prehandle (#5033)
- Generalize workflows enabled and add workflow ports (#5032)
- Pre-handle improvements (#5056)
- Support auto-scheduling operations by type within a suite (#5054)
- Add SPI and App components supporting TransactionDispatcher for modularized HCS (#5062)
- added the missing functionality to FileSignTool (#5100)
- Consensus Message Submission Prehandle (#5059)
- Add IngestChecker mono adapters for sigs and solvency (#5098)
- [HIP-583] Finalize hollow accounts via any required signature in a txn (#4990)
- Remove CryptoCreate capability to create hollow accounts (#4998)
- Populate EVM Address in CryptoTranscation (#5010)
- Enable All EVM E2E suites to run with Ethereum Calls (#4375)
Performance Results

v0.36
Features
Services v0.36.0 adds the following functionality:- Add tracking of property changes for hollow account completion (#4647)
- Adding support for Redirect Token Calls fro evm-module (#4880)
- Update FileSignTool (#4988)
- Adding block number tool (#4997)
- Add client.workflow.operations and test with workflows (#5053)
- update hedera-services to use FSTS CLI instead of system properties
- 6166: Migrate VirtualMap data from JasperDB to MerkleDb data sources
- Implementation of current network functionality in new, modularized application architecture: consensus operations, query workflow, and various preHandle implementations
Security Updates: Hedera Smart Contract Service Security Model Changes
Changes from services v0.35.2 have also been ported to v0.36.0.- After the security incident on March 9th, the engineers conducted a thorough analysis of the Smart Contract Service and the Hedera Token Service system contracts.
- As part of this exercise, we did not find any additional vulnerabilities that could result in an attack that that which we witnessed on March 9th.
- The team also looked for any disparities between the expectations of a typical smart contract developer who is used to working with the Ethereum Virtual Machine (EVM) or ERC token APIs and the behaviors of the Hedera Token Service system contract APIs. Such differences in behavior could be used by a malicious smart contract developer in unexpected ways.
- In order to eliminate the possibility of these behavioral differences being utilized as attack vectors in the future, the consensus node software will align the behaviors of the Hedera Smart Contract Service token system contracts with those of EVM and typical token APIs such as ERC 20 and ERC 721.
- As a result, the following changes are made as of the mainnet 0.35.2 release on March 31st:
- An EOA (externally owned account) will have to provide explicit approval/allowance to a contract if they want the contract to transfer value from their account balance.
- The behavior of
transferFromsystem contract will be exactly the same as that of the ERC 20 and ERC 721 spectransferFromfunction. - For HTS specific token functionality (e.g. Pause, Freeze, or Grant KYC), a contract will be authorized to perform the associated token management function only if the ContractId is listed as a key on the token (i.e. Pause Key, Freeze Key, KYC Key respectively).
- The
transferTokenandtransferNFTAPIs will behave astransferin ERC20/721 if the caller owns the value being transferred, otherwise it will rely on approve spender allowances from the token owner. - The above model will dictate entity (EOA and contracts) permissions during contract executions when modifying state. Contracts will no longer rely on Hedera transaction signature presence, but will instead be in accordance with EVM, ERC and ContractId key models noted.
- As part of this release, the network will include logic to grandfather in previous contracts.
- Any contracts created from this release onwards will utilize the stricter security model and as such will not have considerations for top-level signatures on transactions to provide permissions.
- Existing contracts deployed prior to this upgrade will be automatically grandfathered in and continue to use the old model that was in place prior to this release for a limited time to allow for DApp/UX modification to work with the new security model.
- The grandfather logic will be maintained for an approximate period of 3 months from this release. In a future release in July 2023, the network will remove the grandfather logic, and all contracts will follow the new security model.
- Developers are encouraged to test their DApps with new contracts and UX using the new security model to avoid unintended consequences. If any DApp developers fail to modify their applications or upgrade their contracts (as applicable) to adhere to the new security model, they may experience issues in their applications.
Performance Results

v0.35
0.35.2 Hedera Smart Contract Service Security Model Changes
- After the security incident on March 9th, the engineers conducted a thorough analysis of the Smart Contract Service and the Hedera Token Service system contracts.
- As part of this exercise, we did not find any additional vulnerabilities that could result in an attack that that which we witnessed on March 9th.
- The team also looked for any disparities between the expectations of a typical smart contract developer who is used to working with the Ethereum Virtual Machine (EVM) or ERC token APIs and the behaviors of the Hedera Token Service system contract APIs. Such differences in behavior could be used by a malicious smart contract developer in unexpected ways.
- In order to eliminate the possibility of these behavioral differences being utilized as attack vectors in the future, the consensus node software will align the behaviors of the Hedera Smart Contract Service token system contracts with those of EVM and typical token APIs such as ERC 20 and ERC 721.
- As a result, the following changes are made as of the mainnet 0.35.2 release on March 31st:
- An EOA (externally owned account) will have to provide explicit approval/allowance to a contract if they want the contract to transfer value from their account balance.
- The behavior of
transferFromsystem contract will be exactly the same as that of the ERC 20 and ERC 721 spectransferFromfunction. - For HTS specific token functionality (e.g. Pause, Freeze, or Grant KYC), a contract will be authorized to perform the associated token management function only if the ContractId is listed as a key on the token (i.e. Pause Key, Freeze Key, KYC Key respectively).
- The
transferTokenandtransferNFTAPIs will behave astransferin ERC20/721 if the caller owns the value being transferred, otherwise it will rely on approve spender allowances from the token owner. - The above model will dictate entity (EOA and contracts) permissions during contract executions when modifying state. Contracts will no longer rely on Hedera transaction signature presence, but will instead be in accordance with EVM, ERC and ContractId key models noted.
- As part of this release, the network will include logic to grandfather in previous contracts.
- Any contracts created from this release onwards will utilize the stricter security model and as such will not have considerations for top-level signatures on transactions to provide permissions.
- Existing contracts deployed prior to this upgrade will be automatically grandfathered in and continue to use the old model that was in place prior to this release for a limited time to allow for DApp/UX modification to work with the new security model.
- The grandfather logic will be maintained for an approximate period of 3 months from this release. In a future release in July 2023, the network will remove the grandfather logic, and all contracts will follow the new security model.
- Developers are encouraged to test their DApps with new contracts and UX using the new security model to avoid unintended consequences. If any DApp developers fail to modify their applications or upgrade their contracts (as applicable) to adhere to the new security model, they may experience issues in their applications.
Features
- HIP-583 to expand alias support in CryptoCreate & CryptoTransfer Transactions.
- CryptoTransfer to non-existing EVM address alias causing hollow-account creation.
- Finalizing a hollow account with the payer signature in an incoming transaction
- As a user with an ECDSA based account from another chain I can have a new Hedera account created based on my evm-address alias.
- As a developer, I can create a new account using a evm-address alias via the CryptoTransfer transaction.
- As a developer, I can transfer HBAR or tokens to a Hedera account using their evm-address alias.
- As a Hedera user with an Ethereum-native wallet, I can receive HBAR or tokens in my account by sharing only my evm-address alias.
- As a Hedera user with a Hedera-native wallet, I can transfer HBAR or tokens to another account using only the recipient’s evm-address alias.
Configuration Changes
Performance Results

v0.34
0.34.3
Usev0.34.3 SDK.
0.34.0
Servicesv0.34.0 completes the implementation of HIP-583.
To ensure full test coverage of this intricate feature, it will first be enabled only on previewnet.
This release will not enable smart contract rent.
Performance Results

v0.33
- Hyperledger Besu EVM updated to version 22.10.x
- ‘accounts send’ subcommand added to yahcli to support sending HTS token units
- Developer documentation updates

v0.31
- HIP-542 roadmap for making payer of the
CryptoTransfersponsor forauto-creation. It also enables auto-creation with Token transfers in addition to Hbar transfers. - HIP-564 roadmap for allowing zero unit fungible token transfers
- HIP-573 roadmap for enabling token creators an option to exempt all of their token’s fee collectors from a custom fee.
- Adds support of the ERC20/721
transferFrommethod for HTS precompiles from HIP-514 roadmap. - Enables Smart Contract Traceability.
- Adds some changes related to testability improvements.

v0.30
getTokenExpiryInfo(address), updateTokenExpiryInfo(address, Expiry), isToken(address token), getTokenType(address token), and updateTokenInfo(address, HederaToken).
The updateTokenInfo(address, HederaToken) call is especially powerful. If a token’s admin key signs the transaction calling a contract, that contract can now make itself the token’s treasury, assume authority to mint or burn units or NFTs, and so on.
⚠️ Contract authors should know this release initiates Hedera’s expiration and rent model for contracts. There will be two visible effects immediately after the 0.30 upgrade:
- All non-deleted contracts will have their expiry extended to at least 90 days after the upgrade date.
- Deleted contracts will start to be purged from state; so a
getContractInfoquery that previously
returnedCONTRACT_DELETEDmay now reportINVALID_CONTRACT_ID.
$0.026 for 90 days) to the expired contract’s auto-renew account. If an auto-renew account has zero balance, the network will then try to charge the contract itself.
A contract unable to pay renewal fees will enter a week-long “grace period” during which it is unusable, unless its expiry is extended via ContractUpdate or it receives hbar. After this grace period, the contract will be purged from state.
We strongly encourage all contract authors to set an auto-renew account for their contract. This isolates the contract logic from the existence of rent.
This release also brings two peripheral improvements:
- It will become possible to schedule a
CryptoApproveAllowancetransaction. - Mirror node operators will be able to use the daily
NodeStakeUpdateexport to track the current values of several key staking properties. Please review the linked protobuf comments for more details on these properties.

v0.29
Contract-managed tokens 🪙
In Services 0.29 we have followed the HIP-514 roadmap to give contract authors many new ways to inspect and manage HTS tokens. The HIP enumerates the ways; examples include a contract that revokes an account’s KYC for a token, or deletes a token for which it has admin privileges, or even changes a token’s supply key based on the metadata in an NFT! Note there are four HIP-514 functions that will be part of release 0.30, as follows:getTokenExpiryInfo(address), updateTokenExpiryInfo(address, Expiry), updateTokenInfo(address, HederaToken), isToken(address token) and getTokenType(address token).
HIP-435 Record Stream v6 will be enabled on testnet and mainnet in this release.
Deprecations
Please note this important deprecation that will change how clients fetch token associations and balances after the November release in this year. At that time, mirror nodes will become the exclusive source of token association metadata. This is because HIP-367 made token associations unlimited, so in the long run it will not be efficient for consensus nodes to serve this information.
v0.28
UtilService with a prng transaction that generates a record with either a pseudorandom 48-byte seed, or an integer in a requested range.
Smart contracts can also get pseudorandom values by calling a new system contract at address 0x169, using the interface here as in this example. Applications might include NFT mint contracts, lotteries, and so on.
📝 The HIP-351 text does not yet reflect the name change from RandomGenerate to prng, or the system contract specification. It does explain in detail how prng derives its entropy from the running hash of transaction records generated by the network.
This release also includes some bug fixes and smaller improvements; notably, it:
- Extends
ContractCallLocalsupport to the ERC-20 and ERC-721 functionsallowance,getApproved, andisApprovedForAll. - Permits staking to contract accounts.

v0.27
v0.27.7
v0.27.0
0.0.800 account balance has crossed a threshold to be set by the council coin committee, rewards will be permanently activated.
This will set the stage for the second phase of staking, in which a node’s contribution to consensus becomes a direct function of its stake, and community nodes with sufficient stake can begin to participate in consensus. Please note the decentralized nature of this process makes it hard to predict exactly when each milestone and phase will be achieved. The immediately visible consequences of the 0.27 release will be simply,
- The consensus nodes handle
CryptoCreateandCryptoUpdatetransactions with staking elections---even if not all wallets and exchanges are updated to make these elections just yet.

v0.26
EthereumTransaction by which an account that was auto-created with an ECDSA(secp256k1) key can submit Ethereum transactions to Hedera by signing with its ECDSA key. (Standard Ethereum restrictions on the sender’s nonce apply.) Please see HIP-410 for details, including a summary of some very compelling use cases that the EthereumTransaction enables---for example, “I want to use MetaMask to create a transaction to transfer HBAR to another account”.
HIP-415 also anticipates such use cases by standardizing the concept of a Hedera “block”; this is important for a full implementation of the Ethereum JSON-RPC API. The definition is simple: One block is all the transactions in a record stream file. The block hash is the 32-byte prefix of the transaction running hash at the end of the file. And the block number is the index of the record file in the full stream history, where the first file had index 0.
Consensus Node 0.26 implements HIP-376, allowing smart contract developers to use the familiar EIP-20 and EIP-721 “operator approval” with both fungible and non-fungible HTS tokens.
Approved operators can manage an owner’s tokens on their behalf; this is necessary for many consignment use cases with third party brokers/wallets/auctioneers.
Any permissions granted in a contract through approve() or setApprovalForAll() have an equivalent HAPI cryptoApproveAllowance or cryptoDeleteAllowance expression---and this expression is externalized as a HAPI TransactionBody in the record stream. That is, the HIP-376 system contracts expose a subset of the native HAPI operations, only within the EVM.

v0.25
CryptoService HAPI queries still return information for only an account’s 1000 most recently associated tokens; mirror nodes remain the best source for full history.)
We are also very excited to announce support for HIP-358 (Allow TokenCreate through Hedera Token Service Precompiled Contract). This HIP supercharges contract integration, making it possible for a smart contract to create a new HTS token---fungible or non-fungible, with or without custom fees. (An interested Solidity developer might consult the examples in this contract.)
In a harbinger of more upcoming HTS precompile support, this release will also enable HIP-336 (Approval and Allowance API for Tokens). Token owners can now approve other accounts to manage their HTS tokens or NFTs, in direct analogy to the approve() and transferFrom() mechanisms in ERC-20 and ERC-721 style tokens.
Enhancements
Fixes
- ERC
viewfunctions now usable inContractCallLocalQuery#3061

v0.24
0.0.X entity id; and analogously, every HTS non-fungible token appears as an ERC-721 token. This means a smart contract can look up its balance of a fungible HTS token; or change its behavior based on the owner of a particular HTS NFT. Please see the linked HIP for full details.
This upgrade also creates two new system accounts 0.0.800 and 0.0.801 that will hold reward funds.
One change to the Hedera API (HAPI) is that we now have enough evidence to conclude the experimental getAccountNftInfos and getTokenNftInfos queries do not have a favorable cost/benefit ratio, and these queries are now permanently disabled.

v0.23
CREATE2 opcode). Smart contract developers are now free to use the CREATE2 EVM opcode. A typical use case is a distributed exchange that wants its pair contracts to have deterministic addresses based on the tokens in the pair.
Please note two issues fixed in this release. First, in release 0.22, the nodes returned the bytes ledger_id stipulated by HIP-33 as a UTF-8 encoding of a hex string. The returned bytes are now the big-endian representation of the ledger’s numeric id. Second, prior to this release, the record of a dissociateToken from a deleted token did not list the discarded balance of the dissociated account if the token’s treasury was missing. This is now fixed.

v0.22
- Network EVM capacity increased to 15M
gas-per-second. (Please see HIP-185 for details.) - Gas limit per
ContractCreateorContractCallraised to 4M. - Per-contract storage capacity increased to 10MB.
- Solidity integration with native HTS tokens. (Please see HIP-206 for details.)
CryptoGetInfo with a ledger id that marks which Hedera network answered the query. Second, HIP-31 allows a client to include the expected decimals for a token in a CryptoTransfer. This means a hardware wallet can guarantee its token transactions will have the precision seen by the user in the device display.
While we are gaining momentum in our smart contracts roadmap, we are also deeply committed to improving the developer experience, and welcome issues and ideas in our GitHub repository and Discord!

v0.21.0
CryptoTransfer without having already created an 0.0.X id on the network. The new user only needs to provide their public key, and when a sponsor account sends ℏ “to” their key via a new AccountID.alias field, the network automatically creates an account with their key. Additional transfers to and from an auto-created account may also use its alias instead of the account id.
An alias may also be used to get the account balance and account info for the account. (Do note there is a known issue that causes the getAccountInfo query response to echo back the account alias instead of its 0.0.<num> id; this will be fixed in the next release. Please use the free getAccountBalance query to check the 0.0.<num> id that corresponds to an alias.) You will be able to use the alias in all other transactions and queries in a future release.
Meanwhile, our team continues exhaustive due diligence for Smart Contracts 2.0… 🚀

v0.20.0
- The
ContractUpdateTransactionBody.fileIDfield, which is redundant given the existence of theContractGetBytecodequery. - The
ContractCallLocalQuery.maxResultSizefield, as this limit is now simply a side-effect of the given gas limit.

v0.19.4
v0.19.3
maxAutoAssociations can receive air-drops (i.e., units or NFTs of a token type without explicit association). Second, we have also implemented HIP-24, which provides a safety measure for token types created with a pauseKey. If a TokenPause is submitted with this key’s signature, then all operations on the token will be suspended until a subsequent TokenUnpause.
v0.18.1
CryptoTransfer and ConsensusSubmitMessage operations are still supported at 10k TPS even with this scale.
In this release, we have also enabled automatic reconnect. This feature comes into play when a network partition causes a node to “fall behind” in the consensus protocol. With reconnect enabled, the node can use a special form of gossip to “catch up” and resume participation in the network with no human intervention. This works even when the node has missed many millions of transactions, and the world state is very different from when it was last active.
We are happy to also announce that accounts can be customized to take advantage of the upcoming HIP-23 (Opt-in Token Associations) feature set. That is, an account owner can now “pre-pay” for token associations via a CryptoCreate or CryptoUpdate transaction, without knowing in advance which specific token types they will use.
Once HIP-23 is fully enabled in release 0.19, when their account receives units or NFT’s of a new token type via a CryptoTransfer, the network will automatically create the needed association---no explicit TokenAssociate transaction needed. This supports several interesting use cases; please see the linked HIP-23 for more details.
There are three other points of interest in this release.
First, we have removed the HIP-18 limitations noted in the previous release. The tokenFeeScheduleUpdate transaction has been re-enabled, and multiple royalty fees can now be charged for a non-fungible token type.
Second, the address books in system files 0.0.101 and 0.0.102 will now populate their ServiceEndpoint fields. (However, the deprecated ipAddress, portno, and memo fields will no longer be populated after the next release.)
Third, please note that the TokenService getTokenNftInfos and getAccountNftInfos queries are now deprecated and will be removed in a future release. The best answers to such queries demand historical context that only Mirror Nodes have; so these and related queries will move to mirror REST APIs.
Developers will likely appreciate two other release 0.18.1 items. First, we have migrated to Dagger2 for dependency injection. Second, there is a new getExecutionTime query in the NetworkService that supports granular performance testing in development environments.

v0.18.0
CryptoCreate or CryptoUpdate transaction, without knowing in advance which specific token types they will use.
Then, when their account receives units or NFT’s of a new token type via a CryptoTransfer, the network automatically creates the needed association---no explicit TokenAssociate transaction needed. This supports several interesting use cases; please see the linked HIP-23 for more details.
There are three other points of interest in this release.
First, we have removed the HIP-18 limitations noted in the previous release. The tokenFeeScheduleUpdate transaction has been re-enabled, and multiple royalty fees can now be charged for a non-fungible token type.
Second, the address books in system files 0.0.101 and 0.0.102 will now populate their ServiceEndpoint fields. (However, the deprecated ipAddress, portno, and memo fields will not be no longer be populated after the next release.)
Third, please note that the TokenService getTokenNftInfos and getAccountNftInfos queries are now deprecated and will be removed in a future release. The best answers to such queries demand historical context that only Mirror Nodes have; so these and related queries will move to mirror REST APIs.
Developers will likely appreciate two other release 0.18.0 items. First, we have migrated to Dagger2 for dependency injection. Second, there is a new getExecutionTime query in the NetworkService that supports granular performance testing in development environments.
Performance Measurement Results:

v0.17.4
CryptoTransfer can perform atomic swaps with any arbitrary combination of fungible, non-fungible, and ℏ transfers. (Please do note that the “paged” getAccountNftInfos and getTokenNftInfos queries will remain disabled until release 0.18.0, as several large performance improvements are pending.)
In this release we have made it possible to denominate a fixed fee in the units of the token to which it is attached (assuming the type of this token is FUNGIBLE_COMMON). Custom fractional fees may now also be set as “net-of-transfer”. In this case the recipient(s) in the transfer list receive the stated amounts, and the assessed fee is charged to the sender.
There are a few final points of more specialized interest. First, users of the scheduled transaction facility may now also schedule TokenBurn and TokenMint transactions. Second, network administrators issuing a CryptoUpdate to change the treasury account’s key must now sign with the new treasury key. Third, the supported TLS cipher suites have been updated to the following list:
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384(TLS v1.2)TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384(TLS v1.2)TLS_AES_256_GCM_SHA384(TLS v1.3)
tokenFeeScheduleUpdate transaction is not currently available. Second, only one royalty fee will be charged for a non-fungible token type. Both limitations will be removed in release 0.18.0.
Performance Measurement Results:

v0.17.3
v0.17.2
v0.16.1
CryptoTransfer.
When a custom fee cannot be charged, the CryptoTransfer fails atomically, changing no balances other than for the Hedera network fees.
The five case studies in this document show the basics of how custom fees are charged, and how they appear in records. Note that at most two “levels” of custom HTS fees are allowed, and custom fee-charging cannot require changing more than 20 account balances.
⚠️ There is one variation on custom fees that requires a work-around in this release. Specifically, if a fixed fee should be collected in the units of the “parent” token to whose schedule it belongs, then in Release 0.16.0 this must be accomplished using a FractionalFee as described in this issue. In Release 0.17.0 the more natural FixedFee configuration will be available.
In this release, we have also enabled previewnet support for HIP-17 (Non-fungible Tokens). Unique token types and minted NFTs are more natural for many use cases than fungible token types. The Hedera Token Service will soon support both natively, so that a single CryptoTransfer can perform atomic swaps with any arbitrary combination of fungible, non-fungible, and ℏ transfers.
We are very grateful to the Hedera user community for these interesting and powerful new feature sets.
Performance Measurement Results:

v0.15.1
GetAccountRecords query now returns, from state, all such records for which the queried account was the payer account.
We have also finalized the design for the non-fungible token (NFT) support to be added to the Hedera Token Service (HTS) in release 0.16.0. The protobufs for new HAPI operations are available in the 0.15.0 tag of the hedera-protobufs GitHub repository.
To simplify fee calculations, there is now a maximum entity lifetime of a century for any entity whose lifetime is not _already_ constrained by the maximum auto-renew period. A HAPI transaction that tries to set an expiration further than a century from the current consensus time will resolve to INVALID_EXPIRATION_TIME.
v0.14.0
v0.13.2
ScheduleSign transaction in many common use cases. Users will be able to schedule CryptoTransfer and ConsensusSubmitMessage transactions in this release. Other transaction types will be introduced in future releases.
This release deprecates three fields in the protobuf for system files 0.0.101 and 0.0.102. The three deprecated fields are ipAddress, portno, and memo. When we rely on these fields, we cannot concisely represent node with multiple IP addresses. For example, take mainnet node 0 (account 0.0.3), which as of this writing has proxy IPs 13.82.40.153, 34.239.82.6, and 35.237.200.180. The mainnet 0.0.101 file must include a NodeAddress entry for each proxy, which means duplicating fields like nodeCertHash.
The new protobuf avoid this duplication, letting us represent node 0 in a protobuf equivalent of,
0.0.101 and 0.0.102 time to prepare for exclusive use of the new format. After six months, we will eliminate the duplication and the ipAddress, portno, and memo fields will be left empty. (The fields will never be removed to ensure it remains possible to parse early versions of these system files.)
In a minor point, Services now rejects any protobuf string field whose UTF-8 encoding includes the zero-byte character; that is, Unicode code point 0, NUL. Databases (for example, PostgreSQL) commonly reserve this character as a delimiter in their internal formats, so allowing it to occur in entity fields can make life harder for Mirror Node operators.
To simplify tasks for network admins, we have also streamlined the signing requirements for updates to system accounts, and introduced a Docker-based utility called “yahcli” for admin actions such as updating system files.
v0.12.0
X is associated with token Y, then even if token Y is marked for deletion, a getAccountInfo query for X will continue to show the association with Y _until_it is explicitly removed via a tokenDissociateFromAccount transaction. Note that for convenience, queries that return token balances now also return the decimals value for the relevant token. This allows a user to interpret e.g. balance=10050 as 100.50 tokens given decimals=2.
In a final Hedera API (HAPI) change, we have extended the memo field present on contract and topic entities to the account, file, token, and scheduled transaction entities. (Note this memo is distinct from the short-lived memo that may be given to any TransactionBodyfor inclusion in the TransactionRecord.) All of these changes to HAPI are now more easily browsed via GitHub pages here; the new hashgraph/hedera-protobufs repository is now the authoritative source of the protobuf files defining HAPI.
Apart from these enhancements to HAPI, the “streams” consumable by mirror node operators now include an alpha version of a protobuf file that contains the same information as the _Balances.csv files. The type of this file is AllAccountBalances.
v0.11.0
900-1000 on startup if they do not exist.
v0.10.0
newTotalSupply field in the receipts of TokenMint and TokenBurn transactions. Without this field, a client must follow the entire record stream of a token’s supply changes to be certain of its supply at the consensus timestamp in the receipt. (Note that HTS operations are now enabled on Previewnet and Testnet, but remain disabled on Mainnet at this time. Please consult the SDK documentation for HTS semantics.)
Also for HTS, we added a property fees.tokenTransferUsageMultiplier that scales the resource usage assigned to a CryptoTransfer that changes token balances. This scaling factor is expected to be set so that the cost of a CryptoTransfer that changes two token balances is roughly 10x the cost of a CryptoTransfer that changes only two hbar balances.
Apart from HTS, this release drops a restriction on what payer accounts can be used for CryptoUpdate transactions that target system accounts. (That is, accounts with numbers not greater than hedera.numReservedSystemEntities.) In earlier versions, only three payers were accepted: The target account itself, the system admin account, or the treasury account. Other payers resulted in a status of AUTHORIZATION_FAILED. This entire restriction is removed, with one exception---the treasury must pay for a CryptoUpdate targeting the treasury.
Apart from these functional changes, we fixed an unintentional change in the naming of the crypto balances CSV file, and improved the usefulness of clients under test-clients/ for testing reconnect scenarios.
v0.9.0
SignatureList message type. Second, we added a top-level signedTransactionBytes field to the Transaction message to ensure deterministic transaction hashes across different client libraries; the top-level bodyBytes and sigMap fields are now deprecated and the already-deprecated body field is removed. Third, we deprecated all fields related to non-payer records, include account send and receive thresholds. This followed from the effective removal of non-payer records in v0.8.1.
For the same reason, the semantics of the CryptoGetRecords and ContractGetRecords queries have also changed. The only queryable records are now those granted to the effective payer of a transaction that was handled while the network property ledger.keepRecordsInState=true. Such records have an expiry of 180 seconds. It is important to note that because a contract account can never be the effective payer for a transaction, any ContractGetRecords query will always return an empty record list, and we have deprecated the query.
v0.8.1
v0.8.0
master for up-to-date semantics.
Enhancements
- Deprecated fields related to threshold records in HAPI protobuf #506
- Update Receipt proto to pair each Status with NodeID - Receipt is deleted only when the latest (duplicate) transaction expires.
getTxRecordAPI will continue to return ALL records with the transaction ID. - First drafts of
tokenCreate,tokenUpdate,tokenDelete,tokenTransfer,tokenFreeze,tokenUnfreeze,tokenGrantKyc,tokenRevokeYc,tokenWipe, andgetTokenInfoHAPI operations. #505 and #522
v0.7.0
0.7.3 which enables zero-stake nodes to be part of a network without affecting consensus. Consensus Node v0.7.0 migrated to new interfaces and methods provided in this version of the Swirlds SDK. HCS topic running hashes are now calculated including the payer account id. The release includes other minor fixes and improvements.
Enhancements
- Migrate to Swirlds SDK release
0.7.3with appropriate settings and logging configurations #347, #427 - Update HCS topic running hash to include the payer account id #88
- Add zero-stake node functionality #274
- Add new stats for the average size of HCS submit message transactions that got handled and for counting the number of platform transactions not created per second #316, #334
- Change gRPC CipherSuite to be CNSA compliant #215
- Make recordLogPeriod dynamic with a default of 2 seconds #315
- Add record with 3-min expiry to effective payer account after handling transaction #348
- Enhancements for going open source #378, #379
- Prevent
CryptoCreateandCryptoUpdatetransactions from giving an account an empty key #58, #60 - Fix incorrect submitted smart contract transactions count #371
- Validate total ledger balance before starting up Services #258
- Add a new rolling file to log all queries with controlled maximum rate #59
- Other minor bugs #373
v0.6.0
ConsensusSubmitMessageTransactionBody, an optional field for the current chunk information. For every chunk, the payer account that is part of the initialTransactionID must match the Payer Account of this transaction. The entire initialTransactionID should match the transactionID of the first chunk, but this is not checked or enforced by Hedera except when the chunk number is 1.
Enhancements
- Add support for HCS Topic Fragmentation
- Protobuf v0.6.0 with HAPI doc update to support HCS Topic Fragmentation
v0.5.8
v0.5.0
- Add support for TLS
- Expand address book metadata
- Return all created contract ids
- Propagate creator contract metadata
- Introduce GetVersionInfo query
- Standardize throttle configuration
- Enforce file.encoding=utf-8 on startup
- Make duration properties inclusive for readability
- Use message SHA-384 hash in running hash
- Enable immutable files
- Relax FileDelete signing requirements
- Fix sbh calculation in FileUpdate
- Return metadata for deleted files
- Enforce receiver signing requirements during contract execution
- Reject invalid CryptoGetInfo
- Reject CryptoCreate with empty key
- Return NOT_SUPPORTED for state proof queries
- Waive fees for 0.0.57 updating 0.0.111
- Waive signing requirements for 0.0.55 updating 0.0.121/0.0.122
- Waive all fees for 0.0.2
- Do not throttle system accounts
- Replace “claim” with “livehash” as appropriate
- Standardize and clarify HAPI doc
v0.4.1
- Software update includes the ability for Hedera to dynamically set throttles on network transaction types.
- The following throttles would be updated to: 1000 submit messages per second and 5 topic creates per second.
- Reassigning of new Council Member nodes
v0.4.0
- Say hello to the Hedera Consensus Service! This release is the first to include HCS, allowing verifiable timestamping and ordering of application messages.
- Network pricing has been updated to include HCS transactions and queries
- Network throttle for HCS set to 1000 tps for submitting messages, and 100 tps for each of the other HCS operations.
- Improved end to end testing.
- General code clean up and refactoring.
- ContractCall - TransactionReceipt response to ContractCall no longer includes the contractID called
- CryptoUpdate - TransactionReceipt response to CryptoUpdate no longer includes the accountID updated
- CryptoTransfer – CryptoTransfer transactions resulting in INSUFFICIENT_ACCOUNT_BALANCE error no longer list Transfers in the TransactionRecord transferList that were not applied
Miscellaneous
SDKs
- Java SDK has been updated to support the Hedera Consensus Service
- JavaScript/Typescript SDK has reached version 1.0.0, supporting all four mainnet services
- JavaScript/Typescript SDK supports both running in the browser (with Envoy Proxy) and in Node.
- Go SDK now supports all four mainnet services.
- Transfer list within transaction records now shows only a single net amount in or out for each account, reflecting both transfers and any fees paid.
- Fixed bug in fee schedule that had resulted in fees for ContractCallLocal, ContractGetBytecode, and getVersion queries being undercharged by ~33%
- You may get more information regarding transaction record fees here.
SDK Extension Components
- The Hedera SDK Extension Components (SXC) is an open sourced set of pre-built components that aim to provide additional functionality over and above HCS to make it easier and quicker to develop applications, particularly if they require secure communications between participants.
- Components use the Hedera Java SDK to communicate with the Hedera Consensus Service.
- Learn more about Hedera SXC here.