Skip to content

Releases: onflow/flow-go

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

v0.28.6

11 Oct 18:59
b9b941d
Compare
Choose a tag to compare

Mainnet 20

This release includes the following major changes,

  1. Laying the ground work for Permissionless AN with several upgrades to the underlying peer-to-peer networking layer to make it more Byzantine fault tolerant.
  2. A fully revamped execution node checkpointing process (v6) that is six time faster, eliminates execution node memory spikes and reduces spork downtime.
  3. Rolling upgrade support for Execution and Verification nodes, working towards zero-downtime network upgrades in the future.
  4. FVM performance improvements.

💥 Breaking Changes

Cadence type checking of resource has been fixed and significantly improved. Correct Cadence code should continue to function as before. However, any Cadence code that relied on implementation bugs must be corrected (onflow/cadence#2033)

Execution node

Sync engine

Crypto

Access and Observer node

Performance benchmarking

Cadence and FVM Performance improvement

Read more

v0.27.4

24 Aug 00:47
b6e9a98
Compare
Choose a tag to compare

Mainnet 19

Major items going out this release.

💥 Breaking Changes

(updated 08/29)

  • [Execution] A previous cache implementation allowed frequently queried blocks to stay in the cache for longer than originally intended. The new implementation introduced by (#2893) @ramtinms no longer allows this behaviour and causes the state to quickly become non-queryable via scripts after 500 collections, or approximately 100 blocks. With current block production rates, this translates to ~2mins.
    For script execution beyond this threshold, the Archive Node should be used. We will share the archive node details soon.
  • [Execution] avoiding double encoding of event key before insertion into the event merkle trie (#1994) @ramtinms
  • [FVM] merge constant size account registers in account status (#2799) @ramtinms
  • [FVM] remove the use of the legacy controller by the FVM registers (#2585) @ramtinms
  • Crypto: BLS ciphersuite updates (#2576) @tarakby (announcement)

Execution node checkpointing improvements

  • [Execution Node] Reuse ledger state in checkpoints for -152GB RAM and -24 minutes (#2792) @fxamacker
  • [Ledger] Replace LRU cache with a FIFO queue (circular buffer) (#2893) @ramtinms
  • Refactor root checkpoint extraction program (#2206) @fxamacker
  • Fix copylocks in TestOnBlockProposal_RemoteOrigin (#2693) @fxamacker

Execution node

Cadence & FVM

Epoch and DKG Updates

  • [Fix] Update epoch test suite teardown (#2627) @kc1116
  • fixed decoding error for signer indices at epoch switchover (#2830) @AlexHentschel
  • Unskip flaky test - TestEpochJoinAndLeaveLN (#2802) @LLsq2
  • fix flaky test: TestStaticEpochTransition (#2698) @gomisha
  • [fix:TestEpochJoinAndLeaveAN] [fix:TestEpochJoinAndLeaveVN] Handle registering node without machine account (#2699) @jordanschalm

Networking

Consensus / BFT

Sync engine

Crypto

Access and Observer node

Performance improvements

BFT Testing

Profiler/Telemetry changes

🛠 General Node Improvements

Read more

v0.26.9 - Mainnet 18

14 Jun 16:11
fdc7321
Compare
Choose a tag to compare

Mainnet 18

Major Changes

Misc

Read more

v0.25.7

28 Mar 23:55
5226c35
Compare
Choose a tag to compare
v0.25.7 Pre-release
Pre-release

Mainnet 17

Major Changes

Updated to Cadence version v0.23.0, which contains a breaking change for the Public Key API

There has also been a lot of improvements made to the mTrie/merkle tree storage methods, specially made around the Write Ahead Log, and Checkpointing logic. The speed improvements here are mostly noticeable for node operations side and will not be DAPP facing.

There will be an internal concept change, which will better define the concept of "Weight" in the protocol. This changed required some renaming of Stake → Weight (Node level breaking change). This means that the read the new protocol state, it will require a matching node version that has the same conceptual understanding of Stake vs Weight.

Lastly, there is a change that will make to add the code necessary for Variable Transaction Fees, but this feature will not be enabled until a community vote has been held.

All Changes

💥 Breaking Changes

  • Optimize MTrie Checkpoint (regCount & regSize): -9GB alloc/op, -110 milllion allocs/op, -4GB file size (#2126) @fxamacker
  • Reduce checkpoint file size by using fewer bytes to encode length of encoded payload value (#2165) @fxamacker
  • Update checkpoint file format version from v4 to v5 (#2174) @fxamacker
  • Optimize MTrie checkpoint: 47x speedup (11.7 hours -> 15 mins), -431 GB alloc/op, -7.6 billion allocs/op, -6.9 GB file size (#1944) @fxamacker
  • Rename Stake to Weight (#2090) @jordanschalm
  • Cadence upgrade (#1975) @janezpodhostnik

Cadence & FVM

BFT Testing

Access API

🛠 Node Improvements

🐞 Bug Fixes

CI/CD

  • Flaky Test Monitor - BigQuery update and full refactoring of unit tests (#2102) @gomisha
  • Add observer as a separate docker image (#2113) @m4ksio
  • Avoid setup/teardown cycle for skipped epoch integration tests; re-enable base Epoch Transition test (#1881) @jordanschalm
  • Fix non-x86 linter issue (#1938) @tarakby
  • changing go mod to point to the latest OpenAPI spec (#1962) @vishalchangrani

Misc