Releases: onflow/flow-go
Mainnet 23
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
- Do not copy protobuf messages by @SaveTheRbtz in #3790
- Add BlockStatus to GetBlock REST API by @lolpuddle in #3805
- Fix panic converting execution data to protobuf messages by @peterargue in #3887
- Improve Access API error reporting for results from ENs by @peterargue in #3915
- Add REST API metrics middleware by @diaswrd in #3691
- Export MessageToTrieUpdate converter method by @peterargue in #3897
- Improve api error handling by @peterargue in #3988
- Set message received limits by @peterargue in #3857
- Refactor uploader into separate module by @peterargue in #3676
- Add read leaf nodes from checkpoint file for Archive node use by @koko1123 in #4040
- fix storage by @smnzhu in #3064
- Fix printing trie hash by @zhangchiqing in #3926
- Backport event streaming, enabling exec sync by default by @peterargue in #4188
- Leo/v0.30 add archive address flag by @zhangchiqing in #4222
- Fix execution data cache in state stream - v0.30 backport by @peterargue in #4228
- Fix archive address list flag by @zhangchiqing in #4239
- Enable execution sync by default by @peterargue in #4159
- Add streaming API for BlockExecutionData by @peterargue in #3723
- Fix execution data cache in state stream api by @peterargue in #4197
- Add latest block Height and ID to api responses by @Guitarheroua in #4191
- Integration test for signer indices by @Guitarheroua in #4261
- Add API that return node information such as version, commit, spork Id and protocol version. by @Guitarheroua in #4235
- Added collection_id and block_id to GetTransactionResult arguments by @Guitarheroua in #4263
- Fixed REST API metrics by @Guitarheroua in #4288
- Add response rate limit to streaming endpoints by @peterargue in #4218
- Skip root block when streaming from execution data by @peterargue in #4271
- Update REST get events to return empty BlockEvents for blocks with no events by @peterargue in #4368
- Add metric for highest consecutive height with all collections indexed by @peterargue in #4391
- Implement conversion functions for CCF by @koko1123 in #4415
- disable access rest api metrics by @zhangchiqing in #4453
- revert Chunk structure to maintain consistent hashes by @koko1123 in #4351
- refactor logProgress by @zhangchiqing in #4168
- Fix read leaf nodes by @zhangchiqing in #4212
- add archive address flag by @zhangchiqing in #4199
- fix get tx by @koko1123 in #4458
- Fix AN event decoding in GetTransactionResultsByBlockID by @peterargue in #4462
- Include fix for system tx as well by @Kay-Zee in #4465
BFT
- Reporting basic consensus protocol violations by @durkmurder in #4174
- Compliance engine requires config by @durkmurder in #4372
BFTTesting
- Khalil/3590 libp2psig verification test by @kc1116 in #3689
- fixes CI failure on PR 3564 by @yhassanzadeh13 in #3794
- Gossipsub spam test Framework - IHAVE by @gomisha in #3564
Benchmark
- Prevent PID windup at start by @SaveTheRbtz in #3759
- Support multiple keys by @SaveTheRbtz in #3641
- Match log-level w/ production by @SaveTheRbtz in #3780
- Parameterize docker registry url by @gomisha in #3998
- Update benchnet2 automation by @haroldsphinx in #4057
- Update BN2 automation by @sjonpaulbrown in #4115
- Update BN2 creation, deletion CI workflows by @gomisha in #4177
CI/CD
- Add github action to build boot-tools on demand by @peterargue in #3787
- Remove --ssh flag from docker build for util by @peterargue in #3798
- Update
ci.yml
retry referencenick-invision
=>nick-fields
by @gomisha in #3919 - Add workflow to build individual docker images by @peterargue in #4065
- Only run jobs for selected roles by @peterargue in #4075
- Add retry mechanism to integration tests by @gomisha in #3989
- Remove unnecessary tagging from Makfile by @sjonpaulbrown in #4194
- Enable builds using private repos by @peterargue in #4223
Crypto
- KeyGen improvement by @tarakby in #3788
- Pairing edge case by @tarakby in #3977
- Update math/rand usage in crypto module and improve randomness tests by @tarakby in #4111
- New utils/rand package for non-deterministic true randomness by @tarakby in #4062
- improve usafeRandom and update math/rand in FVM by @tarakby in #4067
- Crypto: code improvement by @tarakby in #3760
- optimize CI tests by @tarakby in #4055
- Update flow go crypto version by @tarakby in #3441
- Update Relic Version by @tarakby in #4113
Randomness
- update math/rand usage in ledger by @tarakby in #4112
- update math/rand usage in /consenus and /engine by @tarakby in #4258
- update math/rand usage in /cmd/bootstrap by @tarakby in #4362
Engine
- Move weight check out of common provider engine by @peterargue in #3923
Execution
Refactoring to enable concurrent Transaction execution
- Fix/simplify value store span attribute setup by @pattyshack in #3738
- Simplify setting transaction procedure result values by @pattyshack in #3740
- Improve verification test's error message by @pattyshack in #3752
- Simplify chunk verifier api by @pattyshack in #3753
- Refactor environment.Tracer into a separate module. by @pattyshack in #3749
- Improve transaction verifier clarity by @pattyshack in #3771
- Set transaction procedure's trace span via context by @pattyshack in #3766
- Improve error code search. by @pattyshack in #3776
- Simplify Start Entity Span. by @pattyshack in #3786
- Remove RecordSpanFromParent from general tracing api by @pattyshack in #3791
- Define vm interface in fvm instead of computer by @pattyshack in #3796
- Pre-populate []transactions into collectionItem by @pattyshack in #3804
- refactor chunk object initialization into flow model by @pattyshack in #3811
- Change RegisterUpdates's r...
Height co-ordinated upgrade 03/22/23
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
- Port programs cache changes and metrics by @janezpodhostnik in #3972
- Port: Disable account freezing by @janezpodhostnik in #3985
- Revert PR 3985 by @janezpodhostnik in #4058
Cadence
- Update to Cadence v0.31.5 (internal) by @turbolent in #3953
- Switch to public Cadence v0.31.5 by @turbolent in #3958
- Port programs cache changes and metrics by @janezpodhostnik in #3972
- Update to Cadence v0.31.5-account-link-pragma by @turbolent in #3969
- Update Cadence to v0.31.5-account-link-improvements by @turbolent in #3997
- Update to Cadence v0.31.5-account-linking-improved-pragma by @turbolent in #4042
Misc
- [Committee] Fallback mechanism for
DecodeSignerIDs
by @durkmurder in #4063
Full Changelog: v0.29.16...v0.29.17
Mainnet 22 (emergency spork)
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
- Re-enable Epoch Integration Tests by @jordanschalm in #3835
- [
v0.29
] Remove requirement thatweight > 0
inEpochSetup
validation by @jordanschalm in #3935
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
- Start pacemaker before processing pending blocks by @jordanschalm in #3859
Auth account
- Enable account linking / AuthAccount capabilities on all networks except Mainnet by @turbolent in #3910
- Enable Account Linking - Fix by @janezpodhostnik in #3920
Spork improvements
- 0.29 log invalid vote in bootstrap finalize by @zhangchiqing in #3936
Networking
- [Networking] Logging of libp2p Resource Limits at Node Startup - v0.29 by @yhassanzadeh13 in #3952
Misc
- Upgrade core contracts - port to v0.29 by @janezpodhostnik in #3770
Full Changelog: v0.29.7...v0.29.13
v0.29.6
Mainnet 21
This release includes the following major changes,
- Active pacemaker - The Flow's consensus has been updated to the Jolteon protocol, a substantially improved HotStuff derivative.
- BFT change to support Permissionless AN.
- Fail-fast transactions with insufficient balance to cover fees.
- Update to Cadence v0.31.2
💥 Breaking Changes
- A new field
LastViewTC
has been added to the Block header. This new field is also included in the block hash calculation (#2367)
Active Pacemaker
- [Consensus] Active Pacemaker,
SafetyData
interface changes by @durkmurder in #2153 - [Consensus] Active Pacemaker,
TimeoutAggregator
interface changes by @durkmurder in #2155 - [Consensus] Timeout objects cache by @durkmurder in #2184
- [Consensus] Active Pacemaker,
PaceMaker
interface changes by @durkmurder in #2172 - [Consensus] Active Pacemaker multi message BLS aggregation by @durkmurder in #2243
- [Consensus] Support block-scoped and epoch-scoped identity queries in HotStuff committee by @jordanschalm in #2328
- [Consensus] Active Pacemaker signer indices by @durkmurder in #2494
- [Consensus] Active Pacemaker
SafetyRules
implementation by @durkmurder with contributions from @AlexHentschel in #2444 - [Consensus]
SafetyRules
extra test cases by @durkmurder in #2557 - [Consensus] Active Pacemaker: entities validation by @durkmurder in #2456
- [Consensus] Add method for timeout weight threshold to
Committee
by @jordanschalm in #2438 - [Consensus] Add Safety Threshold for EECC by @jordanschalm in #2498
- [Consensus]
ActivePaceMaker
implementation by @durkmurder in #2564 - [Consensus] Active Pacemaker: Timeout Collector implementation by @durkmurder in #2620
- [Consensus] Active Pacemaker:
Forks
cleanup by @durkmurder with contributions from @AlexHentschel in #2685 - [Consensus] Trigger Epoch Fallback Based on Epoch Commitment Deadline by @jordanschalm in #2625
- [Consensus] Active Pacemaker:
TimeoutAggregator
implementation by @durkmurder in #2740 - [Alternative Implementation] Update Committee for changed epoch fallback trigger condition by @jordanschalm in #2782
- [Consensus] Replace
DecreasingPruningHeightError
withBelowPrunedThresholdError
by @durkmurder in #2754 - [Consensus]
EventHandler
implementation and consensus modules integration by @durkmurder in #2787 - [Consensus]
EventLoop
internal queues update by @durkmurder in #2883 - [Consensus] Update HotStuff Finalization Logic by @jordanschalm with contributions from @AlexHentschel in #2954
- [Consensus] Update disabled integration tests by @durkmurder in #2935
- [Consensus] Modify
EpochLookup
to handle epoch fallback trigger condition by @jordanschalm in #2927 - [Consensus] Consensus Compliance Engine updated to conform to
Component
interface by @jordanschalm with contributions from @AlexHentschel in #3121 - [Consensus] New logic for round duration calculation by @durkmurder in #3201
- [Consensus] Collection
compliance
,epochmgr
Engines Implementcomponent.Component
by @jordanschalm in #3248 - [Consensus] Timeout objects rebroadcast by @durkmurder in #3277
- [Consensus] Update HotStuff Reader CLI Tool by @jordanschalm in #3363
- [Consensus] Front-Load HotStuff Verification Pt. 1: Update Compliance Engines by @jordanschalm with contributions from @AlexHentschel in #3294
- [Consensus] Front-Load HotStuff Verification Pt. 2: Remove
MarkValid
API by @jordanschalm in #3303 - [Consensus] Handle unsealed invalid service events by @jordanschalm in #2969
- [Consensus]
MessageHub
implementation by @durkmurder in #3357 - [Consensus] Add
ParentView
toflow.Header
by @durkmurder in #3372 - [Consensus] Timeout rebroadcast de-duplication by @durkmurder in #3430
- [Consensus] Own vote & timeout message routing by @durkmurder and @AlexHentschel in #3429
- [Consensus] Follower engine message queue by @durkmurder in #3479
- [Consensus] Extract interface for compliance engine by @durkmurder in #3512
- [Consensus] Standalone startup of hotstuff participant by @durkmurder in #3513
- [Consensus] Update telemetry for
EventHandler
by @durkmurder in #3571 - [Consensus] Implementation of missing consensus metrics by @durkmurder in #3623
- [Consensus] TC aggregation multi-message verification fix by @durkmurder in #3698
- [Consensus] Fix bug in cluster block validation. by @jordanschalm in #3707
- [Consensus] Fix name ordering in metrics by @jordanschalm in #3710
- [Consensus] Re-enable AN test, increase test timeout, add logging, document outstanding issues by @jordanschalm in #3631
- [Consensus] Fix sync engine bug, improve observability by @jordanschalm in #3714
- [Consensus] Block header change by @durkmurder in #2367
- [Consensus] Vote/Timeout aggregation telemetry events by @durkmurder in #3763
- [Consensus] Extending sealing segment with extra information by @durkmurder in #3764
Execution node
- [FVM] SetProgram can be called with nil by @janezpodhostnik in #3808
- code gen parseRestrict wrappers by @pattyshack in #3398
- [Execution] remove duplicate blobservice on execution nodes by @peterargue in #3418
- Handle event encoding error gracefully (Port of 2562) by @m4ksio in #2565
- [Execution] Adding more metrics to the execution node by @ramtinms in #3380
- [Execution] Do not depend on string conversion in register set tracking by @SaveTheRbtz in #3529
- [Execution] Minor ingestion logging cleanup by @SaveTheRbtz in #3522
- [Execution] Randomize collection fetch order by @SaveTheRbtz in #3445
- [Execution] Use generic slice algorithms instead of interfaces by @SaveTheRbtz in #3542
- [Execution] Remove useless condition from builder by @SaveTheRbtz in #3659
- [Execution] Kill pagecache mass eviction code by @SaveTheRbtz in #3662
- [Execution] Break blobservice out to own component in en builder by @peterargue in #3613
- [Ledger] Upgrade WAL to support fdatasync(2) by @SaveTheRbtz in #3693
- [FVM] Log fees error by @janezpodhostnik in #3392
- [FVM][Execution] Adding metrics for computation effort vector by @Tonix517 in #3403
- [FVM] Change payer balance check error to a failure by @janezpodhostnik in #3679
Execution node refactoring - Prerequisite for concurrent transaction execution
- Refactor transaction invoker. by @pattyshack in #3423
- return TotalComputationUsed() as uint64 by @pattyshack in #3394
- Add Pause/Resume functionality to TransactionState by @pattyshack in #3435
- Tighten unexpected nested txn check + delay procedure result population by @pattyshack in #3437
- Switch parseRestricted to use span name instead of hardcoded strings by @pattyshack in #3443
- Clean up fvm mocks by @pattyshack in #3450
- Test ErrorsCollector against SplitError by @pattyshack in #3440
- Disable limits for all of tx seq num checker / tx verifier by @pattyshack in #3474...
v0.28.6
Mainnet 20
This release includes the following major changes,
- 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.
- A fully revamped execution node checkpointing process (v6) that is six time faster, eliminates execution node memory spikes and reduces spork downtime.
- Rolling upgrade support for Execution and Verification nodes, working towards zero-downtime network upgrades in the future.
- 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
- [Exec] Add logging to collection fetch and handling by @SaveTheRbtz in #3316
- [Execution] Adding more logging and a fix to block upload retry by @Tonix517 in #3315
- [Execution] Fix TestScriptStorageMutationsDiscarded timeout by @SaveTheRbtz in #3109
- [Execution] Fixing improper use of WaitGroup in a goroutine for upload retry by @Tonix517 in #3285
- [Execution] Return error when closing gcp connection fails by @peterargue in #3290
- [Execution] Worker-based Chunk Data Pack Requests by @yhassanzadeh13 in #2951
- [Execution] state migration clean up by @ramtinms in #3192
- [EN Performance] Optimize checkpoint serialization for -37GB operational RAM, -2.7 minutes duration, -19.6 million allocs (50% fewer allocs) by @fxamacker in #3050
- [EN Performance] Reduce memory used for ledger.Payload by 32+ GB, eliminate 1+ billion allocs/op, speedup various ops by @fxamacker in #2930
- [Execution] Backport "Optimize GetEventsByBlockIDs" to master by @zhangchiqing in #3211
- [Execution] Fix error logging in script execution - port to master by @janezpodhostnik in #3071
- Refactor execution node builder (part 1) by @pattyshack in #3130
- Block computation result upload Retry implementation by @Tonix517 in https://github.com/onflow/flow-go/pull/
- Execution data format update by @smnzhu in #2841
- [Execution] remove duplicate blobservice on execution nodes by @peterargue in #3418
Sync engine
- [SyncEngine] not request pending ancestors by @zhangchiqing in #2879
- [ExecutoinStateSyn] Add bitswap metrics by @smnzhu in #2932
- Implement rate limite blob service by @smnzhu in #2859
Crypto
- [Crypto] DKG robustness against invalid messages by @tarakby in #2970
- [Crypto] Reformat using go 1.19 fmt by @SaveTheRbtz in #3141
- [Crypto] new sentinel errors and doc improvement by @tarakby in #2861
- [Crypto] update Go dependencies by @tarakby in #3085
Access and Observer node
- [Access] Option to Disable Conn Pooling by @lolpuddle in #2836
- [Access] Fix race condition in AN execution receipt metrics collection by @peterargue in #2957
- [Access] Added rpc metrics flag to Observer Node Builder by @danielholmes839 in #2973
- Observer metrics and logs using apiproxy by @danielholmes839 in #2920
- Crash Access Node if disk is full by @koko1123 in #1956
- Fix observer integration ports by @danielholmes839 in #2886
Performance benchmarking
- [Benchmark] Ability to dynamically adjust TPS by @SaveTheRbtz in #3246
- [Benchmark] Cleanup logging by @SaveTheRbtz in #3293
- [Benchmark] Expose execution rate from the loader by @SaveTheRbtz in #3080
- [Benchmark] Faster stopping of workers by @SaveTheRbtz in #3079
- [Benchmark] Fix crash on stats pusher exit by @SaveTheRbtz in #3089
- [Benchmark] Follow sealed blocks by @SaveTheRbtz in #3074
- [Benchmark] Group parameters to the loader library by @SaveTheRbtz in #3091
- [Benchmark] Keep prometheus metrics in-sync with TPS by @SaveTheRbtz in #3340
- [Benchmark] Remove noisy benchmarks by @SaveTheRbtz in #3090
- [Benchmark] Remove race in Digest() print by @SaveTheRbtz in #3076
- [Benchmark] Simplify follower inner loop by @SaveTheRbtz in #3078
- [Benchmark] Split TPS flags into initial and max by @SaveTheRbtz in #3292
- [Benchmark] upload data to BigQuery directly by @SaveTheRbtz in #3241
- [Performance] add fast path to programs cleanup by @SaveTheRbtz in #2982
- [Performance] initialize profiler after the state init by @SaveTheRbtz in #2985
- [Performance] run computation benchmarks on commit by @SaveTheRbtz in #2983
- [Benchmark] Add ability to auto-detect maximum TPS (#3338) @SaveTheRbtz
- Rewrite benchmarks for storing/loading checkpoint by @fxamacker in #3377
Cadence and FVM Performance improvement
- [FVM] Add expected event count to fuzzer by @janezpodhostnik in #3131
- [FVM] Add interaction limit to FVM fuzzing by @janezpodhostnik in #3114
- [FVM] Adding storage metering to Meter by @Tonix517 in #3236
- [FVM] Basic fuzzing and minor test change by @janezpodhostnik in #3112
- [FVM] Cleanup fvm logging by @janezpodhostnik in #3117
- [FVM] Disable limits on final state merge by @janezpodhostnik in #3182
- [FVM] Error Cleanup by @janezpodhostnik in #3244
- [FVM] Events in scripts do nothing instead of causing errors by @janezpodhostnik in #3183
- [FVM] Fix account reporter memory limit - master by @janezpodhostnik in #3105
- [FVM] Handle cadence runtime error early by @janezpodhostnik in #3204
- [FVM] Log err on TX failure by @janezpodhostnik in #3230
- [FVM] Move HandleRuntimeError to ContractFunctionInvoker by @janezpodhostnik in #3059
- [FVM] Moving event emit size metering logic to Meter interface by @Tonix517 in #3268
- [FVM] Pass context by value by @janezpodhostnik in #3220
- [FVM] Refactor checkAccountsAreNotFrozen by @janezpodhostnik in #3235
- [FVM] Remove old FVM errors by @janezpodhostnik in #3351
- [FVM] Remove old quick fixes by @janezpodhostnik in #3219
- [FVM] Replacing existing metering in state.go with new interface by @Tonix517 in #3249
- [FVM] Set ReusableCadenceRuntimePoolSize in bench tests by @janezpodhostnik in #3295
- [FVM] Simplifying FVM meter interface and implementation by @Tonix517 in #3252
- [FVM] Use embed for cadence scripts in blueprints by @janezpodhostnik in #3148
- Create one cadence runtime per ReusableCadenceRuntime object by @pattyshack in #3184
- Create virtual machine / cadence runtime inside computation.Manager by @pattyshack in #3132
- Reuse cadence runtime environment by @pattyshack in #3101
- Replace error/failure structs with CodedError/CodedFailure (Part 1) by @pattyshack in #3289
- Replace error/failure structs with CodedError/CodedFailure (Part 2) by @pattyshack in https://github.com/onflow/flow-go/pull/
- Reduce environment circular dependency by @pattyshack in #3223
- Refactor AccountKeyUpdater by @pattyshack in #3222
- Refactor GetAccountKey into AccountKeyReader by @pattyshack in #3186
- Refactor ProgramsCache into ChainPrograms by @pattyshack in #3205
- Refactor UUIDGenerator into environment by @pattyshack in #3057
- Refactor account freezer by @pattyshack in #3191
- Refactor contract reader into environment by @pattyshack in #3160
- Refacto...
v0.27.4
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
- [EN Performance] Reduce memory used for ledger.Payload by 32+ GB, eliminate 1+ billion allocs/op, speedup various ops (#2930) @fxamacker
- [Execution] Data storage updates (#2292 ) @smnzhu
- [Execution] re-organizing uploader code in Execution engine (#2854) @Tonix517
- [Execution] a fix to atree reporter (#2839) @ramtinms
- [Execution] adding more debug logs (#2710) @smnzhu
- [Execution] check if state commitment exists before executing scripts (#2763) @ramtinms
- [Execution] Fixed EN debug docker image build failure (#2708) @Tonix517
- [Exec] Remove global lock from script execution (#2742) @SaveTheRbtz
- [Exec] Add manager benchmark (#2668) @SaveTheRbtz
- [Exec] improve result upload/eds tracing (#2655) @SaveTheRbtz
- [Exec] Remove Stop The World pauses from transaction/script execution (#2739) @SaveTheRbtz
- minor EN stat cleanup (#2643) @SaveTheRbtz
- [Exec] add tracing to collection view merge (#2656) @SaveTheRbtz
Cadence & FVM
- Run fvm benchmark transactions under a regular account (#2894) @pattyshack
- Move weighted Meter into meter package (#2895) @pattyshack
- [FVM] Deduct fees and limit storage in synthetic benchmarks (#2881) @SaveTheRbtz
- [FVM] Deduct fees on all networks by default (#2880) @SaveTheRbtz
- [FVM] cleanup benchstat installation (#2884) @SaveTheRbtz
- [FVM] cleanup and regenerate mocks (#2858) @SaveTheRbtz
- [FVM] Update cadence to support Executor pattern (#2853) @SaveTheRbtz
- dedup code in script/transaction environment (part 2 of many) (#2845) @pattyshack
- Split env context, unsafe rand gen, and program logger into logical units (#2849) @pattyshack
- [FVM] All service accounts should be bootstrapped with a key (#2705) @janezpodhostnik
- [FVM] removing legacy controller from storage (#2713) @ramtinms
- [FVM] Fix error handling on contract function invocations (#2531) @janezpodhostnik
- [FVM] Don't read context from state on system chunk - port (#2690) @janezpodhostnik
- [FVM] Benchstat CI improvements (#2748) @janezpodhostnik
- [FVM] Add missing tests for merging FVM state weights (#2530) @janezpodhostnik
- [FVM] contracts.go refactor (#2353) @janezpodhostnik
- [FVM] fix a bug with invalid signature error type (#2424) @tarakby
- [FVM] add extra flag for contract removal (#2584) @ramtinms
- [FVM][TEST] Splitting fvm_test.go (#2594) @Tonix517
- Fix Cadence code (#2653) @turbolent
- Switch to cadence v0.25.0 by @SupunS in #2913
- Update to Cadence 5a06fec (#2709) @turbolent
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
- [Networking] Fixes flakey DNS cache expiry test (#2670) @yhassanzadeh13
- Khalil/ 1725 authenticate libp2p peer before decoding message payload (#2667) @kc1116
- Khalil/2706 update middleware errors (#2726) @kc1116
Consensus / BFT
- [Consensus] Conflicting seals mitigation strategy (#2892) @durkmurder
- Update Consensus Loop (#2857) @danielholmes839
- [Sealing Segment] Handle root sealing segment with multiple blocks (#2786) @jordanschalm
- 1714 add rate limiting interceptor to the LN & EN gRPC API's (#2505) @kc1116
- 1704 add impersonation/masquerade slashing hooks (#2648) @kc1116
Sync engine
- [SyncEngine] not request pending ancestors (#2879) @zhangchiqing
- Add exponential backoff for execution data download timeouts (#2629) @peterargue
Crypto
- Update crypto scripts for Go 1.18 (#2911) @tarakby
- crypto: allocate on stack where possible (#2598) @SaveTheRbtz
- Update crypto note in README (#2781) @tarakby
- [Crypto] fix memory leak in unhappy path (#2604) @tarakby
- Crypto: BLS ciphersuite updates (#2576) @tarakby
Access and Observer node
- Observer Pull Request Candidate 0603z (#2554) @szegedim
- Observer integration tests (#2783) @danielholmes839
- AN - Lock Updates to Conn Pool (#2779) @lolpuddle
- [AN] - Trigger Cache Eviction on Overwrite (#2760) @lolpuddle
- Invalidate Pooling Logic in AN (#2691) @lolpuddle
- AN - Lock Updates to Conn Pool (#2779) @lolpuddle
- [Access] add signer ids to access API (#2762) @zhangchiqing
- Improve error reporting for access api event endpoints (#2822) @peterargue
- Add warning logs to request handler (#2671) @danielholmes839
- Add latest height metrics for execution receipts and collections (#2692) @danielholmes839
- Fix GetTransactionResultsByBlockID Panic (#2729) @
- Fix time.Sleep (#2721) @
- Add a separate channel name for push-blocks on the public network (#2641) @peterargue
Performance improvements
- Stop type casting meter before setting weights / limits (#2908) @pattyshack
- [FVM] Storage check optimisation (#2837) @janezpodhostnik
- [FVM] reducing register touches (#2502) @ramtinms
BFT Testing
- [BFT Testing] Fixes wintermute orchestrator race condition (#2780) @yhassanzadeh13
- [BFT Testing] Add BFT tests to regular CI workflows (#2725) @gomisha
- [BFT Testing] refactors gRPC interface (#2599) @yhassanzadeh13
- [BFT Testing] Wintermute attack integration test (#2463) @yhassanzadeh13
Profiler/Telemetry changes
- expose StartSpanFromRoot AccountFreezeEnabled methods to environment interface (#2900) @pattyshack
- [Profile] disable threadcreate profiler (#2898) @SaveTheRbtz
- [Profiler] move out of ./utils/debug to ./module/profiler (#2897) @SaveTheRbtz
- [Profiler] Force GC before running heap profile (#2860) @SaveTheRbtz
- [All] OpenTracing to OpenTelemetry migration (#2823) @SaveTheRbtz
- [Profiler] Automatic pprof profile uploads to Google Cloud Profiler. (#2903) @SaveTheRbtz
🛠 General Node Improvements
- [Collection Node] Add dry-run option for collection rate limiting (#2615 ) @jordanschalm
- Port of complete removal of extralogs (#2682) @m4ksio
- Backport setExecutionParameters from TransactionEnv to ScriptEnv (#2835) @pattyshack
- Adding new load test type for constant sized transactions (#2816) @Tonix517
- Add ComputationMeter interface to facilitate env code dedup-ing (#2831) @pattyshack
- Fix Unit race condition on stopping. (#2775) @pattyshack
- Remove GO111MODULE=on everywhere (#2821) @SaveTheRbtz
- chore(comment): fix IsSampled description (#2809) @SaveTheRbtz
- chore(tests): remove unused mock (#2824) @SaveTheRbtz
- chore(tests): add trace benchmark (#2806) @SaveTheRbtz
- Add staging net (#2793) @Kay-Zee
- dedup code in script/transaction environment (part 1 of many) (#2790) @pattyshack
- chore(trace): rename file (#2810) @SaveTheRbtz
- Invoke contracts directly instead of via currying (#2804) @pattyshack
- chore(localnet): fix observer's trace endpoint (#2805) @SaveTheRbtz
- chore(loader): fix Stop/Follow race (#2766) @SaveTheRbtz
- change unittest fixture to use *flow.Header instead of flow.Header (#2744) @pattyshack
- Add Andrew Meyer to performance stream (#2769) @AndrewM-SDET
- [localnet] Adding checking to EXECUTION configuration (#2788) @Tonix517
- s/Rem/Remove/g to improve code readability (#2784) @pattyshack
- chore(loader): wait for account creation results (#2778) @SaveTheRbtz
- Extend consensus follower config to support compliance settings (#2697) @jordanschalm
- Update dependency modules version and update BLS DSTs (#2603) @tarakby
- chore(loader): faster worker Stop() (#2765) @SaveTheRbtz
- chore(loader): switch from Client to Access API (#2764) @SaveTheRbtz
- loader: remove TxTracker and TxStatsTracker (#2632) @SaveTheRbtz
- Don't leak signerLock outside of Account encapsulation (#2644) @pattyshack
- remove disk size metrics (#2746) @zhangchiqing
- tweak Programs locking + minor refactoring (#2749) @pattyshack
- Fixed docker-build-loader image build failure (#2757) @Tonix517
- chore(localnet): faster account creation (#2683) @SaveTheRbtz
- Remove header caching (#2704) @SaveTheRbtz
- optimize emergency-sealing check (#2673) @zhangchiqing
- Unskipping passing flaky test - TestComponentConsumerSuite/TestHappyPath/runs_and_notifies_using_pre-notifier (#2730) @LLsq2
- Moving emulator-based tests to the integration package (#2738) @ramtinms
- Fix reversed numbers for script metrics (#2595) @dsainati1
- Simplify blockCommitter/eventHasher (#2660) @patt...
v0.26.9 - Mainnet 18
Mainnet 18
Major Changes
- [Execution] upgrade cadence to secure-cadence-m9 (#2516) @j1010001
- [Consensus & Collection] Merge Signer-indices to master (#2414) @zhangchiqing
- [Access] Add execution data requester (#1895) @peterargue
Misc
- [Util CL] fix logging current statecommitment in execution state extraction (#2610) @zhangchiqing
- [Testing] localnet: switch from docker log driver to promtail (#2609) @SaveTheRbtz
- [Access] Use Connection Pool Logic (#2613) @lolpuddle
- Add ledger checkpoint status files to
gitignore
(#2607) @jordanschalm - [Logging] Fix implementation of script logging (#2528) @koko1123
- [util] update cmd to get seal for sealed block (#2587) @zhangchiqing
- [Tool] Export transactions for height range (#2442) @zhangchiqing
- [Access] Implement Connection Pooling for RPC Connections in AN (#2412) @lolpuddle
- [Networking] Downgrades libp2p pubsub version (#2592) @yhassanzadeh13
- [Crypto] performance improvement of SSWU map to curve (#2570) @tarakby
- sync engine optimization (#2548) @danielholmes839
- [State Sync] Lookup ExecutionResult directly instead of using index (#2566) @peterargue
- Update to Cadence v0.24.1 and Go SDK v0.26.1 (#2583) @turbolent
- [Protocol State] Index seal by sealed block id (#2551) @zhangchiqing
- [Testing] Moving convert fixtures to a namespace for test cases (#2533) @zhangchiqing
- [Util CLI] fix encoding in checkpoint-list-trie cmd (#2546) @zhangchiqing
- [Collection] Remove max account index (#2552) @jordanschalm
- [Testing] feat(localnet): use grafana, tempo, loki (#2510) @SaveTheRbtz
- [Testing] Fix flakey component job consumer test (#2538) @peterargue
- [Testing] chore(tests): cleanup TxTracker (#2520) @SaveTheRbtz
- [Testing] quarantine test - TestComponentConsumerSuite-runs_and_notifies_using_pre-notifier (#2555) @gomisha
- [Testing] chore(tests): cleanup worker and add tests (#2503) @SaveTheRbtz
- [Testing] chore(tests): cleanup TxStatsTracker and add tests (#2471) @SaveTheRbtz
- [Testing] chore(tests): move code back to contLoadGenerator.go (#2537) @SaveTheRbtz
- [Testing] feat(localnet): pass through tracing, extensive tracing, and cadence tracing flags (#2542) @SaveTheRbtz
- [Testing] chore(tests): cleanup worker stats tracker and add tests (#2504) @SaveTheRbtz
- Corruptible Conduit Framework Integration (#2397) @yhassanzadeh13
- [Fix] add explicit mapping of cluster prefix -> message codes (#2539) @kc1116
- PR Migrate ingestion engine to new Component interface (#2436) @danielholmes839
- chore(tests): remove unused batchLoadGenerator (#2519) @SaveTheRbtz
- chore(tests): do not go through the resolver for localhost (#2511) @SaveTheRbtz
- Add secure-cadence prefix as a tag to be pushed (#2167) @Kay-Zee
- [Crypto] improve flaky random test (#2509) @tarakby
- [All Nodes] upgrade flow to v0.3.1 (#2534) @zhangchiqing
- Exit validation early for empty collections (#2524) @jordanschalm
- Add BlockHeight to TransactionResultResponse (#2514) @lolpuddle
- Outdated blocks should not be logged as errors (#2372) @AlexHentschel
- Add Atree reporter to execution state extraction (#2461) @fxamacker
- Update to Cadence 8b113c539a2c, atree 525fbc26f40a, and CBOR ad2eae63303f (#2525) @turbolent
- add go workspace files to .dockerignore and .gitignore (#2469) @SaveTheRbtz
- [Signer Indices] Validate guarantors (#2462) @zhangchiqing
- Suggestion for PR #2462 (#2517) @AlexHentschel
- [Networking] Upgrades pubsub version of libp2p (#2515) @yhassanzadeh13
- Read memory limit from state (#2474) @robert-e-davidson3
- chore(tests): mark localnet and benchmarks owned by the performance team (#2512) @SaveTheRbtz
- add jobqueue README (#2373) @zhangchiqing
- upload log level for memory weights (#2493) @zhangchiqing
- chore(tests): fix init-light for localnet (#2508) @SaveTheRbtz
- Upgrade Cadence to secure-cadence-m8 (#2499) @janezpodhostnik
- flaky tests fix test async uploader - Test_AsyncUploader/stopping_component_stops_retrying (#2453) @gomisha
- [Fix] Adding sync request message as a cluster type message (#2495) @yhassanzadeh13
- Add tests to ensure mutations in scripts are discarded (#2482) @dsainati1
- chore(tests): cleanup unused fields from loader (#2470) @SaveTheRbtz
- [Component Manager] Fix race condition (#2349) @smnzhu
- Optimize MTrie reading single path by adding Ledger.GetSingleValue() to boost speed and reduce memory use (#2473) @fxamacker
- Optimize Ledger.Get() by making Forest.Read() use ~5x fewer allocs/op and run ~20% faster (#2477) @fxamacker
- Memory metrics (#2467) @dsainati1
- [BFT Testing] Corruptible Conduit Factory authenticating dictated messages. (#2441) @yhassanzadeh13
- Dan/1536 add cadence execution time metrics (#2394) @danielholmes839
- Upgrade linter to 1.46.2 (#2457) @zhangchiqing
- Remove unused travis yml (#2323) @Kay-Zee
- unquarantining 2 flaky tests that have been consistently passing in quarantine (#2455) @gomisha
- chore(tests): fix load test (#2454) @SaveTheRbtz
- chore(docker): fix parallel image builds (#2447) @SaveTheRbtz
- avoid race condition in validating blocks (#2427) @zhangchiqing
- Suggestion for PR #2414 (#2443) @AlexHentschel
- Memory limit exception for service account (#2437) @turbolent
- Add
util
command to retrieve snapshot at any height (#2429) @jordanschalm - Use go 1.18 to build and run binary (#2363) @Kay-Zee
- Secure Cadence (#2337) @janezpodhostnik
- Secure cadence master update (#2433) @m4ksio
- Separate permission setting of contract deploy/update and removal (#2390) @robert-e-davidson3
- Robust Transaction Deduplication (#2385) @jordanschalm
- add flaky skip reason so tests can run in cron job (#2410) @kc1116
- Secure Cadence upgrade to m7 (#2423) @janezpodhostnik
- Secure Cadence flow-go-sdk upgrade (#2417) @janezpodhostnik
- [FVM] Signing errors swapped fix (#2415) @janezpodhostnik
- Log MemoryUsed by transactions. (#2396) @dsainati1
- Allow disabling/enabling permissionless deployment with a transaction (#2376) @janezpodhostnik
- Secure Cadence - merge master (#2400) @janezpodhostnik
- [Execution State] Full search json dump (#1971) @m4ksio
- improve signer indices logging (#2408) @zhangchiqing
- [Crypto] fix race conditions in DKG tests (#2391) @tarakby
- Add new code space for Canary addresses (#2388) @tarakby
- rm duplicate code in getNextAncestryLevel (#1759) @zhiqiangxu
- log bootstrap cmd error (#2259) @zhangchiqing
- fix docker build loader (#2382) @zhangchiqing
- [FVM] Merge default execution/memory weights and state weights (#2374) @janezpodhostnik
- Add test for referencing non-existent address (#2256) @janezpodhostnik
- Update execution verification tests (#2007) @janezpodhostnik
- [FVM] Collapse FVM bench results (#2111) @janezpodhostnik
- Secure Cadence - revert removing addKey api v1 tests (#2344) @janezpodhostnik
- Khalil/1689 Add authorized sender pubsub topic validator (#2317) @kc1116
- Add checksum to signer indices (#2362) @zhangchiqing
- changing the block height range for GetEventsForBlockHeightRange REST… (#2379) @vishalchangrani
- Fix race detector issues. (#2293) @SaveTheRbtz
- Add weights for cadence values and types (#2358) @robert-e-davidson3
- [FVM] signature verification refactoring (#2171) @tarakby
- Add weights for array element overhead and map pre-allocated elements (#2375) @SupunS
- [Signer Indices] upgrade onflow/flow package (#2377) @zhangchiqing
- [Collection] Log collection proposer (#2381) @zhangchiqing
- Update cd.yml to ignore daily tags created through automation (#2368) @sjonpaulbrown
- Update localnet TARGET paths after recent dockerfile changes (#2361) @peterargue
- [BFT Testing] Integrating BFT testing framework with testnet (#2308) @yhassanzadeh13
- Don't push :latest tag by default (#2355) @m4ksio
- Fix linting error (#2356) @zhangchiqing
- Secure Cadence - add memory alloc metering (#2350) @janezpodhostnik
- Secure Cadence - Merge master (#2343) @janezpodhostnik
- Secure Cadence - upgrade to m5 (#2340) @janezpodhostnik
- Secure Cadence - integration test fix (#2338) @janezpodhostnik
- Add extraction report for usage within external tooling (#2239) @sjonpaulbrown
- [BFT Testing] implements wintermute attack orchestrator (#2291) @yhassanzadeh13
- [Tool] add rollback executed height (#2334) @zhangchiqing
- [REST API] Adding missing fields to the ExecutionResult object (#2311) @vishalchangrani
- [Access] update system chunk tx handling in GetTransactionResults API (#2329) @smnzhu
- Memory weight assignment from contract (#2305) @janezpodhostnik
- Smnzhu/system tx port (#2332) @smnzhu
- remove unused test util (#2331) @robert-e-davidson3
- Fixed some tests for AddPublicKey and RemoveePublicKey (#2327) @robert-e-davidson3
- Add observer support to localnet (#2320) @shawnflow
- Fix AN crash (#2326) @m4ksio
- Tx results by block id merged (#2314) @m4ksio
- Create GetTransactionResultsByBlockID API (#2303) @smnzhu
- [Access node] Add random en lookup on receipt lookup failure (#2321) @koko1123
- Fix bootstrap constraint check (#2233) @zhangchiqing
- Add config to limit caching of new proposals while syncing (#2294) @jordanschalm
- implement result reindexing tool (#2289) @smnzhu
- Retry on conflict inserting cluster blocks (#2270) @jordanschalm
- Use block ID from seal (#2287) @Kay-Zee
- Upgrade
go-retry
v0.1.0->v0.2.3
(#2258) @jordanschalm - Fix flakey test:
TestComponentShutdown
(#2269) @jordanschalm - Use block ID from seal (#2288) @smnzhu
- Fix er indexing on finalization (#2284) @koko1123
- Add mutex around script tracking map (#2283) @koko1123
- Improve DKG & QC contract logging (#2263) @kc1116
- Fix result indexing by block (#2276) @koko1123
- [FVM, EN] pass request context and add timeout for script execution (#2147) @ramtinms
- Merge v0.25 to master (#2266) @turbolent
- Update the private message struct: remove Orig from DKGMessage (#2238) @kc1116
- [Networking] Fixes unicast timeo...
v0.25.7
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
toWeight
(#2090) @jordanschalm - Cadence upgrade (#1975) @janezpodhostnik
Cadence & FVM
- [FVM] Variable Computation Metering (#1631) @janezpodhostnik
- [FVM] Change fee deduction logic (#2097) @janezpodhostnik
- [Execution] enable cadence runtime tracing given node level flag (#2108) @ramtinms
- [FVM] refactor computation and memory metering (#2129) @ramtinms
- [Migration] Migration for Ordered Map storage change (#1839) @dsainati1
- [FVM] relax tag conditions for ECDSA runtime signature verification (#1992) @ramtinms
- [FVM] Add bls crypto functions to transaction and script env (#1605) @dsainati1
- [FVM] Execution effort weights option for bootstrap (#2228) @janezpodhostnik
- [FVM] Move execution intensities debug logging (#2229) @janezpodhostnik
- [FVM] Fix metering limits (#2217) @janezpodhostnik
- [Cadence] update to Cadence v0.23.3 (#2247) @turbolent
- [FVM] Temporary fix for addressing storage used of a non-existing account (#2253) @janezpodhostnik
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
-
[Execution] Log execution data ID (#2196)(#2055)(#2039) @smnzhu
-
[Execution] Add logging for CPU, RAM, and checkpoint (#2119)(#2187) @fxamacker
-
[Execution] Reduce default checkpoint distance flag from 40 to 20 to speedup EN startup (#2223) @fxamacker
-
[Execution] Remove transaction results from execution data (#2098) @smnzhu
-
[Consensus]
VoteAggregator
pruning (#2040)(#2110) @durkmurder -
[Consensus] Refactor epochs related contract deployments, use blueprints pattern (#2057) @kc1116
-
[Collection] Add message queue to transaction
ingest
engine (#2035) @jordanschalm -
[All Nodes] Root snapshot QC validation (#2038) @durkmurder
-
[All Nodes] Performance: improve the binary search speed (#1493) @jwinkler2083233
-
[All Nodes] Implement --profiler-mem-profile-rate= (#2059) @simonhf
-
[Consensus] DKG Messaging Improvements (#1950) @jordanschalm
-
[All Nodes] Performance: replace calls to Lookup with binsearch (#1513) @jwinkler2083233
-
[All Nodes] Add func that will check for snapshot validity (#1940) @kc1116
-
FVM error detection (#2028) @sideninja
🐞 Bug Fixes
- Fix for missing cache (#2043) @jwinkler2083233
- Fix bootstrap cluster qc generation (#1976) @jordanschalm
- Fix potential overflow in ledger metrics LatestTrieRegCountDiff() and LatestTrieMaxDepthDiff() (#2096) @fxamacker
- Fix race in epoch switchover handling (#1980) @jordanschalm
- [HTTP API] Authorizers bugfix (#2152) @sideninja
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
- Replace use of deprecated ioutil funcs in ledger (#2084) @fxamacker
- [Observability] Adds metrics for HeroCache (#2093)(#2218) @yhassanzadeh13 @smnzhu
- [Admin] GetIdentity command (#2191) @smnzhu
- Update sync protocol flip (#2123) @smnzhu
- Target westmere processor when compiling relic for better compatibility and performance (#1993) @yagop
- [Admin] Remove double instantiation of admin server for access node (#2141) @smnzhu
- [Util CLI] Removing transit push command; adding transit upload-transit-keys com… (#2122) @vishalchangrani
- [Admin] Add admin command to enable/disable profiler (#2076) @zhangchiqing
- [Admin] Define ToggleUploaderCommand (#2114) @smnzhu
- [Observability] Configurable metrics (#2095) @m4ksio
- Update flow-go/crypto dependency (#2107) @janezpodhostnik
- Protocol randomness use cleanup (#2001) @tarakby
- Include core contract changes in cadence-issue-1127 (#2103) @janezpodhostnik
- [Network] Add read and write deadlines for direct messages (#2079) @smnzhu
- [Util CLI] Partner node info generation tool (#1988) @kc1116
- [Network] add new metric to track number of Unicast calls in progress (#2077) @smnzhu
- [Network] add metrics and log to track blocked queue workers (#2069) @smnzhu
- [Admin] implement read execution data admin command (#1998) @smnzhu
- [Util CLI] fungible token tracker (#2012) @ramtinms
- [Logging] Fix TransactionContractFunctionInvoker error log (#2031) @janezpodhostnik
- [Logging] Make ContractHandler Commit produce deterministic errors (#2003) @janezpodhostnik
- [Logging] log vote's signer and block when vote is invalid (#1982) @zhangchiqing
- [Networking] Implements Pluggable Conduit Factory (#1986) @yhassanzadeh13
- [Util CLI]Fix account reporter (#1972) @zhangchiqing
- [Testing] Allow bench-net permissionless contract deployment (#1970) @janezpodhostnik
- Split CI integration job into categories (#2242) @smnzhu
- Update request size limit for sync engine (#2245) @smnzhu
- Fix incorrectly skipped test (#2241) @smnzhu
- Fix output of fungible token tracker test (#2237) @smnzhu
- Test monitor GitHub actions (#2151) @smnzhu
- [BFT Testing] Implements integration tests for corruptible conduit factory framework (#2203) @yhassanzadeh13
v0.24.4
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
- Check and Use Contract Audit Vouchers (#1826) @tehranifar
- Fix LedgerGetRegister to avoid caching empty value (#1875) @fxamacker
- Improve error handling in MTrie checkpoint file creation (#1892) @fxamacker
- Support legacy Keccak 256 hashing algorithm (#1868) @ramtinms
- Backport: Ledger interaction error (#1878) @zhangchiqing
- Optimize Forest.Proofs() and add ValueSizes() to MTrie, Forest, and Ledger (#1870) @fxamacker
- Preallocate slices in MTrie (#1838) @fxamacker
- Update to Cadence v0.20.3 (#1829) @turbolent
- Add logs for MTrie checkpoint file creation (#1894) @fxamacker
- Update MTrie with some minor fixes and small improvements (#1801) @fxamacker
- Relaxing ledger interaction limit for service and system transactions (#1753) @ramtinms
- Tweak FVM bench to be more stable (#1722) @janezpodhostnik
Epoch and DKG Updates
- Dynamic Node Startup (#1893) @kc1116
- Improve handling of post-spork beacon key initialization (#1917) @jordanschalm
- Epochs integration test validation: consensus nodes (#1856) @kc1116
- Include staking auction length in
resetEpoch
(#1804) @jordanschalm - Update
deployEpoch
for new FlowEpoch function (#1854) @jordanschalm - Skip starting dkg reactor engine if node not part of dkg committee (#1849) @kc1116
- Enforce weight/ejection requirements in cluster committee (#1842) @jordanschalm
- Epochs test collection node validation (#1819) @kc1116
- Set epoch final view metrics on transition (#1806) @jordanschalm
- Epochs Integration testing: Verification node (#1763) @kc1116
- DKG Comments / Logging Changes (#1769) @jordanschalm
- DKG State (#1738) @jordanschalm
- DKG Storage Pt III: Check beacon key consistency atomically with epoch phase transition (#1732) @jordanschalm
- DKG Storage Pt II: Update components using
DKGState
storage (#1721) @jordanschalm - DKG Storage Pt. I: Update storage layer (#1720) @jordanschalm
- Epochs integration tests (#1728) @kc1116
- Epochs test for joining with dynamic container addition/removal (#1603) @kc1116
Networking
- Refactors DNS cache with HeroCache (#1888) @yhassanzadeh13
- Refactoring networking received cache to HeroCache (#1908) @yhassanzadeh13
General Node and Crypto Improvements
- Update state synchronization (#1930) @smnzhu
- Chacha20-based PRG (#1782) @tarakby
- Clean up BLST tests (#1754) @tarakby
Access Node
- adding status_code to transaction result reponse in the REST API (#1959 ) @vishalchangrani
- Report execution errors for cadence scripts as OK in Access Node RPC calls (#1905) @koko1123
- Add naive error logging for Access node downstream calls (#1883) @koko1123
- REST api implementation (#1666) @vishalchangrani
- REST: Stability improvements (#1809) @sideninja
Cosensus Hotstuff
- Consensus Voting V2 (#1916) @zhangchiqing
- Sealing Core: Allow unverifiable block references below root height (#1828) @jordanschalm
- Extend Sealing Segment Structure (#1755) @jordanschalm
Sporking process improvements
- Improve state extraction (#1859) @zhangchiqing
- Validate the saved root snapshot (#1832) @zhangchiqing
Execution
- Improve transaction execution log (#1869) @zhangchiqing
- Switch eventList hash to use a Merkle trie (#1834) @ramtinms
- Better printing for keys in errors (#1781) @m4ksio
- Properly escape user-input in error messages (#1863) @m4ksio
- Log epoch number on execution node startup (#1731) @janezpodhostnik
- Remove metering computation twice (#1724) @janezpodhostnik
State sync engine
- Add execution data cid (#1775) @smnzhu
- Execution data requester (#1582) @smnzhu
- Sync engine / core updates (#1697) @smnzhu
- Allow registering custom node shutdown handlers (#1907) @peterargue
- Make NodeBuilder return runnable Nodes (#1543) @peterargue
Build, CI & Tests
- Fix flow-go failing to cross compile (#1939) @janezpodhostnik
- Fix ledger-heavy load generator (#1933) @janezpodhostnik
- Emulator build without Relic + Enable crypto no-Relic tests (#1922) @tarakby
- Fix undefined: sha3State errors when building on arm64 (#1903) @peterargue
- Support arm64 when building flow docker containers and localnet (#1904) @peterargue
- Disable machine account balance checking on test networks (#1877) @jordanschalm
- Improve Topology Factory for integration tests (#1880) @yhassanzadeh13
- Fix crypto test flakiness in randomness test (#1879) @tarakby
- Replace deprecated go get with go install (#1860) @koko1123
- Fix loader backport (#1841) @zhangchiqing
- Fix localnet loader for transaction execution success (#1816) @simonhf
- Flaky Test Monitor - CI fix - updated level 1 script to use level 1 sub-directory (#1808) @gomisha
- Stream negotiation and fallback for integration tests (#1812) @yhassanzadeh13
- Add intensive resources flag to AN tests (#1817) @kc1116
- Flaky Test Monitor - Level 3 Summary (#1793) @gomisha
- Fix bug in transfer tokens transaction in integration load tests (#1789) @janezpodhostnik
- Flaky Test Monitor - Summary Level 2 (#1707) @gomisha
- Use debian 11 (bullseye) (#1768) @Kay-Zee
- Skip flaky test conditionally (#1535) @smnzhu
🛠 Misc Improvements
- Limit range queries for sync engine @m4ksio
- Remove sudo from crypto setup (#1945) @tarakby
- Remove the crypto replace and add a crypto setup script (#1742) @tarakby
- Remove unnecessary allocations (#1596) @jwinkler2083233
- Refactors Transactions mempool to HeroCache (#1902) @yhassanzadeh13
- Adding proof to the merkle trie (#1833) @ramtinms
- Optimizes All method of BackData (#1852) @yhassanzadeh13
- Payload Patricia Trie Security fixes (#1800) @AlexHentschel
- Implements GC-optimized cache (#1778) @yhassanzadeh13
- Improve efficiency of
Views
andHeights
gadgets (#1823) @jordanschalm - Make hex address parsing consistent with SDK (#1792) @jordanschalm
- Removing legacy
Identities
interface (#1777) @AlexHentschel - Refactor Merkle Patricia Tree used for payload hashing (#1678) @AlexHentschel
- Update min LN machine account balance (#1774) @jordanschalm
- Adding validation when constructing a Local module (#1704) @zhangchiqing
- Add readme for live debugger (#1716) @ramtinms
v0.23.3 - Mainnet 15
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
- bugfix for Cadence's resource owner field (link)(https://forum.onflow.org/t/breaking-change-bugfix-for-cadence-resource-owner-field/2576)
Cadence & FVM
- [Cadence] Bump Cadence to v0.20.2 (#1552)(#1676)(#1714) @SupunS @turbolent @Kay-Zee
- [Mtrie] Improve ledger write speed for newly allocated slabs (#1501) @ramtinms
- [FVM] Update ledger interaction limit for bootstrapping (#1648) @ramtinms
- [FVM] fix error messages (#1665) @tarakby
- [FVM] Recover ledger interaction error (#1625) @janezpodhostnik
- [Mtrie] Fix for Mtrie bug (#1633) @AlexHentschel
- [FVM] Clean up FVM (#1613) @turbolent
- [Mtrie] Trie pruning (#1578) @ramtinms
- [FVM] Interaction limit related issues(#1504)(#1592) @janezpodhostnik @ramtinms
- [Mtrie] On update trie pruning (complete ledger) (#1507) @ramtinms
- [FVM] Change meta script invocation to direct contract function calls (#1318) @janezpodhostnik
- [FVM] Fix fees not being deducted on gas limit reached (#1367) @janezpodhostnik
Epoch and DKG Updates
- [DKG] Do not crash for DKG failures (#1693) @tarakby
- [Epoch] Update AN builders and scaffold to use spork id (#1696) @kc1116
- [Epoch] Epoch counter reporter (#1691) @janezpodhostnik
- [DKG] Remove unnecessary fields from DKG Private Info (#1673) @tarakby
- [Epoch] Refactor fallback logic for qc voter & dkg broker (#1556) @kc1116
- [Epoch/DKG] Add jitter to all QC/DKG requests (#1637) @jordanschalm
- [Epoch] Update
reset-tx-args
command (#1615) @jordanschalm - [Epoch] Epoch Emergency Fallback Improvements (#1569) @jordanschalm
- [Epoch]
SporkID
andProtocolVersion
(#806)(#810) @jordanschalm - [Epoch] Extend root snapshot (#1533) @kc1116
- [Epoch] Use
SporkID
for network channel namespacing (#1474) @jordanschalm - [Epoch] Use latest finalized (not sealed) reference block (#1607) @jordanschalm
- [DKG] Fixes a bug where DKG validation would continue after encountering a fatal error (#1583) @jordanschalm
- [Epoch] Add func to set approved nodes list (#1478) @kc1116
- [Epoch] Remove redundant key generation code (#1469) @kc1116
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
- [Access] Adding a block height threshold to re-request missing collections (#1711) @vishalchangrani
- [Access] Adding middlewares to the REST API implementation (#1619) @vishalchangrani
- [Execution] Using valid descendents when loading unexecuted blocks (#1588) @zhangchiqing
- [Access] REST API implementation - GetBlockByID (#1524) @vishalchangrani
- [Verification] Removes less and swap methods of chunk list (#1608) @yhassanzadeh13
- [BFT] Error handling for engines (#1568) @durkmurder
- [State Sync] state serialization module (#1483) @smnzhu
- [Consensus] Continue recover block when hitting invalid block (#1564) @zhangchiqing
- [Consensus] sealing visualization (#1457) @smnzhu
- [Crypto] light SHA3 API (#1359) @tarakby
- [Crypto] Improve Invalid input errors (#1553) @tarakby
- [Consensus] Remove legacy code in Ingestion engine (#1532) @AlexHentschel
- [Consensus] Ingestion engine inbound messages queue (#1517) @durkmurder
- [Consensus] Fix potential mem-leak from hotstuff (#1514) @zhangchiqing
🛠 Misc. Improvements
- [Misc] Do not use pointer receiver for MarshalJSON (#1652) @SaveTheRbtz
- [Misc] Update minimum go version to 1.16, and default to 1.17 (#1692) @peterargue
- [Misc] Fix code ownership for access (#1653) @SaveTheRbtz
- [Metrics] Fix randomness in execution's example (#1651) @SaveTheRbtz
- [Misc] Reenable Reporters (#1410) @janezpodhostnik
- [Admin] Add commands for reading entities (#1549) @smnzhu
- [Admin] Update live debugger to include block header data (#1587) @ramtinms
- [Misc] Adds an additional error check (#1661) @Kay-Zee
- [Documentation] Updating broken links to node docs (#1558) @j1010001
- [Verification] makes verification node fork-aware (#1538) @yhassanzadeh13
- [Documentation] Adding section on playing with localnet (#1531) @j1010001
- [Metrics] Disable cache metrics (#1518) @zhangchiqing
- [Misc] removing rlp-encoded private key string to use flow.AccountPrivateKey (#1525) @j1010001
- [Documentation] Fixing broken links in access node docs (#1481) @j1010001
- [Misc] Clean up secondary result index (#1515) @Kay-Zee
- [Misc] Adding log tracer module for debugging purposes (#1496) @ramtinms
- [Admin] Adding rpc endpoint to get registers from exec nodes (#1460) @ramtinms
- [Admin] Adding transaction and script debugger using remote registers (#1468) @ramtinms
- [Admin] add log level customization command (#1362) @smnzhu
- [Misc] Simplify address conversion (#1422) @turbolent
- [Misc] Transaction model status bugfix (#1646) @sideninja
CI & Tests
- [CI] Fix localnet docker build caching (#1712) @simonhf
- [Tests] Unskipping the TestGhostNodeExample tests (#1670) @vishalchangrani
- [CI] Add github action to make a benchstat comparison of a PR with its base (#1579) @janezpodhostnik
- [CI] Flaky test monitor (#1495)(#1500)(#1526) @gomisha @smnzhu
- [Networking] fixes flakey stream closing test (#1600) @yhassanzadeh13
- [Tests] Fix flaky TestUnstakedAccessSuite/TestReceiveBlocks tests (#1551) @peterargue
- [Tests] Add test case for storage used (#1473) @SupunS
- [CI] fixes new line bug on verification integration tests (#1498) @yhassanzadeh13
- [CI] Run CI on PRs targetting version branches (#1443) @jordanschalm
- [Tests] Add more tests for value converter (Storage Migration V6) (#1401) @SupunS