This release schedules the activation of the following Avalanche Community Proposals (ACPs):
- ACP-181 P-Chain Epoched Views
- ACP-204 Precompile for secp256r1 Curve Support
- ACP-226 Dynamic Minimum Block Times
The ACPs in this upgrade go into effect at 11 AM ET (4 PM UTC) on Wednesday, November 19th, 2025 on Mainnet.
All Mainnet nodes must upgrade before 11 AM ET, November 19th 2025.
The plugin version is updated to 44; all plugins must update to be compatible.
LibEVM Hook Registration
This release includes changes for how EVM modifications are registered with libevm. For consumers of avalanchego as a library, manual registration of libevm callbacks is now required.
APIs
- Added support for specifying multiple
Avalanche-Api-Routeheaders for more complex routing. - Added proposervm gRPC, connectrpc, and jsonrpc APIs for
GetProposedHeightandGetCurrentEpoch.- The gRPC and connectrpc APIs are routed by adding a second
Avalanche-Api-Routeheader with the valueproposervm. - The jsonrpc APIs are added to all chains with the base endpoint
/proposervm.
- The gRPC and connectrpc APIs are routed by adding a second
- Added platformvm
platform.GetAllValidatorsAtAPI.
Configs
- Changed default
proposerMinBlockDelayfor L1s (other than Primary Network) to 0.
Fixes
- Improved bootstrapping ETA predictions.
What's Changed
- Remove schedule trigger for w/ container job that evaluates to empty matrix by @aaronbuchwald in #4218
- chore: remove unzip mention by @RodrigoVillar in #4226
- refactor(load): simulator contract by @RodrigoVillar in #4181
- Remove firewood entry from PR triggers due to flakes by @aaronbuchwald in #4227
- Write grafana link to logs and github step summary by @aaronbuchwald in #4219
- Disambiguate source vs exec variable names in reexecute tasks by @aaronbuchwald in #4200
- Push benchmark re-execute results on master workflow dispatch by @aaronbuchwald in #4224
- Add newline to workflow dispatch by @aaronbuchwald in #4229
- Add back empty schedule entry for reexecute w/ container job by @aaronbuchwald in #4230
- Comment out schedule trigger for re-execution on w/container by @aaronbuchwald in #4234
- Add timeout parameter to C-Chain re-execution jobs by @aaronbuchwald in #4223
- feat: add parameters to disable metrics by @qusuyan in #4214
- feat(load): add firewood flag by @RodrigoVillar in #4235
- fix(load): totalSupply overflow by @RodrigoVillar in #4244
- Add runner name as metric label and benchmark name param by @aaronbuchwald in #4243
- fix(load): update nonce regardless of tx execution result by @RodrigoVillar in #4245
- Fix manual workflow quoted timeout minutes by @aaronbuchwald in #4250
- BlockDB Compression by @DracoLi in #4201
- Pass x/sync proofs as bytes by @alarso16 in #4246
- feat(load): parameterize worker count by @RodrigoVillar in #4248
- Add back schedule trigger to gh native by @aaronbuchwald in #4253
- Remove compare benchmark that uses gh action cache by @aaronbuchwald in #4252
- Delete gRPC client for MerkleDB by @alarso16 in #4251
- style(gas): rename to unit-agnostic duration by @alarso16 in #4258
- Fix testifylint config by @StephenButtolph in #4260
- Remove unnecessary field from MaybeBytes by @alarso16 in #4259
- fix: time remaining should use better estimates by @rkuris in #4196
- [tmpnet] Add optional stack traces to errors originating from tmpnet by @maru-ava in #4262
- [tmpnet] Use Api Node Instead of URI in CreateSubnets by @samliok in #4263
- [tmpnet] Upgrade prometheus agent version to avoid use of bitnami images by @maru-ava in #4269
- Add public network support to tmpnet by @felipemadero in #4267
- Remove proof details from x/sync by @alarso16 in #4247
- Don't unmarshal Stateless Block in XSVM by @samliok in #4279
- chore: fix some typos in comment by @joemicky in #4276
- Update config.md by @meaghanfitzgerald in #4278
- test(load): add firewood workflow by @RodrigoVillar in #4268
- chore: fix some function names by @zhoujiaweii in #4288
- test(reexecute/c): disable metrics collection by default by @RodrigoVillar in #4272
- uplift: Migrate ACP-176 Implementation by @ceyonur in #4291
- Handle ACP176 excess overflow during scaling by @StephenButtolph in #4294
- Implement ACP-226 Math by @ceyonur in #4289
- [monitoring] Clean up monitoring configuration in preparation for grafana cloud migration by @maru-ava in #4149
- Replace Coreth/ACP-176 package import by @ceyonur in #4301
- Simplex Block Builder Component by @samliok in #4159
- ACP-226: add initial delay excess by @ceyonur in #4300
- ignore debug files in gitignore by @samliok in #4303
- Pass block tracker in deserialize block by @samliok in #4266
- Remove comment/fail on benchmark perf alerts by @aaronbuchwald in #4308
- Add HeightIndex interface to database by @DracoLi in #4133
- Upgrade to Go 1.24 by @alarso16 in #4304
- Move task args to cli instead of run_env by @aaronbuchwald in #4309
- Replace reflect.TypeOf with reflect.TypeFor by @StephenButtolph in #4311
- Consolidate scheduled runs by @aaronbuchwald in #4313
- Fix array type check in reflect codec by @StephenButtolph in #4312
- [tooling] Switch to go 1.24's
go toolto manage CLI dependencies by @maru-ava in #4316 - Bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.4.0 in /tools by @dependabot[bot] in #4319
- Fix waitForProposerWindow by @StephenButtolph in #4321
- Add test-unit-fast task by @StephenButtolph in #4323
- Granite ACP-176 by @alarso16 in #4336
- refactor(metervm): remove mockable clock by @RodrigoVillar in #4338
- Remove premature optimization in validator manager by @StephenButtolph in #4346
- Refactor Warp Verification Tests by @StephenButtolph in #4335
- Replace
mockable.MaxTimewithupgrade.UnscheduledActivationTimeby @StephenButtolph in #4322 - fix(load): only modify non-reserved slots by @RodrigoVillar in #4283
- chore: fix a large number of spelling issues in comments by @letreturn in #4353
- Update daily re-execution benchmark by @aaronbuchwald in #4340
- Implement GetProposedHeight API in Proposervm by @geoff-vball in #4222
- Remove UptimeManager#IsConnected by @joshua-kim in #4333
- Set
activationTimeequal toupgrade.InitiallyActiveTimeforpropservmby @JonathanOppenheimer in #4351 - Support all validator set diffs by height by @geoff-vball in #4342
- Use
acp226.DelayExcessrather thanuint64by @StephenButtolph in #4358 - Add generics to x/sync by @alarso16 in #4275
- Improve C-Chain Re-Execution README by @aaronbuchwald in #4236
- Move canonical warp ordering to validators package by @StephenButtolph in #4363
- Move ginkgo tool usage to the main go.mod from tools/go.mod by @maru-ava in #4328
- Simplex ReplicationResponse.LatestRound Might Be Nil by @samliok in #4213
- feat: add in memory implementation of HeightIndex Database by @DracoLi in #4212
- Update prometheus params passed to run monitored tmpnet cmd by @aaronbuchwald in #4343
- [nix] Add package for official golang binaries by @maru-ava in #3824
- test only relevant packages for subnet-evm by @ceyonur in #4345
- feat(reexecution/c): add metervm metrics by @RodrigoVillar in #4369
- Update ledger dependencies to v1.1.0 by @felipemadero in #4347
- Revert #4333: "Remove UptimeManager#IsConnected" by @JonathanOppenheimer in #4379
- Bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 by @dependabot[bot] in #4380
- Add warp accessors to
validators.Stateby @StephenButtolph in #4373 - StatelessGraniteBlock types by @iansuvak in #4370
- Cache warp validator sets after Granite by @geoff-vball in #4170
- refactor(reexecution/c): rename args by @RodrigoVillar in #4382
- feat(reexecution/c): print grafana link during local run by @RodrigoVillar in #4383
- [ci] Update run-monitored-tmpnet-cmd to not require tools/go.modfile by @maru-ava in #4384
- refactor: explicit libevm registration by @ARR4N in #4385
- fix: blockdb has block don't error if invalid block height by @DracoLi in #4354
- Refactor
initTestProposerVMto take inupgradetest.forkby @JonathanOppenheimer in #4371 - chore: update blockdb to use HeightIndex interface and errors in database pkg by @DracoLi in #4318
- Simplify waitForProposerWindow helper by @StephenButtolph in #4393
- Epoching ACP181 implementation by @geoff-vball in #4238
- fix(tests/e2e): register C-Chain
libevmtypes by @ARR4N in #4399 - deps: bump go to version
1.24.8by @JonathanOppenheimer in #4403 - Remove duplicate header write by @StephenButtolph in #4408
- Add GetAllValidatorsAt endpoint by @geoff-vball in #4394
- Update coreth to v0.15.4-rc.4 by @StephenButtolph in #4414
- [nix] Extract Go derivation to nested flake for cross-repo reuse by @maru-ava in #4406
- chore(reexecution/c): revert metervm metrics changes by @RodrigoVillar in #4397
- Add network config to connect to all validators by @iansuvak in #4164
- Remove max contiguous height by @DracoLi in #4401
- Add initial EVM codeowners by @StephenButtolph in #4295
- change subnet proposervm delay default to 0 by @ceyonur in #4422
- feat(reexecute/c): decouple metrics server and collector by @RodrigoVillar in #4415
- chore: Fix TestGetStakingSigner for pre-release builds by @michaelkaplan13 in #4424
- Add SetPreferenceWithContext by @michaelkaplan13 in #4410
- Update go version to v1.24.9 by @StephenButtolph in #4428
- chore: fix the incorrect path in CONTRIBUTING.md by @withtimezone in #4421
- feat(sync/customrawdb): migrate customrawdb package from coreth by @powerslider in #4387
- uplift: (validators) - refactor uptime tracking from evm repos by @JonathanOppenheimer in #4166
- Remove unexpected workarounds of the prealloc linter by @StephenButtolph in #4431
- Skip prealloc linting in test files by @StephenButtolph in #4432
- uplift
databasepackage from evm repositories by @JonathanOppenheimer in #4331 - Add usetesting linter by @StephenButtolph in #4433
- feat: Add meterdb for heightindex database by @DracoLi in #4208
- Remove bool return from
uptimetracker.GetUptimeby @JonathanOppenheimer in #4434 - Export uptimetracker error by @JonathanOppenheimer in #4436
- feat(reexecute/c): explicit metrics port by @RodrigoVillar in #4418
- Allow new nodes to sync delinquent L1s by @StephenButtolph in #4439
- Fix misleading comment on info.peers by @StephenButtolph in #4445
- Fix typos in config.md for clarity by @crStiv in #4449
- chore: Add EVM linters by @JonathanOppenheimer in #4444
- feat: Use the new ETA tracker for re-execution tests by @rkuris in #4352
- Bump github.com/consensys/gnark-crypto from 0.12.1 to 0.18.1 by @dependabot[bot] in #4440
- feat:
emulatepackage for temporarylibevmregistration by @ARR4N in #4430 - Skip flaky tests by @StephenButtolph in #4456
- wallet: remove ledger support in favor of golang SDK implementation of ledger keychain by @felipemadero in #4413
- Implement RTT measurement by @yacovm in #4454
- docs: fix typos by @crStiv in #4455
- Update versions for v1.14.0 by @StephenButtolph in #4459
New Contributors
- @qusuyan made their first contribution in #4214
- @joemicky made their first contribution in #4276
- @zhoujiaweii made their first contribution in #4288
- @letreturn made their first contribution in #4353
- @withtimezone made their first contribution in #4421
Full Changelog: v1.13.5...v1.14.0