ava-labs/avalanchego - v1.15.3 - API Cleanup New

Published: Nov 5, 2026

Release Summary

AvalancheGo v1.15.3 is an optional but recommended upgrade, backwards compatible to v1.15.0. The plugin version remains unchanged at 47.

C-Chain API Updates
A new Gas-Used header has been added to C-Chain /rpc responses. This header reports the total gas used by all eth_call methods within a request, allowing API providers to price requests more efficiently without buffering the entire response body.

Additionally, some RPC methods have been moved into new, dedicated APIs. The polling filter methods (like eth_newFilter and eth_getFilterLogs) are now served by the new filter API, and eth_getLogs is served by the new logs API. Both are enabled by default. Important: If you have a custom configuration for the apis option, you must explicitly add "filter" and "logs" to your list to continue serving these methods.

New Profiling Configuration
A new flag, --profile-continuous-mutex-fraction, has been introduced to control mutex contention profiling. Previously, continuous profiling recorded every mutex event, which could cause performance overhead. You can now set this flag to 0 to disable mutex profiling entirely or to a value n to sample 1 of every n events, reducing the impact on node performance.

State Sync Metrics Improvement
Metrics for the State-Sync-Enabled (SAE) VM now score peers separately for each sync protocol (leaf, code, block, cchain_leaf). This provides more accurate peer bandwidth and responsiveness tracking. The old avalanche_evm_p2p_peer_tracker_* metrics are replaced by protocol-specific ones, such as avalanche_evm_p2p_peer_tracker_<protocol>_*.

Key Fixes
This release includes several important fixes for node stability and consistency.

C-Chain Log Queries: A bug where eth_getLogs queries would fail if the requested block range included a block that was accepted but not yet executed has been fixed. Queries will now correctly return logs up to the last executed block.

Transaction Ordering: An issue in the C-Chain block builder that caused inconsistent ordering of pending transactions has been resolved. The previous logic could cause transactions to be ordered incorrectly by gas tip or even be excluded from a block. The new implementation ensures deterministic and correct transaction ordering, similar to Geth.

Profiler Stability: Fixed a bug where calling admin.stopCPUProfiler would not disable mutex profiling, causing it to continue running and consuming resources until the node was restarted.

Go 1.27 Compatibility: Fixed an issue with UnmarshalText implementations that would cause a panic when running the node with Go version 1.27.

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.

The plugin version is unchanged at `47` and is compatible with version `v1.15.2`.

## APIs

- Added a `Gas-Used` header to C-Chain `/rpc` responses with the total gas used by every completed `eth_call` in the request.
- `admin.lockProfile` and continuous profiling now write `lock.profile` in the binary pprof format, like the CPU and memory profiles.

## Configs

- Added `--profile-continuous-mutex-fraction` (default `1`, which keeps the existing behavior) to set the mutex profile fraction used by continuous profiling. Set it to `0` to stop recording mutex contention, or to `n` to sample 1 of every n events.
- Added the `filter` API to the C-Chain `apis` option. It serves the polling filter methods (`eth_newFilter`, `eth_newBlockFilter`, `eth_newPendingTransactionFilter`, `eth_getFilterChanges`, `eth_getFilterLogs`, `eth_uninstallFilter`), which moved out of `subscription`. It is enabled by default. A config that sets `apis` must add `filter` to keep serving these methods.
- Added the `logs` API to the C-Chain `apis` option. It serves `eth_getLogs`, which moved out of `subscription`. It is enabled by default. A config that sets `apis` must add `logs` to keep serving `eth_getLogs`.

## Metrics

- SAE state sync scores peers separately for each sync protocol, so `avalanche_evm_p2p_peer_tracker_{num_tracked_peers,num_responsive_peers,average_bandwidth}` are replaced by one set per protocol: `avalanche_evm_p2p_peer_tracker_<protocol>_*` with `<protocol>` one of `leaf`, `code`, `block` or `cchain_leaf`.

## Fixes

- Fixed C-Chain log queries (`eth_getLogs`, `eth_getFilterLogs`) failing with `failed to get logs for block #N` when the range reached an accepted block that had not yet executed. Range queries now stop at the last executed block, and `blockHash` queries for an unexecuted block return `unknown block`.
- Fixed `admin.stopCPUProfiler` leaving mutex profiling enabled, which kept recording mutex contention until the node restarted.
- Fixed the C-Chain block builder ordering pending transactions inconsistently. Transactions could be out of effective gas tip order, and a sender's later nonce could come before an earlier one, which left it out of the block.
- Fixed `UnmarshalText` implementations which prevented usage of jsonv2 (default in Go 1.27).

## What's Changed

- fix(saevm): hide unexecuted blocks from the log filter system by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6223
- refactor(acp176): delete `vms/evm/acp176` by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6182
- Stage v1.15.3 release by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6235
- fix(profiler): write the lock profile in the binary pprof format by @felipemadero in https://github.com/ava-labs/avalanchego/pull/6228
- feat(profiler): make the continuous profiling mutex fraction configurable by @felipemadero in https://github.com/ava-labs/avalanchego/pull/6227
- fix(tests/reexecute): defer chaos test recovery and correct start-block docs by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6220
- Remove deprecated client functions by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6239
- [ci] Enable race detection for Bazel unit test job on PR and merge group triggers by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6240
- chore(saevm): delete test helpers and proxytime.ConvertMilliseconds without callers by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6162
- refactor(graft/coreth): remove params constants by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6189
- fix(profiler): disable mutex profiling when the CPU profiler stops by @felipemadero in https://github.com/ava-labs/avalanchego/pull/6229
- docs(admin): explain when admin.lockProfile has data by @felipemadero in https://github.com/ava-labs/avalanchego/pull/6230
- test(sync): Panic for mid-trie roots by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6241
- feat(vms/saevm/network): give each sync protocol its own peer tracker by @powerslider in https://github.com/ava-labs/avalanchego/pull/6072
- Skip tmpnet collection if tmpnet did not start by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/6242
- perf(saevm/cchain): verify atomic txs against the last executed state by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6245
- [ci] Ensure caching for go unit test job by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6025
- fix(saevm/cchain): report unexecuted atomic txs as not found by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6246
- Remove goleak exception by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6251
- refactor(cchain): move extstate out of coreth by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6133
- refactor(extstate): use uint256 for asset balances by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6252
- refactor(coreth): remove precompile config and modules registry by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6254
- refactor(coreth): shrink warp.Config to a plain struct by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6257
- bump canoto version to v19 by @samliok in https://github.com/ava-labs/avalanchego/pull/6271
- chore: remove error from predicate parsing by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6272
- refactor: Rewrite coreth params by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6184
- [ci] Migrate binary-building jobs to bazel for better caching by @maru-ava in https://github.com/ava-labs/avalanchego/pull/6152
- feat(sae/rpc): report `eth_call` gas used in a `Gas-Used` response header by @SayanKar in https://github.com/ava-labs/avalanchego/pull/6060
- feat(saevm): split polling filter methods into a separate `filter` API by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6236
- fix(merkle/sync): keep the first fatal sync error by @powerslider in https://github.com/ava-labs/avalanchego/pull/6273
- Disable Multipath TCP by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6278
- Bump Simplex Version by @samliok in https://github.com/ava-labs/avalanchego/pull/6269
- refactor(cchain): move the EVM hooks out of coreth by @rahulmutt-ava in https://github.com/ava-labs/avalanchego/pull/6137
- test(cchain): regression for delegatecall by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6279
- fix(saevm/txgossip): merge pending txs by sender instead of sorting by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6250
- Add a Capacity to Signature Aggregator Channel by @samliok in https://github.com/ava-labs/avalanchego/pull/6283
- Simplify Writing File Perms by @samliok in https://github.com/ava-labs/avalanchego/pull/6284
- feat(l1s): Port genesis by @alarso16 in https://github.com/ava-labs/avalanchego/pull/6015
- refactor(cb58): add extra argument for Decode by @rahulmutt-ava in https://github.com/ava-labs/avalanchego/pull/6286
- refactor(coreth): drop predicate plumbing for Warp messages by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/6259
- Fix UnmarshalText implementations by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6297
- chore: migrate from firewood-go-ethhash to firewood-go by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/6285
- Update free disk space action by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/6298

## New Contributors

- @SayanKar made their first contribution in https://github.com/ava-labs/avalanchego/pull/6060

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

Links

Back to ava-labs/avalanchego releases