Skip to content

Mainnet 24

Compare
Choose a tag to compare
@github-actions github-actions released this 16 Oct 22:50
· 9450 commits to refs/heads/master since this release
692969b

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

Admin server

BFT

Benchnet

Execution

FVM

Cadence

HeroCache

Localnet

Metrics

Networking

Light node

RandomBeacon

Script execution on Access node

Execution data sync

Storage

Testing & CI

  • Refactoring Network Test Fixtures for Enhanced Customizability and Maintenance by @yhassanzadeh13 in #4524
  • Split epoch integration tests into 2 cohorts by @jordanschalm in #4626
  • Unquarantine TestMultiCluster (integration/tests/collection/proposal_test.go) by @gomisha in #4459
  • Unquarantine TestExecutionStateSync (integration/tests/access/execution_state_sync_test.go) by @gomisha in #4460
  • Unquarantine test - TestCrosstalkPreventionOnNetworkKeyChange by @gomisha in #4515
  • fix verify-mocks intermittent CI failure by @gomisha in #4484
  • Rename without_netgo tag to without-netgo by @peterargue in #4548
  • Print builds and tools job inputs by @peterargue in #4617
  • Update the workflows to use new auth by @peterargue in #4724
  • Fix Flaky Test Monitor in CI - replace run-tests.sh bash script with GitHub Actions by @gomisha in #4589
  • Split out network unit tests in CI by @gomisha in #4680
  • Add merge_group to CI to allow using built in GH merge queue work flow by @Kay-Zee in #4607

Verification

Crypto

Protocol Data

Chores & Misc other

New Contributors

Full Changelog: v0.31.21...v0.32.3

What's Changed

  • [Access] 4215 - Add heartbeat responses to event streaming API by @AndriiDiachuk in #4812
  • [Storehouse] [Ledger] update ledger.Set to remove empty update case by @zhangchiqing in #4837
  • [ALSP] Synchronization Engine spam detection flag support, config/README.md updates by @gomisha in #4842
  • [JobQueue] Move the DefaultIndex from Start method to constructor by @zhangchiqing in #4843
  • Auto update to onflow/cadence v0.42.1 by @turbolent in #4867
  • [Networking] Tuning libp2p resource manager limits; supporting by tests by @yhassanzadeh13 in #4846

New Contributors

Full Changelog: v0.32.2...v0.32.3

What's Changed

  • [Access] 4215 - Add heartbeat responses to event streaming API by @AndriiDiachuk in #4812
  • [Storehouse] [Ledger] update ledger.Set to remove empty update case by @zhangchiqing in #4837
  • [ALSP] Synchronization Engine spam detection flag support, config/README.md updates by @gomisha in #4842
  • [JobQueue] Move the DefaultIndex from Start method to constructor by @zhangchiqing in #4843
  • Auto update to onflow/cadence v0.42.1 by @turbolent in #4867
  • [Networking] Tuning libp2p resource manager limits; supporting by tests by @yhassanzadeh13 in #4846

New Contributors

Full Changelog: v0.32.2...v0.32.3

What's Changed

  • [Access] 4215 - Add heartbeat responses to event streaming API by @AndriiDiachuk in #4812
  • [Storehouse] [Ledger] update ledger.Set to remove empty update case by @zhangchiqing in #4837
  • [ALSP] Synchronization Engine spam detection flag support, config/README.md updates by @gomisha in #4842
  • [JobQueue] Move the DefaultIndex from Start method to constructor by @zhangchiqing in #4843
  • Auto update to onflow/cadence v0.42.1 by @turbolent in #4867
  • [Networking] Tuning libp2p resource manager limits; supporting by tests by @yhassanzadeh13 in #4846

New Contributors

Full Changelog: v0.32.2...v0.32.3

What's Changed

  • [Access] 4215 - Add heartbeat responses to event streaming API by @AndriiDiachuk in #4812
  • [Storehouse] [Ledger] update ledger.Set to remove empty update case by @zhangchiqing in #4837
  • [ALSP] Synchronization Engine spam detection flag support, config/README.md updates by @gomisha in #4842
  • [JobQueue] Move the DefaultIndex from Start method to constructor by @zhangchiqing in #4843
  • Auto update to onflow/cadence v0.42.1 by @turbolent in #4867
  • [Networking] Tuning libp2p resource manager limits; supporting by tests by @yhassanzadeh13 in #4846

New Contributors

Full Changelog: v0.32.2...v0.32.3

What's Changed

  • [Access] 4215 - Add heartbeat responses to event streaming API by @AndriiDiachuk in #4812
  • [Storehouse] [Ledger] update ledger.Set to remove empty update case by @zhangchiqing in #4837
  • [ALSP] Synchronization Engine spam detection flag support, config/README.md updates by @gomisha in #4842
  • [JobQueue] Move the DefaultIndex from Start method to constructor by @zhangchiqing in #4843
  • Auto update to onflow/cadence v0.42.1 by @turbolent in #4867
  • [Networking] Tuning libp2p resource manager limits; supporting by tests by @yhassanzadeh13 in #4846

New Contributors

Full Changelog: v0.32.2...v0.32.3