Skip to content

Releases: onflow/flow-go

🎵 Crescendo (Mainnet25)

27 Jul 18:55
feabd3a
Compare
Choose a tag to compare
Pre-release

Video walkthrough

Crescendo is the most significant upgrade to the Flow network since genesis that both supercharges Cadence and brings Flow closer to the rest of the web3 ecosystem. Crescendo includes the following major changes:

Full EVM Equivalence

This upgrade makes Flow fully EVM equivalent. Full EVM equivalence means any smart contract, protocol, or tooling that works on Ethereum Mainnet will work out of the box on Flow, without requiring any additional configuration - similar to an EVM L2. With Flow, developers can unlock massive value atop their existing solidity contracts by using Cadence to access Flow-native features and benefit from a game-changing user experience with improved performance. This includes creating gasless experiences in apps through sponsored transactions for mainstream onboarding, accessing protocol-level verified random functions for games, and making multicall transactions requiring a single approval for complex DeFi strategies. More on this here.

Upgrade to Cadence 1.0

Cadence 1.0 represents the most significant upgrade to the language yet, introducing numerous UX, security and functional enhancements that bring Cadence to a new level of maturity. Attachments which allow developers to permisisonlessly extend another author’s contracts will also be shipped with the upgrade, allowing for exciting opportunities to turn products into platforms with use cases from moddable games to nestled NFTs with intelligent interactions. More on this here.

Improving data availability

Flow's long-term vision for data availability is to enable clients and developers to reliably and trustlessly query and replicate the specific portions of the global state that are relevant to them. This upgrade marks a significant first step toward realizing that vision by making all chain data accessible on edge nodes, also known as access nodes. This enhancement allows self-hosted and managed services to provide unrestricted, non-rate-limited access to chain data, including script execution.

Enhancing Network Security with Dynamic Protocol State

This network upgrade introduces the 'Dynamic Protocol State,' a foundational framework for enabling all node types to operate permissionlessly. In the short term, Dynamic Protocol State allows for the immediate ejection of misbehaving nodes within an epoch. Additionally, it lays the groundwork for implementing automatic countermeasures, such as algorithmically slashing misbehaving nodes or entirely revoking their authorization to participate. You can learn more about this feature here.

Improving network scalability with Atree inlining

One of Flow's goals is to support more than a Petabyte on-chain state storage. This upgrade includes a major step towards that goal by vastly improving the memory usage of execution nodes, reducing the current usage by 50% and making future growth far more efficient by revamping how state data is stored in memory on the Execution node using the new Atree register inlining. More on this here.

Faster time to finality for transactions

Over the past year, the Flow Foundation and Flow's community at large have made significant enhancements to the node software, improving performance across most key metrics. Some highlights include:

  1. Networking layer improvements
  2. Update to Jolteon consensus algorithm
  3. Update to the consensus follower.
  4. A recent major improvement was to streamline Flow’s cryptography stack and switch the low-level library from ‘relic’ to BLST (see change).

Collectively, these changes have significantly reduced block time — the time required for consensus nodes to decide on the next block. As part of the Crescendo upgrade, optimized timing dynamics will improve Flow's central consensus, reducing Time to Finality by 18% and notably enhancing the responsiveness of applications built on Flow. Additionally, the impact of offline nodes and the risk of timing attacks will be reduced by half.

Building blocks for further improving network availability

Flow has made substantial progress in enhancing network availability by reducing the frequency of planned network upgrades that require downtime from four or more per year in the past to just one this year. The amount of unplanned downtime (incidents) has also decreased significantly, with only one incident year-to-date [YTD] in 2024. Flow's current YTD uptime is well above 99.9%.

As part of this ongoing effort, the Crescendo upgrade will introduce key building blocks that enable the network to recover from a failed epoch transition without requiring a coordinated manual override by all node operators, which previously led to downtime. If the automatic setup of a new epoch fails, the network will enter a dedicated state called Epoch Fallback Mode [EFM], where transactions continue to be processed normally, but further epoch progression (ability for staked nodes to join and leave the network) is suspended. Normal operations can be fully restored with a simple governance transaction. More details can be found here.

Breaking changes

While there are no breaking changes as far as the node software and the access API are concerned, the upgrade to Cadence 1.0 introduces a breaking change for ALL contracts currently deployed on testnet and mainnet. Developers must ensure they are ready for Crescendo ahead of time and can find full details on how to stage, upgrade, and verify contracts on the Flow Migration Hub.

Commit list

Cadence 1.0 (update and migration)

Read more

v0.34.0-crescendo-preview.16

30 Apr 16:43
26cb8ee
Compare
Choose a tag to compare
Pre-release

What's Changed

New Contributors

Full Changelog: v0.34.0-crescendo-preview.13...v0.34.0-crescendo-preview.16

v0.34.0-crescendo-preview.13

22 Apr 08:41
dfb68b2
Compare
Choose a tag to compare
Pre-release

What's Changed

Read more

v0.34.0-crescendo-preview.7

20 Mar 10:44
4aa92a9
Compare
Choose a tag to compare
Pre-release

This release details all changes that will go into Crescendo preview network upgrade since it launched on Feb 28.

What's Changed

Flow EVM Core changes

  • Move blockHash calculation after deduction supply diff by @m-Peter in #5464
  • [Flow EVM] Improving evm integration tests by @ramtinms in #5431
  • [Flow EVM] Fix the evm chainID bug for mainnet by @ramtinms in #5443
  • [Flow EVM] use transfer from/to a fixed native token bridge address for deposit/withdraw calls by @ramtinms in #5469
  • [Flow EVM] make deposit available for all EVM addresses by @ramtinms in #5473
  • bugfix: [Flow EVM] missing uuid on vault returned by the withdraw method #5514
    • [EVM] Fix withdraw: set UUID of returned FlowToken.Vault by @turbolent in #5515
  • [Flow EVM] improve handler by @ramtinms in #5516

Core Protocol

  • Event-based test refactoring for GossipSub RPC inspection unit tests by @kc1116 in #5374
  • [Networking] Reject Gossipsub RPC from unstaked peers by @kc1116 in #5449

Cadence 1.0 migration

Cadence Execution

TPS Load generator

Access node

  • [Access] Add implementation for usage of the local transaction result in Access API by @Guitarheroua in #5306

Util

Testing improvements & bugfixes

Dependency updates and updating from master

Improvements in code documentation

Uncategorized

Full Changelog: v0.34.0-crescendo-preview.5...v0.34.0-crescendo-preview.7

Height Coordinated Upgrade - Jan 2024

22 Jan 01:53
bf54231
Compare
Choose a tag to compare

This update includes the following changes.

👨‍💻 Improvements for developers

The last release added the basic support for script execution on the access node. This update builds on the previous work and includes several improvements and bug fixes to get script execution on the access node close to completion.

🎵 Getting ready for Flow EVM

Flow EVM is coming soon (see: https://flow.com/upgrade/crescendo). To unlock integration with existing middleware, this update includes the Application Binary Interface (ABI) Encode and Decode methods for Flow EVM (issue).

Candence updates

The upgrade will update the supported Cadence version to v0.42.9.

🦾 Performance improvements

This upgrade includes the new cryptography module, improving the overall performance of the consensus algorithm.

Change to resource identifier generation

This release introduces an implementation change for Cadence resource identifier generation. The resource identifiers will no longer be generated sequentially and can have values greater than the max value for Uint32 and, for the foreseeable future, less than 2^56 -1 (the MAX_SAFE_INTEGER for JavaScript). If you were previously storing resource IDs in a Unit32 data type, please make sure to update it to a larger data type that can, at the very least, accommodate IDs greater than Uint32 and up to 2^56 -1 but preferably up to Max Uint64.

Commit list

Access

BFT

  • ReceiptValidator ensures k receipts committing to the execution result by @durkmurder in #5050
  • Epoch setup random source update by @tarakby in #5088

EVM on Flow

CI

Read more

Mainnet 24

16 Oct 22:50
692969b
Compare
Choose a tag to compare

This update includes the following changes.

🔒 Network security improvements

Earlier this year, the Flow Foundation published the roadmap to improve Flow network security (see: roadmap). This upgrade includes a major milestone towards attack-resilient message propagation for autonomous node operations. The first version of the application layer spamming protection has now been implemented and applies to all node types. This protection builds on the networking layer protection added in the last upgrade and provides additional protection against a wide range of attacks against a node at the application layer.

Additionally, it also includes further hardening of the networking layer to make it even more resilient to attacks.

Finally, reporting around malicious nodes has been improved as the consensus follower, which runs within all node types, will now detect and report any malicious sender.

These security updates mark a major step towards improving protocol autonomy and ensuring the network is resilient to attacks.

👨‍💻 Improvements for developers

Simplifying dApp architecture by making it easy to consume transaction events

This upgrade enables event streaming on the REST-based Access API served by the Access nodes. Event streaming makes dApp design simpler by allowing it to consume transaction events using a push-based model instead of a pull-based model. Event streaming is already available using gRPC.

Another enhancement to the Access API in this upgrade is the ability to optionally request the transaction events to be returned in the Cadence Compact Format (CCF) encoding instead of JSON. CCF is a far more compact format and provides better compression of the network payload.

Secure and unlimited script execution

The Access nodes will now also support script execution. This will allow dApps to use a private access node for secure script execution without being subjected to any rate limits. This will also relieve the execution nodes from executing scripts, allowing more CPU on the execution nodes to be allocated towards transaction execution instead. This feature is an alpha release as we continue to test it.

Cadence upgrade

The upgrade will update the supported Cadence version to v0.42.3.

Tamper-proof, verifiable, unpredictable and efficient on-chain random generator

Finally, the update includes partial implementation of FLIP 120: Update unsafeRandom function and FLIP 123: On-chain Random beacon history for commit-reveal schemes. The first FLIP adds a new Cadence function revertibleRandom that uses the Flow native random beacon to provide secure random numbers for both transactions and scripts. The Flow random beacon provides non-biased, unpredictable and verifiable random numbers, that can be used in Cadence contracts by trusted parties, thanks to the latest FVM updates. The second FLIP implements a solution for reverting random results by untrusted parties. It provides commit-reveal scheme tools, based on the Flow random beacon history. The new revertibleRandom as well as the new beacon history contract are implemented in this release.

📳 Recovery from the epoch fallback mode

On October 13th, the network went into an epoch fallback mode when it failed to complete an epoch transition. See incident. Consequently, epoch transitions have been suspended, and certain node operations, such as staking and unstaking have also been impacted.
This network upgrade will help the network recover from the epoch fallback mode and resume normal epoch transitions.

💥 There are no breaking changes in this release

Application layer spam protection

  • Implements disallowlisting logic by @yhassanzadeh13 in #4441
  • Adjust Node Penalty Decay Speed on Repeated Disallow-listing by @gomisha in #4485
  • Synchronization Engine SyncRequest spam detection (Permissionless-related engine level spam detection) by @gomisha in #4590
  • Synchronization Engine RangeRequest spam detection (Permissionless-related engine level spam detection) by @gomisha in #4665
  • Synchronization Engine BatchRequest spam detection (Permissionless-related engine level spam detection) by @gomisha in #4704
  • Synchronization Engine spam detection flag support, config/README.md updates by @gomisha in #4842
  • Khalil/1888 network config improvements by @kc1116 in #4340
  • 1891 Gossipsub RPC validation inspector false positive E2E testing by @kc1116 in #4371
  • Khalil/1895 Add config package unit test by @kc1116 in #4523
  • Khalil/6743 Slashing Violations Consumer ALSP misbehavior report integration by @kc1116 in #4512
  • Gossipsub Tracer RPCSent tracker by @kc1116 in #4543
  • 1898 slashing violations consumer alsp integration test by @kc1116 in #4549
  • Verification Node documentation by @yhassanzadeh13 in #4528
  • Khalil/1899 async rpc sent tracker by @kc1116 in #4553
  • Khalil/6819 simplify rpc inspector validation by @kc1116 in #4642

Access node

Read more

Mainnet 23

30 Mar 23:43
0f6ea38
Compare
Choose a tag to compare

This release includes the following major changes,

  • Upgrades to Consensus follower, making it more Byzantine Fault Tolerant (BFT)
  • Adding Cadence Compact Format (CCF) as an option for encoding Cadence values.
  • Event Streaming API implementation as per this FLIP
  • Several updates taking Flow closer to supporting parallel transaction execution
  • Further improving the FVM smart cache validation introduced in the last height coordinated upgrade.
  • Adding support for the service event-based height-coordinated upgrade.
  • Several improvements to the networking layer to make it more resilient to routing attacks.
  • Update block time controller to provide higher precision with epoch timings and block production rate.
  • Update to Cadence v0.39.3

💥 No Breaking Changes

Access

BFT

BFTTesting

Benchmark

CI/CD

Crypto

Randomness

Engine

Execution

Refactoring to enable concurrent Transaction execution

Read more

Height co-ordinated upgrade 03/22/23

21 Mar 22:21
4a4ee2b
Compare
Choose a tag to compare

This release introduces the child account feature on Flow mainnet, which enables Walletless onboarding and hybrid custody model
It also introduces smart cache invalidation in the FVM, which makes contract cache management much more efficient by only deleting the contract and its dependency from the cache during a contract upgrade instead of flushing the full cache.

What's Changed

Access

  • [Access] Disable rest metrics v0.29 by @peterargue in #3968
  • [v0.29] Backport: Fix OBO and inconsistency in signer indices decoding used in Access API #3906 by @jordanschalm in #3979

FVM

Cadence

Misc

Full Changelog: v0.29.16...v0.29.17

Mainnet 22 (emergency spork)

22 Feb 11:31
e644427
Compare
Choose a tag to compare

The epoch transition on Flow mainnet failed on 2/16 due to an issue with the Flow staking contract. The issue was identified and fixed. However, to resume regular epoch operation, Flow mainnet has to be sporked.

No other components and features were affected and are working as expected. Only epoch operation was affected.

Epoch

Access Node

  • [Access Client] Set message received limits - v0.29 backport by @peterargue in #3858
  • [GRPC] Add cli flag for grpc max message size - v0.29 backport by @peterargue in #3893
  • [Access] Fix panic converting execution data to protobuf messages by @peterargue in #3892
  • [Access] Backport error reporting and rest metrics - v0.29 by @peterargue in #3929

Active Pacemaker

Auth account

Spork improvements

Networking

  • [Networking] Logging of libp2p Resource Limits at Node Startup - v0.29 by @yhassanzadeh13 in #3952

Misc

Full Changelog: v0.29.7...v0.29.13

v0.29.6

20 Dec 20:27
7f02a64
Compare
Choose a tag to compare
v0.29.6 Pre-release
Pre-release

Mainnet 21

This release includes the following major changes,

  1. Active pacemaker - The Flow's consensus has been updated to the Jolteon protocol, a substantially improved HotStuff derivative.
  2. BFT change to support Permissionless AN.
  3. Fail-fast transactions with insufficient balance to cover fees.
  4. Update to Cadence v0.31.2

💥 Breaking Changes

Active Pacemaker

Execution node

Execution node refactoring - Prerequisite for concurrent transaction execution

Read more