Skip to content

Conversation

@philknows
Copy link
Member

Motivation

Users reported in the v1.34.0 release that changes in the release created an issue when ipv6 and ipv4 ports were the same:

✖ Error: Timeout: Did not receive an init message from worker after 300000ms. Make sure the worker calls expose().

Description

This PR bumps discv5 from 11.0.3 to 11.0.4 which includes the fix to binding ipv4 and ipv6 on the same port in dual stack mode.
See: ChainSafe/discv5#318

@philknows philknows requested a review from a team as a code owner September 10, 2025 20:14
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @philknows, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request resolves a significant networking issue by updating a core dependency. The change ensures that the application can correctly handle dual-stack network configurations, preventing startup failures related to port binding.

Highlights

  • Dependency Update: Bumps the @chainsafe/discv5 library from version 11.0.3 to 11.0.4. This update specifically addresses a critical bug where the application would fail to bind IPv4 and IPv6 ports simultaneously in dual-stack mode, leading to a "Timeout: Did not receive an init message from worker" error.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request correctly bumps the @chainsafe/discv5 dependency to version 11.0.4 to resolve a critical issue with dual-stack port binding. The change is straightforward and well-motivated. I've added suggestions to pin the dependency to this exact version in both package.json files. This is a recommended practice to ensure stability and prevent any potential regressions from future patch releases, especially when a specific version is known to contain an important fix.

@nflaig nflaig enabled auto-merge (squash) September 10, 2025 20:28
@nflaig nflaig merged commit 6dd6cec into unstable Sep 10, 2025
19 of 20 checks passed
@nflaig nflaig deleted the philknows/bump-discv5 branch September 10, 2025 20:30
@codecov
Copy link

codecov bot commented Sep 10, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.08%. Comparing base (4a37a4b) to head (fdc9cf4).
⚠️ Report is 5 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #8365      +/-   ##
============================================
- Coverage     54.09%   54.08%   -0.01%     
============================================
  Files           850      850              
  Lines         64193    64195       +2     
  Branches       4855     4852       -3     
============================================
- Hits          34723    34722       -1     
- Misses        29393    29396       +3     
  Partials         77       77              
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

philknows added a commit that referenced this pull request Sep 10, 2025
**Motivation**

Users reported in the v1.34.0 release that changes in the release
created an issue when ipv6 and ipv4 ports were the same:

```
✖ Error: Timeout: Did not receive an init message from worker after 300000ms. Make sure the worker calls expose().
```

**Description**

This PR bumps discv5 from 11.0.3 to 11.0.4 which includes the fix to
binding ipv4 and ipv6 on the same port in dual stack mode.
See: ChainSafe/discv5#318
@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 8c07e04 Previous: f80d2d5 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 746.22 us/op 1.2009 ms/op 0.62
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 30.758 us/op 38.882 us/op 0.79
BLS verify - blst 905.68 us/op 921.58 us/op 0.98
BLS verifyMultipleSignatures 3 - blst 1.2788 ms/op 1.3751 ms/op 0.93
BLS verifyMultipleSignatures 8 - blst 1.9941 ms/op 2.2583 ms/op 0.88
BLS verifyMultipleSignatures 32 - blst 4.6363 ms/op 6.0749 ms/op 0.76
BLS verifyMultipleSignatures 64 - blst 8.4417 ms/op 11.745 ms/op 0.72
BLS verifyMultipleSignatures 128 - blst 16.017 ms/op 21.538 ms/op 0.74
BLS deserializing 10000 signatures 617.60 ms/op 850.33 ms/op 0.73
BLS deserializing 100000 signatures 6.1904 s/op 7.5214 s/op 0.82
BLS verifyMultipleSignatures - same message - 3 - blst 940.10 us/op 1.0849 ms/op 0.87
BLS verifyMultipleSignatures - same message - 8 - blst 1.0927 ms/op 1.1587 ms/op 0.94
BLS verifyMultipleSignatures - same message - 32 - blst 1.6644 ms/op 1.8432 ms/op 0.90
BLS verifyMultipleSignatures - same message - 64 - blst 2.5133 ms/op 2.8822 ms/op 0.87
BLS verifyMultipleSignatures - same message - 128 - blst 4.0856 ms/op 5.2379 ms/op 0.78
BLS aggregatePubkeys 32 - blst 16.976 us/op 20.208 us/op 0.84
BLS aggregatePubkeys 128 - blst 60.772 us/op 71.141 us/op 0.85
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 42.926 ms/op 59.420 ms/op 0.72
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 44.343 ms/op 55.753 ms/op 0.80
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 38.448 ms/op 39.948 ms/op 0.96
getSlashingsAndExits - default max 47.277 us/op 81.354 us/op 0.58
getSlashingsAndExits - 2k 281.56 us/op 372.25 us/op 0.76
proposeBlockBody type=full, size=empty 5.4658 ms/op 5.8853 ms/op 0.93
isKnown best case - 1 super set check 405.00 ns/op 219.00 ns/op 1.85
isKnown normal case - 2 super set checks 402.00 ns/op 215.00 ns/op 1.87
isKnown worse case - 16 super set checks 403.00 ns/op 215.00 ns/op 1.87
InMemoryCheckpointStateCache - add get delete 2.4660 us/op 2.4990 us/op 0.99
validate api signedAggregateAndProof - struct 1.4910 ms/op 1.4994 ms/op 0.99
validate gossip signedAggregateAndProof - struct 1.4866 ms/op 1.5484 ms/op 0.96
batch validate gossip attestation - vc 640000 - chunk 32 106.95 us/op 122.66 us/op 0.87
batch validate gossip attestation - vc 640000 - chunk 64 90.514 us/op 107.20 us/op 0.84
batch validate gossip attestation - vc 640000 - chunk 128 83.783 us/op 99.791 us/op 0.84
batch validate gossip attestation - vc 640000 - chunk 256 82.094 us/op 101.27 us/op 0.81
pickEth1Vote - no votes 735.03 us/op 961.27 us/op 0.76
pickEth1Vote - max votes 5.2773 ms/op 5.8142 ms/op 0.91
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.5563 ms/op 11.157 ms/op 0.86
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 15.070 ms/op 15.685 ms/op 0.96
pickEth1Vote - Eth1Data fastSerialize value x2048 373.19 us/op 452.49 us/op 0.82
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.3437 ms/op 2.1992 ms/op 1.07
bytes32 toHexString 505.00 ns/op 370.00 ns/op 1.36
bytes32 Buffer.toString(hex) 396.00 ns/op 243.00 ns/op 1.63
bytes32 Buffer.toString(hex) from Uint8Array 481.00 ns/op 355.00 ns/op 1.35
bytes32 Buffer.toString(hex) + 0x 403.00 ns/op 250.00 ns/op 1.61
Object access 1 prop 0.29200 ns/op 0.11700 ns/op 2.50
Map access 1 prop 0.29700 ns/op 0.12300 ns/op 2.41
Object get x1000 4.7950 ns/op 5.9780 ns/op 0.80
Map get x1000 5.3730 ns/op 6.4860 ns/op 0.83
Object set x1000 18.845 ns/op 29.301 ns/op 0.64
Map set x1000 16.049 ns/op 20.191 ns/op 0.79
Return object 10000 times 0.28020 ns/op 0.29110 ns/op 0.96
Throw Error 10000 times 3.2788 us/op 4.6239 us/op 0.71
toHex 91.245 ns/op 134.99 ns/op 0.68
Buffer.from 83.982 ns/op 123.12 ns/op 0.68
shared Buffer 60.268 ns/op 86.632 ns/op 0.70
fastMsgIdFn sha256 / 200 bytes 1.8010 us/op 2.1970 us/op 0.82
fastMsgIdFn h32 xxhash / 200 bytes 383.00 ns/op 207.00 ns/op 1.85
fastMsgIdFn h64 xxhash / 200 bytes 432.00 ns/op 257.00 ns/op 1.68
fastMsgIdFn sha256 / 1000 bytes 5.8920 us/op 7.5020 us/op 0.79
fastMsgIdFn h32 xxhash / 1000 bytes 504.00 ns/op 343.00 ns/op 1.47
fastMsgIdFn h64 xxhash / 1000 bytes 490.00 ns/op 332.00 ns/op 1.48
fastMsgIdFn sha256 / 10000 bytes 45.717 us/op 65.592 us/op 0.70
fastMsgIdFn h32 xxhash / 10000 bytes 1.7760 us/op 1.8220 us/op 0.97
fastMsgIdFn h64 xxhash / 10000 bytes 1.2380 us/op 1.1960 us/op 1.04
send data - 1000 256B messages 11.983 ms/op 15.284 ms/op 0.78
send data - 1000 512B messages 14.836 ms/op 18.774 ms/op 0.79
send data - 1000 1024B messages 20.885 ms/op 27.907 ms/op 0.75
send data - 1000 1200B messages 16.518 ms/op 23.143 ms/op 0.71
send data - 1000 2048B messages 16.625 ms/op 24.215 ms/op 0.69
send data - 1000 4096B messages 18.923 ms/op 27.974 ms/op 0.68
send data - 1000 16384B messages 30.241 ms/op 44.574 ms/op 0.68
send data - 1000 65536B messages 73.151 ms/op 117.21 ms/op 0.62
enrSubnets - fastDeserialize 64 bits 928.00 ns/op 884.00 ns/op 1.05
enrSubnets - ssz BitVector 64 bits 481.00 ns/op 321.00 ns/op 1.50
enrSubnets - fastDeserialize 4 bits 310.00 ns/op 127.00 ns/op 2.44
enrSubnets - ssz BitVector 4 bits 484.00 ns/op 321.00 ns/op 1.51
prioritizePeers score -10:0 att 32-0.1 sync 2-0 206.35 us/op 241.86 us/op 0.85
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 322.31 us/op 266.24 us/op 1.21
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 589.98 us/op 373.44 us/op 1.58
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 894.85 us/op 729.15 us/op 1.23
prioritizePeers score 0:0 att 64-1 sync 4-1 1.3132 ms/op 871.65 us/op 1.51
array of 16000 items push then shift 1.2738 us/op 1.5929 us/op 0.80
LinkedList of 16000 items push then shift 6.1650 ns/op 7.5080 ns/op 0.82
array of 16000 items push then pop 60.811 ns/op 77.264 ns/op 0.79
LinkedList of 16000 items push then pop 6.0510 ns/op 7.0830 ns/op 0.85
array of 24000 items push then shift 1.8748 us/op 2.3690 us/op 0.79
LinkedList of 24000 items push then shift 6.1950 ns/op 7.3760 ns/op 0.84
array of 24000 items push then pop 84.930 ns/op 103.24 ns/op 0.82
LinkedList of 24000 items push then pop 6.0610 ns/op 7.3010 ns/op 0.83
intersect bitArray bitLen 8 5.2850 ns/op 6.3160 ns/op 0.84
intersect array and set length 8 30.698 ns/op 37.609 ns/op 0.82
intersect bitArray bitLen 128 25.320 ns/op 29.567 ns/op 0.86
intersect array and set length 128 512.95 ns/op 617.19 ns/op 0.83
bitArray.getTrueBitIndexes() bitLen 128 1.4370 us/op 1000.0 ns/op 1.44
bitArray.getTrueBitIndexes() bitLen 248 2.7180 us/op 1.7700 us/op 1.54
bitArray.getTrueBitIndexes() bitLen 512 5.2890 us/op 3.6590 us/op 1.45
Buffer.concat 32 items 1.0060 us/op 791.00 ns/op 1.27
Uint8Array.set 32 items 1.1720 us/op 1.8030 us/op 0.65
Buffer.copy 2.1660 us/op 2.8130 us/op 0.77
Uint8Array.set - with subarray 1.7410 us/op 2.3060 us/op 0.75
Uint8Array.set - without subarray 1.0250 us/op 1.8120 us/op 0.57
getUint32 - dataview 362.00 ns/op 201.00 ns/op 1.80
getUint32 - manual 293.00 ns/op 117.00 ns/op 2.50
Set add up to 64 items then delete first 1.6823 us/op 2.0050 us/op 0.84
OrderedSet add up to 64 items then delete first 2.6337 us/op 3.2913 us/op 0.80
Set add up to 64 items then delete last 1.9242 us/op 2.4168 us/op 0.80
OrderedSet add up to 64 items then delete last 2.9070 us/op 4.0767 us/op 0.71
Set add up to 64 items then delete middle 1.9174 us/op 2.5991 us/op 0.74
OrderedSet add up to 64 items then delete middle 4.2181 us/op 5.8543 us/op 0.72
Set add up to 128 items then delete first 3.7817 us/op 5.4618 us/op 0.69
OrderedSet add up to 128 items then delete first 6.0523 us/op 8.4491 us/op 0.72
Set add up to 128 items then delete last 3.6561 us/op 5.5766 us/op 0.66
OrderedSet add up to 128 items then delete last 5.6670 us/op 7.7698 us/op 0.73
Set add up to 128 items then delete middle 3.8164 us/op 5.0396 us/op 0.76
OrderedSet add up to 128 items then delete middle 10.910 us/op 13.989 us/op 0.78
Set add up to 256 items then delete first 7.4716 us/op 11.948 us/op 0.63
OrderedSet add up to 256 items then delete first 12.626 us/op 17.595 us/op 0.72
Set add up to 256 items then delete last 7.8712 us/op 10.717 us/op 0.73
OrderedSet add up to 256 items then delete last 12.128 us/op 20.021 us/op 0.61
Set add up to 256 items then delete middle 8.4170 us/op 11.135 us/op 0.76
OrderedSet add up to 256 items then delete middle 34.004 us/op 43.701 us/op 0.78
transfer serialized Status (84 B) 2.2300 us/op 2.4260 us/op 0.92
copy serialized Status (84 B) 1.2460 us/op 1.3340 us/op 0.93
transfer serialized SignedVoluntaryExit (112 B) 1.9720 us/op 2.4860 us/op 0.79
copy serialized SignedVoluntaryExit (112 B) 1.2110 us/op 1.4000 us/op 0.86
transfer serialized ProposerSlashing (416 B) 1.9840 us/op 3.5390 us/op 0.56
copy serialized ProposerSlashing (416 B) 1.4070 us/op 1.8040 us/op 0.78
transfer serialized Attestation (485 B) 2.4020 us/op 2.7080 us/op 0.89
copy serialized Attestation (485 B) 1.3400 us/op 1.8390 us/op 0.73
transfer serialized AttesterSlashing (33232 B) 2.3150 us/op 3.2050 us/op 0.72
copy serialized AttesterSlashing (33232 B) 3.4670 us/op 4.8290 us/op 0.72
transfer serialized Small SignedBeaconBlock (128000 B) 2.5250 us/op 3.5600 us/op 0.71
copy serialized Small SignedBeaconBlock (128000 B) 8.5810 us/op 10.376 us/op 0.83
transfer serialized Avg SignedBeaconBlock (200000 B) 2.5300 us/op 3.8970 us/op 0.65
copy serialized Avg SignedBeaconBlock (200000 B) 12.234 us/op 15.157 us/op 0.81
transfer serialized BlobsSidecar (524380 B) 2.8630 us/op 3.7840 us/op 0.76
copy serialized BlobsSidecar (524380 B) 52.768 us/op 65.599 us/op 0.80
transfer serialized Big SignedBeaconBlock (1000000 B) 3.0560 us/op 4.7300 us/op 0.65
copy serialized Big SignedBeaconBlock (1000000 B) 99.048 us/op 115.67 us/op 0.86
pass gossip attestations to forkchoice per slot 2.3111 ms/op 2.8048 ms/op 0.82
forkChoice updateHead vc 100000 bc 64 eq 0 331.79 us/op 464.98 us/op 0.71
forkChoice updateHead vc 600000 bc 64 eq 0 2.3303 ms/op 3.2609 ms/op 0.71
forkChoice updateHead vc 1000000 bc 64 eq 0 3.7500 ms/op 6.1090 ms/op 0.61
forkChoice updateHead vc 600000 bc 320 eq 0 2.1190 ms/op 2.8977 ms/op 0.73
forkChoice updateHead vc 600000 bc 1200 eq 0 2.5394 ms/op 3.0742 ms/op 0.83
forkChoice updateHead vc 600000 bc 7200 eq 0 2.4335 ms/op 3.5249 ms/op 0.69
forkChoice updateHead vc 600000 bc 64 eq 1000 9.0413 ms/op 10.373 ms/op 0.87
forkChoice updateHead vc 600000 bc 64 eq 10000 8.7696 ms/op 10.421 ms/op 0.84
forkChoice updateHead vc 600000 bc 64 eq 300000 10.996 ms/op 13.796 ms/op 0.80
computeDeltas 500000 validators 300 proto nodes 3.1689 ms/op 4.0315 ms/op 0.79
computeDeltas 500000 validators 1200 proto nodes 3.2710 ms/op 4.0749 ms/op 0.80
computeDeltas 500000 validators 7200 proto nodes 3.2371 ms/op 4.1300 ms/op 0.78
computeDeltas 750000 validators 300 proto nodes 4.8518 ms/op 6.0058 ms/op 0.81
computeDeltas 750000 validators 1200 proto nodes 4.9600 ms/op 5.9899 ms/op 0.83
computeDeltas 750000 validators 7200 proto nodes 4.9404 ms/op 6.0044 ms/op 0.82
computeDeltas 1400000 validators 300 proto nodes 9.0713 ms/op 11.583 ms/op 0.78
computeDeltas 1400000 validators 1200 proto nodes 8.7532 ms/op 12.399 ms/op 0.71
computeDeltas 1400000 validators 7200 proto nodes 9.1229 ms/op 14.226 ms/op 0.64
computeDeltas 2100000 validators 300 proto nodes 12.941 ms/op 28.879 ms/op 0.45
computeDeltas 2100000 validators 1200 proto nodes 13.283 ms/op 20.904 ms/op 0.64
computeDeltas 2100000 validators 7200 proto nodes 13.623 ms/op 20.454 ms/op 0.67
altair processAttestation - 250000 vs - 7PWei normalcase 1.6687 ms/op 3.6364 ms/op 0.46
altair processAttestation - 250000 vs - 7PWei worstcase 3.1701 ms/op 4.7804 ms/op 0.66
altair processAttestation - setStatus - 1/6 committees join 102.91 us/op 182.38 us/op 0.56
altair processAttestation - setStatus - 1/3 committees join 182.39 us/op 298.83 us/op 0.61
altair processAttestation - setStatus - 1/2 committees join 284.08 us/op 417.55 us/op 0.68
altair processAttestation - setStatus - 2/3 committees join 364.58 us/op 532.86 us/op 0.68
altair processAttestation - setStatus - 4/5 committees join 500.57 us/op 723.30 us/op 0.69
altair processAttestation - setStatus - 100% committees join 600.98 us/op 851.06 us/op 0.71
altair processBlock - 250000 vs - 7PWei normalcase 4.5757 ms/op 6.5839 ms/op 0.69
altair processBlock - 250000 vs - 7PWei normalcase hashState 31.548 ms/op 44.180 ms/op 0.71
altair processBlock - 250000 vs - 7PWei worstcase 39.477 ms/op 46.314 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase hashState 73.575 ms/op 106.56 ms/op 0.69
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6615 ms/op 2.3547 ms/op 0.71
phase0 processBlock - 250000 vs - 7PWei worstcase 23.461 ms/op 28.661 ms/op 0.82
altair processEth1Data - 250000 vs - 7PWei normalcase 290.35 us/op 414.42 us/op 0.70
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.4400 us/op 7.7810 us/op 0.70
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 37.349 us/op 63.096 us/op 0.59
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.1390 us/op 19.856 us/op 0.46
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.8350 us/op 10.514 us/op 0.55
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 158.88 us/op 239.05 us/op 0.66
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3915 ms/op 2.1818 ms/op 0.64
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7427 ms/op 2.8791 ms/op 0.61
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7134 ms/op 2.8848 ms/op 0.59
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6419 ms/op 6.6220 ms/op 0.55
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.8498 ms/op 3.0540 ms/op 0.61
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.7319 ms/op 7.1379 ms/op 0.52
Tree 40 250000 create 367.53 ms/op 794.18 ms/op 0.46
Tree 40 250000 get(125000) 108.16 ns/op 150.31 ns/op 0.72
Tree 40 250000 set(125000) 1.1205 us/op 1.8270 us/op 0.61
Tree 40 250000 toArray() 16.531 ms/op 23.204 ms/op 0.71
Tree 40 250000 iterate all - toArray() + loop 12.360 ms/op 22.587 ms/op 0.55
Tree 40 250000 iterate all - get(i) 42.604 ms/op 63.861 ms/op 0.67
Array 250000 create 1.9916 ms/op 2.9125 ms/op 0.68
Array 250000 clone - spread 632.14 us/op 1.9378 ms/op 0.33
Array 250000 get(125000) 0.57900 ns/op 0.43200 ns/op 1.34
Array 250000 set(125000) 0.59200 ns/op 0.45800 ns/op 1.29
Array 250000 iterate all - loop 77.282 us/op 115.28 us/op 0.67
phase0 afterProcessEpoch - 250000 vs - 7PWei 37.945 ms/op 46.307 ms/op 0.82
Array.fill - length 1000000 2.4216 ms/op 5.0694 ms/op 0.48
Array push - length 1000000 9.9126 ms/op 19.930 ms/op 0.50
Array.get 0.24555 ns/op 0.29774 ns/op 0.82
Uint8Array.get 0.32550 ns/op 0.46171 ns/op 0.70
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.473 ms/op 22.402 ms/op 0.65
altair processEpoch - mainnet_e81889 270.52 ms/op 317.25 ms/op 0.85
mainnet_e81889 - altair beforeProcessEpoch 12.686 ms/op 20.401 ms/op 0.62
mainnet_e81889 - altair processJustificationAndFinalization 5.7660 us/op 5.7890 us/op 1.00
mainnet_e81889 - altair processInactivityUpdates 3.5245 ms/op 4.9980 ms/op 0.71
mainnet_e81889 - altair processRewardsAndPenalties 44.620 ms/op 58.041 ms/op 0.77
mainnet_e81889 - altair processRegistryUpdates 828.00 ns/op 909.00 ns/op 0.91
mainnet_e81889 - altair processSlashings 394.00 ns/op 316.00 ns/op 1.25
mainnet_e81889 - altair processEth1DataReset 387.00 ns/op 264.00 ns/op 1.47
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.0277 ms/op 2.6602 ms/op 0.39
mainnet_e81889 - altair processSlashingsReset 1.2420 us/op 1.4080 us/op 0.88
mainnet_e81889 - altair processRandaoMixesReset 1.3680 us/op 1.4950 us/op 0.92
mainnet_e81889 - altair processHistoricalRootsUpdate 387.00 ns/op 201.00 ns/op 1.93
mainnet_e81889 - altair processParticipationFlagUpdates 709.00 ns/op 573.00 ns/op 1.24
mainnet_e81889 - altair processSyncCommitteeUpdates 353.00 ns/op 152.00 ns/op 2.32
mainnet_e81889 - altair afterProcessEpoch 40.136 ms/op 46.145 ms/op 0.87
capella processEpoch - mainnet_e217614 987.35 ms/op 1.0002 s/op 0.99
mainnet_e217614 - capella beforeProcessEpoch 61.781 ms/op 65.401 ms/op 0.94
mainnet_e217614 - capella processJustificationAndFinalization 4.8840 us/op 5.5490 us/op 0.88
mainnet_e217614 - capella processInactivityUpdates 13.191 ms/op 17.263 ms/op 0.76
mainnet_e217614 - capella processRewardsAndPenalties 187.18 ms/op 185.38 ms/op 1.01
mainnet_e217614 - capella processRegistryUpdates 7.4020 us/op 7.3110 us/op 1.01
mainnet_e217614 - capella processSlashings 403.00 ns/op 195.00 ns/op 2.07
mainnet_e217614 - capella processEth1DataReset 398.00 ns/op 193.00 ns/op 2.06
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.7339 ms/op 4.4104 ms/op 1.07
mainnet_e217614 - capella processSlashingsReset 1.0500 us/op 912.00 ns/op 1.15
mainnet_e217614 - capella processRandaoMixesReset 1.2940 us/op 1.1980 us/op 1.08
mainnet_e217614 - capella processHistoricalRootsUpdate 405.00 ns/op 191.00 ns/op 2.12
mainnet_e217614 - capella processParticipationFlagUpdates 718.00 ns/op 571.00 ns/op 1.26
mainnet_e217614 - capella afterProcessEpoch 112.11 ms/op 119.62 ms/op 0.94
phase0 processEpoch - mainnet_e58758 238.53 ms/op 313.22 ms/op 0.76
mainnet_e58758 - phase0 beforeProcessEpoch 67.127 ms/op 86.151 ms/op 0.78
mainnet_e58758 - phase0 processJustificationAndFinalization 5.8110 us/op 5.6730 us/op 1.02
mainnet_e58758 - phase0 processRewardsAndPenalties 45.459 ms/op 39.565 ms/op 1.15
mainnet_e58758 - phase0 processRegistryUpdates 4.9110 us/op 3.3860 us/op 1.45
mainnet_e58758 - phase0 processSlashings 401.00 ns/op 190.00 ns/op 2.11
mainnet_e58758 - phase0 processEth1DataReset 413.00 ns/op 186.00 ns/op 2.22
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 993.66 us/op 1.5422 ms/op 0.64
mainnet_e58758 - phase0 processSlashingsReset 1.0820 us/op 1.1890 us/op 0.91
mainnet_e58758 - phase0 processRandaoMixesReset 1.2170 us/op 1.2770 us/op 0.95
mainnet_e58758 - phase0 processHistoricalRootsUpdate 400.00 ns/op 193.00 ns/op 2.07
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1730 us/op 938.00 ns/op 1.25
mainnet_e58758 - phase0 afterProcessEpoch 46.717 ms/op 36.906 ms/op 1.27
phase0 processEffectiveBalanceUpdates - 250000 normalcase 949.36 us/op 1.4125 ms/op 0.67
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4137 ms/op 1.9975 ms/op 0.71
altair processInactivityUpdates - 250000 normalcase 16.761 ms/op 21.376 ms/op 0.78
altair processInactivityUpdates - 250000 worstcase 17.878 ms/op 20.526 ms/op 0.87
phase0 processRegistryUpdates - 250000 normalcase 4.6600 us/op 8.9750 us/op 0.52
phase0 processRegistryUpdates - 250000 badcase_full_deposits 299.38 us/op 337.37 us/op 0.89
phase0 processRegistryUpdates - 250000 worstcase 0.5 86.947 ms/op 131.51 ms/op 0.66
altair processRewardsAndPenalties - 250000 normalcase 20.874 ms/op 26.419 ms/op 0.79
altair processRewardsAndPenalties - 250000 worstcase 20.888 ms/op 28.295 ms/op 0.74
phase0 getAttestationDeltas - 250000 normalcase 4.9686 ms/op 10.617 ms/op 0.47
phase0 getAttestationDeltas - 250000 worstcase 5.5554 ms/op 6.3624 ms/op 0.87
phase0 processSlashings - 250000 worstcase 95.939 us/op 108.45 us/op 0.88
altair processSyncCommitteeUpdates - 250000 9.8567 ms/op 12.495 ms/op 0.79
BeaconState.hashTreeRoot - No change 432.00 ns/op 235.00 ns/op 1.84
BeaconState.hashTreeRoot - 1 full validator 80.219 us/op 79.465 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 758.23 us/op 1.2618 ms/op 0.60
BeaconState.hashTreeRoot - 512 full validator 7.8782 ms/op 13.230 ms/op 0.60
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 91.987 us/op 171.44 us/op 0.54
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1712 ms/op 1.7142 ms/op 0.68
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.191 ms/op 23.186 ms/op 0.83
BeaconState.hashTreeRoot - 1 balances 60.678 us/op 79.389 us/op 0.76
BeaconState.hashTreeRoot - 32 balances 654.03 us/op 1.3381 ms/op 0.49
BeaconState.hashTreeRoot - 512 balances 5.9947 ms/op 9.0264 ms/op 0.66
BeaconState.hashTreeRoot - 250000 balances 187.77 ms/op 205.79 ms/op 0.91
aggregationBits - 2048 els - zipIndexesInBitList 19.754 us/op 23.517 us/op 0.84
byteArrayEquals 32 44.954 ns/op 55.365 ns/op 0.81
Buffer.compare 32 14.707 ns/op 17.951 ns/op 0.82
byteArrayEquals 1024 1.2498 us/op 1.6481 us/op 0.76
Buffer.compare 1024 23.664 ns/op 27.106 ns/op 0.87
byteArrayEquals 16384 19.411 us/op 26.377 us/op 0.74
Buffer.compare 16384 190.86 ns/op 213.46 ns/op 0.89
byteArrayEquals 123687377 151.45 ms/op 201.14 ms/op 0.75
Buffer.compare 123687377 4.3900 ms/op 8.9861 ms/op 0.49
byteArrayEquals 32 - diff last byte 47.522 ns/op 54.160 ns/op 0.88
Buffer.compare 32 - diff last byte 16.732 ns/op 18.167 ns/op 0.92
byteArrayEquals 1024 - diff last byte 1.2756 us/op 1.6491 us/op 0.77
Buffer.compare 1024 - diff last byte 23.922 ns/op 26.193 ns/op 0.91
byteArrayEquals 16384 - diff last byte 20.251 us/op 26.139 us/op 0.77
Buffer.compare 16384 - diff last byte 188.15 ns/op 193.13 ns/op 0.97
byteArrayEquals 123687377 - diff last byte 152.30 ms/op 202.67 ms/op 0.75
Buffer.compare 123687377 - diff last byte 4.0537 ms/op 10.827 ms/op 0.37
byteArrayEquals 32 - random bytes 4.7760 ns/op 5.3790 ns/op 0.89
Buffer.compare 32 - random bytes 17.613 ns/op 18.213 ns/op 0.97
byteArrayEquals 1024 - random bytes 4.7580 ns/op 5.4800 ns/op 0.87
Buffer.compare 1024 - random bytes 17.428 ns/op 18.065 ns/op 0.96
byteArrayEquals 16384 - random bytes 4.7890 ns/op 5.4020 ns/op 0.89
Buffer.compare 16384 - random bytes 17.267 ns/op 18.094 ns/op 0.95
byteArrayEquals 123687377 - random bytes 7.5900 ns/op 6.6800 ns/op 1.14
Buffer.compare 123687377 - random bytes 20.980 ns/op 19.980 ns/op 1.05
regular array get 100000 times 30.670 us/op 43.198 us/op 0.71
wrappedArray get 100000 times 30.675 us/op 46.447 us/op 0.66
arrayWithProxy get 100000 times 11.345 ms/op 14.621 ms/op 0.78
ssz.Root.equals 39.177 ns/op 49.482 ns/op 0.79
byteArrayEquals 43.391 ns/op 48.439 ns/op 0.90
Buffer.compare 10.748 ns/op 11.224 ns/op 0.96
processSlot - 1 slots 8.7690 us/op 13.420 us/op 0.65
processSlot - 32 slots 1.8488 ms/op 3.6987 ms/op 0.50
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 1.9674 ms/op 4.9519 ms/op 0.40
getCommitteeAssignments - req 1 vs - 250000 vc 1.8599 ms/op 2.2000 ms/op 0.85
getCommitteeAssignments - req 100 vs - 250000 vc 3.5421 ms/op 4.3150 ms/op 0.82
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7617 ms/op 4.5535 ms/op 0.83
findModifiedValidators - 10000 modified validators 726.44 ms/op 882.00 ms/op 0.82
findModifiedValidators - 1000 modified validators 698.44 ms/op 856.58 ms/op 0.82
findModifiedValidators - 100 modified validators 241.96 ms/op 401.33 ms/op 0.60
findModifiedValidators - 10 modified validators 183.97 ms/op 318.84 ms/op 0.58
findModifiedValidators - 1 modified validators 144.64 ms/op 408.72 ms/op 0.35
findModifiedValidators - no difference 152.39 ms/op 390.41 ms/op 0.39
compare ViewDUs 6.0157 s/op 7.9380 s/op 0.76
compare each validator Uint8Array 1.7080 s/op 1.7090 s/op 1.00
compare ViewDU to Uint8Array 759.24 ms/op 1.1984 s/op 0.63
migrate state 1000000 validators, 24 modified, 0 new 870.33 ms/op 837.52 ms/op 1.04
migrate state 1000000 validators, 1700 modified, 1000 new 1.0736 s/op 1.2473 s/op 0.86
migrate state 1000000 validators, 3400 modified, 2000 new 1.1482 s/op 1.4444 s/op 0.79
migrate state 1500000 validators, 24 modified, 0 new 799.47 ms/op 917.17 ms/op 0.87
migrate state 1500000 validators, 1700 modified, 1000 new 1.0209 s/op 1.0878 s/op 0.94
migrate state 1500000 validators, 3400 modified, 2000 new 1.2383 s/op 1.1982 s/op 1.03
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.9200 ns/op 4.2900 ns/op 1.38
state getBlockRootAtSlot - 250000 vs - 7PWei 517.22 ns/op 566.08 ns/op 0.91
naive computeProposerIndex 100000 validators 42.083 ms/op 50.915 ms/op 0.83
computeProposerIndex 100000 validators 1.2982 ms/op 1.5140 ms/op 0.86
naiveGetNextSyncCommitteeIndices 1000 validators 6.5032 s/op 8.2882 s/op 0.78
getNextSyncCommitteeIndices 1000 validators 93.031 ms/op 114.75 ms/op 0.81
naiveGetNextSyncCommitteeIndices 10000 validators 6.2243 s/op 8.5902 s/op 0.72
getNextSyncCommitteeIndices 10000 validators 92.807 ms/op 121.20 ms/op 0.77
naiveGetNextSyncCommitteeIndices 100000 validators 6.3445 s/op 10.074 s/op 0.63
getNextSyncCommitteeIndices 100000 validators 93.265 ms/op 140.53 ms/op 0.66
naive computeShuffledIndex 100000 validators 19.929 s/op 31.462 s/op 0.63
cached computeShuffledIndex 100000 validators 461.23 ms/op 596.09 ms/op 0.77
naive computeShuffledIndex 2000000 validators 375.09 s/op 485.83 s/op 0.77
cached computeShuffledIndex 2000000 validators 18.063 s/op 46.042 s/op 0.39
computeProposers - vc 250000 524.09 us/op 625.41 us/op 0.84
computeEpochShuffling - vc 250000 36.415 ms/op 41.886 ms/op 0.87
getNextSyncCommittee - vc 250000 8.8297 ms/op 10.705 ms/op 0.82
computeSigningRoot for AttestationData 18.160 us/op 20.098 us/op 0.90
hash AttestationData serialized data then Buffer.toString(base64) 1.1392 us/op 1.5792 us/op 0.72
toHexString serialized data 975.88 ns/op 1.1367 us/op 0.86
Buffer.toString(base64) 104.44 ns/op 159.90 ns/op 0.65
nodejs block root to RootHex using toHex 119.93 ns/op 138.20 ns/op 0.87
nodejs block root to RootHex using toRootHex 77.880 ns/op 90.648 ns/op 0.86
nodejs fromhex(blob) 98.034 ms/op 111.02 ms/op 0.88
nodejs fromHexInto(blob) 78.182 ms/op 93.846 ms/op 0.83
browser block root to RootHex using the deprecated toHexString 195.34 ns/op 211.34 ns/op 0.92
browser block root to RootHex using toHex 159.75 ns/op 171.79 ns/op 0.93
browser block root to RootHex using toRootHex 148.01 ns/op 159.29 ns/op 0.93
browser fromHexInto(blob) 704.96 us/op 821.99 us/op 0.86
browser fromHex(blob) 682.19 ms/op 776.56 ms/op 0.88

by benchmarkbot/action

@wemeetagain
Copy link
Member

🎉 This PR is included in v1.34.1 🎉

@wemeetagain
Copy link
Member

🎉 This PR is included in v1.35.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.

4 participants