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

Conversation

@matthewkeil
Copy link
Member

Motivation

Ensure that all spec tests are running for peerDas and fulu scopes.

Rename merkle.test.ts -> merkleProof.test.ts so it matches the other file namings

@matthewkeil matthewkeil requested a review from a team as a code owner September 23, 2025 11:32
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @matthewkeil, 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 focuses on enhancing the test suite by enabling previously skipped EIP7594 specification tests, thereby broadening the coverage for peerDas and fulu scopes. Additionally, it refactors a test file's name from merkle.test.ts to merkleProof.test.ts to maintain consistent naming conventions across the project, improving code readability and maintainability.

Highlights

  • EIP7594 Spec Tests Enabled: The EIP7594 specification tests have been re-enabled by removing 'eip7594' from the skippedForks list in defaultSkipOpts, ensuring comprehensive test coverage for peerDas and fulu scopes.
  • Test File Renaming: The test file merkle.test.ts has been renamed to merkleProof.test.ts to align with existing naming conventions and improve clarity. Corresponding variable names within the file were also updated.
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 enables the eip7594 spec tests and renames a test file for better consistency. However, there appears to be a typo in the new filename. The file merkle.test.ts was renamed to merkleProoof.test.ts, but based on the pull request's intent, it should be merkleProof.test.ts. This should be corrected.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 23, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 2906e1c Previous: 8b45b1e Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 830.02 us/op 1.2754 ms/op 0.65
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 29.855 us/op 38.569 us/op 0.77
BLS verify - blst 958.05 us/op 988.99 us/op 0.97
BLS verifyMultipleSignatures 3 - blst 1.2924 ms/op 1.3210 ms/op 0.98
BLS verifyMultipleSignatures 8 - blst 1.9761 ms/op 1.9808 ms/op 1.00
BLS verifyMultipleSignatures 32 - blst 4.6007 ms/op 5.0284 ms/op 0.91
BLS verifyMultipleSignatures 64 - blst 8.4962 ms/op 9.4093 ms/op 0.90
BLS verifyMultipleSignatures 128 - blst 17.524 ms/op 18.846 ms/op 0.93
BLS deserializing 10000 signatures 638.15 ms/op 783.58 ms/op 0.81
BLS deserializing 100000 signatures 6.5064 s/op 7.2816 s/op 0.89
BLS verifyMultipleSignatures - same message - 3 - blst 958.04 us/op 1.0094 ms/op 0.95
BLS verifyMultipleSignatures - same message - 8 - blst 1.0616 ms/op 1.1626 ms/op 0.91
BLS verifyMultipleSignatures - same message - 32 - blst 1.7085 ms/op 1.9550 ms/op 0.87
BLS verifyMultipleSignatures - same message - 64 - blst 2.5694 ms/op 2.7635 ms/op 0.93
BLS verifyMultipleSignatures - same message - 128 - blst 4.3358 ms/op 4.7395 ms/op 0.91
BLS aggregatePubkeys 32 - blst 18.526 us/op 20.864 us/op 0.89
BLS aggregatePubkeys 128 - blst 65.424 us/op 74.088 us/op 0.88
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 58.503 ms/op 68.256 ms/op 0.86
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 35.425 ms/op 58.741 ms/op 0.60
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 36.165 ms/op 39.072 ms/op 0.93
getSlashingsAndExits - default max 46.574 us/op 83.165 us/op 0.56
getSlashingsAndExits - 2k 287.20 us/op 426.44 us/op 0.67
isKnown best case - 1 super set check 409.00 ns/op 232.00 ns/op 1.76
isKnown normal case - 2 super set checks 410.00 ns/op 221.00 ns/op 1.86
isKnown worse case - 16 super set checks 411.00 ns/op 212.00 ns/op 1.94
InMemoryCheckpointStateCache - add get delete 2.4820 us/op 2.4320 us/op 1.02
validate api signedAggregateAndProof - struct 2.0661 ms/op 1.7339 ms/op 1.19
validate gossip signedAggregateAndProof - struct 1.4641 ms/op 1.6878 ms/op 0.87
batch validate gossip attestation - vc 640000 - chunk 32 108.26 us/op 121.88 us/op 0.89
batch validate gossip attestation - vc 640000 - chunk 64 94.980 us/op 109.37 us/op 0.87
batch validate gossip attestation - vc 640000 - chunk 128 88.744 us/op 101.49 us/op 0.87
batch validate gossip attestation - vc 640000 - chunk 256 86.226 us/op 100.39 us/op 0.86
pickEth1Vote - no votes 789.05 us/op 973.48 us/op 0.81
pickEth1Vote - max votes 4.4555 ms/op 5.6122 ms/op 0.79
pickEth1Vote - Eth1Data hashTreeRoot value x2048 9.9452 ms/op 10.513 ms/op 0.95
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 17.236 ms/op 14.318 ms/op 1.20
pickEth1Vote - Eth1Data fastSerialize value x2048 346.49 us/op 437.96 us/op 0.79
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.6526 ms/op 2.0954 ms/op 1.27
bytes32 toHexString 517.00 ns/op 358.00 ns/op 1.44
bytes32 Buffer.toString(hex) 419.00 ns/op 239.00 ns/op 1.75
bytes32 Buffer.toString(hex) from Uint8Array 512.00 ns/op 348.00 ns/op 1.47
bytes32 Buffer.toString(hex) + 0x 471.00 ns/op 238.00 ns/op 1.98
Object access 1 prop 0.31200 ns/op 0.11700 ns/op 2.67
Map access 1 prop 0.32000 ns/op 0.12300 ns/op 2.60
Object get x1000 5.1250 ns/op 5.7440 ns/op 0.89
Map get x1000 5.8240 ns/op 6.4360 ns/op 0.90
Object set x1000 21.885 ns/op 28.653 ns/op 0.76
Map set x1000 17.888 ns/op 19.712 ns/op 0.91
Return object 10000 times 0.29450 ns/op 0.28900 ns/op 1.02
Throw Error 10000 times 3.7948 us/op 4.4232 us/op 0.86
toHex 96.333 ns/op 138.78 ns/op 0.69
Buffer.from 89.805 ns/op 132.40 ns/op 0.68
shared Buffer 62.722 ns/op 82.987 ns/op 0.76
fastMsgIdFn sha256 / 200 bytes 1.9170 us/op 2.1880 us/op 0.88
fastMsgIdFn h32 xxhash / 200 bytes 390.00 ns/op 204.00 ns/op 1.91
fastMsgIdFn h64 xxhash / 200 bytes 456.00 ns/op 264.00 ns/op 1.73
fastMsgIdFn sha256 / 1000 bytes 5.7250 us/op 7.4510 us/op 0.77
fastMsgIdFn h32 xxhash / 1000 bytes 525.00 ns/op 335.00 ns/op 1.57
fastMsgIdFn h64 xxhash / 1000 bytes 525.00 ns/op 333.00 ns/op 1.58
fastMsgIdFn sha256 / 10000 bytes 50.215 us/op 64.418 us/op 0.78
fastMsgIdFn h32 xxhash / 10000 bytes 1.9820 us/op 1.8410 us/op 1.08
fastMsgIdFn h64 xxhash / 10000 bytes 1.4030 us/op 1.2240 us/op 1.15
send data - 1000 256B messages 14.328 ms/op 16.476 ms/op 0.87
send data - 1000 512B messages 16.896 ms/op 21.500 ms/op 0.79
send data - 1000 1024B messages 24.685 ms/op 27.899 ms/op 0.88
send data - 1000 1200B messages 21.361 ms/op 24.696 ms/op 0.86
send data - 1000 2048B messages 22.519 ms/op 23.812 ms/op 0.95
send data - 1000 4096B messages 23.493 ms/op 28.014 ms/op 0.84
send data - 1000 16384B messages 33.715 ms/op 43.571 ms/op 0.77
send data - 1000 65536B messages 87.478 ms/op 116.80 ms/op 0.75
enrSubnets - fastDeserialize 64 bits 1.0080 us/op 897.00 ns/op 1.12
enrSubnets - ssz BitVector 64 bits 519.00 ns/op 324.00 ns/op 1.60
enrSubnets - fastDeserialize 4 bits 330.00 ns/op 124.00 ns/op 2.66
enrSubnets - ssz BitVector 4 bits 511.00 ns/op 324.00 ns/op 1.58
prioritizePeers score -10:0 att 32-0.1 sync 2-0 210.59 us/op 274.68 us/op 0.77
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 244.34 us/op 264.86 us/op 0.92
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 412.63 us/op 401.44 us/op 1.03
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 770.16 us/op 713.67 us/op 1.08
prioritizePeers score 0:0 att 64-1 sync 4-1 925.34 us/op 885.06 us/op 1.05
array of 16000 items push then shift 1.4050 us/op 1.6269 us/op 0.86
LinkedList of 16000 items push then shift 6.9280 ns/op 7.9840 ns/op 0.87
array of 16000 items push then pop 74.420 ns/op 81.971 ns/op 0.91
LinkedList of 16000 items push then pop 6.9910 ns/op 7.8660 ns/op 0.89
array of 24000 items push then shift 1.9568 us/op 2.4137 us/op 0.81
LinkedList of 24000 items push then shift 6.6680 ns/op 8.1140 ns/op 0.82
array of 24000 items push then pop 99.278 ns/op 127.47 ns/op 0.78
LinkedList of 24000 items push then pop 6.3760 ns/op 7.7980 ns/op 0.82
intersect bitArray bitLen 8 5.4190 ns/op 6.5820 ns/op 0.82
intersect array and set length 8 32.750 ns/op 39.048 ns/op 0.84
intersect bitArray bitLen 128 27.104 ns/op 29.908 ns/op 0.91
intersect array and set length 128 547.74 ns/op 651.47 ns/op 0.84
bitArray.getTrueBitIndexes() bitLen 128 1.1790 us/op 1.0170 us/op 1.16
bitArray.getTrueBitIndexes() bitLen 248 1.9680 us/op 1.7970 us/op 1.10
bitArray.getTrueBitIndexes() bitLen 512 3.8450 us/op 3.7000 us/op 1.04
Buffer.concat 32 items 760.00 ns/op 711.00 ns/op 1.07
Uint8Array.set 32 items 1.0530 us/op 919.00 ns/op 1.15
Buffer.copy 1.9510 us/op 2.1050 us/op 0.93
Uint8Array.set - with subarray 1.6740 us/op 1.5420 us/op 1.09
Uint8Array.set - without subarray 1.0920 us/op 877.00 ns/op 1.25
getUint32 - dataview 445.00 ns/op 197.00 ns/op 2.26
getUint32 - manual 320.00 ns/op 122.00 ns/op 2.62
Set add up to 64 items then delete first 1.9443 us/op 2.2678 us/op 0.86
OrderedSet add up to 64 items then delete first 3.2934 us/op 3.4652 us/op 0.95
Set add up to 64 items then delete last 2.1299 us/op 2.6370 us/op 0.81
OrderedSet add up to 64 items then delete last 3.2888 us/op 4.3067 us/op 0.76
Set add up to 64 items then delete middle 2.1072 us/op 2.6204 us/op 0.80
OrderedSet add up to 64 items then delete middle 4.9071 us/op 5.9461 us/op 0.83
Set add up to 128 items then delete first 4.2364 us/op 5.4200 us/op 0.78
OrderedSet add up to 128 items then delete first 7.1349 us/op 7.7515 us/op 0.92
Set add up to 128 items then delete last 4.5016 us/op 5.2029 us/op 0.87
OrderedSet add up to 128 items then delete last 6.5672 us/op 8.0272 us/op 0.82
Set add up to 128 items then delete middle 4.1760 us/op 5.8952 us/op 0.71
OrderedSet add up to 128 items then delete middle 12.936 us/op 15.153 us/op 0.85
Set add up to 256 items then delete first 8.3953 us/op 11.657 us/op 0.72
OrderedSet add up to 256 items then delete first 14.325 us/op 18.827 us/op 0.76
Set add up to 256 items then delete last 8.6576 us/op 13.053 us/op 0.66
OrderedSet add up to 256 items then delete last 12.698 us/op 21.970 us/op 0.58
Set add up to 256 items then delete middle 8.2265 us/op 13.481 us/op 0.61
OrderedSet add up to 256 items then delete middle 40.864 us/op 45.765 us/op 0.89
transfer serialized Status (84 B) 2.0040 us/op 2.2740 us/op 0.88
copy serialized Status (84 B) 1.2050 us/op 1.2060 us/op 1.00
transfer serialized SignedVoluntaryExit (112 B) 2.0060 us/op 2.2720 us/op 0.88
copy serialized SignedVoluntaryExit (112 B) 1.2140 us/op 1.2010 us/op 1.01
transfer serialized ProposerSlashing (416 B) 2.0160 us/op 2.2920 us/op 0.88
copy serialized ProposerSlashing (416 B) 1.5220 us/op 1.5960 us/op 0.95
transfer serialized Attestation (485 B) 2.0410 us/op 3.1960 us/op 0.64
copy serialized Attestation (485 B) 1.2600 us/op 1.7610 us/op 0.72
transfer serialized AttesterSlashing (33232 B) 2.0860 us/op 3.0190 us/op 0.69
copy serialized AttesterSlashing (33232 B) 3.5900 us/op 4.9710 us/op 0.72
transfer serialized Small SignedBeaconBlock (128000 B) 2.1080 us/op 3.8850 us/op 0.54
copy serialized Small SignedBeaconBlock (128000 B) 9.1080 us/op 13.080 us/op 0.70
transfer serialized Avg SignedBeaconBlock (200000 B) 2.1400 us/op 4.1070 us/op 0.52
copy serialized Avg SignedBeaconBlock (200000 B) 8.1980 us/op 14.150 us/op 0.58
transfer serialized BlobsSidecar (524380 B) 3.2520 us/op 3.8860 us/op 0.84
copy serialized BlobsSidecar (524380 B) 104.11 us/op 116.29 us/op 0.90
transfer serialized Big SignedBeaconBlock (1000000 B) 4.2620 us/op 4.1830 us/op 1.02
copy serialized Big SignedBeaconBlock (1000000 B) 144.05 us/op 325.86 us/op 0.44
pass gossip attestations to forkchoice per slot 2.4428 ms/op 2.8909 ms/op 0.85
forkChoice updateHead vc 100000 bc 64 eq 0 379.83 us/op 451.75 us/op 0.84
forkChoice updateHead vc 600000 bc 64 eq 0 2.2274 ms/op 3.0330 ms/op 0.73
forkChoice updateHead vc 1000000 bc 64 eq 0 4.3430 ms/op 4.7678 ms/op 0.91
forkChoice updateHead vc 600000 bc 320 eq 0 2.3345 ms/op 3.1306 ms/op 0.75
forkChoice updateHead vc 600000 bc 1200 eq 0 2.3485 ms/op 2.9917 ms/op 0.78
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9872 ms/op 3.1951 ms/op 0.93
forkChoice updateHead vc 600000 bc 64 eq 1000 9.9210 ms/op 10.784 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 10000 9.8797 ms/op 11.539 ms/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 300000 11.663 ms/op 15.220 ms/op 0.77
computeDeltas 500000 validators 300 proto nodes 3.2970 ms/op 4.0630 ms/op 0.81
computeDeltas 500000 validators 1200 proto nodes 3.2979 ms/op 4.1195 ms/op 0.80
computeDeltas 500000 validators 7200 proto nodes 3.2135 ms/op 4.0644 ms/op 0.79
computeDeltas 750000 validators 300 proto nodes 4.8441 ms/op 6.2867 ms/op 0.77
computeDeltas 750000 validators 1200 proto nodes 4.8738 ms/op 6.1840 ms/op 0.79
computeDeltas 750000 validators 7200 proto nodes 4.9350 ms/op 5.8716 ms/op 0.84
computeDeltas 1400000 validators 300 proto nodes 8.9804 ms/op 11.544 ms/op 0.78
computeDeltas 1400000 validators 1200 proto nodes 8.9756 ms/op 11.371 ms/op 0.79
computeDeltas 1400000 validators 7200 proto nodes 8.7177 ms/op 11.521 ms/op 0.76
computeDeltas 2100000 validators 300 proto nodes 13.222 ms/op 17.658 ms/op 0.75
computeDeltas 2100000 validators 1200 proto nodes 13.190 ms/op 17.189 ms/op 0.77
computeDeltas 2100000 validators 7200 proto nodes 13.266 ms/op 19.175 ms/op 0.69
altair processAttestation - 250000 vs - 7PWei normalcase 1.6542 ms/op 3.8882 ms/op 0.43
altair processAttestation - 250000 vs - 7PWei worstcase 2.3784 ms/op 4.6609 ms/op 0.51
altair processAttestation - setStatus - 1/6 committees join 107.28 us/op 163.06 us/op 0.66
altair processAttestation - setStatus - 1/3 committees join 191.81 us/op 273.70 us/op 0.70
altair processAttestation - setStatus - 1/2 committees join 274.38 us/op 373.31 us/op 0.73
altair processAttestation - setStatus - 2/3 committees join 394.32 us/op 465.23 us/op 0.85
altair processAttestation - setStatus - 4/5 committees join 481.24 us/op 646.22 us/op 0.74
altair processAttestation - setStatus - 100% committees join 573.25 us/op 738.98 us/op 0.78
altair processBlock - 250000 vs - 7PWei normalcase 4.1582 ms/op 4.5214 ms/op 0.92
altair processBlock - 250000 vs - 7PWei normalcase hashState 24.572 ms/op 33.564 ms/op 0.73
altair processBlock - 250000 vs - 7PWei worstcase 34.967 ms/op 37.583 ms/op 0.93
altair processBlock - 250000 vs - 7PWei worstcase hashState 78.489 ms/op 76.551 ms/op 1.03
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5962 ms/op 1.6311 ms/op 0.98
phase0 processBlock - 250000 vs - 7PWei worstcase 23.245 ms/op 22.316 ms/op 1.04
altair processEth1Data - 250000 vs - 7PWei normalcase 277.55 us/op 347.12 us/op 0.80
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.6700 us/op 6.4050 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 33.362 us/op 41.114 us/op 0.81
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.6980 us/op 11.326 us/op 0.86
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 5.9780 us/op 7.3440 us/op 0.81
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 152.35 us/op 167.45 us/op 0.91
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3959 ms/op 1.8569 ms/op 0.75
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8230 ms/op 2.4003 ms/op 0.76
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8594 ms/op 2.5262 ms/op 0.74
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.8791 ms/op 4.9110 ms/op 0.79
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.8548 ms/op 2.4325 ms/op 0.76
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.8047 ms/op 5.2210 ms/op 0.73
Tree 40 250000 create 394.19 ms/op 472.13 ms/op 0.83
Tree 40 250000 get(125000) 112.75 ns/op 145.21 ns/op 0.78
Tree 40 250000 set(125000) 1.2066 us/op 1.5430 us/op 0.78
Tree 40 250000 toArray() 10.489 ms/op 18.631 ms/op 0.56
Tree 40 250000 iterate all - toArray() + loop 17.620 ms/op 19.595 ms/op 0.90
Tree 40 250000 iterate all - get(i) 48.442 ms/op 59.043 ms/op 0.82
Array 250000 create 2.3567 ms/op 2.9869 ms/op 0.79
Array 250000 clone - spread 656.63 us/op 1.8773 ms/op 0.35
Array 250000 get(125000) 0.59100 ns/op 0.41800 ns/op 1.41
Array 250000 set(125000) 0.60100 ns/op 0.44000 ns/op 1.37
Array 250000 iterate all - loop 77.473 us/op 83.169 us/op 0.93
phase0 afterProcessEpoch - 250000 vs - 7PWei 38.657 ms/op 41.548 ms/op 0.93
Array.fill - length 1000000 2.4891 ms/op 4.1441 ms/op 0.60
Array push - length 1000000 9.6579 ms/op 14.179 ms/op 0.68
Array.get 0.26937 ns/op 0.29051 ns/op 0.93
Uint8Array.get 0.34900 ns/op 0.45842 ns/op 0.76
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.621 ms/op 18.318 ms/op 0.91
altair processEpoch - mainnet_e81889 285.87 ms/op 308.26 ms/op 0.93
mainnet_e81889 - altair beforeProcessEpoch 17.690 ms/op 19.988 ms/op 0.89
mainnet_e81889 - altair processJustificationAndFinalization 4.8150 us/op 5.7300 us/op 0.84
mainnet_e81889 - altair processInactivityUpdates 3.6351 ms/op 5.1406 ms/op 0.71
mainnet_e81889 - altair processRewardsAndPenalties 42.062 ms/op 42.608 ms/op 0.99
mainnet_e81889 - altair processRegistryUpdates 848.00 ns/op 726.00 ns/op 1.17
mainnet_e81889 - altair processSlashings 395.00 ns/op 185.00 ns/op 2.14
mainnet_e81889 - altair processEth1DataReset 401.00 ns/op 172.00 ns/op 2.33
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.0369 ms/op 1.2204 ms/op 0.85
mainnet_e81889 - altair processSlashingsReset 1.1010 us/op 873.00 ns/op 1.26
mainnet_e81889 - altair processRandaoMixesReset 1.5040 us/op 1.1530 us/op 1.30
mainnet_e81889 - altair processHistoricalRootsUpdate 409.00 ns/op 181.00 ns/op 2.26
mainnet_e81889 - altair processParticipationFlagUpdates 728.00 ns/op 520.00 ns/op 1.40
mainnet_e81889 - altair processSyncCommitteeUpdates 378.00 ns/op 141.00 ns/op 2.68
mainnet_e81889 - altair afterProcessEpoch 41.267 ms/op 44.907 ms/op 0.92
capella processEpoch - mainnet_e217614 924.01 ms/op 893.60 ms/op 1.03
mainnet_e217614 - capella beforeProcessEpoch 64.968 ms/op 60.333 ms/op 1.08
mainnet_e217614 - capella processJustificationAndFinalization 4.5780 us/op 5.3960 us/op 0.85
mainnet_e217614 - capella processInactivityUpdates 12.533 ms/op 14.258 ms/op 0.88
mainnet_e217614 - capella processRewardsAndPenalties 179.80 ms/op 181.38 ms/op 0.99
mainnet_e217614 - capella processRegistryUpdates 5.5010 us/op 6.5030 us/op 0.85
mainnet_e217614 - capella processSlashings 407.00 ns/op 176.00 ns/op 2.31
mainnet_e217614 - capella processEth1DataReset 414.00 ns/op 215.00 ns/op 1.93
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.5150 ms/op 4.2088 ms/op 0.84
mainnet_e217614 - capella processSlashingsReset 1.0480 us/op 881.00 ns/op 1.19
mainnet_e217614 - capella processRandaoMixesReset 1.2760 us/op 1.1780 us/op 1.08
mainnet_e217614 - capella processHistoricalRootsUpdate 399.00 ns/op 173.00 ns/op 2.31
mainnet_e217614 - capella processParticipationFlagUpdates 716.00 ns/op 507.00 ns/op 1.41
mainnet_e217614 - capella afterProcessEpoch 107.50 ms/op 124.81 ms/op 0.86
phase0 processEpoch - mainnet_e58758 308.39 ms/op 307.56 ms/op 1.00
mainnet_e58758 - phase0 beforeProcessEpoch 75.302 ms/op 74.734 ms/op 1.01
mainnet_e58758 - phase0 processJustificationAndFinalization 6.6580 us/op 5.4740 us/op 1.22
mainnet_e58758 - phase0 processRewardsAndPenalties 33.938 ms/op 37.612 ms/op 0.90
mainnet_e58758 - phase0 processRegistryUpdates 2.7550 us/op 3.1550 us/op 0.87
mainnet_e58758 - phase0 processSlashings 391.00 ns/op 175.00 ns/op 2.23
mainnet_e58758 - phase0 processEth1DataReset 381.00 ns/op 168.00 ns/op 2.27
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 910.62 us/op 1.1820 ms/op 0.77
mainnet_e58758 - phase0 processSlashingsReset 1.1000 us/op 968.00 ns/op 1.14
mainnet_e58758 - phase0 processRandaoMixesReset 1.2210 us/op 1.1910 us/op 1.03
mainnet_e58758 - phase0 processHistoricalRootsUpdate 387.00 ns/op 177.00 ns/op 2.19
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1600 us/op 906.00 ns/op 1.28
mainnet_e58758 - phase0 afterProcessEpoch 33.647 ms/op 35.635 ms/op 0.94
phase0 processEffectiveBalanceUpdates - 250000 normalcase 995.99 us/op 1.3149 ms/op 0.76
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4561 ms/op 1.9465 ms/op 0.75
altair processInactivityUpdates - 250000 normalcase 15.355 ms/op 17.312 ms/op 0.89
altair processInactivityUpdates - 250000 worstcase 17.559 ms/op 17.759 ms/op 0.99
phase0 processRegistryUpdates - 250000 normalcase 5.7590 us/op 6.8300 us/op 0.84
phase0 processRegistryUpdates - 250000 badcase_full_deposits 284.32 us/op 263.46 us/op 1.08
phase0 processRegistryUpdates - 250000 worstcase 0.5 109.25 ms/op 103.46 ms/op 1.06
altair processRewardsAndPenalties - 250000 normalcase 23.031 ms/op 28.745 ms/op 0.80
altair processRewardsAndPenalties - 250000 worstcase 26.003 ms/op 27.358 ms/op 0.95
phase0 getAttestationDeltas - 250000 normalcase 6.0940 ms/op 6.6684 ms/op 0.91
phase0 getAttestationDeltas - 250000 worstcase 5.0233 ms/op 5.9843 ms/op 0.84
phase0 processSlashings - 250000 worstcase 93.547 us/op 92.413 us/op 1.01
altair processSyncCommitteeUpdates - 250000 10.953 ms/op 11.013 ms/op 0.99
BeaconState.hashTreeRoot - No change 436.00 ns/op 210.00 ns/op 2.08
BeaconState.hashTreeRoot - 1 full validator 86.736 us/op 72.637 us/op 1.19
BeaconState.hashTreeRoot - 32 full validator 1.4996 ms/op 863.92 us/op 1.74
BeaconState.hashTreeRoot - 512 full validator 10.731 ms/op 9.9298 ms/op 1.08
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 99.625 us/op 89.102 us/op 1.12
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.8027 ms/op 1.5244 ms/op 1.18
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 25.767 ms/op 24.472 ms/op 1.05
BeaconState.hashTreeRoot - 1 balances 68.721 us/op 88.950 us/op 0.77
BeaconState.hashTreeRoot - 32 balances 900.88 us/op 1.0535 ms/op 0.86
BeaconState.hashTreeRoot - 512 balances 7.8463 ms/op 9.1762 ms/op 0.86
BeaconState.hashTreeRoot - 250000 balances 159.88 ms/op 179.15 ms/op 0.89
aggregationBits - 2048 els - zipIndexesInBitList 17.341 us/op 21.799 us/op 0.80
byteArrayEquals 32 47.359 ns/op 53.145 ns/op 0.89
Buffer.compare 32 15.695 ns/op 16.996 ns/op 0.92
byteArrayEquals 1024 1.2858 us/op 1.5773 us/op 0.82
Buffer.compare 1024 23.178 ns/op 24.642 ns/op 0.94
byteArrayEquals 16384 20.537 us/op 25.169 us/op 0.82
Buffer.compare 16384 205.79 ns/op 195.11 ns/op 1.05
byteArrayEquals 123687377 148.58 ms/op 187.56 ms/op 0.79
Buffer.compare 123687377 3.7355 ms/op 7.1613 ms/op 0.52
byteArrayEquals 32 - diff last byte 47.435 ns/op 51.414 ns/op 0.92
Buffer.compare 32 - diff last byte 15.977 ns/op 16.740 ns/op 0.95
byteArrayEquals 1024 - diff last byte 1.2675 us/op 1.5542 us/op 0.82
Buffer.compare 1024 - diff last byte 23.844 ns/op 24.469 ns/op 0.97
byteArrayEquals 16384 - diff last byte 20.158 us/op 24.771 us/op 0.81
Buffer.compare 16384 - diff last byte 175.68 ns/op 181.71 ns/op 0.97
byteArrayEquals 123687377 - diff last byte 152.29 ms/op 189.21 ms/op 0.80
Buffer.compare 123687377 - diff last byte 4.0522 ms/op 7.3215 ms/op 0.55
byteArrayEquals 32 - random bytes 4.9280 ns/op 5.0990 ns/op 0.97
Buffer.compare 32 - random bytes 15.053 ns/op 17.044 ns/op 0.88
byteArrayEquals 1024 - random bytes 4.6820 ns/op 5.0970 ns/op 0.92
Buffer.compare 1024 - random bytes 14.193 ns/op 17.074 ns/op 0.83
byteArrayEquals 16384 - random bytes 4.9650 ns/op 5.0740 ns/op 0.98
Buffer.compare 16384 - random bytes 14.898 ns/op 17.269 ns/op 0.86
byteArrayEquals 123687377 - random bytes 7.9200 ns/op 6.4200 ns/op 1.23
Buffer.compare 123687377 - random bytes 18.600 ns/op 18.480 ns/op 1.01
regular array get 100000 times 29.453 us/op 37.636 us/op 0.78
wrappedArray get 100000 times 29.379 us/op 40.500 us/op 0.73
arrayWithProxy get 100000 times 9.1277 ms/op 12.903 ms/op 0.71
ssz.Root.equals 42.576 ns/op 46.390 ns/op 0.92
byteArrayEquals 41.911 ns/op 45.499 ns/op 0.92
Buffer.compare 8.4170 ns/op 10.433 ns/op 0.81
processSlot - 1 slots 8.7890 us/op 10.100 us/op 0.87
processSlot - 32 slots 3.6551 ms/op 2.1054 ms/op 1.74
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.2069 ms/op 3.0017 ms/op 1.07
getCommitteeAssignments - req 1 vs - 250000 vc 1.7043 ms/op 2.1421 ms/op 0.80
getCommitteeAssignments - req 100 vs - 250000 vc 3.2355 ms/op 4.1538 ms/op 0.78
getCommitteeAssignments - req 1000 vs - 250000 vc 3.4258 ms/op 4.5169 ms/op 0.76
findModifiedValidators - 10000 modified validators 752.59 ms/op 763.84 ms/op 0.99
findModifiedValidators - 1000 modified validators 642.76 ms/op 707.53 ms/op 0.91
findModifiedValidators - 100 modified validators 250.32 ms/op 252.69 ms/op 0.99
findModifiedValidators - 10 modified validators 157.12 ms/op 146.35 ms/op 1.07
findModifiedValidators - 1 modified validators 143.96 ms/op 202.03 ms/op 0.71
findModifiedValidators - no difference 146.15 ms/op 188.24 ms/op 0.78
compare ViewDUs 6.2493 s/op 6.5202 s/op 0.96
compare each validator Uint8Array 1.3792 s/op 1.6578 s/op 0.83
compare ViewDU to Uint8Array 1.0300 s/op 1.7945 s/op 0.57
migrate state 1000000 validators, 24 modified, 0 new 834.29 ms/op 812.37 ms/op 1.03
migrate state 1000000 validators, 1700 modified, 1000 new 1.0205 s/op 1.1466 s/op 0.89
migrate state 1000000 validators, 3400 modified, 2000 new 1.1853 s/op 1.3045 s/op 0.91
migrate state 1500000 validators, 24 modified, 0 new 948.69 ms/op 994.46 ms/op 0.95
migrate state 1500000 validators, 1700 modified, 1000 new 1.3173 s/op 1.2375 s/op 1.06
migrate state 1500000 validators, 3400 modified, 2000 new 1.2976 s/op 1.4852 s/op 0.87
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.8600 ns/op 4.3500 ns/op 1.35
state getBlockRootAtSlot - 250000 vs - 7PWei 289.97 ns/op 479.34 ns/op 0.60
naive computeProposerIndex 100000 validators 40.210 ms/op 60.839 ms/op 0.66
computeProposerIndex 100000 validators 1.2508 ms/op 1.6966 ms/op 0.74
naiveGetNextSyncCommitteeIndices 1000 validators 6.5501 s/op 7.7649 s/op 0.84
getNextSyncCommitteeIndices 1000 validators 89.936 ms/op 115.53 ms/op 0.78
naiveGetNextSyncCommitteeIndices 10000 validators 5.7845 s/op 8.2021 s/op 0.71
getNextSyncCommitteeIndices 10000 validators 94.276 ms/op 113.21 ms/op 0.83
naiveGetNextSyncCommitteeIndices 100000 validators 6.8816 s/op 8.7595 s/op 0.79
getNextSyncCommitteeIndices 100000 validators 90.573 ms/op 123.27 ms/op 0.73
naive computeShuffledIndex 100000 validators 20.529 s/op 35.196 s/op 0.58
cached computeShuffledIndex 100000 validators 494.49 ms/op 631.66 ms/op 0.78
naive computeShuffledIndex 2000000 validators 362.80 s/op 598.38 s/op 0.61
cached computeShuffledIndex 2000000 validators 21.117 s/op 47.235 s/op 0.45
computeProposers - vc 250000 535.40 us/op 633.63 us/op 0.84
computeEpochShuffling - vc 250000 38.411 ms/op 42.467 ms/op 0.90
getNextSyncCommittee - vc 250000 9.3710 ms/op 10.785 ms/op 0.87
computeSigningRoot for AttestationData 18.101 us/op 29.986 us/op 0.60
hash AttestationData serialized data then Buffer.toString(base64) 1.1863 us/op 1.6478 us/op 0.72
toHexString serialized data 957.21 ns/op 1.3457 us/op 0.71
Buffer.toString(base64) 103.91 ns/op 156.30 ns/op 0.66
nodejs block root to RootHex using toHex 108.19 ns/op 151.10 ns/op 0.72
nodejs block root to RootHex using toRootHex 73.450 ns/op 96.595 ns/op 0.76
nodejs fromhex(blob) 94.998 ms/op 120.07 ms/op 0.79
nodejs fromHexInto(blob) 79.021 ms/op 96.864 ms/op 0.82
browser block root to RootHex using the deprecated toHexString 181.87 ns/op 224.87 ns/op 0.81
browser block root to RootHex using toHex 149.96 ns/op 176.36 ns/op 0.85
browser block root to RootHex using toRootHex 140.88 ns/op 165.22 ns/op 0.85
browser fromHexInto(blob) 703.59 us/op 846.33 us/op 0.83
browser fromHex(blob) 687.20 ms/op 840.36 ms/op 0.82

by benchmarkbot/action

@nflaig nflaig changed the title fix: turn on eip7594 spec tests and rename mekle.test.ts -> merkleProof.test.ts chore: remove eip7594 from skipped spec tests and rename mekle.test.ts -> merkleProof.test.ts Sep 23, 2025
@nflaig nflaig force-pushed the mkeil/turn-on-eip7594-spec-tests branch from 98e94ae to e65d3a1 Compare September 23, 2025 14:52
@nflaig
Copy link
Member

nflaig commented Sep 23, 2025

/gemini review

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 primarily enables spec tests for EIP-7594 by removing it from the skipped list, which aligns with the goal of ensuring all tests run for peerDAS. Additionally, it includes a good refactoring by renaming merkle.test.ts to merkleProof.test.ts for better naming consistency and updates the code to use the sszTypesFor helper function, improving code clarity. I've found one area for improvement regarding function signatures for better maintainability.

@codecov
Copy link

codecov bot commented Sep 23, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.22%. Comparing base (8b45b1e) to head (3395073).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #8452      +/-   ##
============================================
- Coverage     52.22%   52.22%   -0.01%     
============================================
  Files           853      853              
  Lines         64898    64898              
  Branches       4765     4766       +1     
============================================
- Hits          33893    33890       -3     
- Misses        30935    30938       +3     
  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.

@nflaig nflaig merged commit 47c570a into unstable Sep 23, 2025
31 of 33 checks passed
@nflaig nflaig deleted the mkeil/turn-on-eip7594-spec-tests branch September 23, 2025 15:34
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.35.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants