Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Nov 4, 2025

We are already including the version (eg. lodestar/v1.36.0), there doesn't seem to be much of a benefit in terms of security to not include the commit hash as well and it helps debugging especially in early devnets or release candidates as there the version number is the same while it might run a different commit.

We do have the --private flag to avoid including any information about the client on p2p.

@nflaig nflaig requested a review from a team as a code owner November 4, 2025 14:14
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @nflaig, 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 enhances the network's reported version information by including the full version string, which is expected to contain the commit hash. This modification provides more precise identification of the running software, significantly aiding in debugging and troubleshooting, especially in dynamic development or testing environments where multiple builds might share the same semantic version.

Highlights

  • Enhanced Network Versioning: The network version string sent over p2p will now include the full version string, which is intended to contain the commit hash, instead of a simplified version number.
  • Improved Debuggability: This change aims to improve debugging capabilities, particularly in environments like testnets or release candidates where the version number might remain constant across different commits, making it easier to identify the exact code running.
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 by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

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 pull request 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.

matthewkeil
matthewkeil previously approved these changes Nov 4, 2025
Copy link
Member

@matthewkeil matthewkeil left a comment

Choose a reason for hiding this comment

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

LGTM!!! 🚀

@matthewkeil matthewkeil enabled auto-merge (squash) November 4, 2025 14:16
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 updates the network version string to include the commit hash, which is a useful enhancement for debugging purposes, particularly with pre-releases. The implementation is straightforward and correct. I have one minor suggestion to update a code comment to reflect the change, ensuring the code remains clear and maintainable. Overall, this is a good improvement.

wemeetagain
wemeetagain previously approved these changes Nov 4, 2025
@nflaig nflaig dismissed stale reviews from wemeetagain and matthewkeil via 108427b November 4, 2025 14:29
@matthewkeil matthewkeil merged commit 782dc5e into unstable Nov 4, 2025
16 of 21 checks passed
@matthewkeil matthewkeil deleted the nflaig/use-version branch November 4, 2025 14:45
@codecov
Copy link

codecov bot commented Nov 4, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 51.96%. Comparing base (f3703b7) to head (108427b).
⚠️ Report is 2 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #8605      +/-   ##
============================================
- Coverage     51.96%   51.96%   -0.01%     
============================================
  Files           848      848              
  Lines         65928    65928              
  Branches       4813     4813              
============================================
- Hits          34261    34258       -3     
- Misses        31599    31602       +3     
  Partials         68       68              
🚀 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.

@github-actions
Copy link
Contributor

github-actions bot commented Nov 4, 2025

⚠️ 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: 3cdbda1 Previous: f3703b7 Ratio
altair processBlock - 250000 vs - 7PWei normalcase 11.111 ms/op 3.0300 ms/op 3.67
Array.fill - length 1000000 9.1608 ms/op 2.5324 ms/op 3.62
Full benchmark results
Benchmark suite Current: 3cdbda1 Previous: f3703b7 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.4351 ms/op 901.67 us/op 1.59
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 50.743 us/op 36.130 us/op 1.40
BLS verify - blst 1.0523 ms/op 862.60 us/op 1.22
BLS verifyMultipleSignatures 3 - blst 1.5346 ms/op 1.4402 ms/op 1.07
BLS verifyMultipleSignatures 8 - blst 2.1292 ms/op 2.4778 ms/op 0.86
BLS verifyMultipleSignatures 32 - blst 6.2596 ms/op 6.1227 ms/op 1.02
BLS verifyMultipleSignatures 64 - blst 11.589 ms/op 11.643 ms/op 1.00
BLS verifyMultipleSignatures 128 - blst 19.312 ms/op 18.124 ms/op 1.07
BLS deserializing 10000 signatures 775.15 ms/op 653.88 ms/op 1.19
BLS deserializing 100000 signatures 7.9526 s/op 6.8138 s/op 1.17
BLS verifyMultipleSignatures - same message - 3 - blst 1.0011 ms/op 982.03 us/op 1.02
BLS verifyMultipleSignatures - same message - 8 - blst 1.2689 ms/op 1.0637 ms/op 1.19
BLS verifyMultipleSignatures - same message - 32 - blst 2.1174 ms/op 1.7412 ms/op 1.22
BLS verifyMultipleSignatures - same message - 64 - blst 2.7833 ms/op 2.5743 ms/op 1.08
BLS verifyMultipleSignatures - same message - 128 - blst 4.7444 ms/op 4.1811 ms/op 1.13
BLS aggregatePubkeys 32 - blst 20.783 us/op 18.259 us/op 1.14
BLS aggregatePubkeys 128 - blst 73.904 us/op 64.280 us/op 1.15
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 62.237 ms/op 58.240 ms/op 1.07
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 55.391 ms/op 57.893 ms/op 0.96
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 45.792 ms/op 43.115 ms/op 1.06
getSlashingsAndExits - default max 82.703 us/op 105.87 us/op 0.78
getSlashingsAndExits - 2k 374.25 us/op 524.64 us/op 0.71
isKnown best case - 1 super set check 233.00 ns/op 428.00 ns/op 0.54
isKnown normal case - 2 super set checks 212.00 ns/op 425.00 ns/op 0.50
isKnown worse case - 16 super set checks 210.00 ns/op 423.00 ns/op 0.50
InMemoryCheckpointStateCache - add get delete 2.5020 us/op 2.6500 us/op 0.94
validate api signedAggregateAndProof - struct 1.6694 ms/op 1.6811 ms/op 0.99
validate gossip signedAggregateAndProof - struct 1.5083 ms/op 1.7316 ms/op 0.87
batch validate gossip attestation - vc 640000 - chunk 32 122.77 us/op 136.99 us/op 0.90
batch validate gossip attestation - vc 640000 - chunk 64 115.22 us/op 125.89 us/op 0.92
batch validate gossip attestation - vc 640000 - chunk 128 107.56 us/op 124.79 us/op 0.86
batch validate gossip attestation - vc 640000 - chunk 256 106.13 us/op 130.62 us/op 0.81
pickEth1Vote - no votes 1.0303 ms/op 801.77 us/op 1.29
pickEth1Vote - max votes 6.2997 ms/op 10.991 ms/op 0.57
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.785 ms/op 14.259 ms/op 0.90
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 18.403 ms/op 24.475 ms/op 0.75
pickEth1Vote - Eth1Data fastSerialize value x2048 456.55 us/op 369.26 us/op 1.24
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.3000 ms/op 2.3115 ms/op 1.00
bytes32 toHexString 377.00 ns/op 548.00 ns/op 0.69
bytes32 Buffer.toString(hex) 281.00 ns/op 544.00 ns/op 0.52
bytes32 Buffer.toString(hex) from Uint8Array 343.00 ns/op 806.00 ns/op 0.43
bytes32 Buffer.toString(hex) + 0x 284.00 ns/op 655.00 ns/op 0.43
Object access 1 prop 0.12600 ns/op 0.44700 ns/op 0.28
Map access 1 prop 0.12600 ns/op 0.40500 ns/op 0.31
Object get x1000 6.0890 ns/op 5.2220 ns/op 1.17
Map get x1000 6.3870 ns/op 6.0420 ns/op 1.06
Object set x1000 29.822 ns/op 23.946 ns/op 1.25
Map set x1000 20.676 ns/op 29.447 ns/op 0.70
Return object 10000 times 0.30180 ns/op 0.40840 ns/op 0.74
Throw Error 10000 times 4.5210 us/op 5.8825 us/op 0.77
toHex 158.20 ns/op 109.03 ns/op 1.45
Buffer.from 133.95 ns/op 97.648 ns/op 1.37
shared Buffer 87.013 ns/op 70.333 ns/op 1.24
fastMsgIdFn sha256 / 200 bytes 2.3760 us/op 3.6340 us/op 0.65
fastMsgIdFn h32 xxhash / 200 bytes 204.00 ns/op 616.00 ns/op 0.33
fastMsgIdFn h64 xxhash / 200 bytes 267.00 ns/op 536.00 ns/op 0.50
fastMsgIdFn sha256 / 1000 bytes 7.2290 us/op 5.9770 us/op 1.21
fastMsgIdFn h32 xxhash / 1000 bytes 335.00 ns/op 544.00 ns/op 0.62
fastMsgIdFn h64 xxhash / 1000 bytes 335.00 ns/op 680.00 ns/op 0.49
fastMsgIdFn sha256 / 10000 bytes 65.818 us/op 50.955 us/op 1.29
fastMsgIdFn h32 xxhash / 10000 bytes 1.8510 us/op 1.9990 us/op 0.93
fastMsgIdFn h64 xxhash / 10000 bytes 1.1960 us/op 1.4070 us/op 0.85
100 bytes - compress - snappyjs 1.7352 us/op 2.4030 us/op 0.72
100 bytes - compress - snappy 1.2625 us/op 1.2272 us/op 1.03
100 bytes - compress - #snappy 1.7464 us/op 1.2661 us/op 1.38
200 bytes - compress - snappyjs 2.3021 us/op 1.9856 us/op 1.16
200 bytes - compress - snappy 1.2486 us/op 982.98 ns/op 1.27
200 bytes - compress - #snappy 1.8336 us/op 2.2405 us/op 0.82
300 bytes - compress - snappyjs 2.3813 us/op 2.2903 us/op 1.04
300 bytes - compress - snappy 1.4192 us/op 1.2678 us/op 1.12
300 bytes - compress - #snappy 2.7537 us/op 3.4372 us/op 0.80
400 bytes - compress - snappyjs 2.6817 us/op 2.8545 us/op 0.94
400 bytes - compress - snappy 1.3000 us/op 1.2042 us/op 1.08
400 bytes - compress - #snappy 2.7617 us/op 2.1810 us/op 1.27
500 bytes - compress - snappyjs 3.3079 us/op 3.1968 us/op 1.03
500 bytes - compress - snappy 1.3694 us/op 1.3529 us/op 1.01
500 bytes - compress - #snappy 3.2110 us/op 3.3396 us/op 0.96
1000 bytes - compress - snappyjs 4.9370 us/op 4.2979 us/op 1.15
1000 bytes - compress - snappy 1.5974 us/op 1.5782 us/op 1.01
1000 bytes - compress - #snappy 4.4218 us/op 4.8088 us/op 0.92
10000 bytes - compress - snappyjs 30.484 us/op 30.061 us/op 1.01
10000 bytes - compress - snappy 26.415 us/op 24.891 us/op 1.06
10000 bytes - compress - #snappy 30.575 us/op 26.223 us/op 1.17
100 bytes - uncompress - snappyjs 1.1660 us/op 1.0679 us/op 1.09
100 bytes - uncompress - snappy 1.0754 us/op 869.59 ns/op 1.24
100 bytes - uncompress - #snappy 943.48 ns/op 702.28 ns/op 1.34
200 bytes - uncompress - snappyjs 1.2806 us/op 804.69 ns/op 1.59
200 bytes - uncompress - snappy 1.3524 us/op 903.44 ns/op 1.50
200 bytes - uncompress - #snappy 886.07 ns/op 1.2105 us/op 0.73
300 bytes - uncompress - snappyjs 1.1600 us/op 1.2637 us/op 0.92
300 bytes - uncompress - snappy 1.1420 us/op 974.43 ns/op 1.17
300 bytes - uncompress - #snappy 1.1292 us/op 1.3228 us/op 0.85
400 bytes - uncompress - snappyjs 1.3015 us/op 2.3044 us/op 0.56
400 bytes - uncompress - snappy 1.1097 us/op 986.12 ns/op 1.13
400 bytes - uncompress - #snappy 1.8562 us/op 1.7765 us/op 1.04
500 bytes - uncompress - snappyjs 2.1997 us/op 1.8582 us/op 1.18
500 bytes - uncompress - snappy 1.2186 us/op 1.3788 us/op 0.88
500 bytes - uncompress - #snappy 1.2953 us/op 1.1571 us/op 1.12
1000 bytes - uncompress - snappyjs 1.8742 us/op 2.3041 us/op 0.81
1000 bytes - uncompress - snappy 1.5913 us/op 1.5170 us/op 1.05
1000 bytes - uncompress - #snappy 2.4157 us/op 1.8653 us/op 1.30
10000 bytes - uncompress - snappyjs 15.129 us/op 13.244 us/op 1.14
10000 bytes - uncompress - snappy 34.328 us/op 54.816 us/op 0.63
10000 bytes - uncompress - #snappy 14.354 us/op 14.396 us/op 1.00
send data - 1000 256B messages 19.685 ms/op 15.113 ms/op 1.30
send data - 1000 512B messages 21.605 ms/op 20.886 ms/op 1.03
send data - 1000 1024B messages 30.995 ms/op 31.538 ms/op 0.98
send data - 1000 1200B messages 33.897 ms/op 30.201 ms/op 1.12
send data - 1000 2048B messages 32.080 ms/op 31.017 ms/op 1.03
send data - 1000 4096B messages 32.461 ms/op 33.387 ms/op 0.97
send data - 1000 16384B messages 52.034 ms/op 40.218 ms/op 1.29
send data - 1000 65536B messages 125.24 ms/op 108.28 ms/op 1.16
enrSubnets - fastDeserialize 64 bits 926.00 ns/op 984.00 ns/op 0.94
enrSubnets - ssz BitVector 64 bits 331.00 ns/op 500.00 ns/op 0.66
enrSubnets - fastDeserialize 4 bits 143.00 ns/op 323.00 ns/op 0.44
enrSubnets - ssz BitVector 4 bits 334.00 ns/op 501.00 ns/op 0.67
prioritizePeers score -10:0 att 32-0.1 sync 2-0 245.86 us/op 203.84 us/op 1.21
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 278.83 us/op 254.70 us/op 1.09
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 416.62 us/op 391.04 us/op 1.07
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 767.85 us/op 714.43 us/op 1.07
prioritizePeers score 0:0 att 64-1 sync 4-1 931.41 us/op 878.12 us/op 1.06
array of 16000 items push then shift 1.6630 us/op 1.3059 us/op 1.27
LinkedList of 16000 items push then shift 8.0320 ns/op 6.9360 ns/op 1.16
array of 16000 items push then pop 80.701 ns/op 74.267 ns/op 1.09
LinkedList of 16000 items push then pop 8.0560 ns/op 6.2380 ns/op 1.29
array of 24000 items push then shift 2.4925 us/op 1.9132 us/op 1.30
LinkedList of 24000 items push then shift 7.8590 ns/op 6.5030 ns/op 1.21
array of 24000 items push then pop 110.99 ns/op 98.867 ns/op 1.12
LinkedList of 24000 items push then pop 8.1880 ns/op 6.5130 ns/op 1.26
intersect bitArray bitLen 8 6.5110 ns/op 5.5200 ns/op 1.18
intersect array and set length 8 40.661 ns/op 33.084 ns/op 1.23
intersect bitArray bitLen 128 30.692 ns/op 26.515 ns/op 1.16
intersect array and set length 128 652.21 ns/op 577.52 ns/op 1.13
bitArray.getTrueBitIndexes() bitLen 128 1.1580 us/op 1.2110 us/op 0.96
bitArray.getTrueBitIndexes() bitLen 248 1.8340 us/op 2.0020 us/op 0.92
bitArray.getTrueBitIndexes() bitLen 512 3.7800 us/op 3.8500 us/op 0.98
Full columns - reconstruct all 6 blobs 122.53 us/op 68.934 us/op 1.78
Full columns - reconstruct half of the blobs out of 6 49.826 us/op 35.578 us/op 1.40
Full columns - reconstruct single blob out of 6 22.159 us/op 16.546 us/op 1.34
Half columns - reconstruct all 6 blobs 301.30 ms/op 239.62 ms/op 1.26
Half columns - reconstruct half of the blobs out of 6 149.22 ms/op 121.90 ms/op 1.22
Half columns - reconstruct single blob out of 6 57.562 ms/op 45.662 ms/op 1.26
Full columns - reconstruct all 10 blobs 169.93 us/op 83.433 us/op 2.04
Full columns - reconstruct half of the blobs out of 10 82.921 us/op 42.396 us/op 1.96
Full columns - reconstruct single blob out of 10 22.664 us/op 12.725 us/op 1.78
Half columns - reconstruct all 10 blobs 482.25 ms/op 406.96 ms/op 1.19
Half columns - reconstruct half of the blobs out of 10 241.20 ms/op 218.83 ms/op 1.10
Half columns - reconstruct single blob out of 10 53.205 ms/op 50.212 ms/op 1.06
Full columns - reconstruct all 20 blobs 335.42 us/op 263.70 us/op 1.27
Full columns - reconstruct half of the blobs out of 20 175.81 us/op 152.37 us/op 1.15
Full columns - reconstruct single blob out of 20 24.181 us/op 19.596 us/op 1.23
Half columns - reconstruct all 20 blobs 980.56 ms/op 809.19 ms/op 1.21
Half columns - reconstruct half of the blobs out of 20 508.84 ms/op 408.91 ms/op 1.24
Half columns - reconstruct single blob out of 20 67.045 ms/op 46.019 ms/op 1.46
Buffer.concat 32 items 718.00 ns/op 762.00 ns/op 0.94
Uint8Array.set 32 items 1.7360 us/op 1.2020 us/op 1.44
Buffer.copy 2.9600 us/op 2.1780 us/op 1.36
Uint8Array.set - with subarray 3.7880 us/op 1.6900 us/op 2.24
Uint8Array.set - without subarray 1.6880 us/op 1.0950 us/op 1.54
getUint32 - dataview 211.00 ns/op 375.00 ns/op 0.56
getUint32 - manual 137.00 ns/op 345.00 ns/op 0.40
Set add up to 64 items then delete first 3.1837 us/op 1.7975 us/op 1.77
OrderedSet add up to 64 items then delete first 4.9660 us/op 2.8270 us/op 1.76
Set add up to 64 items then delete last 2.8349 us/op 1.9013 us/op 1.49
OrderedSet add up to 64 items then delete last 5.0484 us/op 3.2519 us/op 1.55
Set add up to 64 items then delete middle 3.3289 us/op 1.8990 us/op 1.75
OrderedSet add up to 64 items then delete middle 6.7950 us/op 5.3853 us/op 1.26
Set add up to 128 items then delete first 7.0757 us/op 5.1623 us/op 1.37
OrderedSet add up to 128 items then delete first 11.361 us/op 7.5455 us/op 1.51
Set add up to 128 items then delete last 6.5947 us/op 4.6689 us/op 1.41
OrderedSet add up to 128 items then delete last 10.635 us/op 6.6826 us/op 1.59
Set add up to 128 items then delete middle 6.7378 us/op 4.2396 us/op 1.59
OrderedSet add up to 128 items then delete middle 17.733 us/op 12.589 us/op 1.41
Set add up to 256 items then delete first 13.664 us/op 7.9180 us/op 1.73
OrderedSet add up to 256 items then delete first 22.708 us/op 12.551 us/op 1.81
Set add up to 256 items then delete last 14.072 us/op 8.2841 us/op 1.70
OrderedSet add up to 256 items then delete last 20.181 us/op 16.210 us/op 1.24
Set add up to 256 items then delete middle 12.949 us/op 10.157 us/op 1.27
OrderedSet add up to 256 items then delete middle 50.975 us/op 38.465 us/op 1.33
transfer serialized Status (84 B) 2.5610 us/op 2.2480 us/op 1.14
copy serialized Status (84 B) 1.7220 us/op 1.3350 us/op 1.29
transfer serialized SignedVoluntaryExit (112 B) 2.5760 us/op 2.2100 us/op 1.17
copy serialized SignedVoluntaryExit (112 B) 1.4450 us/op 1.5170 us/op 0.95
transfer serialized ProposerSlashing (416 B) 2.6470 us/op 3.2790 us/op 0.81
copy serialized ProposerSlashing (416 B) 2.2170 us/op 1.5130 us/op 1.47
transfer serialized Attestation (485 B) 3.5110 us/op 2.2070 us/op 1.59
copy serialized Attestation (485 B) 2.1260 us/op 1.4540 us/op 1.46
transfer serialized AttesterSlashing (33232 B) 2.8290 us/op 2.3170 us/op 1.22
copy serialized AttesterSlashing (33232 B) 6.1330 us/op 3.7000 us/op 1.66
transfer serialized Small SignedBeaconBlock (128000 B) 4.4650 us/op 3.7660 us/op 1.19
copy serialized Small SignedBeaconBlock (128000 B) 14.859 us/op 7.7830 us/op 1.91
transfer serialized Avg SignedBeaconBlock (200000 B) 4.3100 us/op 3.5030 us/op 1.23
copy serialized Avg SignedBeaconBlock (200000 B) 23.233 us/op 11.177 us/op 2.08
transfer serialized BlobsSidecar (524380 B) 5.2380 us/op 5.5860 us/op 0.94
copy serialized BlobsSidecar (524380 B) 77.070 us/op 61.362 us/op 1.26
transfer serialized Big SignedBeaconBlock (1000000 B) 6.0820 us/op 5.5810 us/op 1.09
copy serialized Big SignedBeaconBlock (1000000 B) 149.17 us/op 166.28 us/op 0.90
pass gossip attestations to forkchoice per slot 2.9098 ms/op 2.3494 ms/op 1.24
forkChoice updateHead vc 100000 bc 64 eq 0 496.91 us/op 385.98 us/op 1.29
forkChoice updateHead vc 600000 bc 64 eq 0 3.0068 ms/op 2.2841 ms/op 1.32
forkChoice updateHead vc 1000000 bc 64 eq 0 4.9889 ms/op 3.8393 ms/op 1.30
forkChoice updateHead vc 600000 bc 320 eq 0 3.0901 ms/op 2.2914 ms/op 1.35
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1216 ms/op 2.3570 ms/op 1.32
forkChoice updateHead vc 600000 bc 7200 eq 0 3.2772 ms/op 2.5970 ms/op 1.26
forkChoice updateHead vc 600000 bc 64 eq 1000 2.9548 ms/op 2.4355 ms/op 1.21
forkChoice updateHead vc 600000 bc 64 eq 10000 3.2615 ms/op 2.5046 ms/op 1.30
forkChoice updateHead vc 600000 bc 64 eq 300000 10.479 ms/op 8.0665 ms/op 1.30
computeDeltas 1400000 validators 0% inactive 14.500 ms/op 11.079 ms/op 1.31
computeDeltas 1400000 validators 10% inactive 13.309 ms/op 11.499 ms/op 1.16
computeDeltas 1400000 validators 20% inactive 12.576 ms/op 9.4590 ms/op 1.33
computeDeltas 1400000 validators 50% inactive 9.3975 ms/op 7.3416 ms/op 1.28
computeDeltas 2100000 validators 0% inactive 22.149 ms/op 16.520 ms/op 1.34
computeDeltas 2100000 validators 10% inactive 20.571 ms/op 16.399 ms/op 1.25
computeDeltas 2100000 validators 20% inactive 18.597 ms/op 16.611 ms/op 1.12
computeDeltas 2100000 validators 50% inactive 14.129 ms/op 11.277 ms/op 1.25
altair processAttestation - 250000 vs - 7PWei normalcase 3.7283 ms/op 1.6533 ms/op 2.26
altair processAttestation - 250000 vs - 7PWei worstcase 4.2997 ms/op 2.3873 ms/op 1.80
altair processAttestation - setStatus - 1/6 committees join 157.99 us/op 100.64 us/op 1.57
altair processAttestation - setStatus - 1/3 committees join 295.17 us/op 174.17 us/op 1.69
altair processAttestation - setStatus - 1/2 committees join 388.16 us/op 263.19 us/op 1.47
altair processAttestation - setStatus - 2/3 committees join 540.33 us/op 327.94 us/op 1.65
altair processAttestation - setStatus - 4/5 committees join 824.32 us/op 492.39 us/op 1.67
altair processAttestation - setStatus - 100% committees join 936.84 us/op 589.99 us/op 1.59
altair processBlock - 250000 vs - 7PWei normalcase 11.111 ms/op 3.0300 ms/op 3.67
altair processBlock - 250000 vs - 7PWei normalcase hashState 34.039 ms/op 24.526 ms/op 1.39
altair processBlock - 250000 vs - 7PWei worstcase 45.374 ms/op 29.835 ms/op 1.52
altair processBlock - 250000 vs - 7PWei worstcase hashState 92.759 ms/op 81.441 ms/op 1.14
phase0 processBlock - 250000 vs - 7PWei normalcase 2.2952 ms/op 1.8824 ms/op 1.22
phase0 processBlock - 250000 vs - 7PWei worstcase 31.479 ms/op 26.299 ms/op 1.20
altair processEth1Data - 250000 vs - 7PWei normalcase 406.13 us/op 295.27 us/op 1.38
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 8.6650 us/op 5.4440 us/op 1.59
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 66.615 us/op 34.065 us/op 1.96
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 17.060 us/op 9.2900 us/op 1.84
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 9.6510 us/op 4.0980 us/op 2.36
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 237.09 us/op 142.31 us/op 1.67
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 2.2087 ms/op 1.3403 ms/op 1.65
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 3.0623 ms/op 1.6586 ms/op 1.85
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.9815 ms/op 1.6484 ms/op 1.81
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 7.5469 ms/op 3.6209 ms/op 2.08
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.9303 ms/op 1.8030 ms/op 1.63
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 6.5948 ms/op 3.7056 ms/op 1.78
Tree 40 250000 create 681.32 ms/op 360.37 ms/op 1.89
Tree 40 250000 get(125000) 150.50 ns/op 115.57 ns/op 1.30
Tree 40 250000 set(125000) 1.8121 us/op 1.2723 us/op 1.42
Tree 40 250000 toArray() 24.262 ms/op 9.8690 ms/op 2.46
Tree 40 250000 iterate all - toArray() + loop 27.747 ms/op 9.9103 ms/op 2.80
Tree 40 250000 iterate all - get(i) 67.339 ms/op 40.883 ms/op 1.65
Array 250000 create 4.6582 ms/op 2.3950 ms/op 1.95
Array 250000 clone - spread 1.7182 ms/op 646.72 us/op 2.66
Array 250000 get(125000) 0.45300 ns/op 0.57200 ns/op 0.79
Array 250000 set(125000) 0.47600 ns/op 0.57600 ns/op 0.83
Array 250000 iterate all - loop 92.475 us/op 74.573 us/op 1.24
phase0 afterProcessEpoch - 250000 vs - 7PWei 46.729 ms/op 37.537 ms/op 1.24
Array.fill - length 1000000 9.1608 ms/op 2.5324 ms/op 3.62
Array push - length 1000000 24.827 ms/op 9.3622 ms/op 2.65
Array.get 0.33903 ns/op 0.25145 ns/op 1.35
Uint8Array.get 0.47836 ns/op 0.32707 ns/op 1.46
phase0 beforeProcessEpoch - 250000 vs - 7PWei 22.939 ms/op 14.731 ms/op 1.56
altair processEpoch - mainnet_e81889 340.32 ms/op 273.49 ms/op 1.24
mainnet_e81889 - altair beforeProcessEpoch 19.440 ms/op 15.585 ms/op 1.25
mainnet_e81889 - altair processJustificationAndFinalization 6.2520 us/op 4.6350 us/op 1.35
mainnet_e81889 - altair processInactivityUpdates 6.0176 ms/op 3.4202 ms/op 1.76
mainnet_e81889 - altair processRewardsAndPenalties 63.524 ms/op 32.129 ms/op 1.98
mainnet_e81889 - altair processRegistryUpdates 1.2180 us/op 844.00 ns/op 1.44
mainnet_e81889 - altair processSlashings 270.00 ns/op 394.00 ns/op 0.69
mainnet_e81889 - altair processEth1DataReset 303.00 ns/op 390.00 ns/op 0.78
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.9169 ms/op 1.0176 ms/op 1.88
mainnet_e81889 - altair processSlashingsReset 1.4990 us/op 991.00 ns/op 1.51
mainnet_e81889 - altair processRandaoMixesReset 1.4380 us/op 1.3850 us/op 1.04
mainnet_e81889 - altair processHistoricalRootsUpdate 251.00 ns/op 393.00 ns/op 0.64
mainnet_e81889 - altair processParticipationFlagUpdates 839.00 ns/op 673.00 ns/op 1.25
mainnet_e81889 - altair processSyncCommitteeUpdates 260.00 ns/op 359.00 ns/op 0.72
mainnet_e81889 - altair afterProcessEpoch 47.685 ms/op 39.700 ms/op 1.20
capella processEpoch - mainnet_e217614 1.0148 s/op 797.48 ms/op 1.27
mainnet_e217614 - capella beforeProcessEpoch 61.004 ms/op 60.581 ms/op 1.01
mainnet_e217614 - capella processJustificationAndFinalization 5.4280 us/op 4.8390 us/op 1.12
mainnet_e217614 - capella processInactivityUpdates 15.470 ms/op 12.766 ms/op 1.21
mainnet_e217614 - capella processRewardsAndPenalties 198.73 ms/op 195.81 ms/op 1.01
mainnet_e217614 - capella processRegistryUpdates 7.3680 us/op 5.3390 us/op 1.38
mainnet_e217614 - capella processSlashings 195.00 ns/op 388.00 ns/op 0.50
mainnet_e217614 - capella processEth1DataReset 191.00 ns/op 386.00 ns/op 0.49
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2619 ms/op 3.2541 ms/op 1.31
mainnet_e217614 - capella processSlashingsReset 969.00 ns/op 1.0170 us/op 0.95
mainnet_e217614 - capella processRandaoMixesReset 1.2760 us/op 1.2000 us/op 1.06
mainnet_e217614 - capella processHistoricalRootsUpdate 205.00 ns/op 401.00 ns/op 0.51
mainnet_e217614 - capella processParticipationFlagUpdates 612.00 ns/op 727.00 ns/op 0.84
mainnet_e217614 - capella afterProcessEpoch 119.27 ms/op 104.70 ms/op 1.14
phase0 processEpoch - mainnet_e58758 316.81 ms/op 294.14 ms/op 1.08
mainnet_e58758 - phase0 beforeProcessEpoch 88.944 ms/op 88.118 ms/op 1.01
mainnet_e58758 - phase0 processJustificationAndFinalization 6.6280 us/op 4.7620 us/op 1.39
mainnet_e58758 - phase0 processRewardsAndPenalties 42.393 ms/op 39.259 ms/op 1.08
mainnet_e58758 - phase0 processRegistryUpdates 3.2410 us/op 3.3250 us/op 0.97
mainnet_e58758 - phase0 processSlashings 235.00 ns/op 388.00 ns/op 0.61
mainnet_e58758 - phase0 processEth1DataReset 188.00 ns/op 390.00 ns/op 0.48
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.5662 ms/op 959.74 us/op 1.63
mainnet_e58758 - phase0 processSlashingsReset 1.0410 us/op 996.00 ns/op 1.05
mainnet_e58758 - phase0 processRandaoMixesReset 1.6220 us/op 1.3150 us/op 1.23
mainnet_e58758 - phase0 processHistoricalRootsUpdate 188.00 ns/op 385.00 ns/op 0.49
mainnet_e58758 - phase0 processParticipationRecordUpdates 911.00 ns/op 1.2030 us/op 0.76
mainnet_e58758 - phase0 afterProcessEpoch 36.558 ms/op 33.268 ms/op 1.10
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.8199 ms/op 1.0971 ms/op 1.66
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.0768 ms/op 2.5359 ms/op 0.82
altair processInactivityUpdates - 250000 normalcase 20.988 ms/op 17.541 ms/op 1.20
altair processInactivityUpdates - 250000 worstcase 20.398 ms/op 20.582 ms/op 0.99
phase0 processRegistryUpdates - 250000 normalcase 12.136 us/op 4.9590 us/op 2.45
phase0 processRegistryUpdates - 250000 badcase_full_deposits 422.92 us/op 295.90 us/op 1.43
phase0 processRegistryUpdates - 250000 worstcase 0.5 127.31 ms/op 109.02 ms/op 1.17
altair processRewardsAndPenalties - 250000 normalcase 32.891 ms/op 30.249 ms/op 1.09
altair processRewardsAndPenalties - 250000 worstcase 34.400 ms/op 29.174 ms/op 1.18
phase0 getAttestationDeltas - 250000 normalcase 7.0452 ms/op 5.6750 ms/op 1.24
phase0 getAttestationDeltas - 250000 worstcase 5.8689 ms/op 5.0731 ms/op 1.16
phase0 processSlashings - 250000 worstcase 112.82 us/op 96.902 us/op 1.16
altair processSyncCommitteeUpdates - 250000 11.269 ms/op 9.8072 ms/op 1.15
BeaconState.hashTreeRoot - No change 231.00 ns/op 427.00 ns/op 0.54
BeaconState.hashTreeRoot - 1 full validator 74.074 us/op 62.653 us/op 1.18
BeaconState.hashTreeRoot - 32 full validator 882.19 us/op 1.1367 ms/op 0.78
BeaconState.hashTreeRoot - 512 full validator 9.9535 ms/op 7.6869 ms/op 1.29
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 109.96 us/op 76.074 us/op 1.45
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.2797 ms/op 1.3278 ms/op 1.72
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 25.740 ms/op 14.985 ms/op 1.72
BeaconState.hashTreeRoot - 1 balances 111.10 us/op 65.598 us/op 1.69
BeaconState.hashTreeRoot - 32 balances 802.46 us/op 675.34 us/op 1.19
BeaconState.hashTreeRoot - 512 balances 8.0947 ms/op 5.6417 ms/op 1.43
BeaconState.hashTreeRoot - 250000 balances 176.14 ms/op 163.70 ms/op 1.08
aggregationBits - 2048 els - zipIndexesInBitList 21.357 us/op 18.987 us/op 1.12
byteArrayEquals 32 53.941 ns/op 45.960 ns/op 1.17
Buffer.compare 32 17.271 ns/op 14.670 ns/op 1.18
byteArrayEquals 1024 1.5740 us/op 1.2087 us/op 1.30
Buffer.compare 1024 25.130 ns/op 21.312 ns/op 1.18
byteArrayEquals 16384 24.887 us/op 19.242 us/op 1.29
Buffer.compare 16384 198.66 ns/op 186.99 ns/op 1.06
byteArrayEquals 123687377 192.27 ms/op 148.02 ms/op 1.30
Buffer.compare 123687377 6.9498 ms/op 5.5233 ms/op 1.26
byteArrayEquals 32 - diff last byte 52.734 ns/op 40.459 ns/op 1.30
Buffer.compare 32 - diff last byte 17.043 ns/op 14.326 ns/op 1.19
byteArrayEquals 1024 - diff last byte 1.5986 us/op 1.1509 us/op 1.39
Buffer.compare 1024 - diff last byte 24.963 ns/op 21.092 ns/op 1.18
byteArrayEquals 16384 - diff last byte 25.282 us/op 18.223 us/op 1.39
Buffer.compare 16384 - diff last byte 187.55 ns/op 183.23 ns/op 1.02
byteArrayEquals 123687377 - diff last byte 195.33 ms/op 145.23 ms/op 1.34
Buffer.compare 123687377 - diff last byte 9.3771 ms/op 4.1624 ms/op 2.25
byteArrayEquals 32 - random bytes 5.2650 ns/op 4.8470 ns/op 1.09
Buffer.compare 32 - random bytes 17.695 ns/op 16.727 ns/op 1.06
byteArrayEquals 1024 - random bytes 5.3100 ns/op 4.8270 ns/op 1.10
Buffer.compare 1024 - random bytes 17.534 ns/op 17.252 ns/op 1.02
byteArrayEquals 16384 - random bytes 5.4800 ns/op 4.7860 ns/op 1.15
Buffer.compare 16384 - random bytes 17.574 ns/op 17.217 ns/op 1.02
byteArrayEquals 123687377 - random bytes 7.3000 ns/op 7.6500 ns/op 0.95
Buffer.compare 123687377 - random bytes 21.060 ns/op 20.000 ns/op 1.05
regular array get 100000 times 34.059 us/op 30.441 us/op 1.12
wrappedArray get 100000 times 34.579 us/op 29.013 us/op 1.19
arrayWithProxy get 100000 times 14.805 ms/op 8.5857 ms/op 1.72
ssz.Root.equals 48.356 ns/op 41.706 ns/op 1.16
byteArrayEquals 47.563 ns/op 40.854 ns/op 1.16
Buffer.compare 11.011 ns/op 8.4220 ns/op 1.31
processSlot - 1 slots 10.794 us/op 8.4480 us/op 1.28
processSlot - 32 slots 2.3455 ms/op 3.0565 ms/op 0.77
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.5429 ms/op 3.0840 ms/op 1.15
getCommitteeAssignments - req 1 vs - 250000 vc 2.2153 ms/op 1.7814 ms/op 1.24
getCommitteeAssignments - req 100 vs - 250000 vc 4.5397 ms/op 3.4997 ms/op 1.30
getCommitteeAssignments - req 1000 vs - 250000 vc 4.6317 ms/op 3.7321 ms/op 1.24
findModifiedValidators - 10000 modified validators 823.52 ms/op 754.67 ms/op 1.09
findModifiedValidators - 1000 modified validators 798.00 ms/op 646.92 ms/op 1.23
findModifiedValidators - 100 modified validators 325.80 ms/op 156.88 ms/op 2.08
findModifiedValidators - 10 modified validators 171.02 ms/op 122.38 ms/op 1.40
findModifiedValidators - 1 modified validators 213.28 ms/op 174.39 ms/op 1.22
findModifiedValidators - no difference 266.30 ms/op 150.03 ms/op 1.77
compare ViewDUs 7.1229 s/op 6.1052 s/op 1.17
compare each validator Uint8Array 1.6978 s/op 1.5277 s/op 1.11
compare ViewDU to Uint8Array 1.2836 s/op 744.29 ms/op 1.72
migrate state 1000000 validators, 24 modified, 0 new 836.43 ms/op 828.32 ms/op 1.01
migrate state 1000000 validators, 1700 modified, 1000 new 1.3421 s/op 1.0424 s/op 1.29
migrate state 1000000 validators, 3400 modified, 2000 new 1.4440 s/op 1.2620 s/op 1.14
migrate state 1500000 validators, 24 modified, 0 new 994.15 ms/op 774.21 ms/op 1.28
migrate state 1500000 validators, 1700 modified, 1000 new 1.2957 s/op 1.1810 s/op 1.10
migrate state 1500000 validators, 3400 modified, 2000 new 1.6310 s/op 1.3433 s/op 1.21
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.2500 ns/op 6.0400 ns/op 0.70
state getBlockRootAtSlot - 250000 vs - 7PWei 722.33 ns/op 336.68 ns/op 2.15
naive computeProposerIndex 100000 validators 61.620 ms/op 44.963 ms/op 1.37
computeProposerIndex 100000 validators 1.6020 ms/op 1.3610 ms/op 1.18
naiveGetNextSyncCommitteeIndices 1000 validators 8.8121 s/op 6.3704 s/op 1.38
getNextSyncCommitteeIndices 1000 validators 140.72 ms/op 100.69 ms/op 1.40
naiveGetNextSyncCommitteeIndices 10000 validators 9.1720 s/op 6.2979 s/op 1.46
getNextSyncCommitteeIndices 10000 validators 123.75 ms/op 102.63 ms/op 1.21
naiveGetNextSyncCommitteeIndices 100000 validators 10.833 s/op 6.5856 s/op 1.64
getNextSyncCommitteeIndices 100000 validators 123.15 ms/op 104.18 ms/op 1.18
naive computeShuffledIndex 100000 validators 25.477 s/op 19.633 s/op 1.30
cached computeShuffledIndex 100000 validators 582.35 ms/op 469.26 ms/op 1.24
naive computeShuffledIndex 2000000 validators 525.80 s/op 415.56 s/op 1.27
cached computeShuffledIndex 2000000 validators 51.374 s/op 24.515 s/op 2.10
computeProposers - vc 250000 612.42 us/op 537.72 us/op 1.14
computeEpochShuffling - vc 250000 43.455 ms/op 39.171 ms/op 1.11
getNextSyncCommittee - vc 250000 11.601 ms/op 10.033 ms/op 1.16
computeSigningRoot for AttestationData 20.743 us/op 20.314 us/op 1.02
hash AttestationData serialized data then Buffer.toString(base64) 1.6739 us/op 1.1743 us/op 1.43
toHexString serialized data 1.3175 us/op 1.3254 us/op 0.99
Buffer.toString(base64) 152.75 ns/op 113.17 ns/op 1.35
nodejs block root to RootHex using toHex 167.67 ns/op 113.16 ns/op 1.48
nodejs block root to RootHex using toRootHex 97.860 ns/op 74.422 ns/op 1.31
nodejs fromHex(blob) 121.14 us/op 109.05 us/op 1.11
nodejs fromHexInto(blob) 836.97 us/op 706.42 us/op 1.18
nodejs block root to RootHex using the deprecated toHexString 225.42 ns/op 187.78 ns/op 1.20
browser block root to RootHex using toHex 189.36 ns/op 159.23 ns/op 1.19
browser block root to RootHex using toRootHex 168.91 ns/op 158.08 ns/op 1.07
browser fromHex(blob) 806.00 us/op 679.01 us/op 1.19
browser fromHexInto(blob) 835.72 us/op 714.04 us/op 1.17
browser block root to RootHex using the deprecated toHexString 843.80 ns/op 785.97 ns/op 1.07

by benchmarkbot/action

@philknows philknows mentioned this pull request Nov 4, 2025
@wemeetagain
Copy link
Member

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