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

Conversation

@ensi321
Copy link
Contributor

@ensi321 ensi321 commented Sep 20, 2025

Part of #8439

@ensi321 ensi321 requested a review from a team as a code owner September 20, 2025 00:46
@ensi321 ensi321 added the spec-gloas Issues targeting the Glamsterdam spec version label Sep 20, 2025
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @ensi321, 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 integrates essential configuration parameters and presets required for the implementation of ePBS (enshrined Proposer-Builder Separation) within the protocol. It establishes new timing-related constants for various network operations and introduces specific parameters for builder functionalities, ensuring the system is prepared for the upcoming ePBS features.

Highlights

  • New Configuration Parameters: Introduced several new timing-related constants such as ATTESTATION_DUE_BPS_GLOAS, AGGREGATE_DUE_BPS_GLOAS, SYNC_MESSAGE_DUE_BPS_GLOAS, CONTRIBUTION_DUE_BPS_GLOAS, and PAYLOAD_ATTESTATION_DUE_BPS to both mainnet and minimal chain configurations.
  • ePBS/GLOAS Presets and Constants: Added new constants related to ePBS/GLOAS, including PTC_SIZE, MAX_PAYLOAD_ATTESTATIONS, BUILDER_PENDING_WITHDRAWALS_LIMIT, BUILDER_WITHDRAWAL_PREFIX, DOMAIN_BEACON_BUILDER, DOMAIN_PTC_ATTESTER, and BUILDER_PAYMENT_THRESHOLD values.
  • Type Definition Updates: Updated ChainConfig and BeaconPreset type definitions in packages/config/src/chainConfig/types.ts and packages/params/src/types.ts respectively, to include all the newly added configuration parameters.
  • Parameter Relevance for Forks: Integrated the new ePBS/GLOAS parameters into the getSpecCriticalParams function in packages/validator/src/util/params.ts, marking them as gloasForkRelevant.
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

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 introduces new configuration presets for ePBS (enshrined Proposer-Builder Separation), corresponding to the GLOAS fork. The changes add new constants and settings for mainnet and minimal presets across configuration files, type definitions, and parameter exports. My review focuses on improving code consistency and readability. I've suggested renaming a configuration parameter for better consistency with its related group and reordering some new constants to enhance maintainability.

@codecov
Copy link

codecov bot commented Sep 20, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.28%. Comparing base (3d8b04e) to head (9b33c52).
⚠️ Report is 4 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #8440      +/-   ##
============================================
+ Coverage     52.26%   52.28%   +0.02%     
============================================
  Files           853      853              
  Lines         64784    64815      +31     
  Branches       4767     4766       -1     
============================================
+ Hits          33858    33889      +31     
  Misses        30856    30856              
  Partials         70       70              
🚀 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 20, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 9eb7729 Previous: c0078a1 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 855.08 us/op 1.2437 ms/op 0.69
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 29.816 us/op 38.726 us/op 0.77
BLS verify - blst 864.44 us/op 1.0814 ms/op 0.80
BLS verifyMultipleSignatures 3 - blst 1.5369 ms/op 1.4463 ms/op 1.06
BLS verifyMultipleSignatures 8 - blst 1.9997 ms/op 2.1838 ms/op 0.92
BLS verifyMultipleSignatures 32 - blst 4.3679 ms/op 7.3518 ms/op 0.59
BLS verifyMultipleSignatures 64 - blst 7.9855 ms/op 11.516 ms/op 0.69
BLS verifyMultipleSignatures 128 - blst 15.619 ms/op 18.774 ms/op 0.83
BLS deserializing 10000 signatures 594.29 ms/op 747.36 ms/op 0.80
BLS deserializing 100000 signatures 5.9337 s/op 7.4261 s/op 0.80
BLS verifyMultipleSignatures - same message - 3 - blst 908.90 us/op 1.1128 ms/op 0.82
BLS verifyMultipleSignatures - same message - 8 - blst 1.0593 ms/op 1.2361 ms/op 0.86
BLS verifyMultipleSignatures - same message - 32 - blst 1.6073 ms/op 1.9471 ms/op 0.83
BLS verifyMultipleSignatures - same message - 64 - blst 2.2924 ms/op 3.0423 ms/op 0.75
BLS verifyMultipleSignatures - same message - 128 - blst 3.6746 ms/op 4.8919 ms/op 0.75
BLS aggregatePubkeys 32 - blst 17.433 us/op 22.738 us/op 0.77
BLS aggregatePubkeys 128 - blst 56.521 us/op 74.896 us/op 0.75
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 37.635 ms/op 65.195 ms/op 0.58
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 41.402 ms/op 59.742 ms/op 0.69
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 39.626 ms/op 44.838 ms/op 0.88
getSlashingsAndExits - default max 49.030 us/op 109.31 us/op 0.45
getSlashingsAndExits - 2k 357.29 us/op 368.82 us/op 0.97
isKnown best case - 1 super set check 396.00 ns/op 229.00 ns/op 1.73
isKnown normal case - 2 super set checks 394.00 ns/op 227.00 ns/op 1.74
isKnown worse case - 16 super set checks 393.00 ns/op 230.00 ns/op 1.71
InMemoryCheckpointStateCache - add get delete 2.6970 us/op 2.4470 us/op 1.10
validate api signedAggregateAndProof - struct 1.7825 ms/op 1.4114 ms/op 1.26
validate gossip signedAggregateAndProof - struct 1.9961 ms/op 1.7525 ms/op 1.14
batch validate gossip attestation - vc 640000 - chunk 32 106.30 us/op 118.92 us/op 0.89
batch validate gossip attestation - vc 640000 - chunk 64 96.310 us/op 104.71 us/op 0.92
batch validate gossip attestation - vc 640000 - chunk 128 86.857 us/op 97.354 us/op 0.89
batch validate gossip attestation - vc 640000 - chunk 256 89.697 us/op 105.85 us/op 0.85
pickEth1Vote - no votes 746.02 us/op 1.0027 ms/op 0.74
pickEth1Vote - max votes 7.1700 ms/op 7.0464 ms/op 1.02
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.308 ms/op 13.434 ms/op 0.84
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 19.337 ms/op 19.825 ms/op 0.98
pickEth1Vote - Eth1Data fastSerialize value x2048 350.70 us/op 454.79 us/op 0.77
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.1762 ms/op 3.8498 ms/op 0.57
bytes32 toHexString 488.00 ns/op 433.00 ns/op 1.13
bytes32 Buffer.toString(hex) 416.00 ns/op 296.00 ns/op 1.41
bytes32 Buffer.toString(hex) from Uint8Array 493.00 ns/op 339.00 ns/op 1.45
bytes32 Buffer.toString(hex) + 0x 411.00 ns/op 318.00 ns/op 1.29
Object access 1 prop 0.30200 ns/op 0.12200 ns/op 2.48
Map access 1 prop 0.31100 ns/op 0.14800 ns/op 2.10
Object get x1000 5.0250 ns/op 6.0430 ns/op 0.83
Map get x1000 5.7220 ns/op 6.6800 ns/op 0.86
Object set x1000 19.807 ns/op 31.039 ns/op 0.64
Map set x1000 17.146 ns/op 21.433 ns/op 0.80
Return object 10000 times 0.27530 ns/op 0.32170 ns/op 0.86
Throw Error 10000 times 3.4604 us/op 4.6449 us/op 0.74
toHex 92.386 ns/op 135.23 ns/op 0.68
Buffer.from 86.517 ns/op 120.68 ns/op 0.72
shared Buffer 61.177 ns/op 81.890 ns/op 0.75
fastMsgIdFn sha256 / 200 bytes 1.8350 us/op 2.2850 us/op 0.80
fastMsgIdFn h32 xxhash / 200 bytes 369.00 ns/op 221.00 ns/op 1.67
fastMsgIdFn h64 xxhash / 200 bytes 411.00 ns/op 306.00 ns/op 1.34
fastMsgIdFn sha256 / 1000 bytes 5.5250 us/op 7.6080 us/op 0.73
fastMsgIdFn h32 xxhash / 1000 bytes 488.00 ns/op 343.00 ns/op 1.42
fastMsgIdFn h64 xxhash / 1000 bytes 475.00 ns/op 350.00 ns/op 1.36
fastMsgIdFn sha256 / 10000 bytes 46.344 us/op 67.022 us/op 0.69
fastMsgIdFn h32 xxhash / 10000 bytes 1.8090 us/op 1.8960 us/op 0.95
fastMsgIdFn h64 xxhash / 10000 bytes 1.2610 us/op 1.2530 us/op 1.01
send data - 1000 256B messages 13.901 ms/op 19.244 ms/op 0.72
send data - 1000 512B messages 15.922 ms/op 22.516 ms/op 0.71
send data - 1000 1024B messages 22.608 ms/op 31.150 ms/op 0.73
send data - 1000 1200B messages 17.507 ms/op 29.678 ms/op 0.59
send data - 1000 2048B messages 18.874 ms/op 28.723 ms/op 0.66
send data - 1000 4096B messages 19.747 ms/op 33.917 ms/op 0.58
send data - 1000 16384B messages 33.451 ms/op 50.215 ms/op 0.67
send data - 1000 65536B messages 87.050 ms/op 132.38 ms/op 0.66
enrSubnets - fastDeserialize 64 bits 935.00 ns/op 908.00 ns/op 1.03
enrSubnets - ssz BitVector 64 bits 474.00 ns/op 342.00 ns/op 1.39
enrSubnets - fastDeserialize 4 bits 305.00 ns/op 131.00 ns/op 2.33
enrSubnets - ssz BitVector 4 bits 473.00 ns/op 351.00 ns/op 1.35
prioritizePeers score -10:0 att 32-0.1 sync 2-0 202.36 us/op 253.95 us/op 0.80
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 356.92 us/op 280.71 us/op 1.27
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 486.55 us/op 417.80 us/op 1.16
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 973.19 us/op 759.33 us/op 1.28
prioritizePeers score 0:0 att 64-1 sync 4-1 1.1058 ms/op 913.47 us/op 1.21
array of 16000 items push then shift 1.2951 us/op 1.6975 us/op 0.76
LinkedList of 16000 items push then shift 6.5450 ns/op 7.9700 ns/op 0.82
array of 16000 items push then pop 67.988 ns/op 86.142 ns/op 0.79
LinkedList of 16000 items push then pop 6.2720 ns/op 7.6430 ns/op 0.82
array of 24000 items push then shift 1.9037 us/op 2.5380 us/op 0.75
LinkedList of 24000 items push then shift 6.3870 ns/op 7.8450 ns/op 0.81
array of 24000 items push then pop 93.575 ns/op 113.79 ns/op 0.82
LinkedList of 24000 items push then pop 6.2290 ns/op 7.5070 ns/op 0.83
intersect bitArray bitLen 8 5.4280 ns/op 6.7580 ns/op 0.80
intersect array and set length 8 32.451 ns/op 41.367 ns/op 0.78
intersect bitArray bitLen 128 26.565 ns/op 30.484 ns/op 0.87
intersect array and set length 128 545.40 ns/op 635.34 ns/op 0.86
bitArray.getTrueBitIndexes() bitLen 128 1.5280 us/op 1.1370 us/op 1.34
bitArray.getTrueBitIndexes() bitLen 248 2.3010 us/op 1.9030 us/op 1.21
bitArray.getTrueBitIndexes() bitLen 512 4.6550 us/op 3.9600 us/op 1.18
Buffer.concat 32 items 759.00 ns/op 625.00 ns/op 1.21
Uint8Array.set 32 items 1.1460 us/op 1.6630 us/op 0.69
Buffer.copy 2.0100 us/op 2.6510 us/op 0.76
Uint8Array.set - with subarray 1.5990 us/op 1.6570 us/op 0.96
Uint8Array.set - without subarray 1.0290 us/op 1.1000 us/op 0.94
getUint32 - dataview 375.00 ns/op 201.00 ns/op 1.87
getUint32 - manual 306.00 ns/op 121.00 ns/op 2.53
Set add up to 64 items then delete first 1.8120 us/op 2.3474 us/op 0.77
OrderedSet add up to 64 items then delete first 2.8429 us/op 3.5812 us/op 0.79
Set add up to 64 items then delete last 2.0708 us/op 2.7094 us/op 0.76
OrderedSet add up to 64 items then delete last 3.1443 us/op 3.9637 us/op 0.79
Set add up to 64 items then delete middle 1.9001 us/op 2.4344 us/op 0.78
OrderedSet add up to 64 items then delete middle 4.6234 us/op 5.8293 us/op 0.79
Set add up to 128 items then delete first 4.0629 us/op 5.7916 us/op 0.70
OrderedSet add up to 128 items then delete first 6.4612 us/op 10.155 us/op 0.64
Set add up to 128 items then delete last 3.9951 us/op 5.3782 us/op 0.74
OrderedSet add up to 128 items then delete last 6.2300 us/op 8.1215 us/op 0.77
Set add up to 128 items then delete middle 3.9414 us/op 5.5263 us/op 0.71
OrderedSet add up to 128 items then delete middle 11.938 us/op 17.224 us/op 0.69
Set add up to 256 items then delete first 8.1142 us/op 12.799 us/op 0.63
OrderedSet add up to 256 items then delete first 18.101 us/op 18.746 us/op 0.97
Set add up to 256 items then delete last 7.7732 us/op 12.895 us/op 0.60
OrderedSet add up to 256 items then delete last 12.041 us/op 16.020 us/op 0.75
Set add up to 256 items then delete middle 8.9172 us/op 11.585 us/op 0.77
OrderedSet add up to 256 items then delete middle 36.177 us/op 48.885 us/op 0.74
transfer serialized Status (84 B) 2.0130 us/op 2.4060 us/op 0.84
copy serialized Status (84 B) 1.2910 us/op 1.3380 us/op 0.96
transfer serialized SignedVoluntaryExit (112 B) 2.0380 us/op 2.4330 us/op 0.84
copy serialized SignedVoluntaryExit (112 B) 1.2980 us/op 1.5550 us/op 0.83
transfer serialized ProposerSlashing (416 B) 2.1160 us/op 2.6000 us/op 0.81
copy serialized ProposerSlashing (416 B) 1.3480 us/op 2.0570 us/op 0.66
transfer serialized Attestation (485 B) 2.1130 us/op 3.6310 us/op 0.58
copy serialized Attestation (485 B) 1.3630 us/op 1.6020 us/op 0.85
transfer serialized AttesterSlashing (33232 B) 2.0420 us/op 2.9960 us/op 0.68
copy serialized AttesterSlashing (33232 B) 2.8070 us/op 5.0750 us/op 0.55
transfer serialized Small SignedBeaconBlock (128000 B) 2.1820 us/op 3.3940 us/op 0.64
copy serialized Small SignedBeaconBlock (128000 B) 6.6840 us/op 10.466 us/op 0.64
transfer serialized Avg SignedBeaconBlock (200000 B) 2.4570 us/op 4.4140 us/op 0.56
copy serialized Avg SignedBeaconBlock (200000 B) 10.125 us/op 17.046 us/op 0.59
transfer serialized BlobsSidecar (524380 B) 3.2420 us/op 3.7650 us/op 0.86
copy serialized BlobsSidecar (524380 B) 65.788 us/op 68.485 us/op 0.96
transfer serialized Big SignedBeaconBlock (1000000 B) 3.8080 us/op 4.3290 us/op 0.88
copy serialized Big SignedBeaconBlock (1000000 B) 123.37 us/op 122.75 us/op 1.01
pass gossip attestations to forkchoice per slot 2.5005 ms/op 2.9792 ms/op 0.84
forkChoice updateHead vc 100000 bc 64 eq 0 352.35 us/op 474.00 us/op 0.74
forkChoice updateHead vc 600000 bc 64 eq 0 3.1039 ms/op 3.0227 ms/op 1.03
forkChoice updateHead vc 1000000 bc 64 eq 0 4.3465 ms/op 5.1763 ms/op 0.84
forkChoice updateHead vc 600000 bc 320 eq 0 2.5630 ms/op 3.0740 ms/op 0.83
forkChoice updateHead vc 600000 bc 1200 eq 0 2.6316 ms/op 3.7413 ms/op 0.70
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0208 ms/op 4.6166 ms/op 0.65
forkChoice updateHead vc 600000 bc 64 eq 1000 9.3944 ms/op 10.763 ms/op 0.87
forkChoice updateHead vc 600000 bc 64 eq 10000 9.1560 ms/op 10.714 ms/op 0.85
forkChoice updateHead vc 600000 bc 64 eq 300000 12.003 ms/op 16.044 ms/op 0.75
computeDeltas 500000 validators 300 proto nodes 3.1055 ms/op 4.1274 ms/op 0.75
computeDeltas 500000 validators 1200 proto nodes 3.1277 ms/op 4.3609 ms/op 0.72
computeDeltas 500000 validators 7200 proto nodes 3.0116 ms/op 4.0794 ms/op 0.74
computeDeltas 750000 validators 300 proto nodes 4.4954 ms/op 5.8772 ms/op 0.76
computeDeltas 750000 validators 1200 proto nodes 4.5539 ms/op 5.8235 ms/op 0.78
computeDeltas 750000 validators 7200 proto nodes 4.4847 ms/op 5.8386 ms/op 0.77
computeDeltas 1400000 validators 300 proto nodes 8.9006 ms/op 10.942 ms/op 0.81
computeDeltas 1400000 validators 1200 proto nodes 8.5800 ms/op 10.972 ms/op 0.78
computeDeltas 1400000 validators 7200 proto nodes 8.5854 ms/op 11.226 ms/op 0.76
computeDeltas 2100000 validators 300 proto nodes 12.836 ms/op 17.722 ms/op 0.72
computeDeltas 2100000 validators 1200 proto nodes 12.728 ms/op 18.897 ms/op 0.67
computeDeltas 2100000 validators 7200 proto nodes 12.784 ms/op 22.095 ms/op 0.58
altair processAttestation - 250000 vs - 7PWei normalcase 1.6476 ms/op 2.2707 ms/op 0.73
altair processAttestation - 250000 vs - 7PWei worstcase 2.4605 ms/op 3.7610 ms/op 0.65
altair processAttestation - setStatus - 1/6 committees join 101.94 us/op 156.35 us/op 0.65
altair processAttestation - setStatus - 1/3 committees join 176.80 us/op 269.66 us/op 0.66
altair processAttestation - setStatus - 1/2 committees join 258.49 us/op 384.75 us/op 0.67
altair processAttestation - setStatus - 2/3 committees join 350.09 us/op 488.11 us/op 0.72
altair processAttestation - setStatus - 4/5 committees join 475.52 us/op 677.58 us/op 0.70
altair processAttestation - setStatus - 100% committees join 561.03 us/op 805.22 us/op 0.70
altair processBlock - 250000 vs - 7PWei normalcase 4.0270 ms/op 6.1598 ms/op 0.65
altair processBlock - 250000 vs - 7PWei normalcase hashState 29.712 ms/op 34.901 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase 35.906 ms/op 42.442 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase hashState 87.133 ms/op 92.145 ms/op 0.95
phase0 processBlock - 250000 vs - 7PWei normalcase 2.0100 ms/op 2.0377 ms/op 0.99
phase0 processBlock - 250000 vs - 7PWei worstcase 23.391 ms/op 29.786 ms/op 0.79
altair processEth1Data - 250000 vs - 7PWei normalcase 254.80 us/op 352.71 us/op 0.72
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.0680 us/op 7.2330 us/op 0.70
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 32.932 us/op 53.695 us/op 0.61
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.399 us/op 14.337 us/op 0.73
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.7420 us/op 7.8000 us/op 0.74
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 142.64 us/op 220.75 us/op 0.65
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.2581 ms/op 1.9338 ms/op 0.65
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.6497 ms/op 2.4630 ms/op 0.67
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.6473 ms/op 2.4457 ms/op 0.67
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.3628 ms/op 4.8189 ms/op 0.70
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.7648 ms/op 2.4481 ms/op 0.72
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.5381 ms/op 4.8150 ms/op 0.73
Tree 40 250000 create 348.65 ms/op 469.92 ms/op 0.74
Tree 40 250000 get(125000) 110.21 ns/op 144.16 ns/op 0.76
Tree 40 250000 set(125000) 1.1763 us/op 1.6425 us/op 0.72
Tree 40 250000 toArray() 16.328 ms/op 19.462 ms/op 0.84
Tree 40 250000 iterate all - toArray() + loop 17.229 ms/op 19.618 ms/op 0.88
Tree 40 250000 iterate all - get(i) 42.075 ms/op 54.694 ms/op 0.77
Array 250000 create 2.0062 ms/op 2.5124 ms/op 0.80
Array 250000 clone - spread 627.93 us/op 822.62 us/op 0.76
Array 250000 get(125000) 0.54700 ns/op 0.42700 ns/op 1.28
Array 250000 set(125000) 0.57800 ns/op 0.43700 ns/op 1.32
Array 250000 iterate all - loop 98.624 us/op 84.903 us/op 1.16
phase0 afterProcessEpoch - 250000 vs - 7PWei 36.736 ms/op 42.898 ms/op 0.86
Array.fill - length 1000000 2.3287 ms/op 3.6272 ms/op 0.64
Array push - length 1000000 9.3410 ms/op 15.947 ms/op 0.59
Array.get 0.24707 ns/op 0.29349 ns/op 0.84
Uint8Array.get 0.39960 ns/op 0.45025 ns/op 0.89
phase0 beforeProcessEpoch - 250000 vs - 7PWei 12.858 ms/op 18.191 ms/op 0.71
altair processEpoch - mainnet_e81889 258.10 ms/op 302.62 ms/op 0.85
mainnet_e81889 - altair beforeProcessEpoch 14.701 ms/op 22.290 ms/op 0.66
mainnet_e81889 - altair processJustificationAndFinalization 4.3470 us/op 5.4610 us/op 0.80
mainnet_e81889 - altair processInactivityUpdates 3.2842 ms/op 4.8164 ms/op 0.68
mainnet_e81889 - altair processRewardsAndPenalties 44.011 ms/op 42.621 ms/op 1.03
mainnet_e81889 - altair processRegistryUpdates 827.00 ns/op 693.00 ns/op 1.19
mainnet_e81889 - altair processSlashings 401.00 ns/op 213.00 ns/op 1.88
mainnet_e81889 - altair processEth1DataReset 386.00 ns/op 216.00 ns/op 1.79
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.0913 ms/op 1.2207 ms/op 0.89
mainnet_e81889 - altair processSlashingsReset 1.0040 us/op 1.0260 us/op 0.98
mainnet_e81889 - altair processRandaoMixesReset 1.2420 us/op 1.2720 us/op 0.98
mainnet_e81889 - altair processHistoricalRootsUpdate 393.00 ns/op 206.00 ns/op 1.91
mainnet_e81889 - altair processParticipationFlagUpdates 681.00 ns/op 555.00 ns/op 1.23
mainnet_e81889 - altair processSyncCommitteeUpdates 353.00 ns/op 161.00 ns/op 2.19
mainnet_e81889 - altair afterProcessEpoch 39.824 ms/op 45.221 ms/op 0.88
capella processEpoch - mainnet_e217614 918.33 ms/op 987.40 ms/op 0.93
mainnet_e217614 - capella beforeProcessEpoch 59.919 ms/op 69.796 ms/op 0.86
mainnet_e217614 - capella processJustificationAndFinalization 4.5860 us/op 5.4850 us/op 0.84
mainnet_e217614 - capella processInactivityUpdates 12.426 ms/op 14.807 ms/op 0.84
mainnet_e217614 - capella processRewardsAndPenalties 193.46 ms/op 191.89 ms/op 1.01
mainnet_e217614 - capella processRegistryUpdates 5.2130 us/op 7.6720 us/op 0.68
mainnet_e217614 - capella processSlashings 384.00 ns/op 210.00 ns/op 1.83
mainnet_e217614 - capella processEth1DataReset 384.00 ns/op 195.00 ns/op 1.97
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.6754 ms/op 15.166 ms/op 0.24
mainnet_e217614 - capella processSlashingsReset 1.1510 us/op 967.00 ns/op 1.19
mainnet_e217614 - capella processRandaoMixesReset 1.2470 us/op 1.3470 us/op 0.93
mainnet_e217614 - capella processHistoricalRootsUpdate 376.00 ns/op 203.00 ns/op 1.85
mainnet_e217614 - capella processParticipationFlagUpdates 675.00 ns/op 603.00 ns/op 1.12
mainnet_e217614 - capella afterProcessEpoch 105.42 ms/op 122.50 ms/op 0.86
phase0 processEpoch - mainnet_e58758 267.90 ms/op 316.93 ms/op 0.85
mainnet_e58758 - phase0 beforeProcessEpoch 70.777 ms/op 87.749 ms/op 0.81
mainnet_e58758 - phase0 processJustificationAndFinalization 4.4640 us/op 6.3270 us/op 0.71
mainnet_e58758 - phase0 processRewardsAndPenalties 39.732 ms/op 42.066 ms/op 0.94
mainnet_e58758 - phase0 processRegistryUpdates 2.7270 us/op 4.0340 us/op 0.68
mainnet_e58758 - phase0 processSlashings 390.00 ns/op 323.00 ns/op 1.21
mainnet_e58758 - phase0 processEth1DataReset 386.00 ns/op 227.00 ns/op 1.70
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 986.16 us/op 1.3700 ms/op 0.72
mainnet_e58758 - phase0 processSlashingsReset 916.00 ns/op 976.00 ns/op 0.94
mainnet_e58758 - phase0 processRandaoMixesReset 1.2100 us/op 1.2870 us/op 0.94
mainnet_e58758 - phase0 processHistoricalRootsUpdate 386.00 ns/op 201.00 ns/op 1.92
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1340 us/op 990.00 ns/op 1.15
mainnet_e58758 - phase0 afterProcessEpoch 32.180 ms/op 36.623 ms/op 0.88
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.6241 ms/op 1.3838 ms/op 1.17
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.3272 ms/op 3.3172 ms/op 0.40
altair processInactivityUpdates - 250000 normalcase 17.506 ms/op 20.320 ms/op 0.86
altair processInactivityUpdates - 250000 worstcase 17.225 ms/op 19.231 ms/op 0.90
phase0 processRegistryUpdates - 250000 normalcase 2.8040 us/op 6.5770 us/op 0.43
phase0 processRegistryUpdates - 250000 badcase_full_deposits 270.52 us/op 285.90 us/op 0.95
phase0 processRegistryUpdates - 250000 worstcase 0.5 106.65 ms/op 119.51 ms/op 0.89
altair processRewardsAndPenalties - 250000 normalcase 30.068 ms/op 37.875 ms/op 0.79
altair processRewardsAndPenalties - 250000 worstcase 31.037 ms/op 25.740 ms/op 1.21
phase0 getAttestationDeltas - 250000 normalcase 6.4156 ms/op 8.5499 ms/op 0.75
phase0 getAttestationDeltas - 250000 worstcase 5.1818 ms/op 6.1334 ms/op 0.84
phase0 processSlashings - 250000 worstcase 86.263 us/op 131.30 us/op 0.66
altair processSyncCommitteeUpdates - 250000 9.1234 ms/op 11.299 ms/op 0.81
BeaconState.hashTreeRoot - No change 411.00 ns/op 289.00 ns/op 1.42
BeaconState.hashTreeRoot - 1 full validator 78.562 us/op 75.302 us/op 1.04
BeaconState.hashTreeRoot - 32 full validator 846.05 us/op 876.61 us/op 0.97
BeaconState.hashTreeRoot - 512 full validator 9.6305 ms/op 9.5722 ms/op 1.01
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 91.546 us/op 91.228 us/op 1.00
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5948 ms/op 1.6963 ms/op 0.94
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 25.930 ms/op 29.283 ms/op 0.89
BeaconState.hashTreeRoot - 1 balances 70.326 us/op 75.922 us/op 0.93
BeaconState.hashTreeRoot - 32 balances 695.80 us/op 674.10 us/op 1.03
BeaconState.hashTreeRoot - 512 balances 5.2434 ms/op 8.8320 ms/op 0.59
BeaconState.hashTreeRoot - 250000 balances 188.59 ms/op 166.76 ms/op 1.13
aggregationBits - 2048 els - zipIndexesInBitList 16.983 us/op 22.010 us/op 0.77
byteArrayEquals 32 41.249 ns/op 54.231 ns/op 0.76
Buffer.compare 32 14.581 ns/op 17.524 ns/op 0.83
byteArrayEquals 1024 1.1939 us/op 1.6104 us/op 0.74
Buffer.compare 1024 25.017 ns/op 25.066 ns/op 1.00
byteArrayEquals 16384 18.829 us/op 25.701 us/op 0.73
Buffer.compare 16384 183.49 ns/op 203.35 ns/op 0.90
byteArrayEquals 123687377 147.18 ms/op 193.24 ms/op 0.76
Buffer.compare 123687377 5.3235 ms/op 7.9755 ms/op 0.67
byteArrayEquals 32 - diff last byte 41.606 ns/op 53.195 ns/op 0.78
Buffer.compare 32 - diff last byte 15.706 ns/op 17.392 ns/op 0.90
byteArrayEquals 1024 - diff last byte 1.2462 us/op 1.6108 us/op 0.77
Buffer.compare 1024 - diff last byte 25.659 ns/op 25.594 ns/op 1.00
byteArrayEquals 16384 - diff last byte 19.890 us/op 26.138 us/op 0.76
Buffer.compare 16384 - diff last byte 229.30 ns/op 204.38 ns/op 1.12
byteArrayEquals 123687377 - diff last byte 147.34 ms/op 195.67 ms/op 0.75
Buffer.compare 123687377 - diff last byte 4.2794 ms/op 8.2003 ms/op 0.52
byteArrayEquals 32 - random bytes 4.9240 ns/op 5.1940 ns/op 0.95
Buffer.compare 32 - random bytes 16.000 ns/op 17.546 ns/op 0.91
byteArrayEquals 1024 - random bytes 4.8530 ns/op 5.2880 ns/op 0.92
Buffer.compare 1024 - random bytes 16.037 ns/op 17.449 ns/op 0.92
byteArrayEquals 16384 - random bytes 4.8710 ns/op 5.1500 ns/op 0.95
Buffer.compare 16384 - random bytes 16.191 ns/op 17.058 ns/op 0.95
byteArrayEquals 123687377 - random bytes 7.5800 ns/op 6.6000 ns/op 1.15
Buffer.compare 123687377 - random bytes 19.400 ns/op 19.050 ns/op 1.02
regular array get 100000 times 40.328 us/op 42.282 us/op 0.95
wrappedArray get 100000 times 40.178 us/op 45.439 us/op 0.88
arrayWithProxy get 100000 times 11.614 ms/op 12.482 ms/op 0.93
ssz.Root.equals 37.890 ns/op 47.935 ns/op 0.79
byteArrayEquals 37.371 ns/op 47.674 ns/op 0.78
Buffer.compare 8.5850 ns/op 10.740 ns/op 0.80
processSlot - 1 slots 8.7370 us/op 11.176 us/op 0.78
processSlot - 32 slots 2.5091 ms/op 2.7323 ms/op 0.92
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.1835 ms/op 3.5725 ms/op 0.89
getCommitteeAssignments - req 1 vs - 250000 vc 1.7018 ms/op 2.2179 ms/op 0.77
getCommitteeAssignments - req 100 vs - 250000 vc 3.3960 ms/op 4.2730 ms/op 0.79
getCommitteeAssignments - req 1000 vs - 250000 vc 3.5612 ms/op 4.5137 ms/op 0.79
findModifiedValidators - 10000 modified validators 768.30 ms/op 783.36 ms/op 0.98
findModifiedValidators - 1000 modified validators 687.50 ms/op 744.93 ms/op 0.92
findModifiedValidators - 100 modified validators 264.38 ms/op 282.58 ms/op 0.94
findModifiedValidators - 10 modified validators 126.84 ms/op 147.12 ms/op 0.86
findModifiedValidators - 1 modified validators 156.80 ms/op 154.18 ms/op 1.02
findModifiedValidators - no difference 130.69 ms/op 154.66 ms/op 0.84
compare ViewDUs 6.0327 s/op 6.6787 s/op 0.90
compare each validator Uint8Array 1.1473 s/op 1.8794 s/op 0.61
compare ViewDU to Uint8Array 895.23 ms/op 1.2292 s/op 0.73
migrate state 1000000 validators, 24 modified, 0 new 772.51 ms/op 896.91 ms/op 0.86
migrate state 1000000 validators, 1700 modified, 1000 new 1.0705 s/op 1.2120 s/op 0.88
migrate state 1000000 validators, 3400 modified, 2000 new 1.3041 s/op 1.4699 s/op 0.89
migrate state 1500000 validators, 24 modified, 0 new 983.29 ms/op 971.57 ms/op 1.01
migrate state 1500000 validators, 1700 modified, 1000 new 1.1670 s/op 1.2424 s/op 0.94
migrate state 1500000 validators, 3400 modified, 2000 new 1.1926 s/op 1.3291 s/op 0.90
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.7800 ns/op 4.1800 ns/op 1.38
state getBlockRootAtSlot - 250000 vs - 7PWei 494.48 ns/op 692.33 ns/op 0.71
naive computeProposerIndex 100000 validators 40.181 ms/op 52.115 ms/op 0.77
computeProposerIndex 100000 validators 1.2821 ms/op 1.5562 ms/op 0.82
naiveGetNextSyncCommitteeIndices 1000 validators 6.4882 s/op 8.3022 s/op 0.78
getNextSyncCommitteeIndices 1000 validators 92.819 ms/op 116.92 ms/op 0.79
naiveGetNextSyncCommitteeIndices 10000 validators 6.1662 s/op 7.7506 s/op 0.80
getNextSyncCommitteeIndices 10000 validators 89.826 ms/op 132.62 ms/op 0.68
naiveGetNextSyncCommitteeIndices 100000 validators 5.4120 s/op 8.8127 s/op 0.61
getNextSyncCommitteeIndices 100000 validators 86.593 ms/op 112.80 ms/op 0.77
naive computeShuffledIndex 100000 validators 20.820 s/op 26.645 s/op 0.78
cached computeShuffledIndex 100000 validators 438.42 ms/op 561.43 ms/op 0.78
naive computeShuffledIndex 2000000 validators 403.07 s/op 509.91 s/op 0.79
cached computeShuffledIndex 2000000 validators 13.784 s/op 39.765 s/op 0.35
computeProposers - vc 250000 482.80 us/op 620.00 us/op 0.78
computeEpochShuffling - vc 250000 34.612 ms/op 43.662 ms/op 0.79
getNextSyncCommittee - vc 250000 8.3441 ms/op 10.859 ms/op 0.77
computeSigningRoot for AttestationData 16.087 us/op 23.505 us/op 0.68
hash AttestationData serialized data then Buffer.toString(base64) 1.1139 us/op 1.5771 us/op 0.71
toHexString serialized data 809.85 ns/op 1.2804 us/op 0.63
Buffer.toString(base64) 100.61 ns/op 155.38 ns/op 0.65
nodejs block root to RootHex using toHex 97.410 ns/op 142.53 ns/op 0.68
nodejs block root to RootHex using toRootHex 64.754 ns/op 86.528 ns/op 0.75
nodejs fromhex(blob) 97.155 ms/op 115.85 ms/op 0.84
nodejs fromHexInto(blob) 76.443 ms/op 94.326 ms/op 0.81
browser block root to RootHex using the deprecated toHexString 190.42 ns/op 214.50 ns/op 0.89
browser block root to RootHex using toHex 149.99 ns/op 172.22 ns/op 0.87
browser block root to RootHex using toRootHex 136.40 ns/op 165.65 ns/op 0.82
browser fromHexInto(blob) 628.03 us/op 828.66 us/op 0.76
browser fromHex(blob) 615.83 ms/op 790.68 ms/op 0.78

by benchmarkbot/action

Copy link
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

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

should remove added constants from here as well

// TODO Gloas: remove skipped constant

might be good to do another spec bump as well once ethereum/consensus-specs#4599 is released

@nflaig nflaig merged commit e18102e into unstable Sep 23, 2025
50 of 57 checks passed
@nflaig nflaig deleted the nc/epbs-presets branch September 23, 2025 10:48
@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

spec-gloas Issues targeting the Glamsterdam spec version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants