Releases: onflow/flow-go
2nd July 2026 - Height Coordinated Upgrade on Mainnet28 at Block Height 156743600
What's Changed
Data Availability
- Fix executor address matching in scheduled tx indexer by @peterargue in #8539
- Fix unicast authorizer for observer node by @zhangchiqing in #8547
- adding backward compatibility for v0.49.1 and v0.49.2 (#8567) by @vishalchangrani in #8586
FVM
- Remove exception for minting in token tracker by @janezpodhostnik in #8551
Cadence
- Update to Cadence v1.10.3 by @turbolent in #8559
- Update to public Cadence v1.10.4 and atree v0.16.1 by @turbolent in #8596
Consensus
- adds missing check for
Seal.FinalStateby @AlexHentschel in #8563
Networking
- Networking security patches by @zhangchiqing in #8557
CI/CD
- Fix flaky tests by @janezpodhostnik in #8409
Tooling
- Track number of blocks/transactions when verifying by @turbolent in #8534
Flow Core Contracts
- bump flow-core-contracts to v1.10.3 by @vishalchangrani in #8570
Observability
- clean up stale cluster topic metrics on epoch transitions by @zhangchiqing in #8562
- extend cluster topic metrics cleanup to cover all per-topic metric families by @vishalchangrani in #8564
- normalize cluster topic labels in metrics to prevent unbounded cardin… by @zhangchiqing in #8565
- normalize cluster topic labels in metrics to prevent unbounded cardin… by @zhangchiqing in #8566
Full Changelog: v0.49.0...v0.50.0
18th May 2026- Height Coordinated Upgrade on Mainnet28 at Block Height 151898000
This Height Coordinated Upgrade (HCU) delivers EVM fee improvements, Cadence language updates, and important fixes to the networking layer.
⚡ Cheaper EVM Transactions When Multiple EVM Calls Occur in a Single Cadence Transaction
Batched EVM transactions will now be cheaper when multiple EVM calls occur within a single Cadence transaction.
EVM transactions are wrapped in a Cadence transaction. Previously, for every EVM call within a Cadence transaction, there was a read and write of the EVM block proposal to storage. With this change, the block proposal is read once at the start of the Cadence transaction, held in memory across all EVM calls, and written back to storage only once at the end.
The EVM block proposal is now cached in memory for the lifetime of a Cadence transaction, updated in-place for each EVM call, and persisted exactly once at transaction end. On transaction failure, any staged changes are discarded cleanly. The result is that the storage cost of managing the block proposal is amortized across all EVM calls in the transaction rather than paid per call.
The savings scale directly with N, the number of EVM operations in a single Cadence transaction. For example, if a Cadence transaction has 100 EVM calls which do a 1 FLOW transfer each there is 30% reduction in transaction cost.
| Cost | Transaction ID | |
|---|---|---|
| Before Upgrade | 0.03218 FLOW | 403e82ef... |
| After Upgrade | 0.02318 FLOW | c3e889d9... |
Who benefits:
- EVM Gateway users: the Flow EVM Gateway batches multiple incoming user EVM transactions into a single Cadence transaction using
EVM.batchRun. Every batched block of EVM transactions benefits automatically, with no changes required from users or applications. - DeFi and smart contract developers: any Cadence transaction that calls
coaRef.callorEVM.runmore than once per execution (loops, multi-step swaps, batch settlements) will see proportionally lower fees. - Single-EVM-call transactions: unaffected; there is no regression for the common case.
For more details: see issue 6958
Cadence v1.10.3
This upgrade includes Cadence v1.10.3, which improves safety and consistency across the language. Notable changes include updated behavior for filter and map on array references, stricter entitlement handling when upcasting to AnyStruct, and correct authorization intersection for nested references.
For the full list of changes, see the Cadence v1.10.3 release notes.
Network Updates
This release includes several important improvements to the networking layer, addressing reliability across protocol components. See the commit list below for details.
What's Changed
Cadence
- Update to Cadence v1.10.1 by @turbolent in #8516
- Update to Cadence v1.10.2 by @turbolent in #8544
- Update to Cadence v1.10.3 by @turbolent in #8560
Data Availability
- Export scheduled tx extended indexer types by @peterargue in #8506
- add v0.48.0 to AN compatibility map by @j1010001 in #8510
- Fix NFT transfer parsing for collections with duplicate UUIDs by @peterargue in #8514
- Remove panics from legacy handler by @zhangchiqing in #8519
- Improve max stream enforcement by @zhangchiqing in #8521
- Enforce global stream limit per WebSocket subscription by @peterargue in #8536
- Improve logging by @zhangchiqing in #8542
CI
- refactor TestFollowerHappyPath to use synctest by @peterargue in #8474
- Upgrade actions versions to replace deprecated Node.js 20 by @manny-yes in #8497
- Fix secure image build to require single approval for all node types by @j1010001 in #8522
EVM
- Cache EVM block proposal and defer storage writes to commit by @holyfuchs in #8491
- Use optimized byte slice conversion funcs in EVM by @fxamacker in #8508
- Cache EVM drycall results within transactions by @fxamacker in #8511
- Fix audit findings in EVM Cadence contract by @joshuahannan in #8518
- Fix event emission and ABI decoding in EVM Cadence contract by @joshuahannan in #8529
FVM
- Add token movements inspection by @janezpodhostnik in #8424
- Add test for keeping computation kinds constant by @janezpodhostnik in #8515
Networking
- Use role specific unicast limits by @zhangchiqing in #8523
- Add unicast stream pre-authorization by sender/receiver role by @zhangchiqing in #8524
- Enable unicast message rate limit by default by @zhangchiqing in #8525
- Override role based unicast stream authorization on public network by @zhangchiqing in #8526
- Handle ejected node in role based limit checks by @peterargue in #8528
- fix unicast authorizer for observer node by @zhangchiqing in #8552
- Backport 8557 by @zhangchiqing in #8558
Flow Core Contracts
- Update contract dependencies: flow-core-contracts v1.10.1, nft-storefront, flow-evm-bridge v0.2.1 by @joshuahannan in #8541
Util
- Improve remote debugging tooling by @turbolent in #8440
- Improve compare-debug-tx by @turbolent in #8512
Documentation
- Add context7.json by @peterargue in #8548
- docs: add TL;DR, FAQ, and GEO enhancements for discoverability by @Aliserag in #8549
New Contributors
Full Changelog: v0.48.0...v0.49.0
7th April 2026- Height Coordinated Upgrade on Mainnet28 at Block Height 147705899
Data Availability
- Refactor jobqueue to require initialized progress consumer - take 2 by @peterargue in #8404
- update AN version by @j1010001 in #8455
- Don't require stateStreamBackend in access bootstrap by @peterargue in #8462
- Include computation used passed from execution nodes by @peterargue in #8460
- Add index for account transactions by @peterargue in #8414
- Refactor access extended indexers to use iterators by @peterargue in #8467
- Add experimental account transfers rest API by @peterargue in #8419
- Add endpoints for getting receipts by @peterargue in #8480
- Add scheduled transactions extended index and endpoints by @peterargue in #8468
- Add contracts extended index and endpoints by @peterargue in #8471
- Add override for 0.46.1 by @peterargue in #8488
- Allow disabling bitswap reproviding on public network by @peterargue in #8499
- Properly handle existing tx error messages during ingestion by @peterargue in #8478
- Jan/update an compatibility v0.48.0 by @j1010001 in #8509
- Remove panics from legacy handler by @zhangchiqing in #8520
Cadence
- Update to Cadence v1.9.8 by @turbolent in #8395
- Update to Cadence v1.9.9 by @turbolent in #8412
- Update to Cadence v1.9.10 by @turbolent in #8464
- Update to Cadence v1.10.0 by @turbolent in #8501
- Update to Cadence v1.10.1 by @turbolent in #8517
Consensus
- Ensure fork suppressor only triggers for includable seals by @jordanschalm in #8470
EVM
- Apply general suggestions from QuantStamp audit report by @m-Peter in #8439
- Fix padding logic on
EncodeBytesfor data with multiple chunks by @m-Peter in #8425 - Add functionality to pause EVM transactions by @m-Peter in #8334
- Add context option to enabled
EVMtesting helpers by @turbolent in #8490 - Add options to enable the
EVMtesting helpers by @m-Peter in #8487
FVM
- Remove legacy account status formats code by @holyfuchs in #8299
Network
- Backport authz fixes - v0.48 by @peterargue in #8538
Execution
- POC Ledger Service by @zhangchiqing in #8309
Networking
- Remove unnecessary CAS guard from SubscriptionProvider.updateTopics() by @zhangchiqing in #8407
- Backport [Access] Improve max stream enforcement by @zhangchiqing in #8530
- Backport Enable unicast message rate limit by default by @zhangchiqing in #8532
Testing
- Add
EVMhelper functions for testing environment by @m-Peter in #8391 - Fix flaky epoch test by @janezpodhostnik in #8394
- Mockery fixes by @janezpodhostnik in #8423
- Fix flaky TestFollowerHappyPath: panic on pebble DB close by @peterargue in #8466
- fix flaky TestProduceConsume/pushing_100_blocks (pebble closed panic) by @peterargue in #8473
- Increase staking auction length for epochs tests by @tim-barry in #8496
- update testingdock to v0.6.0 by @tim-barry in #8502
Flow Core Contracts
- Update to the latest version of flow-core-contracts by @joshuahannan in #8415
Util
- add subcommand to remove execution fork by @zhangchiqing in #8465
Documentation
CI/CD
- Cleanup bors references by @janezpodhostnik in #8386
- Switch from buildjet to blacksmith runners by @manny-yes in #8483
- go fix: remove obsolete +build directives by @tim-barry in #8422
Misc
- Cleanup unused kubernetes related deployments by @janezpodhostnik in #8384
- Pin tagged version of lockctx by @jordanschalm in #8420
- Run go fix by @tim-barry in #8435
- Improve debug logs for mismatching events by @turbolent in #8479
New Contributors
- @holyfuchs made their first contribution in #8299
Full Changelog: v0.47.0...v0.48.0
24th Feb 2026 - Height Coordinated Upgrade on Mainnet28 at Block Height 143290500
What's Changed
Zero-Downtime HCU
- Add more improvements by @zhangchiqing in #8350
- POC Ledger Service by @zhangchiqing in #8309
FVM
- Remove unused error by @janezpodhostnik in #8393
FlowEVM
- Implement ABI encoding/decoding for arrays of Solidity tuples by @m-Peter in #8371
- Optimize EVMDecodeABI by removing an ArrayValue iteration by @fxamacker in #8397
- Optimize EVMEncodeABI by removing an ArrayValue iteration by @fxamacker in #8398
- Optimize EVMEncodeABI by creating Go reflect types at startup and reusing them by @fxamacker in #8399
- Optimize EVM dryCall by removing RLP encoding/decoding by @fxamacker in #8400
- Remove EOA restriction functionality from EVM by @m-Peter in #8408
- Add new EVM functions that can be used to reduce computation cost of transactions by @fxamacker in #8418
- Optimize and reduce computation cost of four EVM functions by @fxamacker in #8434
- Add strict hex-prefix check when parsing
EVMaddresses fromStringby @m-Peter in #8437 - Add proper meter and gas limit checks for EVM dry operations by @m-Peter in #8416
Cadence
- Update to Cadence v1.9.8 by @turbolent in #8395
- Update to Cadence v1.9.9 by @turbolent in #8412
- Update to Cadence v1.9.10 by @turbolent in #8461
Data Availability
- Add index for account transactions by @peterargue in #8381
- Refactor jobqueue to require initialized progress consumer - take 2 by @peterargue in #8404
- Fix
ParseAddress()by only removing prefix "0x" by @fxamacker in #8453 - fix event cache corruption by @peterargue in #8448
- Add computation used to transaction results API responses by @peterargue in #8451
- Don't require stateStreamBackend in access bootstrap by @peterargue in #8463
- update AN version by @j1010001 in #8455
Network
- Remove unnecessary CAS guard from SubscriptionProvider.updateTopics() by @zhangchiqing in #8407
- Reduce logging for creating libp2p streams by @peterargue in #8417
Core Contracts
- Update to the latest version of flow-core-contracts by @joshuahannan in #8415
CI/CD
- Fix flaky epoch test by @janezpodhostnik in #8394
- Switch to onflow fork for testingdock with updated docker by @peterargue in #8411
- go fix: remove obsolete +build directives by @tim-barry in #8422
- Mockery fixes by @janezpodhostnik in #8423
- Run go fix by @tim-barry in #8435
Tooling
- Add --require-beacon-key flag to fail fast on missing DKG keys at consensus node startup by @zhangchiqing in #8410
Docs
- Cleanup agent docs by @peterargue in #8403
Code Cleanup
- Cleanup unused kubernetes related deployments by @janezpodhostnik in #8384
- Cleanup bors references by @janezpodhostnik in #8386
Misc
- Pin tagged version of lockctx by @jordanschalm in #8420
Full Changelog: v0.46.1...v0.47.0
13th Feb 2026 - Height Coordinated Upgrade on Mainnet28 at Block Height 142099300
What's Changed
- [v0.46] Update to Cadence v1.9.9 by @turbolent in #8413
Full Changelog: v0.46.0...v0.46.1
6th Feb 2026 - Height Coordinated Upgrade on Mainnet28 at Block Height 141342222
What's Changed
Data Availability
- Fix race condition with block collection indexing by @peterargue in #8377
- Access ingestion error handle by @zhangchiqing in #8385
- add AN compatibility for v0.46.0 by @j1010001 in #8392
Cadence
- Update to Cadence v1.9.7 by @turbolent in #8374
- Update to Cadence v1.9.8 by @turbolent in #8396
Collection
- Close network conduit for cluster epoch-specific engines by @tim-barry in #8363
- Unexport reusable runtime by @janezpodhostnik in #8373
FVM
- Fix lint warning by @janezpodhostnik in #8380
CI/CD
- Fix lint warning by @janezpodhostnik in #8380
- Upgrade mockery by @janezpodhostnik in #8322
- Remove unused revive by @janezpodhostnik in #8387
Misc
- Cleanup flips folder by @janezpodhostnik in #8388
Full Changelog: v0.45.0...v0.46.0
29th Jan 2026 - Height Coordinated Upgrade on Mainnet28 at Block Height 140478444
What's Changed
Move ledger to standalone service
- Normalize nil payload value encoding to empty slice by @zhangchiqing in #8307
Stricter transaction verification
- Transactions must now include signatures only from accounts serving as payer, proposer, or authorizer. Transactions containing extra or redundant signatures from non-role accounts will be rejected by the FVM and Access API.
BFT
- Add playbook for root block voting by @sjonpaulbrown in #7744
- Extend
CombinedVoteProcessorV3by @durkmurder in #7918 - Suggested amendments for PR 7918 by @AlexHentschel in #8138
- Refactor with hotstuff.Distributor by @zhangchiqing in #8156
- Requester Engine update to follow guidelines by @durkmurder in #8205
- Suggestions for Requester Engine (PR #8205) by @jordanschalm in #8254
Data Availability
- Add AN compatibility for v0.44.0 by @j1010001 in #8144
- Remove sealed result index by @zhangchiqing in #8147
- Allow reindexing last block's protocol data by @peterargue in #8165
- Compatible Range in node version info does not reflect compatibility overrides by @UlyanaAndrukhiv in #8199
- Refactor optimistic sync pipeline by @peterargue in #8201
- Fix error codes for transactions endpoints during HCU #8178 by @UlyanaAndrukhiv in #8215
- Add compatibility override for v0.44.1 - master by @peterargue in #8216
- Indexer remove redundant header reads by @zhangchiqing in #8226
- Add endpoints to get transaction and results by block by @AndriiDiachuk in #8240
- port AN compatibility changes to master by @j1010001 in #8319
- add AN compatibility for v0.45.0 by @j1010001 in #8364
- add back quotes for DISABLE_ADX flag by @j1010001 in #8365
Flow EVM
- Truncate amount on
COA.withdrawcall to maximum Flow token vault precision by @m-Peter in #6877 - Apply any given
SetCodeAuthorizationlist toDryCallby @m-Peter in #8160 - Fix EVM gas overflow in FVM - port from internal by @janezpodhostnik in #8181
- Always enable EVM in FVM by @turbolent in #8211
- Add support for ABI encoding/decoding Cadence structs as tuples by @turbolent in #8259
- Add functionality to restrict EOAs from accessing EVM by @m-Peter in #8310
- Improve error handling for Cadence Arch precompiles by @m-Peter in #8341
- Check for integer overflow when reading ABI encoded bytes by @m-Peter in #8357
- Update to latest
ethereum/go-ethereumversion by @m-Peter in #8360 - Handle empty RLP list in Cadence Arch
verifyCOAOwnershipProof()by @m-Peter in #8361
FVM
- Rename schedulde callbacks to transactions by @devbugging in #8109
- Update Testnet System Colletion Version by @janezpodhostnik in #8140
- Deploy LockedTokens and StakingCollection after scheduled transactions by @joshuahannan in #8145
- Add Mainnet System Collection Version Boundary by @janezpodhostnik in #8151
- Update execution effort weights as per FLIP 346 by @janezpodhostnik in #8152
- Add MonotonicEmulator to transient chains by @jribbink in #8157
- Improve conversion of Flow address to Cadence address by @turbolent in #8214
- Update machine account balance recommendations by @jordanschalm in #8242
- Expose transaction index to Cadence by @janezpodhostnik in #8252
- Fix concurent execution metrics by @janezpodhostnik in #8261
- Add chain as a parameter to the runtime pool by @janezpodhostnik in #8302
- Resolve reusable runtime environment import cycle by @janezpodhostnik in #8303
- Remove unused ExecutedCollectionConsumer by @janezpodhostnik in #8306
- Make Chain a non-optional part of context construction by @janezpodhostnik in #8312
- Change InternalEVM injection to happen once by @janezpodhostnik in #8313
- Add account key metadata utility functions to FVM pkgs by @fxamacker in #8315
- Remove public key deduplication migration and diff key program by @fxamacker in #8316
- Split the Script and Transction runtimes earlier in the stack to avoid missuse by @janezpodhostnik in #8321
- Refactor cadence declarations in FVM by @janezpodhostnik in #8356
Collection node decentralization
- Update randomness used during bootstrapping by @tim-barry in #7978
- Add cluster bootstrapping commands by @tim-barry in #8013
- Collector nodes participate in bootstrapping by @tim-barry in #8124
- Sync collector bootstrapping with master by @tim-barry in #8189
Storage
- Refactor index execution result by @zhangchiqing in #8005
- Optimize CollectionFinalized with BlockIDByCollectionID by @zhangchiqing in #8186
- concurrency-safe vertex iterators for levelled forest by @AlexHentschel in #8202
- Support getting number of children of non-existent vertex in Levelled Forest by @jordanschalm in #8207
Storehouse
- Background storehouse indexing by @zhangchiqing in #8255
- Storehouse checkpoint validator by @zhangchiqing in #8257
Cadence
- Update to Cadence v1.8.5 by @turbolent in #8188
- Update to Cadence v1.8.6 by @turbolent in #8192
- Update to Cadence v1.8.7 by @turbolent in #8209
- Update to Cadence v1.9.1 by @turbolent in #8234
- Update to Cadence v1.9.2 by @turbolent in #8262
- Update to Cadence v1.9.3 by @turbolent in #8298
- Update to Cadence v1.9.4 by @turbolent in #8318
- Update to Cadence v1.9.5 by @turbolent in #8346
- Update to Cadence v1.9.6 by @turbolent in #8362
- Update to Cadence v1.9.7 and atree v0.12.1 by @turbolent in #8372
Testing
- Collection cluster bootstrapping+voting test by @tim-barry in #8091
- Fix benchmark manual cmd by @zhangchiqing in #8153
- Add scripts for debugging integration tests by @zhangchiqing in #8164
- Skip wintermute test suite due to flakiness by @zhangchiqing in #8187
CI
- update golangci-lint by @peterargue in #8223
- Fix ST1019 static lint errors by @peterargue in #8225
- chore: remove repetitive word in comment by @xiaolinny in #8237
- Bump
convictional/trigger-workflow-and-waitaction tov1.6.5by @manny-yes in #8294 - Makefile and build fixes by @janezpodhostnik in #8355
New Contributors
- @xiaolinny made their first contribution in #8237
Full Changelog: v0.44.19...v0.45.0
14th Jan 2026 - Rolling Upgrade on Mainnet28
What's Changed
- This update revers the special privileges greanted earlier to the Service Account.
- Revert: Add service account override by @janezpodhostnik in #8324
- [Flow EVM] Add test cases for restricted EOA functionality by @m-Peter in #8297
Full Changelog: v0.44.18...v0.44.19
6th Jan 2026 - Height Coordinated Upgrade on Mainnet28 at Block Height 138127900
What's Changed
- Add EVM function to reclaim ERC20 tokens from attacker's EOA addresses by @m-Peter in #8293
- Revert pr8293 by @j1010001 in #8300
- [v0.44] Update to Cadence v1.8.12 by @turbolent in #8304
Full Changelog: v0.44.17...v0.44.18
3rd Jan 2026 - Height Coordinated Upgrade on Mainnet28 at Block Height 137876444
What's Changed
- add AN compatibility for v0.44.14 - restrict only EOAs by @j1010001 in #8289
- Restrict EVM access to EOAs with proven malicious activity by @m-Peter in #8272
- Access node fix script execution with evm by @zhangchiqing in #8290
- [v0.44] Update to cadence 1.8.11 by @SupunS in #8291
- add an compatibility for v0.44.15-17 by @j1010001 in #8292
Full Changelog: v0.44.14-rc.1...v0.44.17