github hiero-ledger/hiero-json-rpc-relay v0.79.0

4 hours ago

Overview

v0.79.0 is headlined by the Pectra network upgrade, bringing EIP-7702 (type 4 "set code") transaction support, EIP-7623 calldata cost accounting, and the accompanying precheck/validator work to the relay. Alongside it, this release consolidates transaction gas configuration, unifies nonce error codes, improves eth_feeHistory and eth_call accuracy against the Mirror Node, and lands a round of performance and CI hardening.

Before upgrading, review the breaking changes below — two configuration variables have been removed and two JSON-RPC error codes have changed.


⚠️ Breaking Changes

Review all items below and update your configuration and error handling before upgrading.

Item Before After Notes
CONTRACT_CALL_GAS_LIMIT / MAX_TRANSACTION_FEE_THRESHOLD Two separate env vars Removed — replaced by MAX_TRANSACTION_GAS_LIMIT (default 15000000) A single value now governs the per-transaction gas ceiling: eth_sendRawTransaction rejects transactions above it, the HAPI max transaction fee is sized from it, and eth_call requests asking for more gas are capped to it. (#5622)
NONCE_TOO_LOW error code 32001 -32000 Both codes were previously positive and non-standard. (#5621)
NONCE_TOO_HIGH error code 32002 -32000 Clients matching on the old numeric codes must be updated. (#5621)
eth_feeHistory rewardPercentiles Unvalidated Validated Malformed or out-of-range percentile arrays now return an invalid-parameter error instead of being silently accepted. (#5547)

New configuration

  • TX_TYPE_4_ENABLED (default false) — opt-in EIP-7702 "set code" transaction submission; type 4 transactions are rejected while disabled. (#5316)
  • MAX_TRANSACTION_GAS_LIMIT (default 15000000) — see breaking changes above. (#5622)
  • WS_MULTIPLE_ADDRESSES_LIMIT (default 1000) — bounds the number of addresses accepted in an eth_subscribe logs filter. (#5523)

Highlights

  • Pectra upgrade — EIP-7702 authorization-list parsing and validation, EIP-7623 calldata floor cost in precheck and gas estimation, and updated transaction factory, precheck, and Mirror Node typing to match. (#5316)
  • eth_call now passes blockhash to the Mirror Node rather than block number, removing an ambiguity window on reorged/duplicate block heights. (#5368)
  • baseFeePerGas is now computed as a gas-used-weighted average of the block's transaction prices, aligning eth_feeHistory and block responses with actual network cost. (#5527)
  • eth_feeHistory now batch-fetches blocks via MirrorNodeClient.getBlocksByRange instead of issuing one request per block. (#5508)
  • Worker context introduced to eliminate duplicate client instances across workers, cutting memory and connection overhead. (#5526)
  • resolveEvmAddress calls deduplicated in the block worker. (#5499)
  • Exchange rates are no longer eagerly fetched when jumbo transactions are enabled. (#5521)

Security & operations

  • Sensitive values are now redacted in configuration dumps and Redis error logging. (#5531)
  • StepSecurity best practices applied across workflows. (#5364)
  • Redis lock queue membership check uses LRANGE instead of LPOS for compatibility with older Redis versions. (#5513)

Testing & CI

  • CI pipelines reworked and network versions bumped; redis-memory-server pinned. (#5534, #5614)
  • Solo bumped to 0.82.1 and switched to --external-address for port-forwarding. (#5611, #5601)

What's Changed

  • chore(release): Bump versions for v0.79.0-SNAPSHOT by @swirlds-automation in #5494
  • refactor: clarify archival balance resolution in eth_getBalance by @simzzz in #5472
  • fix: correct xts and release_light test index, remove dead ws_newheads by @quiet-node in #5506
  • perf: deduplicate resolveEvmAddress calls in block worker by @ValentinVPK in #5499
  • fix: replace LPOS with LRANGE for Redis version compatibility in lock queue membership check by @quiet-node in #5513
  • feat: add typing for contract results by @tgntr in #5504
  • refactor: batch-fetch blocks in eth_feeHistory via MirrorNodeClient.getBlocksByRange by @quiet-node in #5508
  • chore: Apply security best practices by @stepsecurity-app[bot] in #5364
  • perf: introduce worker context to reduce duplicate client instances by @tgntr in #5526
  • feat: avoid eager fetch of exchange rates when jumbo txs are enabled by @natanasow in #5521
  • fix: bound eth_subscribe logs multi-address validation by @quiet-node in #5523
  • chore(ci): bump dev-tool workflow Go version to 1.25 by @tgntr in #5543
  • feat: enhance CI pipelines by @natanasow in #5534
  • feat: bump npm packages by @natanasow in #5538
  • build(deps): bump golang.org/x/crypto from 0.47.0 to 0.52.0 in /tools/golang-json-rpc-tests by @dependabot[bot] in #5540
  • build(deps): bump golang.org/x/crypto from 0.47.0 to 0.52.0 in /tools/golang-example by @dependabot[bot] in #5541
  • build(deps): bump shell-quote from 1.8.3 to 1.10.0 in /k6 by @dependabot[bot] in #5475
  • feat: use blockhash as parameter on eth_call against MN by @natanasow in #5368
  • feat: compute baseFeePerGas as gas-used-weighted average of block tx prices by @ValentinVPK in #5527
  • chore: redact sensitive values in config and Redis error logging by @ValentinVPK in #5531
  • chore: use solo --external-address for port-forwarding by @tgntr in #5601
  • chore: update solo version to 0.82.1 by @andrewb1269 in #5611
  • chore: bump network versions and pin redis-memory-server by @ValentinVPK in #5614
  • feat: add validation for rewardPercentiles parameter on eth_feeHistory method by @natanasow in #5547
  • fix: unify nonce error codes to -32000 by @ValentinVPK in #5621
  • feat: consolidate per-tx gas limit into configurable MAX_TRANSACTION_GAS_LIMIT by @tgntr in #5622
  • feat: edit CACHE_MAX doc by @natanasow in #5641
  • feat: fix bump version script by @natanasow in #5644
  • feat: Pectra upgrade [pipelines run] by @jasuwienas in #5316

Full Changelog: v0.78.2...v0.79.0

Don't miss a new hiero-json-rpc-relay release

NewReleases is sending notifications on new releases.