Skip to content

Releases: onflow/flow-go

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

  • Implements attack network (#2144) @yhassanzadeh13
  • Adds attacker implementation (#2121) @yhassanzadeh13
  • Adds orchestrator interface and attack network (#2109) @yhassanzadeh13
  • Implements Corruptible Conduits (#2033) @yhassanzadeh13

Access API

  • Store and retrieve transaction results by EN RPC (#2166) @m4ksio
  • Create transaction result by index api (#2159) @koko1123
  • Add bootstrap command to generate observer networking key (#2087) @peterargue
  • Create light block response as default for AN block lookup API (#2148) @koko1123
  • Add Converters between RPC and flow-go Block with nested types (#2056) @koko1123
  • Create unit test for gRPC ExecutionResult response structure (#2006) @koko1123
  • Support running observer standalone using standard AN image (#2037) @peterargue
  • Log unique cadence scripts in AN execution engine (#1934) @koko1123
  • Add ExecutionDataId field in handler (#2010) @koko1123
  • [HTTP API] Transaction success status (#2106) @sideninja

🛠 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

v0.24.4

09 Feb 16:09
c78cac3
Compare
Choose a tag to compare

Mainnet 16

Major Changes

No breaking changes for Cadence included in this update.

There are two major features included in this software upgrade:

  • Consensus Voting V2: Protocol level optimization on how voting on blocks is performed, allowing more parallelism in vote processing
  • Epoch Dynamic Node Addition: Adds ability to more easily adjust Protocol member list during Epoch transitions

There has also been a lot of improvements made to the mTrie/merkle tree implementation including a bug fix which will effect how the Payload hash is generated. There are also improvements to caching, such as adding a new cache type which we're currently calling HeroCache.

Lastly, there is a change that will make this software version relatively incompatible with previous Flow node software versions, which is adding the execution CID, in preparation for the improve state sync engine. This change adds an extra field to the ExecutionResult data structure, which will produce different hashes for the ExecutionResult compared to previous software versions

All Changes

Cadence & FVM

Epoch and DKG Updates

Networking

  • Refactors DNS cache with HeroCache (#1888) @yhassanzadeh13
  • Refactoring networking received cache to HeroCache (#1908) @yhassanzadeh13

General Node and Crypto Improvements

Access Node

Cosensus Hotstuff

Sporking process improvements

Execution

State sync engine

Build, CI & Tests

🛠 Misc Improvements

v0.23.3 - Mainnet 15

01 Dec 23:38
be20371
Compare
Choose a tag to compare

Mainnet 15

Two major items going out this release.

The first will be the introduction of the new Cadence Storage Layer. This new storage layer will make use of the atree, which will greatly improve the performance of storage interactions with extremly large storage paths. As part of this change, there is a breaking change in relation to the owner field. More on that in the forums

The second being automated Epoch transitions. Epochs will now auto transition once a week with an un-changing node operator list. The network will run the DKG and shuffle clusters each epoch, but node operator changes will not be enabled at epoch boundaries yet. Note that this does not yet include the reward payout, which will still be done manually until we are satisfied with the reliability of the auto epoch transitions.

Breaking Change

Cadence & FVM

Epoch and DKG Updates

Networking

  • [Networking] Update libp2p-tls to fix issue with secured gRPC certificate (#1694) @peterargue
  • [Networking] Stream negotiation and fallback (#1643) @yhassanzadeh13
  • [Networking] Update connection manager implementation (#1516) @smnzhu
  • [Networking] Unstaked node networking updates (#1506) @smnzhu
  • [Networking] Tweak-able networking received cache size (#1529) @yhassanzadeh13
  • [Networking] Changing multicast to use the filtered set of node ids (#1528) @vishalchangrani
  • [Networking] Logging dial addresses (#1492) @yhassanzadeh13
  • [Networking] Add bitswap API (#1356) @smnzhu
  • [Networking] Middleware component (#1355) @smnzhu
  • [Networking] Libp2p stream compression (#1349) @yhassanzadeh13

General Node and Crypto Improvements

🛠 Misc. Improvements

CI & Tests

v0.22.10 Mainnet-14

26 Oct 23:42
89b5d24
Compare
Choose a tag to compare

🛠 Improvements

What's Changed

Full Changelog: v0.22.9...v0.22.10

v0.21.2 - Mainnet 13

13 Sep 19:08
4f31ff7
Compare
Choose a tag to compare

Mainnet 13

Main contents of this release will be the Full Observer Node, previously refered to as the unstaked access node.

We will also be include many Cadence related updates, requiring a migration, due to needing static type information to be stored for ALL types.

There are also improvements and updates to general performance, the CI/CD and bootstrapping process, as well as further improvements to Epochs, pushing towards full Mainnet roll out.

There are no breaking changes for users (at the Access Layer level).

Full Observer Node

Cadence

  • Add storage migration to inject static types to cadence values (#1264) @SupunS
  • Update to Cadence v0.19.0 (#1265) @SupunS
  • [Storage Migration] Add a flag to cleanup storage during migration (#1120) @SupunS
  • [Storage Migration] Improve static type inferring for arrays and dictionaries (#1245) @SupunS
  • [Storage Migration] Remove broken contracts from storage (#1110) @SupunS

Performance

  • [Networking] Rolls in DNS caching (#1263) @yhassanzadeh13
  • [Performance] Update the loader to use gas limits (#1242) @jwinkler2083233
  • [Networking] Adds DNS cache (#1086) @yhassanzadeh13
  • [Networking, Crypto] Compressed serialization, key conversions and message signing (#1129) @huitseeker

Epoch and DKG Updates

🛠 Misc. Improvements

  • [Execution, Verification] Increase event size limit for system chunk (#1252) @ramtinms
  • [Synchronization] Message queue for collection sync engine (#1248) @durkmurder
  • [FVM] backport of rejecting transactions with zero gas limit (#1220) @ramtinms
  • [FVM] revert changes to the storage multierror (#1223) @ramtinms
  • [Sealing] AssignmentCollectorTree unit tests (#1134) @durkmurder
  • [Networking] removing host.Peerstore().ClearAddrs from libp2pNode (#1204) @vishalchangrani
  • [Networking] Add retry logic to broadcast and forward message (#1172) @kc1116
  • [Core Contracts] Update core-contracts to v0.7.7 (#1171) @jordanschalm
  • [Bootstrapping] Add Migration to Update Storage Used (#1033) @janezpodhostnik
  • [Bootstrapping] adding secure-rpc-addr to access node systemd file (#1028) @vishalchangrani
  • [Execution] Fixing Chunk Data Response Failure (#1135) @yhassanzadeh13
  • [FVM] Deduct fees on failed transactions (#1012) @janezpodhostnik
  • [Networking] Check the OriginID of a libp2p message corresponds to its authenticated source (#1163) @huitseeker
  • [Networking] Check the originID in sendDirect too (#1170) @huitseeker
  • [Networking] Skip connecting to invalid identities in the identity table and log error instead of fatal (#1138) @vishalchangrani
  • [FVM] Fix checking storage over randomly ordered list (#1156) @janezpodhostnik
  • [Execution] Add configurable cache sizes for guarantees and receipts (#649) @m4ksio

CI & Tests

v0.20.5 - Mainnet 12

12 Aug 21:02
4a0c10d
Compare
Choose a tag to compare

Mainnet 12

Epochs

Access Layer Updates

Performance

📖 Documentation

Misc

v0.19.2 - Mainnet 11

19 Jul 23:36
2644560
Compare
Choose a tag to compare

Mainnet 11

  1. Verifiable Events
  2. Sealing & Verification: various minor improvements and code cleanups
  3. Minor Crypto Upgrades (Relic)

Verifiable events

  • Test execution matches verification + fix wrong transaction index for verified events [Verifiable events part 5] (#869) @m4ksio
  • Compute event hashes in separate thread [Verifiable events part 4] (#868) @m4ksio
  • Verify service events [Verifiable events part 3] (#804) @m4ksio
  • Verify events hash [Verifiable events part 2] (#739) @m4ksio
  • Hash events collection [Verifiable events part 1] (#734) @m4ksio

🛠 Improvements

🐞 Bug Fixes

  • [Integration] Fixes finalized block height with block state bug (#936) @yhassanzadeh13
  • [Execution] Fix execution halt when reloading blocks (#924) @m4ksio
  • [Sealing] Fix for emergency sealing panic (#899) @AlexHentschel
  • [Execution] Disable fees for system transactions (#889) @janezpodhostnik

Misc

  • Add Preserve label to stale bot exemption (#901) @Kay-Zee
  • [VER] Patch verification integration code (#952) @ramtinms
  • [crypto, chore, easy] Lint our scripts (#935) @huitseeker
  • Fix cadence auto update CI not running (#941) @janezpodhostnik
  • [Verification] Fixes flakey tests and race conditions (#919) @yhassanzadeh13
  • [Execution] update execution metrics setup with proper histogram buckets (#931) @ramtinms
  • [CI / build] Activate race-detection for those modules that are passing it (#898) @huitseeker
  • [Verification] Cleans up the old verification architecture (#831) @yhassanzadeh13
  • logging the libp2p protocol for which stream creation failed sure to … (#900) @vishalchangrani
  • [crypto] Fix relic build script for ARM (#823) @huitseeker
  • Add ability to automatically fix linting (#904) @m4ksio
  • Update README installation instructions (#895) @smnzhu
  • [execution mempool] Adds property testing for Seals store, fixes an edge case (#839) @huitseeker

Mainnet 10 - v0.18.4

19 Jun 21:39
Compare
Choose a tag to compare
Mainnet 10 - v0.18.4 Pre-release
Pre-release

⭐ Features

Improved and updated the Sealing and Verification logic to more fully involve the Verification nodes in the Sealing process

🛠 Improvements

Cadence Updates

Crypto Updates

Metrics and Monitoring

  • [Verification] Logging block height on chunk processing pipeline (#856) @yhassanzadeh13
  • [Execution] Expose more execution/fvm metrics (#813) @ramtinms
  • [Networking] Adding logging around libp2p one-to-one stream management (#785) @vishalchangrani
  • [Collection] Add Metric to Track Greatest Epoch Final View (#698) @danuio

General Improvments

🐞 Bug Fixes

  • [Networking] Fixing stream reset bug (#832) @vishalchangrani
  • [Networking] Make unicast message timeout configurable via command line argument (#849) @vishalchangrani
  • [Verification] Fixing notifier id at fetcher (#850) @yhassanzadeh13
  • [Consensus] Fix QC generation in bootstrap when non-internal nodes are present (#755) @jordanschalm
  • [Cadence] convert non UTF-8 cadence error to a UTF-8 error (#779) @vishalchangrani

Misc.

Mainnet 9 - v0.17.4

26 May 01:46
2d81520
Compare
Choose a tag to compare

Changes since v0.16.2

⭐ Features

🛠 Improvements

  • Update to Cadence v0.16.1 (#747) @turbolent
  • [FVM] Remove fee deduction in meta-transactions (#729) @janezpodhostnik
  • [Consensus] Compliance Engine to use Message Queue (#646) @zhangchiqing
  • [FVM] Direct contract function call (#689) @janezpodhostnik
  • [Verification] fix the logic that handles missing registers (#715) @ramtinms
  • [FVM] Dynamic contract deployment authorization (#720) @ramtinms
  • [Cadence version upgrade (#710) @janezpodhostnik
  • [Node bootstrap] Remove unused identities parameter from GenesisFixture (#718) @jordanschalm
  • [Verification] Adds metrics collector and tracer to requester and fetcher engines (#707) @yhassanzadeh13
  • [Access] Added a new metric network_gossip_sealed_height to track sealed height for all nodes. (#712) @vishalchangrani
  • [Verification] Add missing verification metrics (#714) @zhangchiqing
  • [Access] Switching finalized block height to sealed block height in ping metric reporting (#711) @vishalchangrani
  • [Access] Log long running scripts (#538) @m4ksio
  • [FVM] environment refactor - part 1 - event handler (#669) @ramtinms
  • [Epochs] Refactor cluster quorum certificate field in EpochCommit (#690) @jordanschalm
  • [Exe Ledger] Further optimize sha3 for amd64 (#687) @tarakby
  • [Exe Ledger] Switch hash slices to arrays (#514) @tarakby (with contributions of @AlexHentschel #514)
  • [FVM] Disable signing without a transaction tag (#694) @janezpodhostnik
  • [CMD] remove already applied data migrations (#701) @ramtinms
  • [Verification] Adds happy path integration tests for new architecture (#686) @yhassanzadeh13
  • [Access] Exposing GRPC server metrics for execution and collection nodes. (#684) @vishalchangrani
  • [Access] Add block height to Ping info response (#696) @vishalchangrani
  • [Execution] Add service account access in system chunk (#691) @m4ksio
  • [Access] Adding retry logic to look for at least two execution receipts for a block when serving an access node api call that needs an upstream execution node call (#683) @vishalchangrani
  • [Epochs] Define and enforce canonical ordering for DKG and protocol state (#678) @jordanschalm
  • [Verification] adds exponential backoff mechanism for requesting chunk data packs (#674) @yhassanzadeh13
  • [Access] Adding node software version info to Ping metrics. (#662) @vishalchangrani
  • [CMD] Verify generated root state snapshot (#600) @zhangchiqing
  • [Consensus] Mature Builder logic for selecting Seals for inclusion in the block (#551) @AlexHentschel
  • [Consensus] Core business logic for concurrent processing of Verification Nodes' Result Approvals (#632) @durkmurder (with contributions of @AlexHentschel #670 and #675)
  • [Epochs] Refactor EpochCommit service event model to include only DKG keys (#661) @jordanschalm
  • [Execution] Update sequence number independent of transaction invocation result (#602) @ramtinms

🐛 Bug Fixes

❓ Miscellaneous

Breaking changes

Proposer Key Sequence Number (#602)

When running a transaction, the proposer key sequence number would always be incremented unless any of the following conditions occur:

  • invalid transaction (transaction rejected by collection nodes)
  • any of the transaction signatures are not valid
  • the transaction is missing the signature(s) by the proposer
  • the proposal sequence number is invalid (not match with the one stored on the chain)

In other words, the new behaviour increments the sequence number even if the transaction fails at runtime or any other condition that is not mentioned above. The new behaviour protects the network against some cases of spamming attacks and protects users from double transaction submission attacks.

Transaction Domain Tags (#694)

Transaction domain tags allow signers to identify which messages are intended to represent encoded transactions, and which are not. The Flow protocol has been updated (as of May 5th 2021) to both accept signatures produced from messages prepended with a transaction domain tag, and from messages that are not. This spork will strictly require all signatures for transactions to have been produced from messages prepended with a transaction domain tag.

This breaking change requires all users of Flow Client Library, the Flow JavaScript SDK and Flow Go SDK to update their versions to a version greater than or equal to the version that supports transaction domain tags.

FlowIDTableStaking Smart Contract Breaking Change

This change refactors certain functions to eliminate excessive gas usage and is a part of preparing the contract for new protocol contracts like FlowEpoch and StakingCollection and making the contract more efficient

BREAKING CHANGE: Consolidating node and delegator metadata into a single struct to make querying staking information more straightforward.

These changes do not affect any transactions or active interactions with the Staking contract
You only need to take action if you are using any fo the following:

Cadence: Signature Algorithm Name Update (#710)

The naming of the ECDSA secp256k1 signature algorithm was not consistent across different codebases.

To main change is to replace SignatureAlgorithm.ECDSA_Secp256k1 with SignatureAlgorithm.ECDSA_secp256k1