- Health Report Indicator Error: Fixed
resource_not_found_exception: Did not find indicator shards_availability,diskcaused by the@elastic/elasticsearchclient serializing thefeaturearray into a comma-joined URI path. The health report now fetches all indicators and extractsshards_availabilityanddisklocally. Also raised the version gate from ES 8.7 to 8.12 (whenshards_availabilitywas introduced). - Fastify Deprecation: Moved
ignoreTrailingSlashintorouterOptionsto resolve Fastify 5 deprecation warning ahead of Fastify 6 upgrade. - State Route Double-Callback: Fixed
"Callback was already called"error in the MongoDB state ingestor when a cargo batch contained bothpermissionandpermission_linkmessages. BothbulkWriteoperations now resolve viaPromise.allbefore invoking the callback once. - Streaming Debug Logs: Gated all verbose
console.log/console.tablecalls inws-router.tsandsocketManager.tsbehinddebugLog(controlled byconfig.settings.debug). - Stray Console Logs: Replaced raw
console.logcalls withhLogacrossserver.ts,indexer.ts,mongo-routes.ts, andhealth.tsfor consistent structured logging.
- Config Wizard ES Host Prompt: Added
--es-hostCLI option and interactive host:port prompt tohyp-config connections init. - Reference Config: Set
mongodb.enabled: trueinconnections.ref.json(mandatory in v4) and cleared the example chain entry.
- Configurable Query Guards for
sort=asc: Prevents unbounded ascending sort queries onget_actions(v1 & v2) that could overload Elasticsearch by forcing full reverse segment scans across all shards.
Two new optional fields in the api section of the chain config:
| Option | Type | Default | Description |
|---|---|---|---|
query_timeout |
string |
"10s" |
Elasticsearch search timeout per query |
max_asc_window_days |
number |
90 |
Maximum time range (in days) for sort=asc requests |
sort=asconget_actionsnow requires a validafterorbeforeparameter:- ISO date strings (must contain
T, e.g.,2026-03-19T00:00:00Z) - Positive integer block numbers (e.g.,
425000000)
- ISO date strings (must contain
- ISO date
aftervalues must be withinmax_asc_window_daysof the current time. - All
get_actionsqueries (v1 + v2) now include a configurable Elasticsearchtimeout. sort=desc(default) is unchanged — no new restrictions apply.
- Added 17 unit tests for
getSortDirvalidation covering bounds checks, max window enforcement, block number acceptance, and garbage input rejection.
- E2E High-Fidelity Test Framework: 8-phase Docker-based test pipeline with port-isolated infrastructure, contract deployment, manifest-based load generation, and integrity checking.
- CI Workflow: Target main branch, integrate unit tests into CI pipeline.
- Updated all dependencies and fixed security vulnerabilities.
- Dynamic
global-agentLoading: Loadglobal-agentdynamically viacreateRequireto resolve ESM import errors.
- Upgraded all dependencies.
- Added unit test suite (Bun-based) for API helpers, common functions, and config validation.
- IndexerController: Guard against missing chain config in
connect()— reject and clearconnectionPromisewhen config is not found. - getFirstIndexedBlock: Handle empty
cat.indicesresults, add try/catch with error logging.
- Dependency updates:
@elastic/elasticsearch→ 9.2.0,commander→ 14.0.2,ioredis→ 5.8.2,typescript→ 5.9.3,uWebSockets.js→ v20.55.0,zod→ 4.1.12.
- RabbitMQ Install Script: Added
rabbit.shfor automated RabbitMQ installation on Ubuntu. - Explorer Oracle Metadata: Explorer metadata route now includes oracle configuration.
- MongoDB client typing workaround for type compatibility.
- Plugin loading cleanup — removed noisy error logs, improved type definitions.
- Dependency updates:
@elastic/elasticsearch→ 9.1.1,fastify→ 5.6.1,mongodb→ 6.20.0,typescript→ 5.9.2,zod→ 4.1.11.
This changelog summarizes the significant changes leading up to the 4.0.0-beta.3 release, based on Pull Request #157.
-
Full TypeScript Migration with ES Modules (Strict Mode):
- The entire Hyperion History API codebase has been migrated to TypeScript.
- The project now utilizes modern ES Modules and is compiled in strict mode, significantly enhancing code quality, maintainability, and the developer experience.
-
Complete Migration from eosjs:
- Replaced
eosjsfunctionality with a combination of@wharfkit/antelopelibrary andnode-abieos node-abieoscontinues to handle high-performance deserialization needs@wharfkit/antelopeprovides modern TypeScript-first blockchain interaction APIs- New
fastify-antelopeplugin provides centralized chain API access - Enhanced serialization/deserialization with dual support and automatic fallback between both libraries
- Replaced
-
Standalone Hyperion Explorer:
- Compatibility with the new standalone Hyperion Explorer. The explorer application is now a separate project, available at https://github.com/eosrio/hyperion-explorer, and is no longer a Hyperion plugin.
-
New Delphi Oracle Plugin & HPM:
- Introduction of the hyperion-delphioracle-plugin. This new plugin allows Hyperion instances to track and serve data from on-chain price oracles, such as those powered by DelphiOracle.
- The Hyperion Plugin Manager (hpm) remains fully functional for installing and managing this new plugin and existing ones.
-
State Queries Overhauled: Hybrid MongoDB & Elasticsearch Architecture:
- A fundamental re-architecture of state queries, with MongoDB handling contract state and Elasticsearch managing historical data. This major shift aims to significantly enhance performance, scalability, and query flexibility.
- Introduces the Hyperion Account State Synchronizer (
8ebf919) as the core engine for this new MongoDB-based state management. - New
state-readerworker with advanced ABI caching and serialization strategies. - Fallback mechanisms between
node-abieosand Antelope deserializers for maximum compatibility. - Provides robust support for custom contract indexing. Operators can now define how data from specific smart contracts is indexed and made available for queries, powered by a new
custom_indexer_controller(c5711a5).
-
Streaming SDK Rewrite:
- The client-facing Streaming SDK has been completely rewritten (
@eosrio/hyperion-stream-clientv3.6+). This overhaul focuses on improved performance, expanded features, and better maintainability for developers building real-time applications on Hyperion. - Enhanced Developer Experience: New TypeScript-first API with full ES Modules support, AsyncIterator pattern for sequential data processing, and flexible event-driven architecture
- Powerful Filtering & Data Consumption: Server-side filtering with dot-notation support, dual consumption patterns (event-driven and AsyncIterator), and automatic metadata processing
- Robust Connection Management: Automatic reconnection with replay capabilities, connection timeout controls, and comprehensive error handling
- Migration Note: The new streaming client (v3.6+) is only compatible with Hyperion servers v3.6 onwards
- The client-facing Streaming SDK has been completely rewritten (
-
Advanced Index Management (Elasticsearch):
- Significant enhancements to Elasticsearch index lifecycle management. Hyperion now offers built-in capabilities for auto-pruning of aged data and implementing tiered storage allocation rules.
- This advanced index management operates independently of Elastic's built-in policies, providing operators with more direct and granular control over their Hyperion data on Elasticsearch.
-
Comprehensive State Synchronization Suite:
sync-accounts: Synchronizes complete account metadata including creation date, permissions, and resource limitssync-permissions: Rebuilds permission hierarchies and tracks permission changes over timesync-voters: Tracks voting power, delegations, and producer votes for governance analysissync-proposals: Indexes multisig proposals with their approval status and execution statesync-contract-state: Enables custom indexing of smart contract tables and state changes
-
Enhanced Repair CLI (
hyp-repair):- New
scan-actionsfeature for deep action data validation - Added
monitormode for real-time repair tracking - Improved interfaces for repair operations with better error recovery
- New
APIClientintegration for direct chain queries during repairs
- New
-
Extensive CLI Tooling Updates:
- This release brings numerous updates and enhancements across the suite of Command Line Interface (CLI) tools. These changes improve usability, add new functionalities, and resolve existing bugs.
- Notable additions include a new Table Scanner Helper (
cfb2188) for data diagnostics or management. - The
hyp-repairtool has received fixes, including improved Elasticsearch library compatibility (9738d1f), and now includes a newscan-actionsfeature for more targeted diagnostics and repair of action data.
- New Route:
/v2/stats/get_trx_count: Adds a new endpoint to retrieve transaction counts, likely with various filtering options. - New Route:
/v2/history/get_block: Adds a new endpoint to fetch individual block details.
-
MongoDB Now Required:
- MongoDB is now a mandatory dependency for state queries and contract indexing
- State table indices on Elasticsearch are deprecated and will stop receiving updates
- All state-related data will be migrated to MongoDB for improved performance and most importantly, less disk wear
-
Configuration File Location:
- Configuration files must be moved to the new
configdirectory - Legacy configuration locations are no longer supported
- Configuration files must be moved to the new
-
API Response Format Changes:
- Modified error response formats for better consistency
-
Plugin Compatibility:
- Existing plugins may need updates for TypeScript strict mode
- Custom deserializers must handle new Antelope type system
-
Required Actions:
- Install MongoDB (now required for state queries)
- Move configuration files to the new
configdirectory - Review custom plugins for TypeScript compatibility
- Test streaming clients with new SDK
-
For detailed migration instructions, see the official documentation at: https://hyperion.docs.eosrio.io/
-
Deprecations:
- Legacy streaming API protocol deprecated
- Type Safety for
account_name(45e63da,5d14196,32c2530): Multiple commits ensure correct type handling for account names. - Memory Usage Optimization (
11cc4b9): Implements changes to reduce the memory footprint of Hyperion services. - Monitoring Enhancements (
da8025c,8a448eb): Improvements to internal monitoring capabilities. - Logging System Fixes (
5b5fc88): General fixes and improvements to the logging infrastructure. - Controller Connection Sequence (
1d31968): Updates and refines the connection sequence for the Hyperion controller service.
- Dependency Updates & Code Cleanup (
a6ad50f,d2964aa,522ece3). - Log Output Refinements (
7e90eaf,4d596dd,843b6b8,60018a0). - Repository Maintenance (
145e1c0): Removal of ignored files.
Note: Commit SHAs in parentheses refer to commits within PR #157 that are indicative of the described changes. Some high-level changes reflect broader development efforts not captured by a single commit.