Skip to content

Releases: eosrio/hyperion-history-api

v4.0.4

22 Mar 06:06

Choose a tag to compare

Fixes

  • Health Report Indicator Error: Fixed resource_not_found_exception: Did not find indicator shards_availability,disk caused by the @elastic/elasticsearch client serializing the feature array into a comma-joined URI path. The health report now fetches all indicators and extracts shards_availability and disk locally. Also raised the version gate from ES 8.7 to 8.12 (when shards_availability was introduced).
  • Fastify Deprecation: Moved ignoreTrailingSlash into routerOptions to 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 both permission and permission_link messages. Both bulkWrite operations now resolve via Promise.all before invoking the callback once.
  • Streaming Debug Logs: Gated all verbose console.log/console.table calls in ws-router.ts and socketManager.ts behind debugLog (controlled by config.settings.debug).
  • Stray Console Logs: Replaced raw console.log calls with hLog across server.ts, indexer.ts, mongo-routes.ts, and health.ts for consistent structured logging.

Improvements

  • Config Wizard ES Host Prompt: Added --es-host CLI option and interactive host:port prompt to hyp-config connections init.
  • Reference Config: Set mongodb.enabled: true in connections.ref.json (mandatory in v4) and cleared the example chain entry.

v4.0.3 — Configurable Query Guards

20 Mar 19:49

Choose a tag to compare

Security

  • Configurable Query Guards for sort=asc: Prevents unbounded ascending sort queries on get_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=asc on get_actions now requires a valid after or before parameter:
    • ISO date strings (must contain T, e.g., 2026-03-19T00:00:00Z)
    • Positive integer block numbers (e.g., 425000000)
  • ISO date after values must be within max_asc_window_days of the current time.
  • All get_actions queries (v1 + v2) now include a configurable Elasticsearch timeout.
  • 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

19 Mar 02:54

Choose a tag to compare

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 undici 7.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-agent 4.1.2 → 4.1.3
  • nodemailer 8.0.1 → 8.0.3
  • @types/node 24.12.0 → 25.5.0

⚙️ CI

  • Retargeted build workflow from release/4.0 to main
  • Added unit test step (Bun) to CI pipeline

Full Changelog: v4.0.1...v4.0.2

v4.0.1

08 Mar 16:23

Choose a tag to compare

Hyperion History API v4.0.1

Dependency Upgrades (25 packages)

Major version bumps:

  • @elastic/elasticsearch 9.3.4
  • @fastify/mongodb 10.0.0 (mongodb driver 7.1.0)
  • @fastify/static 9.0.0
  • global-agent 4.1.2
  • nodemailer 8.0.1
  • uWebSockets.js v20.60.0
  • @eosrio/node-abieos 4.1.0

Minor/patch updates:

  • fastify 5.8.2, @fastify/cors 11.2.0, @fastify/http-proxy 11.4.1
  • @fastify/redis 7.2.0, @fastify/swagger 9.7.0, @fastify/swagger-ui 5.2.5
  • commander 14.0.3, dotenv 17.3.1, ioredis 5.10.0
  • undici 7.22.0, ws 8.19.0, zod 4.3.6, lodash 4.17.23
  • socket.io 4.8.3, socket.io-client 4.8.3

Unit Test Suite (new)

  • 60 unit tests using bun test covering:
    • 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.ts FastifyInstance import (removed unnecessary http generic parameters)
  • Dynamically load global-agent using createRequire

v4.0.0-beta.5

04 Nov 01:23

Choose a tag to compare

v4.0.0-beta.4

30 Sep 00:38

Choose a tag to compare

  • 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

02 Jul 04:35

Choose a tag to compare

v4.0.0-beta.3 Pre-release
Pre-release

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 eosjs functionality with a combination of @wharfkit/antelope library and node-abieos
    • node-abieos continues to handle high-performance deserialization needs
    • @wharfkit/antelope provides modern TypeScript-first blockchain interaction APIs
    • New fastify-antelope plugin provides centralized chain API access
    • Enhanced serialization/deserialization with dual support and automatic fallback between both libraries
  • Standalone Hyperion Explorer:

  • 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-reader worker with advanced ABI caching and serialization strategies.
    • Fallback mechanisms between node-abieos and 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-client v3.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
  • 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 limits
    • sync-permissions: Rebuilds permission hierarchies and tracks permission changes over time
    • sync-voters: Tracks voting power, delegations, and producer votes for governance analysis
    • sync-proposals: Indexes multisig proposals with their approval status and execution state
    • sync-contract-state: Enables custom indexing of smart contract tables and state changes
  • Enhanced Repair CLI (hyp-repair):

    • New scan-actions feature for deep action data validation
    • Added monitor mode for real-time repair tracking
    • Improved interfaces for repair operations with better error recovery
    • New APIClient integration for direct chain queries during repairs
  • 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-repair tool has received fixes, including improved Elasticsearch library compatibility (9738d1f), and now includes a new scan-actions feature 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 config directory
    • Legacy configuration locations are no longer supported
  • 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:

    1. Install MongoDB (now required for state queries)
    2. Move configuration files to the new config directory
    3. Review custom plugins for TypeScript compatibility
    4. 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

15 Apr 20:04

Choose a tag to compare

What's Changed

  • queues will now use CQv2 on RabbitMQ to improve performance, minimum version is RabbitMQ 3.10
  • 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_filters endpoint 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

25 Sep 04:42
b94f99d

Choose a tag to compare

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

23 Jun 15:20

Choose a tag to compare

Full Changelog: v3.3.9-4...v3.3.9-7