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(defaultfalse) — opt-in EIP-7702 "set code" transaction submission; type 4 transactions are rejected while disabled. (#5316)MAX_TRANSACTION_GAS_LIMIT(default15000000) — see breaking changes above. (#5622)WS_MULTIPLE_ADDRESSES_LIMIT(default1000) — bounds the number of addresses accepted in aneth_subscribelogs 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_callnow passesblockhashto the Mirror Node rather than block number, removing an ambiguity window on reorged/duplicate block heights. (#5368)baseFeePerGasis now computed as a gas-used-weighted average of the block's transaction prices, aligningeth_feeHistoryand block responses with actual network cost. (#5527)eth_feeHistorynow batch-fetches blocks viaMirrorNodeClient.getBlocksByRangeinstead of issuing one request per block. (#5508)- Worker context introduced to eliminate duplicate client instances across workers, cutting memory and connection overhead. (#5526)
resolveEvmAddresscalls 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
LRANGEinstead ofLPOSfor compatibility with older Redis versions. (#5513)
Testing & CI
- CI pipelines reworked and network versions bumped;
redis-memory-serverpinned. (#5534, #5614) - Solo bumped to 0.82.1 and switched to
--external-addressfor 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
blockhashas parameter oneth_callagainst 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
rewardPercentilesparameter oneth_feeHistorymethod 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_MAXdoc 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