HTND 1.7.0 sees minor version number upgrade, because we have solved the situation with Arm devices running the node (Linux Arm support included by default), even though this release has pletohra of optimizations and some new features in RPC and +300% faster block processing and memory optimizations with C style allocation system (without cgo), with actual free() and memory out of the Garbage Collectors heap.
Default GOMEMLIMIT is 8GiB and GO GC at 100%. You can tweak these on to your flavor and the GC churn is still happening as there are many things like Golang channels that can't be converted to C style allocations. But now we have a tool to change the memory pressure where necessary.
Highlights
- Added C-style memory allocation utilities for selected heavy paths.
- Reduced GC churn and allocation pressure across hot paths, especially block window processing, block parent building, RPC conversion paths, mempool, notification handling, and UTXO index operations.
- Improved wallet and auto-compound behavior with stronger UTXO filtering, safer spent-output handling, and fewer unnecessary address/UTXO fetches.
- Added paginated UTXO browsing and improved address-based RPCs to make large-wallet workflows more practical on public nodes.
- Hardened IBD, relay, and RPC behavior under slow, stalled, or abusive peers, including better rate limiting, timeout handling, and queue protection.
Wallet and RPC
- Added GetPaginatedUTXOsByAddresses for incremental UTXO browsing.
- Added isHighPriority support to transaction submission so auto-compound transactions can be treated more safely in mempool flows.
- Improved getUTXOsByAddresses robustness, nil handling, bounds checks, and encoding safety.
- Added wallet-side UTXO fetch limit controls and hardened auto-compound UTXO selection.
- Improved balance fetching by using lighter paths where possible and reduced repeated UTXO polling for recent addresses.
- Added GetUsableAddresses support to reduce wallet-side RPC spam.
Performance and Memory
- Optimized block parent and block window allocation patterns.
- Reduced allocation churn in verbose RPC paths, acceptance-data handling, notification conversion, txscript engine setup, and LRU/cache helpers.
- Add ability to dial up the GC during IBD by env setting HTND_HIGCIBD for usage, if you want to run node with more aggressive GC to reduce memory pressure.
- Reused buffers more aggressively in pruning-point UTXO sync and block body sync paths.
- Added memory leak logging and allocator tests/benchmarks to validate the new allocation strategy.
Networking, IBD, and Peer Handling
- Add IBD and relay block request limits that adjust per thread count of the CPU.
- Added and tuned configurable IBD timeout behavior, including nearly-synced handling and optional timeout disabling.
- Improved behavior with very slow peers and tar-pit senders.
- Fixed RPC stream timeout regressions and improved responsiveness for stalled or idle RPC connections.
- Added same-version peer filtering and improved trusted peer matching.
- Improved connection manager, address manager, and route queue behavior under load.
Consensus and Correctness
- Fixed UTXO diff child handling and disqualified-block UTXO diff staging.
- Improved handling around header-only and missing-block edge cases.
- Added safer pruning-point UTXO chunk handling and related sync fixes.
- Improved error clarity for tips, acceptance data, store misses, and protocol-rule failures.
- Allowed some block/relay operations to continue more gracefully when nearly synced.
Platform and Build
- Added and corrected Linux arm64 CGO Hoohash support, with better defaults on supported systems.
- Added automatic build number metadata to use the short Git commit hash.
- Updated dependencies and cleaned up CI, workflow, and test harness stability.
On that note HTND master branch after 1.7.0 release is feature freezed until dagknight hard fork, more features come in 2.0.0 in dagknight branch until then.