github hiero-ledger/hiero-block-node v0.28.0

6 hours ago

Hiero Block Node v0.28.0 introduces Pikachu — a new dynamic plugin loading architecture that fundamentally changes how the Block Node is deployed. The published OCI image now ships as a barebone runtime with no plugins included. Plugins are resolved from Maven Central and loaded at pod startup via Helm chart configuration, giving operators full control over which functionality is deployed without rebuilding images. Pre-defined deployment profiles (minimal, lfh, rfh, all-plugins) are provided as Helm values override files for common scenarios. Third-party and private plugins are supported through the same mechanism. For full details on plugin configuration, available profiles, and custom plugin selection, see the Helm chart documentation.

This release also upgrades block verification to support HAPI v0.71.0, implementing domain-separated Merkle tree hashing (prefix bytes 0x00/0x01/0x02) to match Consensus Node v0.71.0's verification scheme. A new Detail Status API exposes plugin versions and loaded module metadata at runtime. Several improvements to the Files Historic Plugin extract zipping logic into a standalone task and improve retention behavior. Performance improvements include a reduced Docker base image size and baking the core module list into the image at build time, eliminating 10–30 seconds of startup latency previously spent on JVM-based jar introspection at pod initialization.

On the tooling side, this release adds a lastMerkleTree.bin file for Consensus Node integration and hardens the Block Node Tools suite with graceful handling of missing address book nodes, corrupted signature files, and empty block hash files. Eleven dependency upgrades improve security and compatibility across the stack.

Important Notes

Breaking Change: OCI Image Ships Without Plugins

Starting with v0.28.0, the Block Node OCI image no longer bundles any plugins. Deployments that do not configure plugins via Helm will start with no functionality beyond the core runtime.

Action required for all operators upgrading from v0.27.0:

  • Add a plugins.names list to your Helm values (or use one of the provided profiles)
  • The facility-messaging plugin is required for the application to start
  • The health plugin is recommended for Kubernetes liveness/readiness probes

Quick start using the default LFH profile:

helm upgrade block-node-server \
  -f charts/block-node-server/values-overrides/lfh.yaml

Full documentation: charts/block-node-server/README.md — Plugin Configuration

Breaking Changes

Compatibility Matrix (Recommended)

Block Node Version Consensus Node Version
0.27.0 0.70.x+
0.28.0 0.71.x+

What's Changed

⭐ New Features

  • feat: Dynamic plugin loading for Block Node deployments - aka: Pikachu by @AlfredoG87 in #2158
  • feat: added lastMerkleTree.bin file for CN by @rockysingh in #2203
  • feat(verification): Protobuf and Verification Updated to HAPI v0.71.0 for block verification by @AlfredoG87 in #2211
  • feat: Detail status api by @berryware in #2207

🐛 Bug Fixes

  • fix: Skip corrupted signature files gracefully in wrap command by @rockysingh in #2177
  • fix: Handle empty block hashes file in BlockStreamBlockHashRegistry by @rockysingh in #2174
  • fix: Handle missing nodes in address book gracefully during wrap by @rockysingh in #2183
  • fix: Empty .core-modules.txt breaks plugin deduplication at boot by @AlfredoG87 in #2190
  • fix: remove sentinel leaf from AllBlocksHasherHandler (#2278) by @AlfredoG87 in #2282

🔨 Tests

📝 Documentation

  • docs(block-node): add block node troubleshooting guide by @kfbr in #2022

🔧 Improvements

  • feat: HAPI upgrade, genesis state amendments, and validation fixes by @rockysingh in #2067
  • feat: Add signature stats to download-live2 catch-up mode and fixBlockTime command by @rockysingh in #2075
  • chore: remove color prefixes from logging in BlockNodeApp and ConfigLogger by @berryware in #2152
  • feat: Files Historic Plugin Accessor IO Capabilities Improvements by @ivannov in #2118
  • chore: Remove overwrite existing zip config by @ivannov in #2150
  • fix(e2e-test): Fix solo e2e test scheduler workflow by @AlfredoG87 in #2175
  • refactor(build): Bake .core-modules.txt into Docker image at build time to improve cold start-up time by @AlfredoG87 in #2180
  • feat: Reduce docker size by @berryware in #2179
  • feat: Flow block end identification through internal messaging by @ata-nas in #2170

⬆️ Dependency Upgrades

  • build(deps): bump step-security/harden-runner from 2.14.0 to 2.14.2 by @dependabot[bot] in #2162
  • build(deps): bump step-security/conventional-pr-title-action from 3.2.5 to 3.2.6 by @dependabot[bot] in #2161
  • build(deps): bump com.github.luben:zstd-jni from 1.5.7-6 to 1.5.7-7 in /hiero-dependency-versions by @dependabot[bot] in #2166
  • build(deps): bump io.netty:netty-bom from 4.2.9.Final to 4.2.10.Final in /hiero-dependency-versions by @dependabot[bot] in #2165
  • build(deps): bump grpcIoVersion from 1.78.0 to 1.79.0 in /hiero-dependency-versions by @dependabot[bot] in #2164
  • build(deps): bump com.hedera.pbj.pbj-compiler from 0.13.3 to 0.14.0 by @dependabot[bot] in #2160
  • build(deps): bump daggerVersion from 2.59 to 2.59.1 in /hiero-dependency-versions by @dependabot[bot] in #2163
  • build(deps): bump slackapi/slack-github-action from 2.1.0 to 2.1.1 by @dependabot[bot] in #2186
  • build(deps): bump docker/build-push-action from 6.18.0 to 6.19.2 by @dependabot[bot] in #2192
  • build(deps): bump org.junit.jupiter:junit-jupiter-api from 6.0.2 to 6.0.3 in /hiero-dependency-versions by @dependabot[bot] in #2210
  • build(deps): bump com.google.cloud:libraries-bom from 26.75.0 to 26.76.0 in /hiero-dependency-versions by @dependabot[bot] in #2209

New Contributors

Full Changelog: v0.27.0...v0.28.0

Don't miss a new hiero-block-node release

NewReleases is sending notifications on new releases.