Features
Services v0.39.0 adds the following features:
- 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
This release also adds the following minor features:
- Includes an existing test modified to use #6168
- Only clear memo in TokenUpdateLogic if client code can signal unset vs empty #6322
- Update AddressBookTestingTool README.md #6330
- Fuzzing test ethereum transaction LazyCreate #6247
- Move token revoke verification method to preHandle #6318
- Increase the TPS for AddressBookTestingTool to 1k #6342
- updog #6255
- Add ExportingRecoveredStateListener #6317
- Refactor CryptoCreate #5878
- Abbreviate and shorten JDB test asset names #6339
- AddressBook.forceUseOfAddressBook default setting to false #6405
- d busy time metric #5798
- Faster class scan for config records #6274
- Sync as protocol #5919
- d ref count debug flag #6431
- Remove unused properties for parsing config.txt #6110
- queue thread flush #6406
- Deleted unused code in platform module #6434
- organize gossip packages #6436
- Lay groundwork for ignoring app transactions during pces replay. #6442
- Add query performance test to nightly test panel #6458
- EVM version update and optimisations #5962
- Add fuzz tests for hollow account completion #4855
- Only com.swirlds is scanned by ConfigurationHolder #6430
- Add Set support to the Config API #6004
- Continue sending signature transactions during a freeze. #6474
- Don't sync slowly in the hashgraph demo. #6462
- PCES startup lifecycle #6420
- AddressBookInitializer do not validate state loaded addressbook #6480
- Flatten SwirldsPlatform.init() #6484
- Update branch to latest protobufs #6459
- Increment docker timeout #6495
- Di services refactoring part 2 #6341
- Flatten buildEventIntake() #6494
- Remove HTS performance test from nightly regression #6507
- Turn off traceability migration in 0.39 and subsequent releases #6382
- Config API for services: Config instance is provided #6294
- Remove vestigial Signed State cycle metric intervals #6515
- Use adjusted account offsets in JRS test #6510
- Add support back for genesisFreezeTime #6529
- Accommodate varying sig map sizes in canAutoCreateWithFungibleTokenTransfersToAlias() #6520
- Remove ChatterSettings and use ChatterConfig instead #6376
- Extend software version to use configuration #6519
- flatten build event handlers #6517
- Config provided by Dagger #6525
- Add tests for gas utility functions #6537
- delete platform metrics #6521
- Add Dockerfile, publish gcr.io/hedera-registry/validation-scenarios:0.1.0 #6485
- turn NodeId into a record containing a long #6370
- Only allow positive amounts for transferToken function #6558
- pcli event stream info command to accept timestamp #6346
- Skip sending class IDs for virtual leaf records during reconnects #6539
- Implement getTypicalSerializedSize() method for variable-sized HS virtual map classes #6369
- Move (some) signatures and decoders of versioned ABIs to a dedicated location #6564
- Added an extended test work flow for platform function change PRs #6482
- Export the uptime package to the config package. #6578
- Export sync config to config impl. #6584
- Remove FCHashMapSettings and use FCHashMapConfig instead #6378
- remove getters #6549
- remove onlyDefaultHapiSpec #6552
- Remove ReconnectSettings and use configuration instead #6233
- consistency testing tool #6505
- remove unsafe state access #6567
- Remove redundant pause check. #6600
- Remove zero stake check in submission #6604
- Update .gitignore for new metricsDoc.tsv spew #6587
- remove get events #6602
- Remove unwanted check #6622
- deprecating long node ids and adding NodeId API to Address #6440
- ReusableBucketPool synchronization redone #6597
- Use keccak hash of signed bytes for ECDSA_SECP256K1 message #6610
- Dagger modules refactored #6590
- Set ReconnectController state to null after releasing #6626
- Аdd hollow account finalization doc #5758
- Updates Metrics to use non-contiguous NodeIds #6632
- Implement complete SubmissionManager with expiry dedupe cache #6646
- multinode event stream report #6624
- Adjust netty keepAlive time/outs to longer interval #6655
- Adjust netty keepAlive time/outs to longer interval #6655
- Add checks for token revoke #6658
- Crypto and State use non contiguous NodeId #6635
- colorize pcli logs #6668
- Out of Order Gossip Simulator #6535
- Added missing rehash for VirtualMap leaves #6653
- Also log timestamp when ISSTestingToolState provokes an ISS #6662
- Added comment that hashCode test values must not be changed #6647
- Add missing migration test panel #6678
- use busy time metric #6562
- MigrationTestingTool compatible with v0.38 saved state #6652
- Add e2e tests for consensus-service #6563
- Refactor top-level sig check #6679
- Remove Deprecated SigInfo Class #6634
- NodeId implements SelfSerializable #6691
- Enabled leaf rehashing for existing VirtualMap instances. #6685
- Gradle update and script cleanup #6637
- gossip encapsulation #6607
- Add optional keys and optional hollow accounts to pre-handle context #6542
- Reflect mainnet 0.0.111 (fees) and 0.0.123 (throttles) contents in repo #6665
- Update HIP-583 design doc and test plan #4818
- Fuzzing test for LazyCreate through precompiles #6527
- Add pureChecks() method to TransactionHandler #6697
- Added contracts.nonces.externalization.enabled feature flag #6721
- MAX_FULL_REHASHING_BUFFER_TIMEOUT is increased to 60 seconds. #6717
- Use instantaneous capacity checks for gauges and TraceabilityExportTask #6733
- PreHandle and QueryContext.configuration #6699
- AddressBook.toConfigText() Supports Memo #6740
- Add helpful debug messages for JRS failure #6744
- updates daily CI tasks to properly handle the release branch names #6753
- Consolidate all records in single FCQueue #6718
- Handle old events #6663
- Create platform status readme #6669
- Allow queried TransactionID to have deleted payer account #6734
- file service system file delete and undelete #6707
- Added script for merging config.txt and currentAddressBook.txt. #6756
- file service fix the configuration method #6766
- Revert on-disk, consolidated FCQ dev overrides #6781
- Config sources for services defined #6743
- Update zero weights for new nodes #6777
- AddressBook.toConfigText() updated unit test. #6764
- FCQueue.getHash() is a hashing bottleneck #6769
- Browser and Platform support noncontiguous NodeId #6695
- Teacher should stop teaching if it falls behind while teaching #6557
- Updated PBJ to 0.6.0 and updated gradle build for new decencies #6793
- Allow INVALID_SIGNATURE status on EthTx value sent to EOA with receiverSigRequired=true #6779
- Enable data on disk and MerkleDb for nightly services runs #6795
- Better handling of failed async hashing #6796
- MerkleDb compactions are stopped after a snapshot #6808
- Add extra information to state dump log. #6813
- Bytes Converter added for Config #6643
- Always return EIP-1014 address as priority even if not alias #6776
- Do leaf rehash during VirtualMap deserialization #6807
- Re-use consensus throttle in HederaWorldState.commit() for following children #6800
- Adjust burn token amount handling #6805
- PREVIEWNET, LOCAL: Sunset old security model for smart contracts #6824
- List of dirty leaves doesn't have to be sorted on VirtualNodeCache flush #6741
- Fix redirect for token parsing #6819
- Remove usages of VirtualMap.fullLeafRehash #6815
- Add stats for platform_degraded and platform_healthyNetworkFraction_fraction to Network Status dashboard #6907
- Accounts integrity violated with accounts.storeOnDisk enabled #6846
- Cannot snapshot to disk after MerkleMap to VirtualMap migration w/ MerkleDb #6887
- Make no-min fractional fees viewable via precompiles #7031
- Move spender validation only for approvals #7030
- Enable / disable data on disk and MerkleDb in dev environments #6886
- Retire old security model for smart contracts by changing HAPI signature-check block limit to LOW #7055
- Enable MerkleDb in previewnet, testnet, and mainnet in 0.39 #7109
- MerkleDb metadata file must not be changed in saved states #7066
- ISS in account store after migration to disk (0.39) #7136
Bug Fixes
- Fix string formatting bug #6337
- Fail to read a data item after data source compaction was interrupted #6426
- Auto-scale from per-node mtps instead of network-wide #6465
- Fix state loading. #6499
- Method name in TestConfigBuilder fixed #6526
- Large reconnect relates tests fail after recent changes #6540
- extended test lable #6591
- FCQueue is not properly destroyed #6630
- Cause pcli.sh to fall back to no color if the color script is missing #6683
- Inconsistency between VirtualNodeCache and DataSource during snapshots #6681
- Properly clear pipelines before a reconnect. #6738
- Fix Hedera so it can start again #6804
- bug fix in AddressBookTestingToolState #6817
- Added tests, fixed some bugs #6784
- IOException during warm() call #6820
- Fix nextExportTime if time exceeded one exportPeriod #7020
- Old virtual map copies aren't released during to disk migration #7019
Contributors
We'd like to thank all the contributors who worked on this release!
@nathanklick
@tinker-michaelj
@qnswirlds
@agadzhalov
@MiroslavGatsanoga
@mhess-swl
@cody-littley
@artemananiev
@randered
@edward-swirldslabs
@lpetrovic05
@hendrikebbers
@timo0
@Neeharika-Sompalli
@JeffreyDallas
@stoyan-lime
@iwsimon
@povolev15
@david-bakin-sl
@alittley
@kimbor
@lukelee-sl
@rbair23
@OlegMazurov
@imalygin
@poulok
@nickpoorman
@jjohannes
@jsync-swirlds
@agadzhalov
@netopyr
@jasperpotts
@beeradb