ava-labs/avalanchego - Helicon.2 - Removed Coreth (v1.15.2) New

Published: Oct 22, 2026

Release Summary

This is an optional but recommended upgrade.

Compatibility Notes:
This version is backwards compatible with v1.15.0.
The plugin version has been updated to 47. All plugins must be updated to maintain compatibility.
Important: Nodes that have not been run since before the Helicon activation must first run v1.15.0 or v1.15.1 until the C-Chain has bootstrapped past Helicon. Alternatively, you can perform a full resync from an empty database.

This release continues the C-Chain's migration to the Snowman++ Avalanche Engine (SAE) by removing several deprecated components and cleaning up the codebase.

Breaking Changes for Node Operators:
- C-Chain Metrics: The transition prefix has been removed from all C-Chain metrics. For example, avalanche_evm_transition_sae_last_executed_height is now avalanche_evm_sae_last_executed_height. Please update your monitoring dashboards accordingly.
- C-Chain API Removal: The deprecated avax.getAtomicTxStatus RPC has been removed. Use avax.getAtomicTx instead, which fails if a transaction has not yet been accepted.
- C-Chain Config Removal: The deprecated eth-apis configuration option has been removed. Use the apis option to configure your API allowlist.
- P-Chain Config Removal: The pull-gossip-requests-per-validator option has been removed from the P-Chain config as it has had no effect since v1.14.2.

New Features & Improvements:
- Snowman Performance: The Snowman consensus engine has been improved to speed up block replication by changing its query strategy. This should allow lagging nodes to catch up more quickly.
- Platform API Enhancement: The platform.getCurrentValidators API now includes restakedValidationRewards and restakedDelegateeRewards fields. This allows for a clear distinction between a validator's own restaked rewards and the commissions earned from delegators, which is particularly useful for auto-renewed validators.
- New EVM Client: A new unified EVM client has been introduced (vms/evm/evmclient), combining standard Ethereum, Geth-specific, and Avalanche-specific methods for easier development.

Configuration and RPC Updates:
- C-Chain RPC Fix: The api-max-duration config now correctly enforces a timeout on all C-Chain RPC and WebSocket calls, improving node stability under heavy load. Previously, it only affected eth_call.
- C-Chain Configs:
- The api-max-blocks-per-request config has been re-introduced, allowing node operators to set a block range limit for eth_getLogs requests.
- A new state-history config has been added, allowing you to configure the amount of recent state guaranteed to be kept in memory on the C-Chain.

New Metrics for C-Chain:
New metrics have been added to provide deeper insight into gas execution and performance, helping with tuning the gas target. These include:
- avalanche_evm_sae_unsettled_gas_limit: Gauge for the worst-case gas of accepted but not-yet-settled blocks.
- avalanche_evm_sae_execution_gas_rate_headroom and others to monitor the skew between gas usage and wall-clock time.

Release Notes

This version is backwards compatible to [v1.15.0](https://github.com/ava-labs/avalanchego/releases/tag/v1.15.0). It is optional, but encouraged.

This release updates the plugin version to `47`. All plugins must update to remain compatible.

**Nodes that last ran before Helicon activated must first run v1.15.0 or v1.15.1 until the C-Chain has bootstrapped past Helicon, or resync from an empty database.**

## Features

- Added `vms/evm/evmclient`, which combines standard Ethereum, Geth-specific, raw RPC, and Avalanche-specific EVM methods.
- `eth_getLogs` now respects the node's C-Chain config option for `api-resolve-pending-to-last-executed`.

## APIs

- The `avax.getAtomicTxStatus` C-Chain RPC, deprecated in v1.15.0, is removed. Use `avax.getAtomicTx`, which fails for a tx that has not been accepted.
- Added `restakedValidationRewards` and `restakedDelegateeRewards` fields to `platform.getCurrentValidators` results for auto-renewed validators

## Configs

- The `eth-apis` C-Chain option, deprecated in v1.15.0, is removed. The node now ignores it and logs a warning like any other unrecognized option. Set `apis` instead.
- Removed `pull-gossip-requests-per-validator` from the P-Chain config. It has had no effect since v1.14.2. The node ignores the key if a config still sets it.
- `api-max-blocks-per-request` was added back to the C-Chain config.

## Metrics

- C-Chain metrics no longer include the `transition` prefix. For example, `avalanche_evm_transition_sae_last_executed_height` is now `avalanche_evm_sae_last_executed_height`.
- Added `avalanche_evm_sae_unsettled_gas_limit` (gauge): worst-case gas of accepted blocks that have not yet settled.
- Added `avalanche_evm_sae_execution_gas_rate_headroom` (histogram), `avalanche_evm_sae_execution_gas_rate_headroom_latest` (gauge), and `avalanche_evm_sae_tau_second_avg_executed_gas_per_second` (gauge) to monitor gas-vs-wall clock skew during execution, for tuning the gas target.

## Fixes

- Fixed C-Chain `api-max-duration` only limiting `eth_call` since Helicon. It again limits every call to the `/rpc` and `/ws` endpoints, and a WebSocket call that times out doesn't close its connection.
- Updated the minimum Go version from `1.26.8` to `1.26.10`.

## What's Changed

- Remove duplicate upgrade identifier updates by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6049
- Simplify task tags-create by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6055
- Expose restaked validation and delegatee reward totals in rpc by @alejandro99so in https://github.com/ava-labs/avalanchego/pull/5983
- chore: tag releases from master and rewrite the release guide by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6050
- fix(scripts): fail fast on curl download errors by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6056
- Add unsettled gas metric by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6059
- chore: prep next release v1.15.2 by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6051
- chore(upgrade): add the Igloo upgrade by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6057
- Ignore P-chain height check for post fork childs of pre fork parents if bootstrapping by @yacovm in https://github.com/ava-labs/avalanchego/pull/5958
- feat(vms/evm/sync): add retry support to the `network.Dispatcher` by @powerslider in https://github.com/ava-labs/avalanchego/pull/5654
- test(cchain): remove legacy coreth comparison tests by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6067
- docs(sae): Scaffold saevm README structure by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/5728
- [ci] Ensure consistent input caching by @maru-ava in https://github.com/ava-labs/avalanchego/pull/5964
- [ci] Reuse cached go modules in image builds by @maru-ava in https://github.com/ava-labs/avalanchego/pull/5981
- chore(cchain/state): Remove legacy references by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6081
- fix: check statedb error by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6082
- refactor(rpc): share JSON-RPC handler construction by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6086
- refactor(saevm): remove deprecated `eth-apis` config and `avax.getAtomicTxStatus` by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/5944
- fix(wallet): use the SAE C-Chain client for atomic txs by @owenwahlgren in https://github.com/ava-labs/avalanchego/pull/6022
- [ci] Ensure completeness of bazel input caching by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6088
- [ci] Remove codeql analysis job by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6117
- feat(sae): enforce a max duration on all C-Chain RPC and WebSocket calls by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6070
- reexecute: remove the pathdb benchmark preset by @rahulmutt-ava in https://github.com/ava-labs/avalanchego/pull/6124
- refactor(evm): move blackhole address to `vms/evm/blackhole` by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6125
- refactor(wallet/chain/c): use cchain/tx instead of coreth atomic types by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6119
- [ci] Cache Bazelisk downloads for go lint by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6065
- [ci] Rename bazel and go CI workflows for consistency by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6120
- refactor(cchain): Remove transitive customheader usages by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6127
- [ci] Skip required jobs for pull requests by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6111
- docs(info): fix stale examples and reply fields in service.md by @owenwahlgren in https://github.com/ava-labs/avalanchego/pull/6132
- [reexecution] remove timeout flag by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/6138
- refactor(sae): register libevm extras from cchain package by @rahulmutt-ava in https://github.com/ava-labs/avalanchego/pull/6091
- ci: auto-add team-authored issues and PRs to project boards by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/5648
- feat(saevm/client): Wrap ethclient by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6085
- [ci] Cache the QEMU setup image from master builds by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6140
- [e2e] Run a single post-suite bootstrap check for a parallel run by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6134
- Remove C-Chain transitionvm wrapper by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6064
- test(sae): Wait on ws requests by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6144
- Bump klauspost version by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/6145
- reexecute: run the C-Chain benchmark with saevm by @rahulmutt-ava in https://github.com/ava-labs/avalanchego/pull/6083
- platformvm: fix request and response shapes in service.md by @owenwahlgren in https://github.com/ava-labs/avalanchego/pull/6130
- Fix restaked reward fields release docs from v1.15.1 to v1.15.2 by @owenwahlgren in https://github.com/ava-labs/avalanchego/pull/6129
- platformvm: document restaked reward fields in getCurrentValidators by @owenwahlgren in https://github.com/ava-labs/avalanchego/pull/6128
- [ci] Switch from Blacksmith to GitHub 4-core runners by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6143
- [docs] Clarify Go toolchains and dependency cache boundaries by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6146
- Prevent avalanche bootstrapper from linearizing twice by @yacovm in https://github.com/ava-labs/avalanchego/pull/6011
- [ci] Pin add-to-project to skip existing project items by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6154
- saevm/cchain: move C-Chain service.md from coreth and update for SAE by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6150
- feat(network/p2p): let a tracking client own the peer scoring lifecycle by @powerslider in https://github.com/ava-labs/avalanchego/pull/5980
- [bazel] Extend vms/saevm/cchain timeout to account for heavy tests by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6168
- the greatest day: delete (almost all of) graft/coreth by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6149
- refactor(p2p): remove `Client.AppRequestAny` and `NewClient` sampler by @powerslider in https://github.com/ava-labs/avalanchego/pull/6153
- [ci] Assign team-authored PRs to their author on open by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6166
- chore(tests): drop coreth-only C-Chain config defaults by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6161
- refactor(p2p): move `PeerTracker` into a `peertracker` package by @powerslider in https://github.com/ava-labs/avalanchego/pull/6172
- saevm: own the test fixture chain params and drop coreth-only helpers by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6157
- chore(graft/coreth): prune unreachable precompile code by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6155
- chore(sae): Delete testing TODO by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6180
- chore(saevm): drop unused tagliatelle nolint by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6181
- platformvm: fix config.md and remove unused pull-gossip-requests-per-validator by @owenwahlgren in https://github.com/ava-labs/avalanchego/pull/6131
- docs: fix stale coreth references by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6156
- chore(acp176): delete fee logic only coreth used by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6158
- [ci] Shorten C-Chain re-execution job names by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6169
- refactor(saevm): drop graft/evm/utils from cchain  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6087
- feat: tau-second rolling average gas throughput metric by @ARR4N in https://github.com/ava-labs/avalanchego/pull/6122
- Fine tune snowman block gossip source metric by @yacovm in https://github.com/ava-labs/avalanchego/pull/6126
- chore(fx): delete Cost methods only coreth used by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6159
- test(vms/evm/sync): wait for peer scoring before asserting it by @powerslider in https://github.com/ava-labs/avalanchego/pull/6205
- Update to Go v1.26.10 by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6217
- [ci] Run failure handlers only after setup succeeds by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6171
- [ci] Coalesce simple checks into a single job by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6193
- Snowman performance improvements by @yacovm in https://github.com/ava-labs/avalanchego/pull/6197
- feat: add block range bound for `eth_getLogs` by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6021
- chore(graft/evm): delete unused code by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6218
- [ci] Document how to validate scheduled job changes before merge by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6219
- [bazel] Extend e2e testing to the full suite by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6026
- [ci] Skip monitoring of darwin e2e-smoke job by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6194
- feat(cchain): state-history config by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6147
- test: Skip flaky test by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6224


**Full Changelog**: https://github.com/ava-labs/avalanchego/compare/v1.15.1...v1.15.2

Links

Back to ava-labs/avalanchego releases