Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: v1.22.0 release #7083

Merged
merged 100 commits into from
Sep 17, 2024
Merged

chore: v1.22.0 release #7083

merged 100 commits into from
Sep 17, 2024

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Sep 13, 2024

No description provided.

wemeetagain and others added 30 commits August 7, 2024 16:21
* fix: improve sync pubkeys

* fix: lint
* fix: improve message id to string conversion

* fix: use shared Buffers for sszBytes util

* feat: implement toRootHex()

* fix: lint and check-types

* Fix type checks

* Add comment to vitest config

* Update packages/utils/src/bytes.ts

---------

Co-authored-by: Nico Flaig <[email protected]>
Co-authored-by: Cayman <[email protected]>
* fix: use toRootHex where applicable

* fix: toRootHex() to handle different lengths

* fix: throw error if root is not 32 bytes

* Fix eth1MergeBlockTracker unit test

---------

Co-authored-by: Nico Flaig <[email protected]>
* chore(deps): bump axios from 1.6.0 to 1.7.4

Bumps [axios](https://github.com/axios/axios) from 1.6.0 to 1.7.4.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.6.0...v1.7.4)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>

* chore: dedupe dependency versions

* chore: dedupe dependency versions

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Cayman <[email protected]>
…6649)

* fix: return 404 error if no sync committee contribution is available

* Return 404 error if block not in fork choice
generate funding.json for OP RPGF
add types stub and epoch config

fix types
* Add immutable in the dependencies

* Initial change to pubkeyCache

* Added todos

* Moved unfinalized cache to epochCache

* Move populating finalized cache to afterProcessEpoch

* Specify unfinalized cache during state cloning

* Move from unfinalized to finalized cache in afterProcessEpoch

* Confused myself

* Clean up

* Change logic

* Fix cloning issue

* Clean up redundant code

* Add CarryoverData in epochCtx.createFromState

* Fix typo

* Update usage of pubkeyCache

* Update pubkeyCache usage

* Fix lint

* Fix lint

* Add 6110 to ChainConfig

* Add 6110 to BeaconPreset

* Define 6110 fork and container

* Add V6110 api to execution engine

* Update test

* Add depositReceiptsRoot to process_execution_payload

* State transitioning to EIP6110

* State transitioning to EIP6110

* Light client change in EIP-6110

* Update tests

* produceBlock

* Refactor processDeposit to match the spec

* Implement processDepositReceipt

* Implement 6110 fork guard for pubkeyCache

* Handle changes in eth1 deposit

* Update eth1 deposit test

* Fix typo

* Lint

* Remove embarassing comments

* Address comments

* Modify applyDeposit signature

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update packages/state-transition/src/cache/pubkeyCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Remove old code

* Rename fields in epochCache and immutableData

* Remove CarryoverData

* Move isAfter6110 from var to method

* Fix cyclic import

* Fix operations spec runner

* Fix for spec test

* Fix spec test

* state.depositReceiptsStartIndex to BigInt

* getDeposit requires cached state

* default depositReceiptsStartIndex value in genesis

* Fix pubkeyCache bug

* newUnfinalizedPubkeyIndexMap in createCachedBeaconState

* Lint

* Pass epochCache instead of pubkey2IndexFn in apis

* Address comments

* Add unit test on pubkey cache cloning

* Add unfinalizedPubkeyCacheSize to metrics

* Add unfinalizedPubkeyCacheSize to metrics

* Clean up code

* Add besu to el-interop

* Add 6110 genesis file

* Template for sim test

* Add unit test for getEth1DepositCount

* Update sim test

* Update besudocker

* Finish beacon api calls in sim test

* Update epochCache.createFromState()

* Fix bug unfinalized validators are not finalized

* Add sim test to run a few blocks

* Lint

* Merge branch 'unstable' into 611

* Add more check to sim test

* Update besu docker image instruction

* Update sim test with correct tx

* Address comment + cleanup

* Clean up code

* Properly handle promise rejection

* Lint

* Update packages/beacon-node/src/execution/engine/types.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update comments

* Accept type undefined in ExecutionPayloadBodyRpc

* Update comment and semantic

* Remove if statement when adding finalized validator

* Comment on repeated insert on finalized cache

* rename createFromState

* Add comment on getPubkey()

* Stash change to reduce diffs

* Stash change to reduce diffs

* Lint

* addFinalizedPubkey on finalized checkpoint

* Update comment

* Use OrderedMap for unfinalized cache

* Pull out logic of deleting pubkeys for batch op

* Add updateUnfinalizedPubkeys in regen

* Update updateUnfinalizedPubkeys logic

* Add comment

* Add metrics for state context caches

* Address comment

* Address comment

* Deprecate eth1Data polling when condition is reached

* Fix conflicts

* Fix sim test

* Lint

* Fix type

* Fix test

* Fix test

* Lint

* Update packages/light-client/src/spec/utils.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Fix spec test

* Address comments

* Improve cache logic on checkpoint finalized

* Update sim test according to new cache logic

* Update comment

* Lint

* Finalized pubkey cache only update once per checkpoint

* Add perf test for updateUnfinalizedPubkeys

* Add perf test for updateUnfinalizedPubkeys

* Tweak params for perf test

* Freeze besu docker image version for 6110

* Add benchmark result

* Use Map instead of OrderedMap. Update benchmark

* Minor optimization

* Minor optimization

* Add memory test for immutable.js

* Update test

* Reduce code duplication

* Lint

* Remove try/catch in updateUnfinalizedPubkeys

* Introduce EpochCache metric

* Add historicalValidatorLengths

* Polish code

* Migrate state-transition unit tests to vitest

* Fix calculation of pivot index

* `historicalValidatorLengths` only activate post 6110

* Update sim test

* Lint

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Improve readability on historicalValidatorLengths

* Update types

* Fix calculation

* Add eth1data poll todo

* Add epochCache.getValidatorCountAtEpoch

* Add todo

* Add getStateIterator for state cache

* Partial commit

* Update perf test

* updateUnfinalizedPubkeys directly modify states from regen

* Update sim test. Lint

* Add todo

* some improvements and a fix for effectiveBalanceIncrements fork safeness

* rename eip6110 to elctra

* fix electra-interop.test.ts

---------

Co-authored-by: Lion - dapplion <[email protected]>
Co-authored-by: gajinder <[email protected]>

lint and tsc

small cleanup

fix rebase issue
* feat: implement execution layer exits eip 7002

* lint and tsc fix

* apply feedback

* improve comment
* Update spec-test version

* Skip electra
* Add types

* Update unit test

* lint

* Address comments

* Address comments

* Lint

* Update packages/beacon-node/src/util/sszBytes.ts

Co-authored-by: tuyennhv <[email protected]>

* Add isElectraAttestation

* Update unit test

* Update unit test

* chore: add comments for sszBytes.ts

---------

Co-authored-by: tuyennhv <[email protected]>
Co-authored-by: Tuyen Nguyen <[email protected]>
Co-authored-by: Gajinder <[email protected]>
* chore: fix the rebase build

* fix test
* feat: upgrade 7002 exits to withdrawal request

* fix types

* fix types and references

* further fix the types references and get build passing

* update the process ops fn but needs to be extended by maxeb
* feat: implement EIP-6110 (#6042)

* Add immutable in the dependencies

* Initial change to pubkeyCache

* Added todos

* Moved unfinalized cache to epochCache

* Move populating finalized cache to afterProcessEpoch

* Specify unfinalized cache during state cloning

* Move from unfinalized to finalized cache in afterProcessEpoch

* Confused myself

* Clean up

* Change logic

* Fix cloning issue

* Clean up redundant code

* Add CarryoverData in epochCtx.createFromState

* Fix typo

* Update usage of pubkeyCache

* Update pubkeyCache usage

* Fix lint

* Fix lint

* Add 6110 to ChainConfig

* Add 6110 to BeaconPreset

* Define 6110 fork and container

* Add V6110 api to execution engine

* Update test

* Add depositReceiptsRoot to process_execution_payload

* State transitioning to EIP6110

* State transitioning to EIP6110

* Light client change in EIP-6110

* Update tests

* produceBlock

* Refactor processDeposit to match the spec

* Implement processDepositReceipt

* Implement 6110 fork guard for pubkeyCache

* Handle changes in eth1 deposit

* Update eth1 deposit test

* Fix typo

* Lint

* Remove embarassing comments

* Address comments

* Modify applyDeposit signature

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update packages/state-transition/src/cache/pubkeyCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Remove old code

* Rename fields in epochCache and immutableData

* Remove CarryoverData

* Move isAfter6110 from var to method

* Fix cyclic import

* Fix operations spec runner

* Fix for spec test

* Fix spec test

* state.depositReceiptsStartIndex to BigInt

* getDeposit requires cached state

* default depositReceiptsStartIndex value in genesis

* Fix pubkeyCache bug

* newUnfinalizedPubkeyIndexMap in createCachedBeaconState

* Lint

* Pass epochCache instead of pubkey2IndexFn in apis

* Address comments

* Add unit test on pubkey cache cloning

* Add unfinalizedPubkeyCacheSize to metrics

* Add unfinalizedPubkeyCacheSize to metrics

* Clean up code

* Add besu to el-interop

* Add 6110 genesis file

* Template for sim test

* Add unit test for getEth1DepositCount

* Update sim test

* Update besudocker

* Finish beacon api calls in sim test

* Update epochCache.createFromState()

* Fix bug unfinalized validators are not finalized

* Add sim test to run a few blocks

* Lint

* Merge branch 'unstable' into 611

* Add more check to sim test

* Update besu docker image instruction

* Update sim test with correct tx

* Address comment + cleanup

* Clean up code

* Properly handle promise rejection

* Lint

* Update packages/beacon-node/src/execution/engine/types.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update comments

* Accept type undefined in ExecutionPayloadBodyRpc

* Update comment and semantic

* Remove if statement when adding finalized validator

* Comment on repeated insert on finalized cache

* rename createFromState

* Add comment on getPubkey()

* Stash change to reduce diffs

* Stash change to reduce diffs

* Lint

* addFinalizedPubkey on finalized checkpoint

* Update comment

* Use OrderedMap for unfinalized cache

* Pull out logic of deleting pubkeys for batch op

* Add updateUnfinalizedPubkeys in regen

* Update updateUnfinalizedPubkeys logic

* Add comment

* Add metrics for state context caches

* Address comment

* Address comment

* Deprecate eth1Data polling when condition is reached

* Fix conflicts

* Fix sim test

* Lint

* Fix type

* Fix test

* Fix test

* Lint

* Update packages/light-client/src/spec/utils.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Fix spec test

* Address comments

* Improve cache logic on checkpoint finalized

* Update sim test according to new cache logic

* Update comment

* Lint

* Finalized pubkey cache only update once per checkpoint

* Add perf test for updateUnfinalizedPubkeys

* Add perf test for updateUnfinalizedPubkeys

* Tweak params for perf test

* Freeze besu docker image version for 6110

* Add benchmark result

* Use Map instead of OrderedMap. Update benchmark

* Minor optimization

* Minor optimization

* Add memory test for immutable.js

* Update test

* Reduce code duplication

* Lint

* Remove try/catch in updateUnfinalizedPubkeys

* Introduce EpochCache metric

* Add historicalValidatorLengths

* Polish code

* Migrate state-transition unit tests to vitest

* Fix calculation of pivot index

* `historicalValidatorLengths` only activate post 6110

* Update sim test

* Lint

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Improve readability on historicalValidatorLengths

* Update types

* Fix calculation

* Add eth1data poll todo

* Add epochCache.getValidatorCountAtEpoch

* Add todo

* Add getStateIterator for state cache

* Partial commit

* Update perf test

* updateUnfinalizedPubkeys directly modify states from regen

* Update sim test. Lint

* Add todo

* some improvements and a fix for effectiveBalanceIncrements fork safeness

* rename eip6110 to elctra

* fix electra-interop.test.ts

---------

Co-authored-by: Lion - dapplion <[email protected]>
Co-authored-by: gajinder <[email protected]>

lint and tsc

small cleanup

fix rebase issue

* feat: implement EIP-6110 (#6042)

* Add immutable in the dependencies

* Initial change to pubkeyCache

* Added todos

* Moved unfinalized cache to epochCache

* Move populating finalized cache to afterProcessEpoch

* Specify unfinalized cache during state cloning

* Move from unfinalized to finalized cache in afterProcessEpoch

* Confused myself

* Clean up

* Change logic

* Fix cloning issue

* Clean up redundant code

* Add CarryoverData in epochCtx.createFromState

* Fix typo

* Update usage of pubkeyCache

* Update pubkeyCache usage

* Fix lint

* Fix lint

* Add 6110 to ChainConfig

* Add 6110 to BeaconPreset

* Define 6110 fork and container

* Add V6110 api to execution engine

* Update test

* Add depositReceiptsRoot to process_execution_payload

* State transitioning to EIP6110

* State transitioning to EIP6110

* Light client change in EIP-6110

* Update tests

* produceBlock

* Refactor processDeposit to match the spec

* Implement processDepositReceipt

* Implement 6110 fork guard for pubkeyCache

* Handle changes in eth1 deposit

* Update eth1 deposit test

* Fix typo

* Lint

* Remove embarassing comments

* Address comments

* Modify applyDeposit signature

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update packages/state-transition/src/cache/pubkeyCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Remove old code

* Rename fields in epochCache and immutableData

* Remove CarryoverData

* Move isAfter6110 from var to method

* Fix cyclic import

* Fix operations spec runner

* Fix for spec test

* Fix spec test

* state.depositReceiptsStartIndex to BigInt

* getDeposit requires cached state

* default depositReceiptsStartIndex value in genesis

* Fix pubkeyCache bug

* newUnfinalizedPubkeyIndexMap in createCachedBeaconState

* Lint

* Pass epochCache instead of pubkey2IndexFn in apis

* Address comments

* Add unit test on pubkey cache cloning

* Add unfinalizedPubkeyCacheSize to metrics

* Add unfinalizedPubkeyCacheSize to metrics

* Clean up code

* Add besu to el-interop

* Add 6110 genesis file

* Template for sim test

* Add unit test for getEth1DepositCount

* Update sim test

* Update besudocker

* Finish beacon api calls in sim test

* Update epochCache.createFromState()

* Fix bug unfinalized validators are not finalized

* Add sim test to run a few blocks

* Lint

* Merge branch 'unstable' into 611

* Add more check to sim test

* Update besu docker image instruction

* Update sim test with correct tx

* Address comment + cleanup

* Clean up code

* Properly handle promise rejection

* Lint

* Update packages/beacon-node/src/execution/engine/types.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Update comments

* Accept type undefined in ExecutionPayloadBodyRpc

* Update comment and semantic

* Remove if statement when adding finalized validator

* Comment on repeated insert on finalized cache

* rename createFromState

* Add comment on getPubkey()

* Stash change to reduce diffs

* Stash change to reduce diffs

* Lint

* addFinalizedPubkey on finalized checkpoint

* Update comment

* Use OrderedMap for unfinalized cache

* Pull out logic of deleting pubkeys for batch op

* Add updateUnfinalizedPubkeys in regen

* Update updateUnfinalizedPubkeys logic

* Add comment

* Add metrics for state context caches

* Address comment

* Address comment

* Deprecate eth1Data polling when condition is reached

* Fix conflicts

* Fix sim test

* Lint

* Fix type

* Fix test

* Fix test

* Lint

* Update packages/light-client/src/spec/utils.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Fix spec test

* Address comments

* Improve cache logic on checkpoint finalized

* Update sim test according to new cache logic

* Update comment

* Lint

* Finalized pubkey cache only update once per checkpoint

* Add perf test for updateUnfinalizedPubkeys

* Add perf test for updateUnfinalizedPubkeys

* Tweak params for perf test

* Freeze besu docker image version for 6110

* Add benchmark result

* Use Map instead of OrderedMap. Update benchmark

* Minor optimization

* Minor optimization

* Add memory test for immutable.js

* Update test

* Reduce code duplication

* Lint

* Remove try/catch in updateUnfinalizedPubkeys

* Introduce EpochCache metric

* Add historicalValidatorLengths

* Polish code

* Migrate state-transition unit tests to vitest

* Fix calculation of pivot index

* `historicalValidatorLengths` only activate post 6110

* Update sim test

* Lint

* Update packages/state-transition/src/cache/epochCache.ts

Co-authored-by: Lion - dapplion <[email protected]>

* Improve readability on historicalValidatorLengths

* Update types

* Fix calculation

* Add eth1data poll todo

* Add epochCache.getValidatorCountAtEpoch

* Add todo

* Add getStateIterator for state cache

* Partial commit

* Update perf test

* updateUnfinalizedPubkeys directly modify states from regen

* Update sim test. Lint

* Add todo

* some improvements and a fix for effectiveBalanceIncrements fork safeness

* rename eip6110 to elctra

* fix electra-interop.test.ts

---------

Co-authored-by: Lion - dapplion <[email protected]>
Co-authored-by: gajinder <[email protected]>

lint and tsc

small cleanup

* Add presets

* Update config

* Add necessary containers

* Update presets

* Update config

* Add todo comments

* Update constants and params

* Impl new process withdrawal

* Add withdrawaRequests to payload

* Add processConsolidation

* Add process withdraw request

* Update deposit and withdrawal flow

* epoch processing

* Implement churn limits

* Lint

* lint

* Update state-transition utils

* processExecutionLayerWithdrawRequest

* processConsolidation

* queueExcessActiveBalance

* isValidDepositSignature

* Add jsdoc and timer for new processEpoch functions

* Lint

* Update maxEB

* update voluntary exit

* Fix config

* Update initiateValidatorExit

* Remove churn limit in processRegistryUpdates

* Fix conflict

* Add MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD

* Reflect latest spec changes

* rebase fixes, fixes, improvements and cleanup

lint

* Upgrade ssz version

* Use sliceFrom()

* cleanup as per specs feedback

subarry

* simplify

* fix withdrawals

* remove slice

* fix the slashing quotient determination in slashvalidator

---------

Co-authored-by: harkamal <[email protected]>
* Process attestations in block

* Fix check-types

* Address comments
* initial commit

* lint

* Add getAttestingIndices and update getIndexedAttestation

* Update gossip validation

* Update attestation gossip validation

* aggregateAndProof validation

* clean up

* Validator

* Misc

* Fix the build erros

* feat: get attestations for electra block (#6732)

* feat: getAttestationsForBlock() for electra

* chore: fix lint

* fix: MAX_ATTESTATIONS_PER_GROUP_ELECTRA and address PR comments

* chore: unit test aggregateConsolidation

* Fix rebase mistake

* Address my own comment :)

---------

Co-authored-by: Navie Chan <[email protected]>

* Fix check-types

* Address comments

---------

Co-authored-by: Nazar Hussain <[email protected]>
Co-authored-by: tuyennhv <[email protected]>
Co-authored-by: gajinder <[email protected]>
* feat: attestationPool to group by slot by data root by committee index for electra

* fix: gossip validation and assert.notNull() util

* fix: remove light-client stats.html

* fix: lint and check-types
* Rename receipt to request

* Remove stats.html
* initial commit

* Update gossip validation

* Update attestation gossip validation

* aggregateAndProof validation

* Extend spec runner to be more flexible

* Add missing state attributes for electra

* Fix ss data types for electra spec

* Make the spec runner more flexible

* Fix the bug in process attestation

* Update the sepc test version

* clean up

* Misc

* Fix the build erros

* feat: get attestations for electra block (#6732)

* feat: getAttestationsForBlock() for electra

* chore: fix lint

* fix: MAX_ATTESTATIONS_PER_GROUP_ELECTRA and address PR comments

* chore: unit test aggregateConsolidation

* Fix rebase mistake

* Address my own comment :)

---------

Co-authored-by: Navie Chan <[email protected]>

* Fix check-types

* Address comments

* Fix the build erros

* Extend spec runner to be more flexible

* Add missing state attributes for electra

* Fix ss data types for electra spec

* Make the spec runner more flexible

* Fix the bug in process attestation

* Update the sepc test version

* Fix rebase issue

* Update committee index count check

---------

Co-authored-by: NC <[email protected]>
Co-authored-by: Navie Chan <[email protected]>
Co-authored-by: tuyennhv <[email protected]>
nflaig and others added 20 commits August 27, 2024 20:14
* fix: use attestation v1 endpoints pre-electra

* Adapt block attestations error message with pool apis
* fix: work around for sliceFrom() api

* Revert "fix: work around for sliceFrom() api"

This reverts commit 7aa6678.

* fix: upgrade ssz
test: make import relative and add eslint-disable
* feat: implement isomorphic utils for nodes and browser

* fix: avoid async import

* chore: revise toHexString() comment as in PR review

Co-authored-by: Nico Flaig <[email protected]>

---------

Co-authored-by: Nico Flaig <[email protected]>
* feat: add toPubkeyHex util

* feat: consume toPubkeyHex

* fix: use toPubkeyHex instead of toHex

* chore: remove redundant comments
* fix: improve performance of getExpectedWithdrawals

* chore: use isPostElectra variable

* chore: check pre-capella
* fix: improve regen state

* fix: check for null block returned from db

* feat: track state.hashTreeRoot() in regen.getState()

* fix: transfer cache when regen state

* fix: add caller as label to regenGetState metrics
* fix: archive state using BufferPool if provided

* chore: fix comment
* Rename getValidatorMaxEffectiveBalance

* Lint
* feat: use db state to load ws state

* feat: log state size

* fix: rename initStateFromAnchorState to checkAndPersistAnchorState

* fix: only persist anchor state if it's cp state

* fix: avoid redundant anchor state serialization
Copy link

codecov bot commented Sep 13, 2024

Codecov Report

Attention: Patch coverage is 46.18549% with 1439 lines in your changes missing coverage. Please review.

Project coverage is 50.89%. Comparing base (360fe77) to head (94288e9).
Report is 102 commits behind head on stable.

Additional details and impacted files
@@            Coverage Diff             @@
##           stable    #7083      +/-   ##
==========================================
+ Coverage   49.23%   50.89%   +1.66%     
==========================================
  Files         578      594      +16     
  Lines       37426    39607    +2181     
  Branches     2168     2247      +79     
==========================================
+ Hits        18426    20159    +1733     
- Misses      18960    19448     +488     
+ Partials       40        0      -40     

Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 8f56777 Previous: - Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.0508 ms/op
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 66.950 us/op
BLS verify - blst 907.06 us/op
BLS verifyMultipleSignatures 3 - blst 1.4674 ms/op
BLS verifyMultipleSignatures 8 - blst 1.7385 ms/op
BLS verifyMultipleSignatures 32 - blst 5.0833 ms/op
BLS verifyMultipleSignatures 64 - blst 9.4971 ms/op
BLS verifyMultipleSignatures 128 - blst 18.109 ms/op
BLS deserializing 10000 signatures 701.12 ms/op
BLS deserializing 100000 signatures 6.8884 s/op
BLS verifyMultipleSignatures - same message - 3 - blst 877.42 us/op
BLS verifyMultipleSignatures - same message - 8 - blst 1.0435 ms/op
BLS verifyMultipleSignatures - same message - 32 - blst 1.7035 ms/op
BLS verifyMultipleSignatures - same message - 64 - blst 2.5622 ms/op
BLS verifyMultipleSignatures - same message - 128 - blst 4.2877 ms/op
BLS aggregatePubkeys 32 - blst 19.855 us/op
BLS aggregatePubkeys 128 - blst 70.670 us/op
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 68.067 ms/op
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 54.189 ms/op
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 31.871 ms/op
getSlashingsAndExits - default max 85.875 us/op
getSlashingsAndExits - 2k 263.42 us/op
proposeBlockBody type=full, size=empty 5.6718 ms/op
isKnown best case - 1 super set check 297.00 ns/op
isKnown normal case - 2 super set checks 285.00 ns/op
isKnown worse case - 16 super set checks 282.00 ns/op
InMemoryCheckpointStateCache - add get delete 2.6650 us/op
updateUnfinalizedPubkeys - updating 10 pubkeys 800.45 us/op
updateUnfinalizedPubkeys - updating 100 pubkeys 2.7716 ms/op
updateUnfinalizedPubkeys - updating 1000 pubkeys 49.912 ms/op
validate api signedAggregateAndProof - struct 1.3550 ms/op
validate gossip signedAggregateAndProof - struct 1.3328 ms/op
validate gossip attestation - vc 640000 864.86 us/op
batch validate gossip attestation - vc 640000 - chunk 32 125.52 us/op
batch validate gossip attestation - vc 640000 - chunk 64 116.95 us/op
batch validate gossip attestation - vc 640000 - chunk 128 120.08 us/op
batch validate gossip attestation - vc 640000 - chunk 256 113.70 us/op
pickEth1Vote - no votes 1.2303 ms/op
pickEth1Vote - max votes 7.7996 ms/op
pickEth1Vote - Eth1Data hashTreeRoot value x2048 17.193 ms/op
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 23.417 ms/op
pickEth1Vote - Eth1Data fastSerialize value x2048 508.72 us/op
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.5061 ms/op
bytes32 toHexString 441.00 ns/op
bytes32 Buffer.toString(hex) 248.00 ns/op
bytes32 Buffer.toString(hex) from Uint8Array 379.00 ns/op
bytes32 Buffer.toString(hex) + 0x 255.00 ns/op
Object access 1 prop 0.16900 ns/op
Map access 1 prop 0.13400 ns/op
Object get x1000 5.9930 ns/op
Map get x1000 6.4430 ns/op
Object set x1000 38.949 ns/op
Map set x1000 26.169 ns/op
Return object 10000 times 0.30550 ns/op
Throw Error 10000 times 3.4846 us/op
toHex 168.11 ns/op
Buffer.from 157.36 ns/op
shared Buffer 100.83 ns/op
fastMsgIdFn sha256 / 200 bytes 2.4020 us/op
fastMsgIdFn h32 xxhash / 200 bytes 302.00 ns/op
fastMsgIdFn h64 xxhash / 200 bytes 289.00 ns/op
fastMsgIdFn sha256 / 1000 bytes 7.6650 us/op
fastMsgIdFn h32 xxhash / 1000 bytes 437.00 ns/op
fastMsgIdFn h64 xxhash / 1000 bytes 360.00 ns/op
fastMsgIdFn sha256 / 10000 bytes 65.662 us/op
fastMsgIdFn h32 xxhash / 10000 bytes 1.9320 us/op
fastMsgIdFn h64 xxhash / 10000 bytes 1.2590 us/op
send data - 1000 256B messages 14.304 ms/op
send data - 1000 512B messages 18.466 ms/op
send data - 1000 1024B messages 28.728 ms/op
send data - 1000 1200B messages 28.396 ms/op
send data - 1000 2048B messages 33.001 ms/op
send data - 1000 4096B messages 33.076 ms/op
send data - 1000 16384B messages 70.554 ms/op
send data - 1000 65536B messages 203.65 ms/op
enrSubnets - fastDeserialize 64 bits 1.0170 us/op
enrSubnets - ssz BitVector 64 bits 340.00 ns/op
enrSubnets - fastDeserialize 4 bits 146.00 ns/op
enrSubnets - ssz BitVector 4 bits 351.00 ns/op
prioritizePeers score -10:0 att 32-0.1 sync 2-0 141.84 us/op
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 149.09 us/op
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 352.88 us/op
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 418.48 us/op
prioritizePeers score 0:0 att 64-1 sync 4-1 712.02 us/op
array of 16000 items push then shift 1.6572 us/op
LinkedList of 16000 items push then shift 7.4200 ns/op
array of 16000 items push then pop 131.10 ns/op
LinkedList of 16000 items push then pop 7.4770 ns/op
array of 24000 items push then shift 2.4616 us/op
LinkedList of 24000 items push then shift 7.7760 ns/op
array of 24000 items push then pop 171.28 ns/op
LinkedList of 24000 items push then pop 7.1970 ns/op
intersect bitArray bitLen 8 6.4470 ns/op
intersect array and set length 8 47.204 ns/op
intersect bitArray bitLen 128 30.243 ns/op
intersect array and set length 128 732.10 ns/op
bitArray.getTrueBitIndexes() bitLen 128 1.9800 us/op
bitArray.getTrueBitIndexes() bitLen 248 3.3270 us/op
bitArray.getTrueBitIndexes() bitLen 512 6.7860 us/op
Buffer.concat 32 items 934.00 ns/op
Uint8Array.set 32 items 1.8600 us/op
Buffer.copy 2.0410 us/op
Uint8Array.set - with subarray 2.9550 us/op
Uint8Array.set - without subarray 1.9190 us/op
getUint32 - dataview 252.00 ns/op
getUint32 - manual 176.00 ns/op
Set add up to 64 items then delete first 2.3422 us/op
OrderedSet add up to 64 items then delete first 3.4068 us/op
Set add up to 64 items then delete last 2.5898 us/op
OrderedSet add up to 64 items then delete last 3.9355 us/op
Set add up to 64 items then delete middle 2.6171 us/op
OrderedSet add up to 64 items then delete middle 5.4580 us/op
Set add up to 128 items then delete first 5.2507 us/op
OrderedSet add up to 128 items then delete first 8.6308 us/op
Set add up to 128 items then delete last 5.5649 us/op
OrderedSet add up to 128 items then delete last 8.7098 us/op
Set add up to 128 items then delete middle 5.3642 us/op
OrderedSet add up to 128 items then delete middle 15.123 us/op
Set add up to 256 items then delete first 11.659 us/op
OrderedSet add up to 256 items then delete first 17.399 us/op
Set add up to 256 items then delete last 10.788 us/op
OrderedSet add up to 256 items then delete last 16.150 us/op
Set add up to 256 items then delete middle 10.483 us/op
OrderedSet add up to 256 items then delete middle 45.937 us/op
transfer serialized Status (84 B) 1.4210 us/op
copy serialized Status (84 B) 1.2460 us/op
transfer serialized SignedVoluntaryExit (112 B) 1.5110 us/op
copy serialized SignedVoluntaryExit (112 B) 1.2340 us/op
transfer serialized ProposerSlashing (416 B) 1.6010 us/op
copy serialized ProposerSlashing (416 B) 1.7500 us/op
transfer serialized Attestation (485 B) 1.7160 us/op
copy serialized Attestation (485 B) 1.7430 us/op
transfer serialized AttesterSlashing (33232 B) 1.9040 us/op
copy serialized AttesterSlashing (33232 B) 5.6190 us/op
transfer serialized Small SignedBeaconBlock (128000 B) 2.9050 us/op
copy serialized Small SignedBeaconBlock (128000 B) 19.098 us/op
transfer serialized Avg SignedBeaconBlock (200000 B) 3.6070 us/op
copy serialized Avg SignedBeaconBlock (200000 B) 32.249 us/op
transfer serialized BlobsSidecar (524380 B) 3.6210 us/op
copy serialized BlobsSidecar (524380 B) 89.251 us/op
transfer serialized Big SignedBeaconBlock (1000000 B) 3.5710 us/op
copy serialized Big SignedBeaconBlock (1000000 B) 212.53 us/op
pass gossip attestations to forkchoice per slot 2.8786 ms/op
forkChoice updateHead vc 100000 bc 64 eq 0 564.71 us/op
forkChoice updateHead vc 600000 bc 64 eq 0 3.1500 ms/op
forkChoice updateHead vc 1000000 bc 64 eq 0 5.4380 ms/op
forkChoice updateHead vc 600000 bc 320 eq 0 3.0433 ms/op
forkChoice updateHead vc 600000 bc 1200 eq 0 3.7385 ms/op
forkChoice updateHead vc 600000 bc 7200 eq 0 3.6206 ms/op
forkChoice updateHead vc 600000 bc 64 eq 1000 10.835 ms/op
forkChoice updateHead vc 600000 bc 64 eq 10000 11.571 ms/op
forkChoice updateHead vc 600000 bc 64 eq 300000 14.825 ms/op
computeDeltas 500000 validators 300 proto nodes 3.6168 ms/op
computeDeltas 500000 validators 1200 proto nodes 3.7810 ms/op
computeDeltas 500000 validators 7200 proto nodes 3.9170 ms/op
computeDeltas 750000 validators 300 proto nodes 5.6196 ms/op
computeDeltas 750000 validators 1200 proto nodes 5.4313 ms/op
computeDeltas 750000 validators 7200 proto nodes 5.4618 ms/op
computeDeltas 1400000 validators 300 proto nodes 9.9215 ms/op
computeDeltas 1400000 validators 1200 proto nodes 10.158 ms/op
computeDeltas 1400000 validators 7200 proto nodes 10.406 ms/op
computeDeltas 2100000 validators 300 proto nodes 15.516 ms/op
computeDeltas 2100000 validators 1200 proto nodes 15.307 ms/op
computeDeltas 2100000 validators 7200 proto nodes 15.712 ms/op
altair processAttestation - 250000 vs - 7PWei normalcase 2.0425 ms/op
altair processAttestation - 250000 vs - 7PWei worstcase 2.9535 ms/op
altair processAttestation - setStatus - 1/6 committees join 102.47 us/op
altair processAttestation - setStatus - 1/3 committees join 193.36 us/op
altair processAttestation - setStatus - 1/2 committees join 269.40 us/op
altair processAttestation - setStatus - 2/3 committees join 357.80 us/op
altair processAttestation - setStatus - 4/5 committees join 507.76 us/op
altair processAttestation - setStatus - 100% committees join 591.68 us/op
altair processBlock - 250000 vs - 7PWei normalcase 5.9092 ms/op
altair processBlock - 250000 vs - 7PWei normalcase hashState 32.570 ms/op
altair processBlock - 250000 vs - 7PWei worstcase 37.577 ms/op
altair processBlock - 250000 vs - 7PWei worstcase hashState 79.280 ms/op
phase0 processBlock - 250000 vs - 7PWei normalcase 2.7300 ms/op
phase0 processBlock - 250000 vs - 7PWei worstcase 26.881 ms/op
altair processEth1Data - 250000 vs - 7PWei normalcase 385.40 us/op
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.1880 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 55.892 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 14.369 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 9.0750 us/op
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 181.38 us/op
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.2195 ms/op
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.6555 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.6515 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.4124 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.7831 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.1054 ms/op
Tree 40 250000 create 327.20 ms/op
Tree 40 250000 get(125000) 175.76 ns/op
Tree 40 250000 set(125000) 747.77 ns/op
Tree 40 250000 toArray() 21.867 ms/op
Tree 40 250000 iterate all - toArray() + loop 20.950 ms/op
Tree 40 250000 iterate all - get(i) 59.728 ms/op
Array 250000 create 4.0551 ms/op
Array 250000 clone - spread 1.6009 ms/op
Array 250000 get(125000) 0.47100 ns/op
Array 250000 set(125000) 0.48300 ns/op
Array 250000 iterate all - loop 98.764 us/op
phase0 afterProcessEpoch - 250000 vs - 7PWei 94.745 ms/op
Array.fill - length 1000000 5.2012 ms/op
Array push - length 1000000 23.817 ms/op
Array.get 0.30163 ns/op
Uint8Array.get 0.45888 ns/op
phase0 beforeProcessEpoch - 250000 vs - 7PWei 22.526 ms/op
altair processEpoch - mainnet_e81889 391.90 ms/op
mainnet_e81889 - altair beforeProcessEpoch 20.495 ms/op
mainnet_e81889 - altair processJustificationAndFinalization 23.180 us/op
mainnet_e81889 - altair processInactivityUpdates 7.3293 ms/op
mainnet_e81889 - altair processRewardsAndPenalties 82.745 ms/op
mainnet_e81889 - altair processRegistryUpdates 8.6320 us/op
mainnet_e81889 - altair processSlashings 2.5280 us/op
mainnet_e81889 - altair processEth1DataReset 1.8640 us/op
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.7829 ms/op
mainnet_e81889 - altair processSlashingsReset 5.8550 us/op
mainnet_e81889 - altair processRandaoMixesReset 38.077 us/op
mainnet_e81889 - altair processHistoricalRootsUpdate 2.2210 us/op
mainnet_e81889 - altair processParticipationFlagUpdates 12.028 us/op
mainnet_e81889 - altair processSyncCommitteeUpdates 2.4050 us/op
mainnet_e81889 - altair afterProcessEpoch 121.63 ms/op
capella processEpoch - mainnet_e217614 1.9061 s/op
mainnet_e217614 - capella beforeProcessEpoch 127.69 ms/op
mainnet_e217614 - capella processJustificationAndFinalization 25.711 us/op
mainnet_e217614 - capella processInactivityUpdates 31.011 ms/op
mainnet_e217614 - capella processRewardsAndPenalties 336.81 ms/op
mainnet_e217614 - capella processRegistryUpdates 25.568 us/op
mainnet_e217614 - capella processSlashings 1.0090 us/op
mainnet_e217614 - capella processEth1DataReset 1.2340 us/op
mainnet_e217614 - capella processEffectiveBalanceUpdates 20.291 ms/op
mainnet_e217614 - capella processSlashingsReset 7.1240 us/op
mainnet_e217614 - capella processRandaoMixesReset 9.3310 us/op
mainnet_e217614 - capella processHistoricalRootsUpdate 726.00 ns/op
mainnet_e217614 - capella processParticipationFlagUpdates 4.1020 us/op
mainnet_e217614 - capella afterProcessEpoch 292.48 ms/op
phase0 processEpoch - mainnet_e58758 582.83 ms/op
mainnet_e58758 - phase0 beforeProcessEpoch 136.07 ms/op
mainnet_e58758 - phase0 processJustificationAndFinalization 31.650 us/op
mainnet_e58758 - phase0 processRewardsAndPenalties 41.422 ms/op
mainnet_e58758 - phase0 processRegistryUpdates 17.112 us/op
mainnet_e58758 - phase0 processSlashings 1.3400 us/op
mainnet_e58758 - phase0 processEth1DataReset 1.1130 us/op
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.6916 ms/op
mainnet_e58758 - phase0 processSlashingsReset 5.8600 us/op
mainnet_e58758 - phase0 processRandaoMixesReset 17.188 us/op
mainnet_e58758 - phase0 processHistoricalRootsUpdate 1.1820 us/op
mainnet_e58758 - phase0 processParticipationRecordUpdates 10.159 us/op
mainnet_e58758 - phase0 afterProcessEpoch 88.852 ms/op
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.3938 ms/op
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 5.8784 ms/op
altair processInactivityUpdates - 250000 normalcase 24.605 ms/op
altair processInactivityUpdates - 250000 worstcase 23.167 ms/op
phase0 processRegistryUpdates - 250000 normalcase 16.429 us/op
phase0 processRegistryUpdates - 250000 badcase_full_deposits 390.79 us/op
phase0 processRegistryUpdates - 250000 worstcase 0.5 156.97 ms/op
altair processRewardsAndPenalties - 250000 normalcase 49.705 ms/op
altair processRewardsAndPenalties - 250000 worstcase 56.027 ms/op
phase0 getAttestationDeltas - 250000 normalcase 12.437 ms/op
phase0 getAttestationDeltas - 250000 worstcase 9.1550 ms/op
phase0 processSlashings - 250000 worstcase 135.25 us/op
altair processSyncCommitteeUpdates - 250000 149.94 ms/op
BeaconState.hashTreeRoot - No change 447.00 ns/op
BeaconState.hashTreeRoot - 1 full validator 125.85 us/op
BeaconState.hashTreeRoot - 32 full validator 1.3145 ms/op
BeaconState.hashTreeRoot - 512 full validator 14.174 ms/op
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 156.73 us/op
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.2628 ms/op
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 34.382 ms/op
BeaconState.hashTreeRoot - 1 balances 137.50 us/op
BeaconState.hashTreeRoot - 32 balances 1.4970 ms/op
BeaconState.hashTreeRoot - 512 balances 15.090 ms/op
BeaconState.hashTreeRoot - 250000 balances 228.67 ms/op
aggregationBits - 2048 els - zipIndexesInBitList 41.738 us/op
byteArrayEquals 32 59.312 ns/op
Buffer.compare 32 19.295 ns/op
byteArrayEquals 1024 1.7177 us/op
Buffer.compare 1024 27.327 ns/op
byteArrayEquals 16384 27.377 us/op
Buffer.compare 16384 211.63 ns/op
byteArrayEquals 123687377 204.20 ms/op
Buffer.compare 123687377 13.773 ms/op
byteArrayEquals 32 - diff last byte 56.684 ns/op
Buffer.compare 32 - diff last byte 19.981 ns/op
byteArrayEquals 1024 - diff last byte 1.7758 us/op
Buffer.compare 1024 - diff last byte 30.020 ns/op
byteArrayEquals 16384 - diff last byte 27.558 us/op
Buffer.compare 16384 - diff last byte 205.51 ns/op
byteArrayEquals 123687377 - diff last byte 212.82 ms/op
Buffer.compare 123687377 - diff last byte 11.236 ms/op
byteArrayEquals 32 - random bytes 5.7710 ns/op
Buffer.compare 32 - random bytes 18.649 ns/op
byteArrayEquals 1024 - random bytes 5.5380 ns/op
Buffer.compare 1024 - random bytes 18.247 ns/op
byteArrayEquals 16384 - random bytes 5.5170 ns/op
Buffer.compare 16384 - random bytes 18.058 ns/op
byteArrayEquals 123687377 - random bytes 7.2800 ns/op
Buffer.compare 123687377 - random bytes 20.300 ns/op
regular array get 100000 times 35.994 us/op
wrappedArray get 100000 times 35.437 us/op
arrayWithProxy get 100000 times 14.650 ms/op
ssz.Root.equals 49.386 ns/op
byteArrayEquals 48.747 ns/op
Buffer.compare 11.523 ns/op
shuffle list - 16384 els 7.4747 ms/op
shuffle list - 250000 els 104.60 ms/op
processSlot - 1 slots 16.067 us/op
processSlot - 32 slots 3.4483 ms/op
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 42.009 ms/op
getCommitteeAssignments - req 1 vs - 250000 vc 2.3285 ms/op
getCommitteeAssignments - req 100 vs - 250000 vc 4.3936 ms/op
getCommitteeAssignments - req 1000 vs - 250000 vc 4.7699 ms/op
findModifiedValidators - 10000 modified validators 345.92 ms/op
findModifiedValidators - 1000 modified validators 281.41 ms/op
findModifiedValidators - 100 modified validators 270.44 ms/op
findModifiedValidators - 10 modified validators 259.10 ms/op
findModifiedValidators - 1 modified validators 243.60 ms/op
findModifiedValidators - no difference 232.18 ms/op
compare ViewDUs 4.3793 s/op
compare each validator Uint8Array 1.8396 s/op
compare ViewDU to Uint8Array 1.4093 s/op
migrate state 1000000 validators, 24 modified, 0 new 909.00 ms/op
migrate state 1000000 validators, 1700 modified, 1000 new 1.0207 s/op
migrate state 1000000 validators, 3400 modified, 2000 new 1.2002 s/op
migrate state 1500000 validators, 24 modified, 0 new 715.09 ms/op
migrate state 1500000 validators, 1700 modified, 1000 new 945.18 ms/op
migrate state 1500000 validators, 3400 modified, 2000 new 1.2436 s/op
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 6.2200 ns/op
state getBlockRootAtSlot - 250000 vs - 7PWei 697.05 ns/op
computeProposers - vc 250000 8.7707 ms/op
computeEpochShuffling - vc 250000 115.29 ms/op
getNextSyncCommittee - vc 250000 147.68 ms/op
computeSigningRoot for AttestationData 29.398 us/op
hash AttestationData serialized data then Buffer.toString(base64) 1.9599 us/op
toHexString serialized data 1.5761 us/op
Buffer.toString(base64) 299.47 ns/op
nodejs block root to RootHex using toHex 199.59 ns/op
nodejs block root to RootHex using toRootHex 152.19 ns/op
browser block root to RootHex using the deprecated toHexString 442.36 ns/op
browser block root to RootHex using toHex 329.27 ns/op
browser block root to RootHex using toRootHex 225.40 ns/op

by benchmarkbot/action

@twoeths
Copy link
Contributor Author

twoeths commented Sep 13, 2024

I found the beta mainnet node gc improved a lot (vs 2.94% on stable)

Screenshot 2024-09-13 at 17 02 30

thanks to that epoch transition time improved a bit, on the 1k node (vs ~1.8s on the stable 1k node)

Screenshot 2024-09-13 at 17 06 25

Other metrics are a little bit better on beta 1k 6h rate interval:

  • avg block state transition: ~5ms faster (~166ms vs ~171ms)
  • avg block import: ~13ms faster (~125ms vs 138ms)

@philknows philknows marked this pull request as ready for review September 17, 2024 18:21
@philknows philknows requested a review from a team as a code owner September 17, 2024 18:21
@philknows philknows merged commit c26cc63 into stable Sep 17, 2024
31 checks passed
@philknows philknows deleted the rc/v1.22.0 branch September 17, 2024 18:24
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.22.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants