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

feat: electra fork rebasejul1 - DONOT MERGE #6927

Closed
wants to merge 59 commits into from

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented Jul 1, 2024

track/fix CI on the electra-fork rebase on allforks removal work

g11tech and others added 30 commits July 1, 2024 22:14
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]>
fix: get signature for SignedAggregateAndProof based on fork
* Fix attester slashing specs for electra

* Remove unused import

* Add code comment

* Update the expression

* Update the fork check
* chore: fix types and lint

* fx

* type and lint fix
* process pending deposit from eth1

* Fix the genesis params

* fix

* Fix

* clean up

---------

Co-authored-by: Nazar Hussain <[email protected]>
* chore: update EffectiveBalanceIncrements type

* chore: remove now irrelevant tests
* fix: electra fork transition

* fix: merge issue

* chore: remove unwanted change
ensi321 and others added 24 commits July 1, 2024 22:26
Fix publishing att with non-zero comm index
* fix attestation duty validation

* Update packages/validator/src/services/validatorStore.ts

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

* Update packages/validator/src/services/validatorStore.ts

---------

Co-authored-by: twoeths <[email protected]>
Co-authored-by: Cayman <[email protected]>
* fix: align BeaconBlockBody and BlindedBeaconBlockBody

* Remove type hacks in test

---------

Co-authored-by: Nico Flaig <[email protected]>
* test: improve ssz tests consistency

* chore: address comments
* fix: get seen AttData key from SignedAggregateAndProof electra

* chore: revert the naming change to COMMITTEE_BITS_SIZE and add comment

* fix: add toBase64() util
* test: only skip ssz_static tests associated to missing type

* More detailed error message if type is not defined
* Add ByHash and ByRange V2

* Fix build issue

* Fix CI error
chore: fix bls and blst versioning

fix: add ForkName.electra to ForkBlobsInfo

some api header lookup fixes

more api fixes

make the api data safe

Co-authored-by: matthewkeil <[email protected]>
* Handle exiting validataor

* lint

* Add todo
…ix (#6865)

* init commit

* Add consolidation request

* fix lint

* Remove ExecutionLayer prefix

* Address comment

* Fix verification logic

* lint

* Add todo
* Update spec test version

* Use new max effective balance

* Relax loop breaking condition for `computeProposerIndex`

* fix remaining

* check-types & lint

* Skip invalid test

* Fix rebase + lint

* Remove early return statement in `computeProposers`

* Address comment

* Address comment
@g11tech g11tech changed the title Electra fork rebasejul1 - DONOT MERGE feat: electra fork rebasejul1 - DONOT MERGE Jul 1, 2024
Copy link
Contributor

github-actions bot commented Jul 1, 2024

⚠️ Performance Alert ⚠️

Possible performance regression was detected for some benchmarks.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold.

Benchmark suite Current: 50e4d98 Previous: e6c559f Ratio
altair processBlock - 250000 vs - 7PWei normalcase 12.481 ms/op 3.4702 ms/op 3.60
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 69.928 us/op 17.538 us/op 3.99
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 222.00 us/op 69.570 us/op 3.19
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.6862 ms/op 490.12 us/op 3.44
altair processEpoch - mainnet_e81889 4.7769 s/op 347.15 ms/op 13.76
phase0 processEpoch - mainnet_e58758 3.0845 s/op 354.81 ms/op 8.69
phase0 processEffectiveBalanceUpdates - 250000 normalcase 7.8049 ms/op 755.84 us/op 10.33
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 8.4294 ms/op 1.4120 ms/op 5.97
Buffer.compare 123687377 11.049 ms/op 3.6191 ms/op 3.05
Full benchmark results
Benchmark suite Current: 50e4d98 Previous: e6c559f Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 464.63 us/op 680.59 us/op 0.68
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 48.247 us/op 37.482 us/op 1.29
BLS verify - blst-native 1.2593 ms/op 1.0529 ms/op 1.20
BLS verifyMultipleSignatures 3 - blst-native 2.7222 ms/op 2.2441 ms/op 1.21
BLS verifyMultipleSignatures 8 - blst-native 6.0089 ms/op 4.9718 ms/op 1.21
BLS verifyMultipleSignatures 32 - blst-native 21.670 ms/op 18.278 ms/op 1.19
BLS verifyMultipleSignatures 64 - blst-native 42.252 ms/op 36.012 ms/op 1.17
BLS verifyMultipleSignatures 128 - blst-native 83.551 ms/op 71.514 ms/op 1.17
BLS deserializing 10000 signatures 867.25 ms/op 760.79 ms/op 1.14
BLS deserializing 100000 signatures 8.7463 s/op 7.5924 s/op 1.15
BLS verifyMultipleSignatures - same message - 3 - blst-native 1.2599 ms/op 1.0994 ms/op 1.15
BLS verifyMultipleSignatures - same message - 8 - blst-native 1.4328 ms/op 1.2495 ms/op 1.15
BLS verifyMultipleSignatures - same message - 32 - blst-native 2.3229 ms/op 2.0526 ms/op 1.13
BLS verifyMultipleSignatures - same message - 64 - blst-native 3.6940 ms/op 3.2425 ms/op 1.14
BLS verifyMultipleSignatures - same message - 128 - blst-native 5.6005 ms/op 5.3955 ms/op 1.04
BLS aggregatePubkeys 32 - blst-native 26.155 us/op 22.102 us/op 1.18
BLS aggregatePubkeys 128 - blst-native 99.961 us/op 82.664 us/op 1.21
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 82.062 ms/op 57.600 ms/op 1.42
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 69.774 ms/op 41.358 ms/op 1.69
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 54.269 ms/op 28.982 ms/op 1.87
getSlashingsAndExits - default max 99.251 us/op 69.462 us/op 1.43
getSlashingsAndExits - 2k 323.98 us/op 229.50 us/op 1.41
proposeBlockBody type=full, size=empty 7.2218 ms/op 5.0027 ms/op 1.44
isKnown best case - 1 super set check 286.00 ns/op 225.00 ns/op 1.27
isKnown normal case - 2 super set checks 279.00 ns/op 221.00 ns/op 1.26
isKnown worse case - 16 super set checks 278.00 ns/op 223.00 ns/op 1.25
InMemoryCheckpointStateCache - add get delete 4.4160 us/op 3.6990 us/op 1.19
updateUnfinalizedPubkeys - updating 10 pubkeys 984.98 us/op
updateUnfinalizedPubkeys - updating 100 pubkeys 4.4158 ms/op
updateUnfinalizedPubkeys - updating 1000 pubkeys 67.773 ms/op
validate api signedAggregateAndProof - struct 2.7011 ms/op 2.2215 ms/op 1.22
validate gossip signedAggregateAndProof - struct 2.7425 ms/op 2.2253 ms/op 1.23
validate gossip attestation - vc 640000 1.3161 ms/op 1.0987 ms/op 1.20
batch validate gossip attestation - vc 640000 - chunk 32 158.34 us/op 126.21 us/op 1.25
batch validate gossip attestation - vc 640000 - chunk 64 137.99 us/op 114.32 us/op 1.21
batch validate gossip attestation - vc 640000 - chunk 128 124.05 us/op 105.64 us/op 1.17
batch validate gossip attestation - vc 640000 - chunk 256 123.96 us/op 104.59 us/op 1.19
pickEth1Vote - no votes 1.1030 ms/op 847.56 us/op 1.30
pickEth1Vote - max votes 7.9013 ms/op 7.2483 ms/op 1.09
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.886 ms/op 13.108 ms/op 0.91
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.479 ms/op 17.456 ms/op 0.94
pickEth1Vote - Eth1Data fastSerialize value x2048 516.14 us/op 330.40 us/op 1.56
pickEth1Vote - Eth1Data fastSerialize tree x2048 3.9260 ms/op 4.7988 ms/op 0.82
bytes32 toHexString 454.00 ns/op 353.00 ns/op 1.29
bytes32 Buffer.toString(hex) 240.00 ns/op 190.00 ns/op 1.26
bytes32 Buffer.toString(hex) from Uint8Array 373.00 ns/op 265.00 ns/op 1.41
bytes32 Buffer.toString(hex) + 0x 244.00 ns/op 187.00 ns/op 1.30
Object access 1 prop 0.14800 ns/op 0.11200 ns/op 1.32
Map access 1 prop 0.13900 ns/op 0.10700 ns/op 1.30
Object get x1000 6.0630 ns/op 5.1910 ns/op 1.17
Map get x1000 6.3620 ns/op 5.5090 ns/op 1.15
Object set x1000 32.970 ns/op 24.932 ns/op 1.32
Map set x1000 22.820 ns/op 18.212 ns/op 1.25
Return object 10000 times 0.29240 ns/op 0.27050 ns/op 1.08
Throw Error 10000 times 3.4189 us/op 2.5170 us/op 1.36
fastMsgIdFn sha256 / 200 bytes 2.4160 us/op 1.5780 us/op 1.53
fastMsgIdFn h32 xxhash / 200 bytes 249.00 ns/op 178.00 ns/op 1.40
fastMsgIdFn h64 xxhash / 200 bytes 275.00 ns/op 200.00 ns/op 1.38
fastMsgIdFn sha256 / 1000 bytes 7.4830 us/op 5.3350 us/op 1.40
fastMsgIdFn h32 xxhash / 1000 bytes 391.00 ns/op 295.00 ns/op 1.33
fastMsgIdFn h64 xxhash / 1000 bytes 342.00 ns/op 263.00 ns/op 1.30
fastMsgIdFn sha256 / 10000 bytes 66.074 us/op 46.294 us/op 1.43
fastMsgIdFn h32 xxhash / 10000 bytes 1.9520 us/op 1.5850 us/op 1.23
fastMsgIdFn h64 xxhash / 10000 bytes 1.2520 us/op 1.0220 us/op 1.23
send data - 1000 256B messages 14.911 ms/op 9.4890 ms/op 1.57
send data - 1000 512B messages 18.793 ms/op 12.867 ms/op 1.46
send data - 1000 1024B messages 27.903 ms/op 19.907 ms/op 1.40
send data - 1000 1200B messages 28.930 ms/op 21.536 ms/op 1.34
send data - 1000 2048B messages 36.890 ms/op 26.333 ms/op 1.40
send data - 1000 4096B messages 33.080 ms/op 24.722 ms/op 1.34
send data - 1000 16384B messages 76.898 ms/op 59.399 ms/op 1.29
send data - 1000 65536B messages 218.90 ms/op 184.61 ms/op 1.19
enrSubnets - fastDeserialize 64 bits 1.1260 us/op 808.00 ns/op 1.39
enrSubnets - ssz BitVector 64 bits 360.00 ns/op 266.00 ns/op 1.35
enrSubnets - fastDeserialize 4 bits 145.00 ns/op 121.00 ns/op 1.20
enrSubnets - ssz BitVector 4 bits 351.00 ns/op 263.00 ns/op 1.33
prioritizePeers score -10:0 att 32-0.1 sync 2-0 141.41 us/op 110.38 us/op 1.28
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 169.34 us/op 129.77 us/op 1.30
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 229.37 us/op 189.31 us/op 1.21
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 409.68 us/op 336.56 us/op 1.22
prioritizePeers score 0:0 att 64-1 sync 4-1 520.63 us/op 405.49 us/op 1.28
array of 16000 items push then shift 1.6444 us/op 1.1859 us/op 1.39
LinkedList of 16000 items push then shift 7.2410 ns/op 7.0350 ns/op 1.03
array of 16000 items push then pop 100.63 ns/op 77.215 ns/op 1.30
LinkedList of 16000 items push then pop 7.0050 ns/op 6.0860 ns/op 1.15
array of 24000 items push then shift 2.4357 us/op 1.7278 us/op 1.41
LinkedList of 24000 items push then shift 7.4240 ns/op 6.3580 ns/op 1.17
array of 24000 items push then pop 153.20 ns/op 98.779 ns/op 1.55
LinkedList of 24000 items push then pop 8.2110 ns/op 5.6940 ns/op 1.44
intersect bitArray bitLen 8 6.4460 ns/op 4.8560 ns/op 1.33
intersect array and set length 8 45.632 ns/op 34.627 ns/op 1.32
intersect bitArray bitLen 128 29.413 ns/op 24.696 ns/op 1.19
intersect array and set length 128 671.11 ns/op 528.50 ns/op 1.27
bitArray.getTrueBitIndexes() bitLen 128 1.4290 us/op 1.0660 us/op 1.34
bitArray.getTrueBitIndexes() bitLen 248 2.2560 us/op 1.8360 us/op 1.23
bitArray.getTrueBitIndexes() bitLen 512 4.4130 us/op 3.4220 us/op 1.29
Buffer.concat 32 items 918.00 ns/op 759.00 ns/op 1.21
Uint8Array.set 32 items 1.9040 us/op 1.5850 us/op 1.20
Buffer.copy 2.2990 us/op 2.0840 us/op 1.10
Uint8Array.set - with subarray 3.1360 us/op 2.8890 us/op 1.09
Uint8Array.set - without subarray 1.8280 us/op 1.8590 us/op 0.98
Set add up to 64 items then delete first 2.1881 us/op 1.7721 us/op 1.23
OrderedSet add up to 64 items then delete first 3.2165 us/op 2.7261 us/op 1.18
Set add up to 64 items then delete last 2.4480 us/op 2.0798 us/op 1.18
OrderedSet add up to 64 items then delete last 3.7575 us/op 2.9007 us/op 1.30
Set add up to 64 items then delete middle 2.4536 us/op 1.8476 us/op 1.33
OrderedSet add up to 64 items then delete middle 5.2595 us/op 4.1120 us/op 1.28
Set add up to 128 items then delete first 4.9431 us/op 3.9800 us/op 1.24
OrderedSet add up to 128 items then delete first 7.6478 us/op 6.1807 us/op 1.24
Set add up to 128 items then delete last 4.8374 us/op 3.8154 us/op 1.27
OrderedSet add up to 128 items then delete last 6.9451 us/op 5.7575 us/op 1.21
Set add up to 128 items then delete middle 4.6756 us/op 3.8230 us/op 1.22
OrderedSet add up to 128 items then delete middle 13.205 us/op 11.233 us/op 1.18
Set add up to 256 items then delete first 9.8310 us/op 7.7339 us/op 1.27
OrderedSet add up to 256 items then delete first 15.619 us/op 12.154 us/op 1.29
Set add up to 256 items then delete last 9.3578 us/op 7.4695 us/op 1.25
OrderedSet add up to 256 items then delete last 13.904 us/op 11.429 us/op 1.22
Set add up to 256 items then delete middle 9.2458 us/op 7.4371 us/op 1.24
OrderedSet add up to 256 items then delete middle 39.988 us/op 33.522 us/op 1.19
transfer serialized Status (84 B) 1.2800 us/op 1.2560 us/op 1.02
copy serialized Status (84 B) 1.0420 us/op 974.00 ns/op 1.07
transfer serialized SignedVoluntaryExit (112 B) 1.3440 us/op 1.3000 us/op 1.03
copy serialized SignedVoluntaryExit (112 B) 1.0790 us/op 1.0520 us/op 1.03
transfer serialized ProposerSlashing (416 B) 1.4280 us/op 2.0170 us/op 0.71
copy serialized ProposerSlashing (416 B) 1.4720 us/op 2.1440 us/op 0.69
transfer serialized Attestation (485 B) 1.5390 us/op 1.9400 us/op 0.79
copy serialized Attestation (485 B) 1.5110 us/op 2.0850 us/op 0.72
transfer serialized AttesterSlashing (33232 B) 1.7260 us/op 1.9820 us/op 0.87
copy serialized AttesterSlashing (33232 B) 4.4130 us/op 5.6550 us/op 0.78
transfer serialized Small SignedBeaconBlock (128000 B) 2.2820 us/op 2.4230 us/op 0.94
copy serialized Small SignedBeaconBlock (128000 B) 13.038 us/op 12.111 us/op 1.08
transfer serialized Avg SignedBeaconBlock (200000 B) 2.9100 us/op 2.6970 us/op 1.08
copy serialized Avg SignedBeaconBlock (200000 B) 19.746 us/op 17.000 us/op 1.16
transfer serialized BlobsSidecar (524380 B) 2.7770 us/op 2.5320 us/op 1.10
copy serialized BlobsSidecar (524380 B) 95.150 us/op 109.53 us/op 0.87
transfer serialized Big SignedBeaconBlock (1000000 B) 3.2230 us/op 2.9630 us/op 1.09
copy serialized Big SignedBeaconBlock (1000000 B) 149.53 us/op 130.50 us/op 1.15
pass gossip attestations to forkchoice per slot 3.0885 ms/op 2.3925 ms/op 1.29
forkChoice updateHead vc 100000 bc 64 eq 0 492.91 us/op 374.43 us/op 1.32
forkChoice updateHead vc 600000 bc 64 eq 0 3.0883 ms/op 2.5107 ms/op 1.23
forkChoice updateHead vc 1000000 bc 64 eq 0 5.1780 ms/op 4.5978 ms/op 1.13
forkChoice updateHead vc 600000 bc 320 eq 0 3.0936 ms/op 2.5358 ms/op 1.22
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1281 ms/op 2.5371 ms/op 1.23
forkChoice updateHead vc 600000 bc 7200 eq 0 3.8310 ms/op 2.7924 ms/op 1.37
forkChoice updateHead vc 600000 bc 64 eq 1000 10.623 ms/op 9.4519 ms/op 1.12
forkChoice updateHead vc 600000 bc 64 eq 10000 10.626 ms/op 9.3944 ms/op 1.13
forkChoice updateHead vc 600000 bc 64 eq 300000 14.622 ms/op 10.875 ms/op 1.34
computeDeltas 500000 validators 300 proto nodes 3.7583 ms/op 3.0213 ms/op 1.24
computeDeltas 500000 validators 1200 proto nodes 3.8144 ms/op 3.1402 ms/op 1.21
computeDeltas 500000 validators 7200 proto nodes 3.6843 ms/op 3.0369 ms/op 1.21
computeDeltas 750000 validators 300 proto nodes 5.8891 ms/op 4.4145 ms/op 1.33
computeDeltas 750000 validators 1200 proto nodes 6.0631 ms/op 4.4399 ms/op 1.37
computeDeltas 750000 validators 7200 proto nodes 6.2146 ms/op 4.3963 ms/op 1.41
computeDeltas 1400000 validators 300 proto nodes 11.224 ms/op 8.2329 ms/op 1.36
computeDeltas 1400000 validators 1200 proto nodes 10.784 ms/op 8.2271 ms/op 1.31
computeDeltas 1400000 validators 7200 proto nodes 13.112 ms/op 8.2651 ms/op 1.59
computeDeltas 2100000 validators 300 proto nodes 17.796 ms/op 11.962 ms/op 1.49
computeDeltas 2100000 validators 1200 proto nodes 17.346 ms/op 12.354 ms/op 1.40
computeDeltas 2100000 validators 7200 proto nodes 18.092 ms/op 12.111 ms/op 1.49
altair processAttestation - 250000 vs - 7PWei normalcase 3.3118 ms/op 1.3274 ms/op 2.50
altair processAttestation - 250000 vs - 7PWei worstcase 4.9269 ms/op 2.0343 ms/op 2.42
altair processAttestation - setStatus - 1/6 committees join 124.39 us/op 68.473 us/op 1.82
altair processAttestation - setStatus - 1/3 committees join 240.89 us/op 131.70 us/op 1.83
altair processAttestation - setStatus - 1/2 committees join 306.73 us/op 183.78 us/op 1.67
altair processAttestation - setStatus - 2/3 committees join 400.55 us/op 262.07 us/op 1.53
altair processAttestation - setStatus - 4/5 committees join 576.50 us/op 377.46 us/op 1.53
altair processAttestation - setStatus - 100% committees join 705.08 us/op 456.20 us/op 1.55
altair processBlock - 250000 vs - 7PWei normalcase 12.481 ms/op 3.4702 ms/op 3.60
altair processBlock - 250000 vs - 7PWei normalcase hashState 35.673 ms/op 24.516 ms/op 1.46
altair processBlock - 250000 vs - 7PWei worstcase 41.380 ms/op 39.116 ms/op 1.06
altair processBlock - 250000 vs - 7PWei worstcase hashState 101.63 ms/op 76.947 ms/op 1.32
phase0 processBlock - 250000 vs - 7PWei normalcase 2.8103 ms/op 2.1728 ms/op 1.29
phase0 processBlock - 250000 vs - 7PWei worstcase 31.234 ms/op 22.028 ms/op 1.42
altair processEth1Data - 250000 vs - 7PWei normalcase 534.33 us/op 237.11 us/op 2.25
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 10.481 us/op 4.1210 us/op 2.54
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 69.928 us/op 17.538 us/op 3.99
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 18.670 us/op 6.3970 us/op 2.92
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 13.042 us/op 4.5490 us/op 2.87
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 222.00 us/op 69.570 us/op 3.19
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.6862 ms/op 490.12 us/op 3.44
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.2334 ms/op 1.0416 ms/op 2.14
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.0882 ms/op 1.1104 ms/op 1.88
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 5.0068 ms/op 1.8457 ms/op 2.71
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.1103 ms/op 1.1820 ms/op 1.79
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.3635 ms/op 2.9122 ms/op 1.84
Tree 40 250000 create 513.67 ms/op 174.28 ms/op 2.95
Tree 40 250000 get(125000) 175.58 ns/op 103.06 ns/op 1.70
Tree 40 250000 set(125000) 1.2703 us/op 482.01 ns/op 2.64
Tree 40 250000 toArray() 23.837 ms/op 11.896 ms/op 2.00
Tree 40 250000 iterate all - toArray() + loop 23.136 ms/op 11.851 ms/op 1.95
Tree 40 250000 iterate all - get(i) 62.840 ms/op 39.135 ms/op 1.61
Array 250000 create 4.4116 ms/op 2.2465 ms/op 1.96
Array 250000 clone - spread 1.6903 ms/op 1.1641 ms/op 1.45
Array 250000 get(125000) 0.47000 ns/op 0.35600 ns/op 1.32
Array 250000 set(125000) 0.48800 ns/op 0.36600 ns/op 1.33
Array 250000 iterate all - loop 92.452 us/op 74.972 us/op 1.23
phase0 afterProcessEpoch - 250000 vs - 7PWei 95.630 ms/op 77.154 ms/op 1.24
phase0 beforeProcessEpoch - 250000 vs - 7PWei 52.074 ms/op 36.117 ms/op 1.44
altair processEpoch - mainnet_e81889 4.7769 s/op 347.15 ms/op 13.76
mainnet_e81889 - altair beforeProcessEpoch 77.496 ms/op 43.367 ms/op 1.79
mainnet_e81889 - altair processJustificationAndFinalization 28.222 us/op 9.2700 us/op 3.04
mainnet_e81889 - altair processInactivityUpdates 8.7035 ms/op 5.2472 ms/op 1.66
mainnet_e81889 - altair processRewardsAndPenalties 49.705 ms/op 49.556 ms/op 1.00
mainnet_e81889 - altair processRegistryUpdates 3.8630 us/op 1.5830 us/op 2.44
mainnet_e81889 - altair processSlashings 679.00 ns/op 348.00 ns/op 1.95
mainnet_e81889 - altair processEth1DataReset 535.00 ns/op 267.00 ns/op 2.00
mainnet_e81889 - altair processEffectiveBalanceUpdates 215.02 ms/op 1.1248 ms/op 191.16
mainnet_e81889 - altair processSlashingsReset 3.9090 us/op 2.3290 us/op 1.68
mainnet_e81889 - altair processRandaoMixesReset 3.9590 us/op 2.9780 us/op 1.33
mainnet_e81889 - altair processHistoricalRootsUpdate 472.00 ns/op 365.00 ns/op 1.29
mainnet_e81889 - altair processParticipationFlagUpdates 3.6720 us/op 1.2480 us/op 2.94
mainnet_e81889 - altair processSyncCommitteeUpdates 908.00 ns/op 297.00 ns/op 3.06
mainnet_e81889 - altair afterProcessEpoch 99.916 ms/op 80.556 ms/op 1.24
capella processEpoch - mainnet_e217614 2.4383 s/op 1.1798 s/op 2.07
mainnet_e217614 - capella beforeProcessEpoch 259.56 ms/op 217.77 ms/op 1.19
mainnet_e217614 - capella processJustificationAndFinalization 17.494 us/op 9.7180 us/op 1.80
mainnet_e217614 - capella processInactivityUpdates 22.811 ms/op 14.896 ms/op 1.53
mainnet_e217614 - capella processRewardsAndPenalties 259.97 ms/op 251.56 ms/op 1.03
mainnet_e217614 - capella processRegistryUpdates 15.685 us/op 10.264 us/op 1.53
mainnet_e217614 - capella processSlashings 413.00 ns/op 313.00 ns/op 1.32
mainnet_e217614 - capella processEth1DataReset 405.00 ns/op 240.00 ns/op 1.69
mainnet_e217614 - capella processEffectiveBalanceUpdates 108.21 ms/op 3.8012 ms/op 28.47
mainnet_e217614 - capella processSlashingsReset 3.7640 us/op 1.5520 us/op 2.43
mainnet_e217614 - capella processRandaoMixesReset 8.0320 us/op 2.3650 us/op 3.40
mainnet_e217614 - capella processHistoricalRootsUpdate 1.6150 us/op 265.00 ns/op 6.09
mainnet_e217614 - capella processParticipationFlagUpdates 2.0230 us/op 1.1070 us/op 1.83
mainnet_e217614 - capella afterProcessEpoch 247.89 ms/op 228.63 ms/op 1.08
phase0 processEpoch - mainnet_e58758 3.0845 s/op 354.81 ms/op 8.69
mainnet_e58758 - phase0 beforeProcessEpoch 128.05 ms/op 98.406 ms/op 1.30
mainnet_e58758 - phase0 processJustificationAndFinalization 14.498 us/op 9.4680 us/op 1.53
mainnet_e58758 - phase0 processRewardsAndPenalties 40.135 ms/op 32.832 ms/op 1.22
mainnet_e58758 - phase0 processRegistryUpdates 13.777 us/op 5.6420 us/op 2.44
mainnet_e58758 - phase0 processSlashings 405.00 ns/op 288.00 ns/op 1.41
mainnet_e58758 - phase0 processEth1DataReset 666.00 ns/op 300.00 ns/op 2.22
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 150.21 ms/op 723.34 us/op 207.66
mainnet_e58758 - phase0 processSlashingsReset 4.5560 us/op 1.4860 us/op 3.07
mainnet_e58758 - phase0 processRandaoMixesReset 5.9940 us/op 2.2010 us/op 2.72
mainnet_e58758 - phase0 processHistoricalRootsUpdate 446.00 ns/op 274.00 ns/op 1.63
mainnet_e58758 - phase0 processParticipationRecordUpdates 5.1470 us/op 3.4700 us/op 1.48
mainnet_e58758 - phase0 afterProcessEpoch 86.759 ms/op 63.283 ms/op 1.37
phase0 processEffectiveBalanceUpdates - 250000 normalcase 7.8049 ms/op 755.84 us/op 10.33
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 8.4294 ms/op 1.4120 ms/op 5.97
altair processInactivityUpdates - 250000 normalcase 23.726 ms/op 16.188 ms/op 1.47
altair processInactivityUpdates - 250000 worstcase 25.130 ms/op 16.084 ms/op 1.56
phase0 processRegistryUpdates - 250000 normalcase 12.502 us/op 4.2810 us/op 2.92
phase0 processRegistryUpdates - 250000 badcase_full_deposits 392.11 us/op 302.09 us/op 1.30
phase0 processRegistryUpdates - 250000 worstcase 0.5 146.25 ms/op 107.69 ms/op 1.36
altair processRewardsAndPenalties - 250000 normalcase 35.220 ms/op 39.511 ms/op 0.89
altair processRewardsAndPenalties - 250000 worstcase 35.381 ms/op 39.312 ms/op 0.90
phase0 getAttestationDeltas - 250000 normalcase 9.5731 ms/op 5.6705 ms/op 1.69
phase0 getAttestationDeltas - 250000 worstcase 10.480 ms/op 5.9105 ms/op 1.77
phase0 processSlashings - 250000 worstcase 120.58 us/op 48.773 us/op 2.47
altair processSyncCommitteeUpdates - 250000 141.38 ms/op 107.30 ms/op 1.32
BeaconState.hashTreeRoot - No change 435.00 ns/op 217.00 ns/op 2.00
BeaconState.hashTreeRoot - 1 full validator 133.95 us/op 115.84 us/op 1.16
BeaconState.hashTreeRoot - 32 full validator 1.3533 ms/op 1.3593 ms/op 1.00
BeaconState.hashTreeRoot - 512 full validator 14.639 ms/op 13.302 ms/op 1.10
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 171.85 us/op 128.00 us/op 1.34
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.5145 ms/op 1.6546 ms/op 1.52
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 35.550 ms/op 20.866 ms/op 1.70
BeaconState.hashTreeRoot - 1 balances 148.24 us/op 122.88 us/op 1.21
BeaconState.hashTreeRoot - 32 balances 1.0720 ms/op 784.34 us/op 1.37
BeaconState.hashTreeRoot - 512 balances 11.029 ms/op 11.739 ms/op 0.94
BeaconState.hashTreeRoot - 250000 balances 195.92 ms/op 164.03 ms/op 1.19
aggregationBits - 2048 els - zipIndexesInBitList 36.672 us/op 18.713 us/op 1.96
byteArrayEquals 32 58.084 ns/op 46.390 ns/op 1.25
Buffer.compare 32 17.953 ns/op 16.062 ns/op 1.12
byteArrayEquals 1024 1.6484 us/op 1.2397 us/op 1.33
Buffer.compare 1024 25.986 ns/op 22.594 ns/op 1.15
byteArrayEquals 16384 26.384 us/op 19.672 us/op 1.34
Buffer.compare 16384 200.39 ns/op 175.26 ns/op 1.14
byteArrayEquals 123687377 199.77 ms/op 146.38 ms/op 1.36
Buffer.compare 123687377 11.049 ms/op 3.6191 ms/op 3.05
byteArrayEquals 32 - diff last byte 55.198 ns/op 45.481 ns/op 1.21
Buffer.compare 32 - diff last byte 18.085 ns/op 15.718 ns/op 1.15
byteArrayEquals 1024 - diff last byte 1.6666 us/op 1.2204 us/op 1.37
Buffer.compare 1024 - diff last byte 26.752 ns/op 22.587 ns/op 1.18
byteArrayEquals 16384 - diff last byte 26.410 us/op 19.385 us/op 1.36
Buffer.compare 16384 - diff last byte 200.36 ns/op 168.99 ns/op 1.19
byteArrayEquals 123687377 - diff last byte 196.92 ms/op 145.72 ms/op 1.35
Buffer.compare 123687377 - diff last byte 9.7382 ms/op 5.2654 ms/op 1.85
byteArrayEquals 32 - random bytes 5.4470 ns/op 4.2380 ns/op 1.29
Buffer.compare 32 - random bytes 17.811 ns/op 14.002 ns/op 1.27
byteArrayEquals 1024 - random bytes 5.4250 ns/op 4.2100 ns/op 1.29
Buffer.compare 1024 - random bytes 17.798 ns/op 13.798 ns/op 1.29
byteArrayEquals 16384 - random bytes 5.4260 ns/op 4.2030 ns/op 1.29
Buffer.compare 16384 - random bytes 17.865 ns/op 13.767 ns/op 1.30
byteArrayEquals 123687377 - random bytes 7.3600 ns/op 5.4700 ns/op 1.35
Buffer.compare 123687377 - random bytes 20.960 ns/op 14.670 ns/op 1.43
regular array get 100000 times 37.698 us/op 27.323 us/op 1.38
wrappedArray get 100000 times 34.501 us/op 27.097 us/op 1.27
arrayWithProxy get 100000 times 13.620 ms/op 8.2046 ms/op 1.66
ssz.Root.equals 47.733 ns/op 39.494 ns/op 1.21
byteArrayEquals 46.998 ns/op 39.174 ns/op 1.20
Buffer.compare 10.939 ns/op 8.0020 ns/op 1.37
shuffle list - 16384 els 6.6505 ms/op 5.0002 ms/op 1.33
shuffle list - 250000 els 96.925 ms/op 72.911 ms/op 1.33
processSlot - 1 slots 16.699 us/op 10.110 us/op 1.65
processSlot - 32 slots 4.3382 ms/op 2.8659 ms/op 1.51
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 39.742 ms/op 42.280 ms/op 0.94
getCommitteeAssignments - req 1 vs - 250000 vc 2.2326 ms/op 1.7798 ms/op 1.25
getCommitteeAssignments - req 100 vs - 250000 vc 4.3210 ms/op 3.4565 ms/op 1.25
getCommitteeAssignments - req 1000 vs - 250000 vc 4.6536 ms/op 3.6917 ms/op 1.26
findModifiedValidators - 10000 modified validators 326.70 ms/op 228.07 ms/op 1.43
findModifiedValidators - 1000 modified validators 207.75 ms/op 161.64 ms/op 1.29
findModifiedValidators - 100 modified validators 230.02 ms/op 157.34 ms/op 1.46
findModifiedValidators - 10 modified validators 237.93 ms/op 140.47 ms/op 1.69
findModifiedValidators - 1 modified validators 207.08 ms/op 136.59 ms/op 1.52
findModifiedValidators - no difference 187.96 ms/op 148.61 ms/op 1.26
compare ViewDUs 3.5060 s/op 2.8320 s/op 1.24
compare each validator Uint8Array 1.6244 s/op 1.5759 s/op 1.03
compare ViewDU to Uint8Array 1.3589 s/op 669.58 ms/op 2.03
migrate state 1000000 validators, 24 modified, 0 new 771.11 ms/op 569.76 ms/op 1.35
migrate state 1000000 validators, 1700 modified, 1000 new 1.0509 s/op 795.04 ms/op 1.32
migrate state 1000000 validators, 3400 modified, 2000 new 1.3257 s/op 990.87 ms/op 1.34
migrate state 1500000 validators, 24 modified, 0 new 797.62 ms/op 563.49 ms/op 1.42
migrate state 1500000 validators, 1700 modified, 1000 new 1.0225 s/op 742.10 ms/op 1.38
migrate state 1500000 validators, 3400 modified, 2000 new 1.2699 s/op 981.87 ms/op 1.29
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.1900 ns/op 3.7200 ns/op 1.40
state getBlockRootAtSlot - 250000 vs - 7PWei 830.62 ns/op 517.87 ns/op 1.60
computeProposers - vc 250000 8.6168 ms/op 6.3329 ms/op 1.36
computeEpochShuffling - vc 250000 106.47 ms/op 80.882 ms/op 1.32
getNextSyncCommittee - vc 250000 151.93 ms/op 94.895 ms/op 1.60
computeSigningRoot for AttestationData 25.952 us/op 17.136 us/op 1.51
hash AttestationData serialized data then Buffer.toString(base64) 1.7303 us/op 1.1619 us/op 1.49
toHexString serialized data 1.1492 us/op 756.74 ns/op 1.52
Buffer.toString(base64) 207.04 ns/op 139.31 ns/op 1.49

by benchmarkbot/action

@g11tech g11tech mentioned this pull request Jul 30, 2024
@g11tech
Copy link
Contributor Author

g11tech commented Jul 30, 2024

superceeded in favour of #6986

@g11tech g11tech closed this Jul 30, 2024
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.

8 participants