Skip to content

Releases: onflow/flow-go

v0.41.3

21 May 23:42
23eb808
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.41.2...v0.41.3

v0.41.2

20 May 20:49
1b98944
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.41.1...v0.41.2

15th May 2025 - Height Co-orindated Upgrade on Mainnet26 at Block Height 113162222

07 May 22:33
0000b9b
Compare
Choose a tag to compare

What's Changed

EVM Pectra Update

Data Availability

Storage

  • Close BadgerDB before db init functions return error by @fxamacker in #7229
  • Remove old code in initBadgerDB() by @fxamacker in #7230
  • Optimize storing execution receipts in BadgerDB by @fxamacker in #7238
  • Optimize speed & memory for generating db keys (BadgerDB and Pebble) by @fxamacker in #7243
  • Discard BadgerDB transaction when iterator is closed by @fxamacker in #7254
  • Add Closer to Batch interface and use it to prevent memory leak (BadgerDB & Pebble) by @fxamacker in #7257
  • Add db Seeker for up to ~50x speedup & ~18x less memory seeking key in range (BadgerDB, Pebble) by @fxamacker in #7255
  • Fix batch remove in ServiceEvents to use the correct batch (BadgerDB, Pebble) by @fxamacker in #7323
  • Add database multiReader, multiIterator, multiSeeker (BadgerDB, Pebble) by @fxamacker in #7320
  • Remove unneeded lock in storage Callbacks and document it isn't safe for concurrent use by @fxamacker in #7352
  • Update DB.Reader() API to not return error by @fxamacker in #7354
  • Fix deadlock in batch writes by @zhangchiqing in #7341
  • Support NodeDisallowList for db migration by @fxamacker in #7361
  • Refactor to rename blocklist to disallowlist for consistency by @fxamacker in #7363

Crypto

Cadence

CI/CD

Misc

Full Changelog: v0.40.0...v0.41.0

v0.40.2

07 May 21:29
b058543
Compare
Choose a tag to compare

What's Changed

  • [Access] Allow small gap between streaming start and indexed height - v0.40 by @peterargue in #7360
  • [Access] Update websockets events and account status reponses to use json-cdc by @peterargue in #7359

Full Changelog: v0.40.1...v0.40.2

v0.40.1

21 Apr 17:17
2649d21
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.40.0...v0.40.1

10th April 2025 - Third Height Co-orindated Upgrade on Mainnet26 at Block Height 109384800

11 Apr 21:16
86c40b1
Compare
Choose a tag to compare

What's Changed

Cadence

Data Availability - Websocket streaming

EVM

  • Introduce the dryCall method under EVM contract & CadenceOwnedAccount resource by @m-Peter in #6838

Execution

Storage

Util

Misc

Full Changelog: v0.39.5...v0.40.0

v0.38.4

21 Feb 17:08
34bcb31
Compare
Choose a tag to compare

What's Changed

  • [v0.38] Backport: Use SafetyData to avoid double-proposing instead of myLastProposedView by @jordanschalm in #7079

Full Changelog: v0.38.3...v0.38.4

Protocol Upgrade - EFM Recovery at Block View 20504725, Block Height 108630638

20 Feb 22:54
ad1076f
Compare
Choose a tag to compare

What's Changed

⬆️ Coordinated Upgrades for all Node Roles

This is a mechanism built into the Protocol State which enables view-coordinated upgrades to the Protocol State data model. This mechanism can be leveraged to implement coordinated behavioural changes ("protocol upgrades") for all node roles, including for backward-incompatible upgrades. Previously such upgrades were supported only for Execution Nodes and the Execution stack via the Height Coordinated Upgrade mechanism and VersionBeacon smart contract.

This release completes the upgrade feature and implements the first such coordinated upgrade, which will be used to enable EFM Recovery (see below). Further details are in the working group meeting notes.

Related PRs

🌟 Epoch Fallback Mode Recovery

Epoch Fallback Mode (EFM) is a operational mode triggered when an epoch transition fails for any reason. While in EFM, the current epoch is extended in perpetuity and epoch transitions are disabled. This has the effect of disabling changes to the node operator committee. Also, automatic reward payout is disabled and reverts to a manual governance transaction.

EFM Recovery provides a mechanism to recover from epoch failures using a governance transaction. Previously, recovery from EFM required a network upgrade (spork). With EFM Recovery, a governance transaction is used to resume epoch transitions. Further details are in the design document.

EFM Recovery is available in this release, but must be enabled via a coordinated upgrade (see above).

Related PRs

🪨 Storage Layer

⛰️ Access API

❓ Miscellaneous

Breaking Changes

  • ServiceEventCount field added to Chunk. After the Protocol State Upgrade to version 2, this field will be activated. When active, this field's presence changes the canonical encoding and hashing for Chunk and all entities which use it (for example: ExecutionResult and Block). Clients which are not using a compatible version of flow-go will compute incorrect IDs for these entities.

Full Changelog: v0.38.3...v0.39.0

18th Feb 2025 Second Height Co-orindated Upgrade on Mainnet26 at block height 103983000

19 Feb 03:29
4e7e56b
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.38.2...v0.38.3

18th Feb 2025 Height Co-ordinated Upgrade on Mainnet26 at block height 103957477

10 Feb 21:41
bcb8a22
Compare
Choose a tag to compare

The Flow network has been upgraded!

This release brings a major enhancement to on-chain state storage with Account Storage Format v2, improving both the scalability and resiliency of the network.

✅ What is Included in This Upgrade?

  • Optimized Account Storage Format v2 for improved efficiency and scalability
  • Zero-Downtime State Migration - an innovative new method to seamlessly roll out the new account storage format on the live network without requiring any downtime.

🔹 What’s New in Account Storage Format v2?

The Account Storage Format v2 enhances how the on-chain state is stored and processed, resulting in significantly reduced memory usage on the Execution nodes.

The Execution State is a Merkle tree, which holds the user data (account token balances, NFTs, smart contracts deployed etc.) as payloads in its leaves. This update optimizes the storage format for the payloads resulting in fewer, more compactly serialized payloads. Fewer payloads in turn reduce the size of the MTrie, making Flow more efficient in handling state.

With this update,

  • The number of payloads will be reduced by 25-30%, reducing the on-disk storage footprint of the execution data. This will improve RAM, Disk and CPU efficiency, not only for execution nodes but also for all databases, indexers, and caches that store and serve execution data such as the access node.
  • The number of vertices in the MTrie will also be reduced by 25-30% reducing the in-memory storage footprint of the data for execution nodes, which hold the execution state in memory. With this size reduction, execution nodes will see more than an 11% reduction in memory usage (RAM) improving their stability and capacity to accommodate memory spikes during peak usage.

This improvement will also help slow down future memory growth rate as new accounts are created, further ensuring that Flow scales efficiently.
Read more about this change here 👉 GitHub Issue #3584

🔹How Will Account Storage v2 Be Rolled Out? Zero-Downtime Migration!

To deploy the new Account Storage Format without any network downtime, an innovative approach called Zero-Downtime Migration has been introduced.

Zero-Downtime Migration uses system transactions to migrate small batches of accounts, running in the background without affecting network operations. The ambient process takes several days to complete.

With this approach, the new Account Storage Format will be deployed gradually and seamlessly without requiring any action from developers or users, ensuring zero disruption to the network.

🔜 Upcoming improvements

This upgrade also lays the foundation for several upcoming improvements that will be rolled out as part of the next set of updates. These include:

  • Websocket Streaming API endpoints aimed at improving the user experience of dApps.
  • The ability to deploy protocol upgrades including downwards-incompatible changes for all node types to the live Mainnet - without requiring any network downtime!
  • Easy recovery from epoch transition failures, again requiring no downtime.

This upgrade marks another significant step in Flow’s journey toward scaling to petabytes of on-chain data. 🚀


❗Breaking change

There is a breaking change to streaming Access API in this upgrade.

Several AccessAPI and ExecutionDataAPI streaming endpoints include a message_index field in the response which indicates the order of messages sent by the server so the client can detect if they missed processing any. Previously, some endpoints used 1 as the first index in a stream while others used 0. After the HCU, all endpoints will be consistent regarding message_index and start from index 0.
APIs that will affected (Protobuf definition) -

  1. SubscribeEvents - field message_index
  2. SendAndSubscribeTransactionStatuses - field message_index
  3. SubscribeAccountStatuses - field message_index

These streaming APIs are fairly recent, therefore most apps will not be impacted.


⚠️ Deprecation

  • The protocol_version field of the NodeVersionInfo endpoint of the Access API is deprecated and will be removed in a future release.

Commit list

Account Storage Format v2 Migration

NOTE: Account Storage Format v2 is implemented in PRs in repo onflow/cadence.

Zero downtime (Recovering from failed epoch switchover)

  • Add test cases documenting CBOR's behaviour with omitted and extra fields by @jordanschalm in #6880

Data Availability

Read more