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: release v1.21.0 #7006

Merged
merged 47 commits into from
Aug 8, 2024
Merged

chore: release v1.21.0 #7006

merged 47 commits into from
Aug 8, 2024

Conversation

wemeetagain
Copy link
Member

@wemeetagain wemeetagain commented Aug 6, 2024

replaces #6988

as discussed in discord, we decided to cut a new release candidate off our latest unstable (30a13f9)

nflaig and others added 30 commits July 9, 2024 22:31
* chore: optimize getSlotFromOffset

* chore: add perf test
Update README.md

Corrected the lightclient prover url
* fix: add workaround to fix compatibility with go-eth2-client

* Skip more endpoints

* Move comments around

* Fix assertion
* fix: update user-agent check for go-eth2-client

* Remove confusing comment
* chore: separate epoch transition cache flags

* chore: refactor active epoch indices

* chore: use number[] for flags

* chore: fully decompose AttesterStatus

* chore: fix lint

* chore: reuse epoch transition cache arrays

* chore: add isActivePrevEpoch to metrics

* chore: remove dead code

* chore: refactor

* chore: fix up perf tests

* chore: add functions back
* fix sepolia genesis delay

* Update packages/config/src/chainConfig/networks/sepolia.ts

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
* Add disable flag

* Add util function to check lightclient server

* Add reqresp checks

* Add api checks

* Fix beacon-node usage of lightclient server

* Fix types

* Fix the code with feedback

* Disable gossipsub topic for lightclient

* Fix the types

* Update the type checks

* Clean reassingment

* Update code
* chore: pin nodejs version to 22.4

* More pinning
* chore: refactor block and state api utils

* Update packages/beacon-node/src/api/impl/beacon/blocks/utils.ts

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* Update packages/beacon-node/src/api/impl/beacon/state/utils.ts

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* chore: address pr comments

* chore: tiny cleanup

* Use more informative return types

* Align block and state utils

* Let server handler deserialize state bytes

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
…6965)

* fix: return finalized as false if called with genesis slot or epoch

* Update genesis epoch / slot checks
feat: add yamux support
* chore: bump blst-ts version

* chore: delete personal script
* Add additional instructions for hotfix

* fix merge conflict title

Co-authored-by: Cayman <caymannava@gmail.com>

* resolving conflicts

Co-authored-by: Cayman <caymannava@gmail.com>

* minor fixes addressed

* address comments

* spelling fix

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

---------

Co-authored-by: Cayman <caymannava@gmail.com>
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
* feat: add historical state regen

* chore: wire up metrics

* chore: make historical state regen module optional

* chore: persist pubkey cache across historical state regen runs

* chore: cleanup worker termination

* chore: fix worker usage

* fix: swap Level for ClassicLevel for multithreading

* fix: getStateV2 state handling hack

* chore: update classic-level

* chore: fix build errors

* chore: add comments

* chore: fix test worker path

* chore: simplify function naming

* chore: optimize getSlotFromOffset

* chore: refactor to avoid needless deserialization

* fix: update metrics names

* feat: add historical state regen dashboard

* fix: update vm dashboards with historical state worker

* chore: fix test data

* feat: transfer state across worker boundary

* chore: address some pr comments

* chore: clean module close

* feat: add metrics

---------

Co-authored-by: Matthew Keil <me@matthewkeil.com>
Co-authored-by: Tuyen Nguyen <vutuyen2636@gmail.com>
* fix: sanitize url in http client debug logs and metrics

* Improve naming consistency

* Clean up

* Re-assign baseUrl to fix type inference
* docs: add note to local testnet setup

* Add Kurtosis to wordlist
nflaig and others added 17 commits July 30, 2024 12:01
* Update lc cli flags to use camelCase

* Update reference to light client beacon api spec

* Fix browser bundle reference and min version

* Update prover readme title

* Remove redundancy in docs sidebar

* Remove v0 lodestar-specific route

* Add references to beacon api explorer
* add external dependencies

* add lodestar prover

* add flare

* add lodestar-logger

* add reqresp

* Update reqresp description

* Lint

* Add light-client and prover to liraries that are useful individually

* Consistently use Req/Resp (as per CL spec) in docs

* Add Hashicorp to wordlist

* Sort wordlist

* Update wordlist

* Sort

* Fix header size of packages

* Consistent with readme text

* Consistent spelling of TypeScript in depgraph page

* Fix package names

* Update diagram

* Remove extra lines

* More visible arrows

* Use note instead of info label

* update readme.md

* Fix formatting

* update wordlist.txt

* update description of reqresp on readme.md

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* Remove extra whiespace

* alignment

* light client alignment

* Lint README.md

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
* Define ClientCode and engine_getClientVersionV1

* Default graffiti in beacon node

* Update packages/beacon-node/src/api/impl/validator/index.ts

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* Fix rebase

* Make graffiti optional in validator store

* Fix merge

* Fix lint

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

Co-authored-by: Cayman <caymannava@gmail.com>

* Add fallback graffiti

* Address comment

* Address comment

* Cache client version in ExecutionEngine

* Hide graffiti if private flag is set

* Improve readability

* Partially address comment

* Partially address comment

* Partially address comment

* Refactor

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

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

* Partial address comment

* Add unit test

* Fix unit test

* Review PR, mostly cosmetic

* Fix graffiti tests

* Add workaround to test code instead of src

* Set client version to null if not supported by EL

* Log failed client version updates as debug

* Throw error if EL client returns empty client versions array

* Update engine mock

* Set client version to null initially to avoid fetching multiple times

* Reorder statements

---------

Co-authored-by: Nico Flaig <nflaig@protonmail.com>
Co-authored-by: Cayman <caymannava@gmail.com>
* Revert "feat: add yamux stream muxer (#5886)"

This reverts commit acbedaf.

* chore: update yarn.lock
* fix: do not populate proposerIndices and inclusionDelays from altair

* feat: remove eligibleValidatorIndices

* fix: avoid array.slice in processRegistryUpdates()

* fix: reuse nextEpochShufflingActiveValidatorIndices

* fix: state-transition check-types

* chore: rename nextEpochShufflingActiveIndicesLength
* Upgrade vitest

* --segfault-retry removed from vitest

* Fix the vitest config

* Fix deprecated syntax

* Fix types

* Add a patch for browser tests

* Update build config

* Revert changes from bundle

* Fix the e2e tests context

* Fix the e2e tests

* Fix the e2e callback hooks

* Fix callback hooks

---------

Co-authored-by: Cayman <caymannava@gmail.com>
* chore: refactor chain event emits

* chore: wrap emits in callInNextEventLoop
* chore: more log on updateHeadState()

* chore: also log maybeHeadStateRoot

* fix: dontTransferCache option when regen head state
* fix: refactor the blockcontent types as fork aware types for api

* Update packages/types/src/deneb/sszTypes.ts

Co-authored-by: Nico Flaig <nflaig@protonmail.com>

---------

Co-authored-by: Cayman <caymannava@gmail.com>
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
* feat: track syncing status and fetch duties on synced

* Rename scheduling function to runOnResynced

* Consider prev offline and syncing to trigger resynced event handlers

* Add comment to error handler

* Add note about el offline and sycning not considered

* Align syncing status logs with existing node is syncing logs

* Cleanup

* Add ssz support to syncing status api

* Align beacon node code to return proper types

* Keep track of error in prev syncing status

* Print slot in error log

* Skip on first slot of epoch since tasks are already scheduled

* Update api test data

* Fix endpoint tests

* await scheduled tasks, mostly relevant for testing

* Add unit tests

* Move beacon heath metric to syncing status tracker

* Add beacon health panel to validator client dashboard

* Formatting

* Improve info called once assertion

* Reset mocks after each test
Update lodestar_validator_monitor.json

"Percent of attestations having correct head" -> "Percent of attestations having incorrect head"
* fix: use default node image instead of alpine

* fix: use apt-get

* Apply suggestions from code review

---------

Co-authored-by: Cayman <caymannava@gmail.com>
@wemeetagain wemeetagain requested a review from a team as a code owner August 6, 2024 20:59
Copy link

codecov bot commented Aug 6, 2024

Codecov Report

Attention: Patch coverage is 44.74227% with 268 lines in your changes missing coverage. Please review.

Project coverage is 49.23%. Comparing base (115118c) to head (360fe77).

Additional details and impacted files
@@             Coverage Diff             @@
##           stable    #7006       +/-   ##
===========================================
- Coverage   62.54%   49.23%   -13.32%     
===========================================
  Files         575      578        +3     
  Lines       61077    37426    -23651     
  Branches     2132     2168       +36     
===========================================
- Hits        38203    18426    -19777     
+ Misses      22834    18960     -3874     
  Partials       40       40               

Copy link
Contributor

github-actions bot commented Aug 6, 2024

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 39b2c21 Previous: - Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 2.1017 ms/op
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 68.837 us/op
BLS verify - blst 916.79 us/op
BLS verifyMultipleSignatures 3 - blst 1.4228 ms/op
BLS verifyMultipleSignatures 8 - blst 2.0767 ms/op
BLS verifyMultipleSignatures 32 - blst 6.0830 ms/op
BLS verifyMultipleSignatures 64 - blst 10.148 ms/op
BLS verifyMultipleSignatures 128 - blst 18.230 ms/op
BLS deserializing 10000 signatures 652.39 ms/op
BLS deserializing 100000 signatures 6.3970 s/op
BLS verifyMultipleSignatures - same message - 3 - blst 983.82 us/op
BLS verifyMultipleSignatures - same message - 8 - blst 1.1234 ms/op
BLS verifyMultipleSignatures - same message - 32 - blst 1.7439 ms/op
BLS verifyMultipleSignatures - same message - 64 - blst 2.6252 ms/op
BLS verifyMultipleSignatures - same message - 128 - blst 4.2717 ms/op
BLS aggregatePubkeys 32 - blst 18.274 us/op
BLS aggregatePubkeys 128 - blst 64.489 us/op
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 68.668 ms/op
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 60.752 ms/op
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 27.795 ms/op
getSlashingsAndExits - default max 67.827 us/op
getSlashingsAndExits - 2k 225.56 us/op
proposeBlockBody type=full, size=empty 5.2355 ms/op
isKnown best case - 1 super set check 447.00 ns/op
isKnown normal case - 2 super set checks 426.00 ns/op
isKnown worse case - 16 super set checks 429.00 ns/op
InMemoryCheckpointStateCache - add get delete 4.9200 us/op
validate api signedAggregateAndProof - struct 1.8440 ms/op
validate gossip signedAggregateAndProof - struct 1.9117 ms/op
validate gossip attestation - vc 640000 970.19 us/op
batch validate gossip attestation - vc 640000 - chunk 32 117.73 us/op
batch validate gossip attestation - vc 640000 - chunk 64 102.41 us/op
batch validate gossip attestation - vc 640000 - chunk 128 97.908 us/op
batch validate gossip attestation - vc 640000 - chunk 256 94.611 us/op
pickEth1Vote - no votes 873.29 us/op
pickEth1Vote - max votes 7.9331 ms/op
pickEth1Vote - Eth1Data hashTreeRoot value x2048 16.992 ms/op
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.391 ms/op
pickEth1Vote - Eth1Data fastSerialize value x2048 330.47 us/op
pickEth1Vote - Eth1Data fastSerialize tree x2048 5.0240 ms/op
bytes32 toHexString 594.00 ns/op
bytes32 Buffer.toString(hex) 430.00 ns/op
bytes32 Buffer.toString(hex) from Uint8Array 517.00 ns/op
bytes32 Buffer.toString(hex) + 0x 429.00 ns/op
Object access 1 prop 0.31800 ns/op
Map access 1 prop 0.32000 ns/op
Object get x1000 5.5800 ns/op
Map get x1000 6.0500 ns/op
Object set x1000 25.617 ns/op
Map set x1000 18.650 ns/op
Return object 10000 times 0.29290 ns/op
Throw Error 10000 times 2.6703 us/op
fastMsgIdFn sha256 / 200 bytes 1.9730 us/op
fastMsgIdFn h32 xxhash / 200 bytes 407.00 ns/op
fastMsgIdFn h64 xxhash / 200 bytes 440.00 ns/op
fastMsgIdFn sha256 / 1000 bytes 5.9400 us/op
fastMsgIdFn h32 xxhash / 1000 bytes 524.00 ns/op
fastMsgIdFn h64 xxhash / 1000 bytes 506.00 ns/op
fastMsgIdFn sha256 / 10000 bytes 50.577 us/op
fastMsgIdFn h32 xxhash / 10000 bytes 1.8700 us/op
fastMsgIdFn h64 xxhash / 10000 bytes 1.3250 us/op
send data - 1000 256B messages 9.3314 ms/op
send data - 1000 512B messages 13.074 ms/op
send data - 1000 1024B messages 20.261 ms/op
send data - 1000 1200B messages 24.249 ms/op
send data - 1000 2048B messages 28.675 ms/op
send data - 1000 4096B messages 26.446 ms/op
send data - 1000 16384B messages 60.674 ms/op
send data - 1000 65536B messages 240.75 ms/op
enrSubnets - fastDeserialize 64 bits 1.1130 us/op
enrSubnets - ssz BitVector 64 bits 499.00 ns/op
enrSubnets - fastDeserialize 4 bits 336.00 ns/op
enrSubnets - ssz BitVector 4 bits 502.00 ns/op
prioritizePeers score -10:0 att 32-0.1 sync 2-0 119.82 us/op
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 143.77 us/op
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 269.85 us/op
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 468.65 us/op
prioritizePeers score 0:0 att 64-1 sync 4-1 581.93 us/op
array of 16000 items push then shift 1.3257 us/op
LinkedList of 16000 items push then shift 6.3610 ns/op
array of 16000 items push then pop 99.705 ns/op
LinkedList of 16000 items push then pop 6.3100 ns/op
array of 24000 items push then shift 1.8228 us/op
LinkedList of 24000 items push then shift 6.7420 ns/op
array of 24000 items push then pop 133.62 ns/op
LinkedList of 24000 items push then pop 6.4190 ns/op
intersect bitArray bitLen 8 5.5340 ns/op
intersect array and set length 8 41.881 ns/op
intersect bitArray bitLen 128 27.106 ns/op
intersect array and set length 128 603.17 ns/op
bitArray.getTrueBitIndexes() bitLen 128 2.1050 us/op
bitArray.getTrueBitIndexes() bitLen 248 2.9490 us/op
bitArray.getTrueBitIndexes() bitLen 512 6.5780 us/op
Buffer.concat 32 items 1.0460 us/op
Uint8Array.set 32 items 1.9890 us/op
Buffer.copy 1.9410 us/op
Uint8Array.set - with subarray 2.2350 us/op
Uint8Array.set - without subarray 1.4650 us/op
getUint32 - dataview 392.00 ns/op
getUint32 - manual 336.00 ns/op
Set add up to 64 items then delete first 1.8057 us/op
OrderedSet add up to 64 items then delete first 2.7873 us/op
Set add up to 64 items then delete last 2.0548 us/op
OrderedSet add up to 64 items then delete last 3.1909 us/op
Set add up to 64 items then delete middle 2.1116 us/op
OrderedSet add up to 64 items then delete middle 4.6032 us/op
Set add up to 128 items then delete first 4.0372 us/op
OrderedSet add up to 128 items then delete first 5.7277 us/op
Set add up to 128 items then delete last 3.7562 us/op
OrderedSet add up to 128 items then delete last 5.8470 us/op
Set add up to 128 items then delete middle 3.7916 us/op
OrderedSet add up to 128 items then delete middle 11.812 us/op
Set add up to 256 items then delete first 7.8264 us/op
OrderedSet add up to 256 items then delete first 11.618 us/op
Set add up to 256 items then delete last 7.7398 us/op
OrderedSet add up to 256 items then delete last 12.208 us/op
Set add up to 256 items then delete middle 7.4061 us/op
OrderedSet add up to 256 items then delete middle 34.361 us/op
transfer serialized Status (84 B) 1.5520 us/op
copy serialized Status (84 B) 1.3520 us/op
transfer serialized SignedVoluntaryExit (112 B) 1.6430 us/op
copy serialized SignedVoluntaryExit (112 B) 1.4080 us/op
transfer serialized ProposerSlashing (416 B) 2.3180 us/op
copy serialized ProposerSlashing (416 B) 1.6190 us/op
transfer serialized Attestation (485 B) 1.6110 us/op
copy serialized Attestation (485 B) 1.6970 us/op
transfer serialized AttesterSlashing (33232 B) 1.7150 us/op
copy serialized AttesterSlashing (33232 B) 5.3600 us/op
transfer serialized Small SignedBeaconBlock (128000 B) 3.2140 us/op
copy serialized Small SignedBeaconBlock (128000 B) 10.691 us/op
transfer serialized Avg SignedBeaconBlock (200000 B) 3.4890 us/op
copy serialized Avg SignedBeaconBlock (200000 B) 13.875 us/op
transfer serialized BlobsSidecar (524380 B) 3.6840 us/op
copy serialized BlobsSidecar (524380 B) 108.70 us/op
transfer serialized Big SignedBeaconBlock (1000000 B) 3.6370 us/op
copy serialized Big SignedBeaconBlock (1000000 B) 191.53 us/op
pass gossip attestations to forkchoice per slot 2.9181 ms/op
forkChoice updateHead vc 100000 bc 64 eq 0 435.95 us/op
forkChoice updateHead vc 600000 bc 64 eq 0 2.4476 ms/op
forkChoice updateHead vc 1000000 bc 64 eq 0 4.2876 ms/op
forkChoice updateHead vc 600000 bc 320 eq 0 2.5126 ms/op
forkChoice updateHead vc 600000 bc 1200 eq 0 2.6220 ms/op
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3925 ms/op
forkChoice updateHead vc 600000 bc 64 eq 1000 9.4676 ms/op
forkChoice updateHead vc 600000 bc 64 eq 10000 9.5075 ms/op
forkChoice updateHead vc 600000 bc 64 eq 300000 11.667 ms/op
computeDeltas 500000 validators 300 proto nodes 2.9792 ms/op
computeDeltas 500000 validators 1200 proto nodes 2.9496 ms/op
computeDeltas 500000 validators 7200 proto nodes 3.0823 ms/op
computeDeltas 750000 validators 300 proto nodes 4.5439 ms/op
computeDeltas 750000 validators 1200 proto nodes 4.6111 ms/op
computeDeltas 750000 validators 7200 proto nodes 4.5612 ms/op
computeDeltas 1400000 validators 300 proto nodes 8.5559 ms/op
computeDeltas 1400000 validators 1200 proto nodes 8.5483 ms/op
computeDeltas 1400000 validators 7200 proto nodes 8.2707 ms/op
computeDeltas 2100000 validators 300 proto nodes 12.447 ms/op
computeDeltas 2100000 validators 1200 proto nodes 13.523 ms/op
computeDeltas 2100000 validators 7200 proto nodes 12.657 ms/op
altair processAttestation - 250000 vs - 7PWei normalcase 1.2786 ms/op
altair processAttestation - 250000 vs - 7PWei worstcase 1.9611 ms/op
altair processAttestation - setStatus - 1/6 committees join 66.343 us/op
altair processAttestation - setStatus - 1/3 committees join 114.64 us/op
altair processAttestation - setStatus - 1/2 committees join 189.82 us/op
altair processAttestation - setStatus - 2/3 committees join 270.58 us/op
altair processAttestation - setStatus - 4/5 committees join 391.17 us/op
altair processAttestation - setStatus - 100% committees join 427.10 us/op
altair processBlock - 250000 vs - 7PWei normalcase 3.3515 ms/op
altair processBlock - 250000 vs - 7PWei normalcase hashState 34.320 ms/op
altair processBlock - 250000 vs - 7PWei worstcase 32.036 ms/op
altair processBlock - 250000 vs - 7PWei worstcase hashState 78.588 ms/op
phase0 processBlock - 250000 vs - 7PWei normalcase 2.2000 ms/op
phase0 processBlock - 250000 vs - 7PWei worstcase 23.431 ms/op
altair processEth1Data - 250000 vs - 7PWei normalcase 246.10 us/op
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 6.4030 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 18.120 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 7.5370 us/op
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.4370 us/op
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 78.094 us/op
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 758.83 us/op
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.0509 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.0994 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 2.0275 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.2017 ms/op
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.0331 ms/op
Tree 40 250000 create 180.06 ms/op
Tree 40 250000 get(125000) 113.38 ns/op
Tree 40 250000 set(125000) 546.40 ns/op
Tree 40 250000 toArray() 11.586 ms/op
Tree 40 250000 iterate all - toArray() + loop 11.677 ms/op
Tree 40 250000 iterate all - get(i) 36.880 ms/op
MutableVector 250000 create 7.7835 ms/op
MutableVector 250000 get(125000) 5.3430 ns/op
MutableVector 250000 set(125000) 154.31 ns/op
MutableVector 250000 toArray() 2.6256 ms/op
MutableVector 250000 iterate all - toArray() + loop 2.7321 ms/op
MutableVector 250000 iterate all - get(i) 1.2792 ms/op
Array 250000 create 2.2990 ms/op
Array 250000 clone - spread 1.1984 ms/op
Array 250000 get(125000) 0.51500 ns/op
Array 250000 set(125000) 0.52500 ns/op
Array 250000 iterate all - loop 68.363 us/op
effectiveBalanceIncrements clone Uint8Array 300000 18.837 us/op
effectiveBalanceIncrements clone MutableVector 300000 282.00 ns/op
effectiveBalanceIncrements rw all Uint8Array 300000 150.31 us/op
effectiveBalanceIncrements rw all MutableVector 300000 51.173 ms/op
phase0 afterProcessEpoch - 250000 vs - 7PWei 68.989 ms/op
Array.fill - length 1000000 2.4923 ms/op
Array push - length 1000000 13.948 ms/op
Array.get 0.26624 ns/op
Uint8Array.get 0.34296 ns/op
phase0 beforeProcessEpoch - 250000 vs - 7PWei 12.835 ms/op
altair processEpoch - mainnet_e81889 323.82 ms/op
mainnet_e81889 - altair beforeProcessEpoch 14.784 ms/op
mainnet_e81889 - altair processJustificationAndFinalization 9.5640 us/op
mainnet_e81889 - altair processInactivityUpdates 3.9068 ms/op
mainnet_e81889 - altair processRewardsAndPenalties 55.245 ms/op
mainnet_e81889 - altair processRegistryUpdates 1.8410 us/op
mainnet_e81889 - altair processSlashings 763.00 ns/op
mainnet_e81889 - altair processEth1DataReset 736.00 ns/op
mainnet_e81889 - altair processEffectiveBalanceUpdates 855.26 us/op
mainnet_e81889 - altair processSlashingsReset 2.2420 us/op
mainnet_e81889 - altair processRandaoMixesReset 2.7990 us/op
mainnet_e81889 - altair processHistoricalRootsUpdate 665.00 ns/op
mainnet_e81889 - altair processParticipationFlagUpdates 1.3530 us/op
mainnet_e81889 - altair processSyncCommitteeUpdates 598.00 ns/op
mainnet_e81889 - altair afterProcessEpoch 79.467 ms/op
capella processEpoch - mainnet_e217614 1.1030 s/op
mainnet_e217614 - capella beforeProcessEpoch 60.667 ms/op
mainnet_e217614 - capella processJustificationAndFinalization 9.1270 us/op
mainnet_e217614 - capella processInactivityUpdates 12.333 ms/op
mainnet_e217614 - capella processRewardsAndPenalties 258.75 ms/op
mainnet_e217614 - capella processRegistryUpdates 10.435 us/op
mainnet_e217614 - capella processSlashings 741.00 ns/op
mainnet_e217614 - capella processEth1DataReset 691.00 ns/op
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.9631 ms/op
mainnet_e217614 - capella processSlashingsReset 2.2110 us/op
mainnet_e217614 - capella processRandaoMixesReset 2.8640 us/op
mainnet_e217614 - capella processHistoricalRootsUpdate 721.00 ns/op
mainnet_e217614 - capella processParticipationFlagUpdates 1.3320 us/op
mainnet_e217614 - capella afterProcessEpoch 228.99 ms/op
phase0 processEpoch - mainnet_e58758 350.39 ms/op
mainnet_e58758 - phase0 beforeProcessEpoch 70.187 ms/op
mainnet_e58758 - phase0 processJustificationAndFinalization 13.595 us/op
mainnet_e58758 - phase0 processRewardsAndPenalties 35.409 ms/op
mainnet_e58758 - phase0 processRegistryUpdates 5.9110 us/op
mainnet_e58758 - phase0 processSlashings 783.00 ns/op
mainnet_e58758 - phase0 processEth1DataReset 679.00 ns/op
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1180 ms/op
mainnet_e58758 - phase0 processSlashingsReset 2.0700 us/op
mainnet_e58758 - phase0 processRandaoMixesReset 3.0580 us/op
mainnet_e58758 - phase0 processHistoricalRootsUpdate 715.00 ns/op
mainnet_e58758 - phase0 processParticipationRecordUpdates 2.5220 us/op
mainnet_e58758 - phase0 afterProcessEpoch 61.499 ms/op
phase0 processEffectiveBalanceUpdates - 250000 normalcase 705.87 us/op
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4503 ms/op
altair processInactivityUpdates - 250000 normalcase 17.381 ms/op
altair processInactivityUpdates - 250000 worstcase 18.059 ms/op
phase0 processRegistryUpdates - 250000 normalcase 3.3450 us/op
phase0 processRegistryUpdates - 250000 badcase_full_deposits 306.58 us/op
phase0 processRegistryUpdates - 250000 worstcase 0.5 105.41 ms/op
altair processRewardsAndPenalties - 250000 normalcase 44.759 ms/op
altair processRewardsAndPenalties - 250000 worstcase 31.109 ms/op
phase0 getAttestationDeltas - 250000 normalcase 6.5030 ms/op
phase0 getAttestationDeltas - 250000 worstcase 6.6900 ms/op
phase0 processSlashings - 250000 worstcase 49.950 us/op
altair processSyncCommitteeUpdates - 250000 95.740 ms/op
BeaconState.hashTreeRoot - No change 464.00 ns/op
BeaconState.hashTreeRoot - 1 full validator 100.12 us/op
BeaconState.hashTreeRoot - 32 full validator 1.3465 ms/op
BeaconState.hashTreeRoot - 512 full validator 10.746 ms/op
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 135.72 us/op
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8342 ms/op
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 24.914 ms/op
BeaconState.hashTreeRoot - 1 balances 114.08 us/op
BeaconState.hashTreeRoot - 32 balances 983.26 us/op
BeaconState.hashTreeRoot - 512 balances 10.705 ms/op
BeaconState.hashTreeRoot - 250000 balances 150.08 ms/op
aggregationBits - 2048 els - zipIndexesInBitList 19.593 us/op
byteArrayEquals 32 47.317 ns/op
Buffer.compare 32 16.379 ns/op
byteArrayEquals 1024 1.2547 us/op
Buffer.compare 1024 24.176 ns/op
byteArrayEquals 16384 19.927 us/op
Buffer.compare 16384 176.67 ns/op
byteArrayEquals 123687377 150.22 ms/op
Buffer.compare 123687377 3.6592 ms/op
byteArrayEquals 32 - diff last byte 47.167 ns/op
Buffer.compare 32 - diff last byte 16.217 ns/op
byteArrayEquals 1024 - diff last byte 1.2508 us/op
Buffer.compare 1024 - diff last byte 23.401 ns/op
byteArrayEquals 16384 - diff last byte 19.869 us/op
Buffer.compare 16384 - diff last byte 206.36 ns/op
byteArrayEquals 123687377 - diff last byte 138.39 ms/op
Buffer.compare 123687377 - diff last byte 5.2751 ms/op
byteArrayEquals 32 - random bytes 4.4360 ns/op
Buffer.compare 32 - random bytes 14.238 ns/op
byteArrayEquals 1024 - random bytes 4.4130 ns/op
Buffer.compare 1024 - random bytes 14.022 ns/op
byteArrayEquals 16384 - random bytes 4.4070 ns/op
Buffer.compare 16384 - random bytes 13.980 ns/op
byteArrayEquals 123687377 - random bytes 6.9500 ns/op
Buffer.compare 123687377 - random bytes 16.610 ns/op
regular array get 100000 times 27.312 us/op
wrappedArray get 100000 times 27.299 us/op
arrayWithProxy get 100000 times 9.6296 ms/op
ssz.Root.equals 40.000 ns/op
byteArrayEquals 39.244 ns/op
Buffer.compare 8.2010 ns/op
shuffle list - 16384 els 5.5204 ms/op
shuffle list - 250000 els 81.333 ms/op
processSlot - 1 slots 15.005 us/op
processSlot - 32 slots 3.2193 ms/op
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 44.413 ms/op
getCommitteeAssignments - req 1 vs - 250000 vc 1.6218 ms/op
getCommitteeAssignments - req 100 vs - 250000 vc 3.1801 ms/op
getCommitteeAssignments - req 1000 vs - 250000 vc 3.4292 ms/op
findModifiedValidators - 10000 modified validators 230.89 ms/op
findModifiedValidators - 1000 modified validators 155.11 ms/op
findModifiedValidators - 100 modified validators 144.46 ms/op
findModifiedValidators - 10 modified validators 142.88 ms/op
findModifiedValidators - 1 modified validators 117.23 ms/op
findModifiedValidators - no difference 142.32 ms/op
compare ViewDUs 3.1709 s/op
compare each validator Uint8Array 1.2043 s/op
compare ViewDU to Uint8Array 830.70 ms/op
migrate state 1000000 validators, 24 modified, 0 new 570.11 ms/op
migrate state 1000000 validators, 1700 modified, 1000 new 825.04 ms/op
migrate state 1000000 validators, 3400 modified, 2000 new 1.0335 s/op
migrate state 1500000 validators, 24 modified, 0 new 613.37 ms/op
migrate state 1500000 validators, 1700 modified, 1000 new 825.64 ms/op
migrate state 1500000 validators, 3400 modified, 2000 new 914.27 ms/op
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 6.0500 ns/op
state getBlockRootAtSlot - 250000 vs - 7PWei 527.13 ns/op
computeProposers - vc 250000 5.3714 ms/op
computeEpochShuffling - vc 250000 82.651 ms/op
getNextSyncCommittee - vc 250000 89.329 ms/op
computeSigningRoot for AttestationData 22.237 us/op
hash AttestationData serialized data then Buffer.toString(base64) 1.1719 us/op
toHexString serialized data 796.04 ns/op
Buffer.toString(base64) 131.63 ns/op

by benchmarkbot/action

@philknows philknows merged commit ae1f9d5 into stable Aug 8, 2024
31 of 32 checks passed
@philknows philknows deleted the rc/v1.21.0 branch August 8, 2024 20:57
@wemeetagain
Copy link
Member Author

🎉 This PR is included in v1.21.0 🎉

@twoeths
Copy link
Contributor

twoeths commented Aug 12, 2024

there is signifiant improvement on beforeProcessEpoch, this is on lg1k after we deploy v1.21.0:

Screenshot 2024-08-12 at 08 34 20

there is also more mesh peers, this is on the stable mainnet node

Screenshot 2024-08-12 at 08 34 59

Attcount with >0 mesh peers is a little bit improved

Screenshot 2024-08-12 at 08 36 58

also there is higher rss + process heap bytes, could be due to napi-rs:

Screenshot 2024-08-12 at 08 39 43

@twoeths
Copy link
Contributor

twoeths commented Aug 12, 2024

also gc time on the stable mainnet node is a little bit improved (this is 6h rate interval)

Screenshot 2024-08-12 at 08 45 52

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.