Releases: eosrio/hyperion-history-api
v4.0.4
Fixes
- 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.
Improvements
- 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.
v4.0.3 — Configurable Query Guards
Security
- 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.
New Config Options
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 |
Behavior Changes
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.
Testing
- 77/77 unit tests pass (17 new for query guard validation)
- Build: zero TypeScript errors
Upgrade
No configuration changes required — defaults apply automatically:
query_timeout:"10s"max_asc_window_days:90
To customize, add to your chain config under the api section:
{
"api": {
"query_timeout": "10s",
"max_asc_window_days": 90
}
}v4.0.2
What's Changed
🧪 E2E Test Framework
- Added 8-phase high-fidelity end-to-end test suite with Docker-based infrastructure
- ChainManager, ContractDeployer, LoadGenerator, IndexerRunner, IntegrityChecker, ApiTests
- Docker Compose stack (ES 9.3.1, RabbitMQ, Redis) with port-isolated (+10000) networking
🔒 Security Fixes
- Bumped
undici7.22.0 → 7.24.4 (fixes CVE-2026-1528 and 5 other advisories) - Updated all transitive dependencies — resolved 30 of 32 vulnerabilities
📦 Dependency Updates
global-agent4.1.2 → 4.1.3nodemailer8.0.1 → 8.0.3@types/node24.12.0 → 25.5.0
⚙️ CI
- Retargeted build workflow from
release/4.0tomain - Added unit test step (Bun) to CI pipeline
Full Changelog: v4.0.1...v4.0.2
v4.0.1
Hyperion History API v4.0.1
Dependency Upgrades (25 packages)
Major version bumps:
@elastic/elasticsearch9.3.4@fastify/mongodb10.0.0 (mongodbdriver 7.1.0)@fastify/static9.0.0global-agent4.1.2nodemailer8.0.1uWebSockets.jsv20.60.0@eosrio/node-abieos4.1.0
Minor/patch updates:
fastify5.8.2,@fastify/cors11.2.0,@fastify/http-proxy11.4.1@fastify/redis7.2.0,@fastify/swagger9.7.0,@fastify/swagger-ui5.2.5commander14.0.3,dotenv17.3.1,ioredis5.10.0undici7.22.0,ws8.19.0,zod4.3.6,lodash4.17.23socket.io4.8.3,socket.io-client4.8.3
Unit Test Suite (new)
- 60 unit tests using
bun testcovering:- API helpers (query builders, meta merge, response schemas)
- Indexer filter logic (
checkMetaFilter— all 9 operators, @ meta expansion, asset filtering) - Configuration validation (Zod v4 schemas)
- Run with:
bun test tests/unit
Code Cleanup
- Simplified
plugins.tsFastifyInstance import (removed unnecessary http generic parameters) - Dynamically load
global-agentusingcreateRequire
v4.0.0-beta.5
Full Changelog: v4.0.0-beta.4...v4.0.0-beta.5
v4.0.0-beta.4
- Update various dependencies including:
- @elastic/elasticsearch to 9.1.1
- @eosrio/node-abieos to 4.0.3-f7d5b45
- @fastify/cors to 11.1.0
- @fastify/swagger to 9.5.2
- @wharfkit/antelope to 1.1.1
- amqplib to 0.10.9
- commander to 14.0.1
- dotenv to 17.2.3
- fastify to 5.6.1
- ioredis to 5.8.0
- mongodb to 6.20.0
- nodemailer to 7.0.6
- typescript to 5.9.2
- undici to 7.16.0
- zod to 4.1.11
- Update devDependencies including:
- @types/async to 3.2.25
- @types/node to 24.6.0
- @types/nodemailer to 7.0.2
feat: add rabbit.sh for RabbitMQ installation
- Create a new script rabbit.sh to automate the installation of RabbitMQ and its dependencies on Ubuntu.
fix: update explorer metadata to include oracle configuration
- Modify the explorer metadata route to include oracle configuration from the manager and check for the existence of the oracle price histogram route.
fix: ensure MongoDB client is correctly typed
- Update the MongoDB client assignment in the server to use unknown as a workaround for type compatibility.
refactor: clean up plugin loading logic
- Remove unnecessary console error logs in the plugin loading process and improve type definition for plugin state.
v4.0.0-beta.3
What's Changed
Project Evolution & Ecosystem
-
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.
Key Architectural Changes
-
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.
New Features & Major Enhancements
-
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.
API & Endpoint Changes
- 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.
Breaking Changes
-
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
Migration from 3.x
-
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
Other Fixes & Improvements
- 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.
Maintenance & Internal (Selected Commits from PR #157)
- 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.
Full Changelog: v3.3.10-1...v4.0.0-beta.3
v3.3.10-1
What's Changed
- queues will now use CQv2 on RabbitMQ to improve performance, minimum version is RabbitMQ 3.10
- We highly recommend: RabbitMQ 3.13 with Erlang 26
- https://www.rabbitmq.com/blog/2024/01/11/3.13-release
- Minimum Node.js version is set to v20
- node-abieos set to version v3.3.0
- latest updates merged from AntelopeIO upstream
- added the
v2/get_filtersendpoint to display information about the active filters (whitelists/blacklists) - security patches
Full Changelog: v3.3.9-8...v3.3.10-1
v3.3.9-8
Hotfix to prevent large signature counts from overflowing the messaging buffers
v3.3.9-8 should be able to index transactions like: https://wax.bloks.io/transaction/2538659c5e289d9c2be91c46547f175f738c820569621901e08c55b06b7a5bf7
which are not possible to be indexed with previous releases
v3.3.9-7
Full Changelog: v3.3.9-4...v3.3.9-7