这是indexloc提供的服务,不要输入任何密码
Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Sep 15, 2025

Motivation

See #8395 for rationale.

Description

Stop verifying SECONDS_PER_ETH1_BLOCK on validator startup to avoid potential interop issues with other clients.

Closes #8395

@nflaig nflaig requested a review from a team as a code owner September 15, 2025 09:40
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 @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 implements a targeted fix to enhance client interoperability by ceasing the verification of the SECONDS_PER_ETH1_BLOCK parameter during validator startup. This adjustment aims to prevent conflicts and ensure smoother operation when interacting with various client implementations, addressing a known issue detailed in the linked GitHub issue.

Highlights

  • SECONDS_PER_ETH1_BLOCK Verification: Disabled the verification of the SECONDS_PER_ETH1_BLOCK parameter during validator startup. This change is intended to resolve potential interoperability issues with other clients.
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 disables the verification of the SECONDS_PER_ETH1_BLOCK parameter during validator startup to improve interoperability with other clients. This is a reasonable change, as this parameter is an estimate and considered legacy on post-merge networks. My review includes one suggestion to make this check conditional based on the Bellatrix fork activation. This would make the logic more robust by retaining the check for pre-merge networks where the parameter might still be relevant, while disabling it for post-merge networks as intended.

@codecov
Copy link

codecov bot commented Sep 15, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.09%. Comparing base (e9dd48f) to head (02d785e).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #8397   +/-   ##
=========================================
  Coverage     54.09%   54.09%           
=========================================
  Files           850      850           
  Lines         64198    64198           
  Branches       4853     4854    +1     
=========================================
+ Hits          34726    34729    +3     
+ Misses        29395    29392    -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.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 15, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 56a8f00 Previous: e9dd48f Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 961.75 us/op 2.0023 ms/op 0.48
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 36.226 us/op 48.542 us/op 0.75
BLS verify - blst 762.86 us/op 1.0955 ms/op 0.70
BLS verifyMultipleSignatures 3 - blst 1.1628 ms/op 1.7175 ms/op 0.68
BLS verifyMultipleSignatures 8 - blst 1.6414 ms/op 2.7002 ms/op 0.61
BLS verifyMultipleSignatures 32 - blst 4.8172 ms/op 7.2851 ms/op 0.66
BLS verifyMultipleSignatures 64 - blst 8.9568 ms/op 11.141 ms/op 0.80
BLS verifyMultipleSignatures 128 - blst 17.052 ms/op 26.979 ms/op 0.63
BLS deserializing 10000 signatures 678.95 ms/op 880.36 ms/op 0.77
BLS deserializing 100000 signatures 6.8432 s/op 8.9572 s/op 0.76
BLS verifyMultipleSignatures - same message - 3 - blst 812.39 us/op 1.3429 ms/op 0.60
BLS verifyMultipleSignatures - same message - 8 - blst 982.95 us/op 1.5457 ms/op 0.64
BLS verifyMultipleSignatures - same message - 32 - blst 1.6633 ms/op 2.4456 ms/op 0.68
BLS verifyMultipleSignatures - same message - 64 - blst 2.5486 ms/op 4.0839 ms/op 0.62
BLS verifyMultipleSignatures - same message - 128 - blst 4.2918 ms/op 6.3583 ms/op 0.67
BLS aggregatePubkeys 32 - blst 19.055 us/op 22.328 us/op 0.85
BLS aggregatePubkeys 128 - blst 68.080 us/op 91.867 us/op 0.74
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 46.767 ms/op 88.376 ms/op 0.53
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 43.249 ms/op 83.155 ms/op 0.52
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 33.853 ms/op 51.899 ms/op 0.65
getSlashingsAndExits - default max 72.606 us/op 90.387 us/op 0.80
getSlashingsAndExits - 2k 279.85 us/op 381.99 us/op 0.73
proposeBlockBody type=full, size=empty 5.7964 ms/op 7.9348 ms/op 0.73
isKnown best case - 1 super set check 200.00 ns/op 223.00 ns/op 0.90
isKnown normal case - 2 super set checks 198.00 ns/op 220.00 ns/op 0.90
isKnown worse case - 16 super set checks 197.00 ns/op 251.00 ns/op 0.78
InMemoryCheckpointStateCache - add get delete 2.3500 us/op 3.2960 us/op 0.71
validate api signedAggregateAndProof - struct 1.3292 ms/op 1.7015 ms/op 0.78
validate gossip signedAggregateAndProof - struct 1.3268 ms/op 1.5917 ms/op 0.83
batch validate gossip attestation - vc 640000 - chunk 32 113.83 us/op 136.01 us/op 0.84
batch validate gossip attestation - vc 640000 - chunk 64 101.05 us/op 119.21 us/op 0.85
batch validate gossip attestation - vc 640000 - chunk 128 94.769 us/op 112.38 us/op 0.84
batch validate gossip attestation - vc 640000 - chunk 256 96.870 us/op 117.70 us/op 0.82
pickEth1Vote - no votes 957.06 us/op 1.1302 ms/op 0.85
pickEth1Vote - max votes 5.3675 ms/op 8.6377 ms/op 0.62
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.313 ms/op 14.639 ms/op 0.77
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.753 ms/op 22.488 ms/op 0.74
pickEth1Vote - Eth1Data fastSerialize value x2048 453.12 us/op 490.88 us/op 0.92
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.0667 ms/op 2.9051 ms/op 0.71
bytes32 toHexString 365.00 ns/op 399.00 ns/op 0.91
bytes32 Buffer.toString(hex) 241.00 ns/op 390.00 ns/op 0.62
bytes32 Buffer.toString(hex) from Uint8Array 335.00 ns/op 353.00 ns/op 0.95
bytes32 Buffer.toString(hex) + 0x 239.00 ns/op 258.00 ns/op 0.93
Object access 1 prop 0.12200 ns/op 0.12800 ns/op 0.95
Map access 1 prop 0.12600 ns/op 0.16900 ns/op 0.75
Object get x1000 6.0700 ns/op 6.6210 ns/op 0.92
Map get x1000 6.3800 ns/op 7.3990 ns/op 0.86
Object set x1000 29.107 ns/op 38.354 ns/op 0.76
Map set x1000 19.383 ns/op 24.878 ns/op 0.78
Return object 10000 times 0.28770 ns/op 0.32230 ns/op 0.89
Throw Error 10000 times 4.4132 us/op 4.9882 us/op 0.88
toHex 133.89 ns/op 146.45 ns/op 0.91
Buffer.from 130.14 ns/op 130.04 ns/op 1.00
shared Buffer 89.866 ns/op 93.812 ns/op 0.96
fastMsgIdFn sha256 / 200 bytes 2.2000 us/op 2.4770 us/op 0.89
fastMsgIdFn h32 xxhash / 200 bytes 222.00 ns/op 232.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 200 bytes 266.00 ns/op 280.00 ns/op 0.95
fastMsgIdFn sha256 / 1000 bytes 7.3340 us/op 10.327 us/op 0.71
fastMsgIdFn h32 xxhash / 1000 bytes 344.00 ns/op 384.00 ns/op 0.90
fastMsgIdFn h64 xxhash / 1000 bytes 335.00 ns/op 374.00 ns/op 0.90
fastMsgIdFn sha256 / 10000 bytes 65.473 us/op 71.535 us/op 0.92
fastMsgIdFn h32 xxhash / 10000 bytes 1.8000 us/op 2.0590 us/op 0.87
fastMsgIdFn h64 xxhash / 10000 bytes 1.1840 us/op 1.3460 us/op 0.88
send data - 1000 256B messages 15.957 ms/op 21.934 ms/op 0.73
send data - 1000 512B messages 19.579 ms/op 25.850 ms/op 0.76
send data - 1000 1024B messages 28.234 ms/op 35.962 ms/op 0.79
send data - 1000 1200B messages 24.500 ms/op 29.618 ms/op 0.83
send data - 1000 2048B messages 26.752 ms/op 30.156 ms/op 0.89
send data - 1000 4096B messages 30.607 ms/op 33.749 ms/op 0.91
send data - 1000 16384B messages 44.281 ms/op 54.096 ms/op 0.82
send data - 1000 65536B messages 125.45 ms/op 145.24 ms/op 0.86
enrSubnets - fastDeserialize 64 bits 908.00 ns/op 1000.0 ns/op 0.91
enrSubnets - ssz BitVector 64 bits 333.00 ns/op 358.00 ns/op 0.93
enrSubnets - fastDeserialize 4 bits 134.00 ns/op 146.00 ns/op 0.92
enrSubnets - ssz BitVector 4 bits 324.00 ns/op 353.00 ns/op 0.92
prioritizePeers score -10:0 att 32-0.1 sync 2-0 235.62 us/op 282.17 us/op 0.84
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 264.12 us/op 310.96 us/op 0.85
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 372.84 us/op 451.79 us/op 0.83
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 686.83 us/op 846.21 us/op 0.81
prioritizePeers score 0:0 att 64-1 sync 4-1 863.46 us/op 1.0071 ms/op 0.86
array of 16000 items push then shift 1.5865 us/op 1.8808 us/op 0.84
LinkedList of 16000 items push then shift 6.9640 ns/op 9.7560 ns/op 0.71
array of 16000 items push then pop 74.228 ns/op 97.141 ns/op 0.76
LinkedList of 16000 items push then pop 6.9100 ns/op 8.8650 ns/op 0.78
array of 24000 items push then shift 2.3434 us/op 2.7670 us/op 0.85
LinkedList of 24000 items push then shift 6.9390 ns/op 9.9570 ns/op 0.70
array of 24000 items push then pop 104.62 ns/op 124.68 ns/op 0.84
LinkedList of 24000 items push then pop 6.8560 ns/op 8.7960 ns/op 0.78
intersect bitArray bitLen 8 6.1940 ns/op 7.5360 ns/op 0.82
intersect array and set length 8 37.131 ns/op 42.794 ns/op 0.87
intersect bitArray bitLen 128 29.325 ns/op 32.486 ns/op 0.90
intersect array and set length 128 622.65 ns/op 691.43 ns/op 0.90
bitArray.getTrueBitIndexes() bitLen 128 984.00 ns/op 1.1200 us/op 0.88
bitArray.getTrueBitIndexes() bitLen 248 1.7360 us/op 1.9780 us/op 0.88
bitArray.getTrueBitIndexes() bitLen 512 3.5850 us/op 4.1640 us/op 0.86
Buffer.concat 32 items 606.00 ns/op 669.00 ns/op 0.91
Uint8Array.set 32 items 899.00 ns/op 1.0740 us/op 0.84
Buffer.copy 2.0380 us/op 2.2670 us/op 0.90
Uint8Array.set - with subarray 1.5150 us/op 1.8490 us/op 0.82
Uint8Array.set - without subarray 838.00 ns/op 1.0070 us/op 0.83
getUint32 - dataview 194.00 ns/op 232.00 ns/op 0.84
getUint32 - manual 124.00 ns/op 132.00 ns/op 0.94
Set add up to 64 items then delete first 2.2101 us/op 3.0249 us/op 0.73
OrderedSet add up to 64 items then delete first 3.3609 us/op 5.0517 us/op 0.67
Set add up to 64 items then delete last 2.5755 us/op 3.8441 us/op 0.67
OrderedSet add up to 64 items then delete last 3.8310 us/op 5.5430 us/op 0.69
Set add up to 64 items then delete middle 2.6092 us/op 3.4309 us/op 0.76
OrderedSet add up to 64 items then delete middle 5.1864 us/op 7.0000 us/op 0.74
Set add up to 128 items then delete first 4.9864 us/op 6.9744 us/op 0.71
OrderedSet add up to 128 items then delete first 7.8759 us/op 11.858 us/op 0.66
Set add up to 128 items then delete last 5.0361 us/op 6.9325 us/op 0.73
OrderedSet add up to 128 items then delete last 8.2748 us/op 11.989 us/op 0.69
Set add up to 128 items then delete middle 5.3121 us/op 7.0154 us/op 0.76
OrderedSet add up to 128 items then delete middle 16.223 us/op 18.799 us/op 0.86
Set add up to 256 items then delete first 12.516 us/op 14.921 us/op 0.84
OrderedSet add up to 256 items then delete first 17.110 us/op 24.449 us/op 0.70
Set add up to 256 items then delete last 10.935 us/op 15.023 us/op 0.73
OrderedSet add up to 256 items then delete last 15.504 us/op 22.091 us/op 0.70
Set add up to 256 items then delete middle 10.685 us/op 12.275 us/op 0.87
OrderedSet add up to 256 items then delete middle 42.931 us/op 52.533 us/op 0.82
transfer serialized Status (84 B) 2.2750 us/op 2.4050 us/op 0.95
copy serialized Status (84 B) 1.1250 us/op 1.2150 us/op 0.93
transfer serialized SignedVoluntaryExit (112 B) 2.2730 us/op 2.4200 us/op 0.94
copy serialized SignedVoluntaryExit (112 B) 1.1370 us/op 1.3100 us/op 0.87
transfer serialized ProposerSlashing (416 B) 2.3210 us/op 2.5670 us/op 0.90
copy serialized ProposerSlashing (416 B) 1.2060 us/op 1.3530 us/op 0.89
transfer serialized Attestation (485 B) 2.2890 us/op 2.5270 us/op 0.91
copy serialized Attestation (485 B) 1.2050 us/op 1.3580 us/op 0.89
transfer serialized AttesterSlashing (33232 B) 2.4790 us/op 2.6710 us/op 0.93
copy serialized AttesterSlashing (33232 B) 4.0280 us/op 4.6860 us/op 0.86
transfer serialized Small SignedBeaconBlock (128000 B) 3.5810 us/op 3.2450 us/op 1.10
copy serialized Small SignedBeaconBlock (128000 B) 12.462 us/op 13.973 us/op 0.89
transfer serialized Avg SignedBeaconBlock (200000 B) 4.0000 us/op 3.6070 us/op 1.11
copy serialized Avg SignedBeaconBlock (200000 B) 17.353 us/op 20.703 us/op 0.84
transfer serialized BlobsSidecar (524380 B) 3.8730 us/op 4.0040 us/op 0.97
copy serialized BlobsSidecar (524380 B) 186.10 us/op 71.101 us/op 2.62
transfer serialized Big SignedBeaconBlock (1000000 B) 4.2590 us/op 3.9780 us/op 1.07
copy serialized Big SignedBeaconBlock (1000000 B) 130.20 us/op 131.84 us/op 0.99
pass gossip attestations to forkchoice per slot 2.8438 ms/op 3.1999 ms/op 0.89
forkChoice updateHead vc 100000 bc 64 eq 0 455.74 us/op 517.98 us/op 0.88
forkChoice updateHead vc 600000 bc 64 eq 0 3.0961 ms/op 3.2582 ms/op 0.95
forkChoice updateHead vc 1000000 bc 64 eq 0 5.3044 ms/op 8.5010 ms/op 0.62
forkChoice updateHead vc 600000 bc 320 eq 0 2.9032 ms/op 3.4463 ms/op 0.84
forkChoice updateHead vc 600000 bc 1200 eq 0 3.3127 ms/op 3.5403 ms/op 0.94
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1443 ms/op 3.8498 ms/op 0.82
forkChoice updateHead vc 600000 bc 64 eq 1000 10.492 ms/op 11.937 ms/op 0.88
forkChoice updateHead vc 600000 bc 64 eq 10000 10.421 ms/op 12.280 ms/op 0.85
forkChoice updateHead vc 600000 bc 64 eq 300000 15.834 ms/op 15.706 ms/op 1.01
computeDeltas 500000 validators 300 proto nodes 4.0258 ms/op 4.5294 ms/op 0.89
computeDeltas 500000 validators 1200 proto nodes 3.9086 ms/op 4.4979 ms/op 0.87
computeDeltas 500000 validators 7200 proto nodes 3.9058 ms/op 4.5714 ms/op 0.85
computeDeltas 750000 validators 300 proto nodes 5.8274 ms/op 6.9636 ms/op 0.84
computeDeltas 750000 validators 1200 proto nodes 5.8512 ms/op 9.5089 ms/op 0.62
computeDeltas 750000 validators 7200 proto nodes 5.8501 ms/op 11.018 ms/op 0.53
computeDeltas 1400000 validators 300 proto nodes 11.113 ms/op 19.249 ms/op 0.58
computeDeltas 1400000 validators 1200 proto nodes 10.754 ms/op 13.879 ms/op 0.77
computeDeltas 1400000 validators 7200 proto nodes 10.588 ms/op 14.017 ms/op 0.76
computeDeltas 2100000 validators 300 proto nodes 16.186 ms/op 20.105 ms/op 0.81
computeDeltas 2100000 validators 1200 proto nodes 16.176 ms/op 20.043 ms/op 0.81
computeDeltas 2100000 validators 7200 proto nodes 16.146 ms/op 19.779 ms/op 0.82
altair processAttestation - 250000 vs - 7PWei normalcase 1.9504 ms/op 3.7385 ms/op 0.52
altair processAttestation - 250000 vs - 7PWei worstcase 2.8677 ms/op 4.9050 ms/op 0.58
altair processAttestation - setStatus - 1/6 committees join 126.35 us/op 190.31 us/op 0.66
altair processAttestation - setStatus - 1/3 committees join 244.37 us/op 342.56 us/op 0.71
altair processAttestation - setStatus - 1/2 committees join 342.22 us/op 454.09 us/op 0.75
altair processAttestation - setStatus - 2/3 committees join 444.13 us/op 565.78 us/op 0.78
altair processAttestation - setStatus - 4/5 committees join 604.85 us/op 807.26 us/op 0.75
altair processAttestation - setStatus - 100% committees join 713.53 us/op 964.66 us/op 0.74
altair processBlock - 250000 vs - 7PWei normalcase 4.2772 ms/op 6.8357 ms/op 0.63
altair processBlock - 250000 vs - 7PWei normalcase hashState 28.529 ms/op 32.494 ms/op 0.88
altair processBlock - 250000 vs - 7PWei worstcase 30.152 ms/op 52.072 ms/op 0.58
altair processBlock - 250000 vs - 7PWei worstcase hashState 73.836 ms/op 102.71 ms/op 0.72
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6472 ms/op 2.3818 ms/op 0.69
phase0 processBlock - 250000 vs - 7PWei worstcase 19.967 ms/op 29.455 ms/op 0.68
altair processEth1Data - 250000 vs - 7PWei normalcase 338.07 us/op 452.84 us/op 0.75
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.6420 us/op 11.458 us/op 0.49
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 34.909 us/op 49.442 us/op 0.71
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.8200 us/op 14.885 us/op 0.66
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.1060 us/op 7.2590 us/op 0.84
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 137.58 us/op 203.50 us/op 0.68
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.8864 ms/op 2.2611 ms/op 0.83
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.3528 ms/op 2.8677 ms/op 0.82
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.3880 ms/op 3.3183 ms/op 0.72
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.5242 ms/op 7.6103 ms/op 0.59
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4597 ms/op 2.8770 ms/op 0.85
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.5129 ms/op 6.8535 ms/op 0.66
Tree 40 250000 create 403.41 ms/op 801.78 ms/op 0.50
Tree 40 250000 get(125000) 140.66 ns/op 163.84 ns/op 0.86
Tree 40 250000 set(125000) 1.3740 us/op 2.7413 us/op 0.50
Tree 40 250000 toArray() 14.805 ms/op 28.264 ms/op 0.52
Tree 40 250000 iterate all - toArray() + loop 14.771 ms/op 27.247 ms/op 0.54
Tree 40 250000 iterate all - get(i) 57.591 ms/op 72.026 ms/op 0.80
Array 250000 create 3.2517 ms/op 5.1402 ms/op 0.63
Array 250000 clone - spread 827.33 us/op 1.9917 ms/op 0.42
Array 250000 get(125000) 0.41500 ns/op 0.44600 ns/op 0.93
Array 250000 set(125000) 0.43800 ns/op 0.46900 ns/op 0.93
Array 250000 iterate all - loop 96.196 us/op 93.165 us/op 1.03
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.975 ms/op 46.206 ms/op 0.91
Array.fill - length 1000000 3.4559 ms/op 9.0212 ms/op 0.38
Array push - length 1000000 12.743 ms/op 24.978 ms/op 0.51
Array.get 0.27239 ns/op 0.33971 ns/op 0.80
Uint8Array.get 0.43269 ns/op 0.49519 ns/op 0.87
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.959 ms/op 33.326 ms/op 0.48
altair processEpoch - mainnet_e81889 280.13 ms/op 334.64 ms/op 0.84
mainnet_e81889 - altair beforeProcessEpoch 18.104 ms/op 25.591 ms/op 0.71
mainnet_e81889 - altair processJustificationAndFinalization 5.3700 us/op 6.1280 us/op 0.88
mainnet_e81889 - altair processInactivityUpdates 4.0981 ms/op 5.6117 ms/op 0.73
mainnet_e81889 - altair processRewardsAndPenalties 37.271 ms/op 41.919 ms/op 0.89
mainnet_e81889 - altair processRegistryUpdates 692.00 ns/op 787.00 ns/op 0.88
mainnet_e81889 - altair processSlashings 178.00 ns/op 206.00 ns/op 0.86
mainnet_e81889 - altair processEth1DataReset 171.00 ns/op 184.00 ns/op 0.93
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.1759 ms/op 1.2966 ms/op 0.91
mainnet_e81889 - altair processSlashingsReset 853.00 ns/op 936.00 ns/op 0.91
mainnet_e81889 - altair processRandaoMixesReset 1.1080 us/op 1.1900 us/op 0.93
mainnet_e81889 - altair processHistoricalRootsUpdate 177.00 ns/op 187.00 ns/op 0.95
mainnet_e81889 - altair processParticipationFlagUpdates 501.00 ns/op 544.00 ns/op 0.92
mainnet_e81889 - altair processSyncCommitteeUpdates 136.00 ns/op 147.00 ns/op 0.93
mainnet_e81889 - altair afterProcessEpoch 43.739 ms/op 48.864 ms/op 0.90
capella processEpoch - mainnet_e217614 908.09 ms/op 860.70 ms/op 1.06
mainnet_e217614 - capella beforeProcessEpoch 67.356 ms/op 61.776 ms/op 1.09
mainnet_e217614 - capella processJustificationAndFinalization 5.3500 us/op 5.6000 us/op 0.96
mainnet_e217614 - capella processInactivityUpdates 14.726 ms/op 14.532 ms/op 1.01
mainnet_e217614 - capella processRewardsAndPenalties 186.46 ms/op 177.28 ms/op 1.05
mainnet_e217614 - capella processRegistryUpdates 6.2950 us/op 6.5190 us/op 0.97
mainnet_e217614 - capella processSlashings 176.00 ns/op 183.00 ns/op 0.96
mainnet_e217614 - capella processEth1DataReset 175.00 ns/op 179.00 ns/op 0.98
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2673 ms/op 4.3189 ms/op 0.99
mainnet_e217614 - capella processSlashingsReset 883.00 ns/op 885.00 ns/op 1.00
mainnet_e217614 - capella processRandaoMixesReset 1.1800 us/op 1.1570 us/op 1.02
mainnet_e217614 - capella processHistoricalRootsUpdate 175.00 ns/op 185.00 ns/op 0.95
mainnet_e217614 - capella processParticipationFlagUpdates 516.00 ns/op 532.00 ns/op 0.97
mainnet_e217614 - capella afterProcessEpoch 114.13 ms/op 116.40 ms/op 0.98
phase0 processEpoch - mainnet_e58758 293.36 ms/op 289.52 ms/op 1.01
mainnet_e58758 - phase0 beforeProcessEpoch 92.940 ms/op 66.436 ms/op 1.40
mainnet_e58758 - phase0 processJustificationAndFinalization 6.2870 us/op 5.6160 us/op 1.12
mainnet_e58758 - phase0 processRewardsAndPenalties 40.185 ms/op 34.102 ms/op 1.18
mainnet_e58758 - phase0 processRegistryUpdates 4.1610 us/op 3.2240 us/op 1.29
mainnet_e58758 - phase0 processSlashings 192.00 ns/op 182.00 ns/op 1.05
mainnet_e58758 - phase0 processEth1DataReset 176.00 ns/op 176.00 ns/op 1.00
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.3369 ms/op 1.1959 ms/op 1.12
mainnet_e58758 - phase0 processSlashingsReset 1.3360 us/op 913.00 ns/op 1.46
mainnet_e58758 - phase0 processRandaoMixesReset 1.4170 us/op 1.1930 us/op 1.19
mainnet_e58758 - phase0 processHistoricalRootsUpdate 197.00 ns/op 183.00 ns/op 1.08
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.0650 us/op 886.00 ns/op 1.20
mainnet_e58758 - phase0 afterProcessEpoch 36.783 ms/op 36.621 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3998 ms/op 1.3577 ms/op 1.03
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.1632 ms/op 1.9394 ms/op 1.12
altair processInactivityUpdates - 250000 normalcase 18.405 ms/op 17.223 ms/op 1.07
altair processInactivityUpdates - 250000 worstcase 19.145 ms/op 16.680 ms/op 1.15
phase0 processRegistryUpdates - 250000 normalcase 12.049 us/op 6.4220 us/op 1.88
phase0 processRegistryUpdates - 250000 badcase_full_deposits 467.29 us/op 252.34 us/op 1.85
phase0 processRegistryUpdates - 250000 worstcase 0.5 121.33 ms/op 99.043 ms/op 1.23
altair processRewardsAndPenalties - 250000 normalcase 25.897 ms/op 27.786 ms/op 0.93
altair processRewardsAndPenalties - 250000 worstcase 27.074 ms/op 27.616 ms/op 0.98
phase0 getAttestationDeltas - 250000 normalcase 10.164 ms/op 6.6680 ms/op 1.52
phase0 getAttestationDeltas - 250000 worstcase 6.3331 ms/op 6.0011 ms/op 1.06
phase0 processSlashings - 250000 worstcase 100.89 us/op 95.347 us/op 1.06
altair processSyncCommitteeUpdates - 250000 11.584 ms/op 11.041 ms/op 1.05
BeaconState.hashTreeRoot - No change 224.00 ns/op 213.00 ns/op 1.05
BeaconState.hashTreeRoot - 1 full validator 79.004 us/op 98.900 us/op 0.80
BeaconState.hashTreeRoot - 32 full validator 981.83 us/op 772.23 us/op 1.27
BeaconState.hashTreeRoot - 512 full validator 10.834 ms/op 9.6281 ms/op 1.13
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 110.43 us/op 91.564 us/op 1.21
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.6786 ms/op 1.2636 ms/op 1.33
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 23.969 ms/op 18.579 ms/op 1.29
BeaconState.hashTreeRoot - 1 balances 82.567 us/op 70.363 us/op 1.17
BeaconState.hashTreeRoot - 32 balances 717.55 us/op 659.71 us/op 1.09
BeaconState.hashTreeRoot - 512 balances 8.6632 ms/op 7.3944 ms/op 1.17
BeaconState.hashTreeRoot - 250000 balances 182.43 ms/op 153.67 ms/op 1.19
aggregationBits - 2048 els - zipIndexesInBitList 26.587 us/op 21.564 us/op 1.23
byteArrayEquals 32 56.063 ns/op 54.053 ns/op 1.04
Buffer.compare 32 20.658 ns/op 17.258 ns/op 1.20
byteArrayEquals 1024 1.6615 us/op 1.6010 us/op 1.04
Buffer.compare 1024 27.485 ns/op 27.252 ns/op 1.01
byteArrayEquals 16384 26.269 us/op 25.459 us/op 1.03
Buffer.compare 16384 198.32 ns/op 195.25 ns/op 1.02
byteArrayEquals 123687377 200.64 ms/op 192.12 ms/op 1.04
Buffer.compare 123687377 8.6898 ms/op 6.6925 ms/op 1.30
byteArrayEquals 32 - diff last byte 54.318 ns/op 52.797 ns/op 1.03
Buffer.compare 32 - diff last byte 20.510 ns/op 17.205 ns/op 1.19
byteArrayEquals 1024 - diff last byte 1.6468 us/op 1.5926 us/op 1.03
Buffer.compare 1024 - diff last byte 27.925 ns/op 25.137 ns/op 1.11
byteArrayEquals 16384 - diff last byte 26.597 us/op 25.318 us/op 1.05
Buffer.compare 16384 - diff last byte 201.09 ns/op 183.17 ns/op 1.10
byteArrayEquals 123687377 - diff last byte 200.53 ms/op 191.64 ms/op 1.05
Buffer.compare 123687377 - diff last byte 9.6357 ms/op 6.7109 ms/op 1.44
byteArrayEquals 32 - random bytes 5.2700 ns/op 5.2230 ns/op 1.01
Buffer.compare 32 - random bytes 20.785 ns/op 17.478 ns/op 1.19
byteArrayEquals 1024 - random bytes 5.3250 ns/op 5.1740 ns/op 1.03
Buffer.compare 1024 - random bytes 20.712 ns/op 17.521 ns/op 1.18
byteArrayEquals 16384 - random bytes 5.3330 ns/op 5.6200 ns/op 0.95
Buffer.compare 16384 - random bytes 20.766 ns/op 17.420 ns/op 1.19
byteArrayEquals 123687377 - random bytes 6.6500 ns/op 6.3600 ns/op 1.05
Buffer.compare 123687377 - random bytes 23.190 ns/op 18.270 ns/op 1.27
regular array get 100000 times 35.735 us/op 33.049 us/op 1.08
wrappedArray get 100000 times 35.838 us/op 33.168 us/op 1.08
arrayWithProxy get 100000 times 16.951 ms/op 11.866 ms/op 1.43
ssz.Root.equals 47.769 ns/op 46.232 ns/op 1.03
byteArrayEquals 46.792 ns/op 45.239 ns/op 1.03
Buffer.compare 11.019 ns/op 10.278 ns/op 1.07
processSlot - 1 slots 11.451 us/op 10.075 us/op 1.14
processSlot - 32 slots 3.8493 ms/op 1.9498 ms/op 1.97
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.7741 ms/op 3.2255 ms/op 1.17
getCommitteeAssignments - req 1 vs - 250000 vc 2.2026 ms/op 2.1679 ms/op 1.02
getCommitteeAssignments - req 100 vs - 250000 vc 4.2680 ms/op 4.2043 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 4.5537 ms/op 4.4937 ms/op 1.01
findModifiedValidators - 10000 modified validators 792.08 ms/op 724.60 ms/op 1.09
findModifiedValidators - 1000 modified validators 826.13 ms/op 716.91 ms/op 1.15
findModifiedValidators - 100 modified validators 304.75 ms/op 242.04 ms/op 1.26
findModifiedValidators - 10 modified validators 285.65 ms/op 169.53 ms/op 1.68
findModifiedValidators - 1 modified validators 249.57 ms/op 158.09 ms/op 1.58
findModifiedValidators - no difference 228.73 ms/op 158.59 ms/op 1.44
compare ViewDUs 7.4557 s/op 5.9760 s/op 1.25
compare each validator Uint8Array 1.4776 s/op 1.4740 s/op 1.00
compare ViewDU to Uint8Array 1.5957 s/op 1.0481 s/op 1.52
migrate state 1000000 validators, 24 modified, 0 new 960.66 ms/op 840.58 ms/op 1.14
migrate state 1000000 validators, 1700 modified, 1000 new 1.4395 s/op 1.0606 s/op 1.36
migrate state 1000000 validators, 3400 modified, 2000 new 1.3313 s/op 1.2325 s/op 1.08
migrate state 1500000 validators, 24 modified, 0 new 846.92 ms/op 836.21 ms/op 1.01
migrate state 1500000 validators, 1700 modified, 1000 new 1.1367 s/op 1.1986 s/op 0.95
migrate state 1500000 validators, 3400 modified, 2000 new 1.3361 s/op 1.4402 s/op 0.93
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.3200 ns/op 4.3700 ns/op 0.99
state getBlockRootAtSlot - 250000 vs - 7PWei 426.47 ns/op 420.97 ns/op 1.01
naive computeProposerIndex 100000 validators 60.965 ms/op 60.709 ms/op 1.00
computeProposerIndex 100000 validators 1.5635 ms/op 1.5785 ms/op 0.99
naiveGetNextSyncCommitteeIndices 1000 validators 8.4699 s/op 8.1249 s/op 1.04
getNextSyncCommitteeIndices 1000 validators 117.18 ms/op 121.76 ms/op 0.96
naiveGetNextSyncCommitteeIndices 10000 validators 8.3383 s/op 7.3911 s/op 1.13
getNextSyncCommitteeIndices 10000 validators 112.43 ms/op 117.45 ms/op 0.96
naiveGetNextSyncCommitteeIndices 100000 validators 8.1493 s/op 8.0887 s/op 1.01
getNextSyncCommitteeIndices 100000 validators 127.10 ms/op 130.62 ms/op 0.97
naive computeShuffledIndex 100000 validators 26.133 s/op 24.335 s/op 1.07
cached computeShuffledIndex 100000 validators 558.19 ms/op 588.25 ms/op 0.95
naive computeShuffledIndex 2000000 validators 516.04 s/op 462.86 s/op 1.11
cached computeShuffledIndex 2000000 validators 35.189 s/op 50.291 s/op 0.70
computeProposers - vc 250000 607.76 us/op 656.84 us/op 0.93
computeEpochShuffling - vc 250000 42.454 ms/op 44.106 ms/op 0.96
getNextSyncCommittee - vc 250000 10.412 ms/op 11.270 ms/op 0.92
computeSigningRoot for AttestationData 22.059 us/op 23.618 us/op 0.93
hash AttestationData serialized data then Buffer.toString(base64) 1.6176 us/op 1.6967 us/op 0.95
toHexString serialized data 1.1232 us/op 1.2189 us/op 0.92
Buffer.toString(base64) 154.69 ns/op 155.65 ns/op 0.99
nodejs block root to RootHex using toHex 157.42 ns/op 145.82 ns/op 1.08
nodejs block root to RootHex using toRootHex 84.554 ns/op 93.468 ns/op 0.90
nodejs fromhex(blob) 113.38 ms/op 119.36 ms/op 0.95
nodejs fromHexInto(blob) 91.840 ms/op 104.51 ms/op 0.88
browser block root to RootHex using the deprecated toHexString 208.46 ns/op 217.43 ns/op 0.96
browser block root to RootHex using toHex 173.01 ns/op 178.44 ns/op 0.97
browser block root to RootHex using toRootHex 159.36 ns/op 162.05 ns/op 0.98
browser fromHexInto(blob) 822.54 us/op 840.51 us/op 0.98
browser fromHex(blob) 788.48 ms/op 842.57 ms/op 0.94

by benchmarkbot/action

@wemeetagain wemeetagain merged commit 7931b71 into unstable Sep 15, 2025
25 of 27 checks passed
@wemeetagain wemeetagain deleted the nflaig/eth1-legacy branch September 15, 2025 13:26
@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.

Do not verify SECONDS_PER_ETH1_BLOCK on validator start

3 participants