ava-labs/avalanchego - Granite.2 - Benchlist Redesign (v1.14.2) New

Published: Mar 30, 2026

Release Summary

AvalancheGo v1.14.2 is a new optional but encouraged release. It is backward compatible with v1.14.0.

Important: The plugin version has been updated to 45. All plugins must be updated to maintain compatibility.


Consensus and Performance

Redesigned Benchlisting: The peer benchlisting mechanism has been overhauled. It now uses an exponentially weighted moving average (EWMA) of failure rates to more accurately identify unreliable peers. When at capacity, the benchlist will now evict the least-failing nodes to make room for worse offenders, ensuring the most problematic peers are always benched.

Experimental Simplex Consensus: This release introduces the experimental Simplex consensus engine. Node operators can test this feature using the new simplexParameters in subnet configurations.

Improved Health Checks: A new health check has been added that monitors average block acceptance times. The node's health will report as unhealthy if processing times remain elevated for over five minutes, offering better insight during periods of high load.

Firewood Improvements: The Firewood database backend is updated to v0.3.1 and now enables deferred persistence for non-pruning nodes. This improves performance by batching disk writes.


Configuration & API

Config Changes: New flags for the redesigned benchlisting have been added (e.g., --benchlist-halflife, --benchlist-unbench-probability), while older ones (--benchlist-fail-threshold) are removed. The proposerMinBlockDelay setting has been removed from subnet configs, as it is no longer necessary for EVM chains following the Granite activation.

New Metric: A new avalanche_snowman_consensus_latencies histogram metric is available for each chain, providing more detailed insight into consensus performance.

Breaking Change for Tooling: The file graft/subnet-evm/compatibility.json is removed. External tools should now use the unified version/compatibility.json file from the main AvalancheGo repository.


Notable Fixes

• Fixed a potential FATAL error during startup caused by an incorrect initialization of remaining disk space.

• Resolved a crash in the TraceCall API when using BlockOverrides.

• Corrected a shutdown race condition related to snapshot generation.

• The minimum Go version required to build AvalancheGo is now v1.25.8.

Release Notes

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

The plugin version is updated to `45`; all plugins must update to be compatible.

## Breaking Changes

- Removed `graft/subnet-evm/compatibility.json` in favor of using a single source of truth in `version/compatibility.json`. External tools that relied on this file should now use `version/compatibility.json` from the main AvalancheGo repository.

## Config

- Added:
  - `--simplex-max-network-delay`
  - `--simplex-max-rebroadcast-wait`
  - `--benchlist-halflife`
  - `--benchlist-unbench-probability`
  - `--benchlist-bench-probability`
  - `snowParameters` in subnet configs
  - `simplexParameters` in subnet configs
- Deprecated:
  - `consensusParameters` in subnet configs
- Removed:
  - `--benchlist-fail-threshold`
  - `--benchlist-min-failing-duration`
  - `pull-gossip-poll-size` from the X-chain and P-chain configs
  - `proposerMinBlockDelay` from subnet configs

## API

- Added `avalanche_snowman_consensus_latencies` histogram for each chain

## Fixes

- Fixed potential FATAL during startup due to an incorrect initialization of remaining disk space
- Fixed crash in `TraceCall` with `BlockOverrides`
- Fixed snapshot generation shutdown race
- Downgraded flaky `ERROR` log to `WARN` if recently bootstrapped
- Updated minimum Go version from 1.24 to `v1.25.8`

## Consensus

- Redesigned benchlisting with predicated failure rates
- Added health checks to ensure average block acceptance times are reasonable
- Introduced Simplex consensus engine and parameters (experimental)

## Firewood

- Enabled Firewood deferred persistence for non-pruning nodes
- Fixed Firewood metrics registration
- Unsupported APIs now return an error when Firewood is enabled
- Updated Firewood to v0.3.1 (from v0.0.18)

## What's Changed

- Prep Firewood x/sync for EVM by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4794
- [ci] Migrate reexec tasks to a script to simplify maintenance by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4761
- refactor: Share EVM Utils by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4739
- ci: ensure generated files up to date in CI by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4782
- fix: Always register Firewood metrics when enabled by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4793
- refactor: directly embed files in `graft` by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4795
- chore: remove end year from license headers by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4812
- test(reexecute): add firewood chaos test [2/2] by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/4695
- refactor: Firewood Config helper by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4811
- chore(chaos): remove chaos test from PR CI by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/4817
- feat(reexecution): collect leveldb and meterdb metrics by @DracoLi in https://github.com/ava-labs/avalanchego/pull/4804
- refactor: warp e2e tests no longer in single function by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4798
- build: bundle subnet-evm releasing into releasing workflow by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4675
- fix: warp e2e flake by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4818
- Provide a useful default for disk percentage by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/4822
- refactor: Use `state.Database` to generate tries in sync test helpers by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4814
- chore: cleanup `graft/evm` post subnet-evm merge by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4752
- test: fix `TestUptimeSignatures` flake by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4826
- test: add Coreth + Firewood archive UT by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/4820
- Introduce gossip system helper by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/4819
- test: fix `TestAtomicSyncerVM/StateSyncFromScratchTest` flake by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4825
- [direnv] Enable global envrc customization by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4821
- fix(c-chain-reexecution): support genesis execution by @Elvis339 in https://github.com/ava-labs/avalanchego/pull/4841
- Remove `ProposerMinBlockDelay` from subnet configs by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/4824
- fix(eth/tracers): fix crash in TraceCall with BlockOverrides by @dmkulazhenko in https://github.com/ava-labs/avalanchego/pull/4657
- Fix flake in `TestWaitForEvent/WaitForEvent_build_block_after_re-org` by @yacovm in https://github.com/ava-labs/avalanchego/pull/4789
- fix: apply TraceCall fix in both coreth and subnet-evm by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4846
- Fix race in tests on VM Shutdown by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4852
- refactor: use vms/evm customrawdb in subnet-evm by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4851
- test: enable c-chain <-> subnet e2e warp tests by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4799
- refactor: align `PointerTo` functions by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4741
- chore: cleanup customtypes by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4844
- chore: retype `DelayExcess`  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4833
- refactor: share triedb by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4843
- refactor: Share core/state by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4863
- test(reexecution): add additional Firewood archival tests by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/4853
- build: bump to go 1.24.12 by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4867
- test: Fix `TestResyncNewRootAfterDeletes` flake by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4850
- refactor: granite cleanup - remove `GetWarpValidatorSet` by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4858
- [nix] Update golang flake input for nix 2.25+ by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4875
- feat(vm_reexecute): add pprof profiling support by @Elvis339 in https://github.com/ava-labs/avalanchego/pull/4790
- refactor: granite cleanup - remove pre-granite test-cases by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4860
- refactor(sync): reorganize state sync packages by @powerslider in https://github.com/ava-labs/avalanchego/pull/4857
- Simplex nits & bug fixes by @samliok in https://github.com/ava-labs/avalanchego/pull/4885
- feat: add Sync to database.HeightIndex by @DracoLi in https://github.com/ava-labs/avalanchego/pull/4839
- refactor: granite cleanup - remove `remoteDelayExcess`  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4859
- refactor: share log package by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4886
- perf: Share proposal between hash and commit by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4697
- refactor: remove strict mode in ABI by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4884
- Firewood v0.1.0 by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4893
- Return range proofs for change proof requests during Firewood sync by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4834
- feat: Add interface between x/sync and EVM syncers by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4832
- Add test coverage for acp118 replay protection by @joshua-kim in https://github.com/ava-labs/avalanchego/pull/4889
- refactor: remove UnpackInput by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4901
- refactor: share EVM rpc package by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4786
- refactor: share version across codebase by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4891
- Update vms/README.md by @meaghanfitzgerald in https://github.com/ava-labs/avalanchego/pull/4904
- [ci] Support running re-execution benchmark with arbitrary version of Firewood by @Elvis339 in https://github.com/ava-labs/avalanchego/pull/4650
- test: address geth flakes by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4902
- refactor: Use libevm accounts/abi by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4865
- [ci] Simplify run-monitored-tmpnet-cmd to use custom actions by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4897
- [tools] Allow ./tools path to be used for local tools by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4896
- test: Ensure code hashes are retrieved in Firewood by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4915
- Add proposervm block delay logs by @yacovm in https://github.com/ava-labs/avalanchego/pull/4917
- Update consensus logs by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/4920
- Add go workspace by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4899
- Create histogram for consensus latencies by @yacovm in https://github.com/ava-labs/avalanchego/pull/4924
- refactor(graft/evm): extract unified `message` package from `coreth` and `subnet-evm` by @powerslider in https://github.com/ava-labs/avalanchego/pull/4882
- Move x/sync and firewood to database by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4929
- Remove legacy golang build tags by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4933
- Fix go-mod-tidy and ensure it is checked in CI by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4934
- chore: fix network logs typo  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4941
- docs: fix getutxos incorrect type  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4943
- Fail HealthCheck if Average Block Acceptance Times are too High by @samliok in https://github.com/ava-labs/avalanchego/pull/4911
- refactor: share constants between avalanchego and subnet-evm by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4914
- Simplify go version maintenance by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4950
- Add latest checkpoints to reexecute benchmark for hashdb by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/4953
- [ci] Configure dir exclusion from linting via .golangci.yml by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4940
- chore: only tag subnet-evm on stable releases by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4951
- chore: sync handler param name by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4937
- chore: rename `atomicTrieDB`  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4936
- Use clock time instead of time.Until in proposerVM by @yacovm in https://github.com/ava-labs/avalanchego/pull/4958
- Fix coreth and subnet-evm flaky tests by @rrazvan1 in https://github.com/ava-labs/avalanchego/pull/4947
- Remove Start/Wait mechanic in x/sync by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4926
- [ci] Free up space to get the subnet evm antithesis test job passing by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4967
- [ci] Add RPM release workflow by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4959
- [ci] Ensure rpm packaging compatibility with legacy subnet-evm by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4970
- Update to go `v1.25.7` by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4961
- [ci] Skip RPM upload for PRs by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4974
- ci: change PR fuzz tests timing and bump fuzz test timeout  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4978
- ci: just fuzz a single test by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4989
- docs: rewrite releasing readme by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4749
- refactor(sync): extract coreth/sync to evm/sync and adapt coreth and subnet-evm by @powerslider in https://github.com/ava-labs/avalanchego/pull/4921
- Switch to using solc provided by nix by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4787
- Enable multi-module release and consumption strategy by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4905
- feat: Remove FreeListCache from Firewood config by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4963
- [nix] Switch to direct import of golang to fix relative path bug by @maru-ava in https://github.com/ava-labs/avalanchego/pull/5000
- [tmpnet] Annotate pods for collection to grafana cloud by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4981
- test: skip StateSyncToggleEnabledToDisabledTest flake by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/5002
- fix: skip flaky firewood test due to go bump by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/5001
- chore: upgrade lint to 2.9.0 by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4962
- refactor: in-line network stats package by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4887
- fix: skip TestConflictingImportTxsAcrossBlocks if using Firewood by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/5018
- Remove Validator State Interface by @samliok in https://github.com/ava-labs/avalanchego/pull/4983
- docs: add missing APIs to Coreth docs by @ceyonur in https://github.com/ava-labs/avalanchego/pull/5020
- Migrate subnet-evm antithesis builder to the root by @PlatCore in https://github.com/ava-labs/avalanchego/pull/4836
- rename coreth api.md to service.md by @ceyonur in https://github.com/ava-labs/avalanchego/pull/5024
- fix: remove build arguement by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/5029
- Update Firewood to v0.2.0 by @alarso16 in https://github.com/ava-labs/avalanchego/pull/5030
- Move validator metadata DB writes into validatorState by @DracoLi in https://github.com/ava-labs/avalanchego/pull/5008
- Restrict benchmark auto-push to scheduled runs only by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/5032
- Improve readability of ValidatorWeightDiff logic by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/5042
- test: blockchain test cleanup by @alarso16 in https://github.com/ava-labs/avalanchego/pull/5035
- Replace DelegateeReward API with generalized API by @rrazvan1 in https://github.com/ava-labs/avalanchego/pull/5017
- fix: only ignore specific firewood directory by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/5047
- build: add ACP-224 interface and build ABI +  bindings  by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4871
- Add simplex consensus parameters by @samliok in https://github.com/ava-labs/avalanchego/pull/4870
- Introduce Simplex Engine Struct by @samliok in https://github.com/ava-labs/avalanchego/pull/4903
- Nits From Engine PR by @samliok in https://github.com/ava-labs/avalanchego/pull/5053
- Benchlist response handling by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/4964
- update libevm to v1.13.14-0.4.0.rc.2 by @ceyonur in https://github.com/ava-labs/avalanchego/pull/5058
- Update to go 1.25.8 by @alarso16 in https://github.com/ava-labs/avalanchego/pull/5055
- PlatformVM: Support arbitrary validator addition and deletions by @yacovm in https://github.com/ava-labs/avalanchego/pull/5003
- Remove State Interface by @samliok in https://github.com/ava-labs/avalanchego/pull/5025
- Add back EWMA benching logic by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/4982
- Remove Manager Interface From platformvm/validators by @samliok in https://github.com/ava-labs/avalanchego/pull/5056
- benchlist: greedy eviction to bench worst offenders at capacity by @aaronbuchwald in https://github.com/ava-labs/avalanchego/pull/5028
- [antithesis] Halve duration of triggered jobs by @maru-ava in https://github.com/ava-labs/avalanchego/pull/5054
- Remove State Interface from platformvm/validators by @samliok in https://github.com/ava-labs/avalanchego/pull/5057
- Early return unsupported APIs in Firewood by @alarso16 in https://github.com/ava-labs/avalanchego/pull/5075
- Add Firewood as a state syncer by @alarso16 in https://github.com/ava-labs/avalanchego/pull/4913
- Unskip tests skipped due to firewood stack corruption issue by @demosdemon in https://github.com/ava-labs/avalanchego/pull/5072
- [bazel] Enable initial build and test by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4544
- Selectively log warning or error depending on how much time elapsed since bootstrapping finished by @yacovm in https://github.com/ava-labs/avalanchego/pull/5082
- feat(benchmark-cchain): add 40m-41m test cases for hashdb and firewood by @Elvis339 in https://github.com/ava-labs/avalanchego/pull/5088
- Upgrade to Firewood v0.3.0 by @alarso16 in https://github.com/ava-labs/avalanchego/pull/5085
- [bazel] Fix metadata generation on macos by @maru-ava in https://github.com/ava-labs/avalanchego/pull/5090
- Snapshot generation shutdown race by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/4816
- feat: enable Firewood deferred persistence by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/5022
- chore: increase Firewood commit interval by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/5091
- build(deps): bump google.golang.org/grpc from 1.75.0 to 1.79.3 by @dependabot[bot] in https://github.com/ava-labs/avalanchego/pull/5100
- build(deps): bump go.opentelemetry.io/otel/sdk from 1.37.0 to 1.40.0 by @dependabot[bot] in https://github.com/ava-labs/avalanchego/pull/5036
- [ci]  Disable monitoring checks for grafana cloud migration by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4298
- [ci] Migrate monitoring to grafana cloud by @maru-ava in https://github.com/ava-labs/avalanchego/pull/4299
- Update Firewood to v0.3.1 by @alarso16 in https://github.com/ava-labs/avalanchego/pull/5107
- Remove Diff Interface From State by @samliok in https://github.com/ava-labs/avalanchego/pull/5099
- refactor: introduce base trie by @RodrigoVillar in https://github.com/ava-labs/avalanchego/pull/5113
- use UTXOs() in state assertion in executor tests by @samliok in https://github.com/ava-labs/avalanchego/pull/5132
- INFRA-6664: Update fuji boostrappers.json list with new IPs after migration to sa-east-1 from me-south-1 by @stylianosrigas in https://github.com/ava-labs/avalanchego/pull/5125
- Update canoto to v0.18.0 by @StephenButtolph in https://github.com/ava-labs/avalanchego/pull/5137
- chore: release v1.14.2 by @JonathanOppenheimer in https://github.com/ava-labs/avalanchego/pull/5135

## New Contributors

- @dmkulazhenko made their first contribution in https://github.com/ava-labs/avalanchego/pull/4657
- @PlatCore made their first contribution in https://github.com/ava-labs/avalanchego/pull/4836
- @demosdemon made their first contribution in https://github.com/ava-labs/avalanchego/pull/5072
- @stylianosrigas made their first contribution in https://github.com/ava-labs/avalanchego/pull/5125

**Full Changelog**: https://github.com/ava-labs/avalanchego/compare/v1.14.1...v1.14.2

Links

Back to ava-labs/avalanchego releases