Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Sep 2, 2025

Motivation

This is required to pass spec tests since spec example was updated in ethereum/beacon-APIs#550

Description

Update payload_attributes event test data

Note: we already emit all required fields, no changes needed there

@nflaig nflaig requested a review from a team as a code owner September 2, 2025 14:53
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 updates existing test data and configurations to reflect recent changes in the Ethereum Beacon API specification. The primary goal is to ensure that tests for payload_attributes events pass correctly by using the updated Electra fork data structure and including a newly required field, thereby improving the accuracy and coverage of API specification compliance checks.

Highlights

  • Test Data Alignment: The payload_attributes event test data has been updated to align with recent changes in the Ethereum Beacon APIs specification (specifically, PR #550).
  • Test Coverage Improvement: The payload_attributes topic is no longer ignored in API specification tests, allowing for more comprehensive validation.
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 updates the test data for the payload_attributes event to align with recent specification changes. It correctly modifies the fork version to electra, updates the SSZ deserialization, and adds the new parent_beacon_block_root field. Additionally, the corresponding test, which was previously ignored, is now enabled. The changes are accurate and effectively address the motivation of the PR. The code quality is good, and I have no suggestions for improvement.

version: ForkName.capella,
data: ssz.capella.SSEPayloadAttributes.fromJson({
version: ForkName.electra,
data: ssz.electra.SSEPayloadAttributes.fromJson({
Copy link
Member Author

Choose a reason for hiding this comment

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

technically this only needs to be deneb since there are no changes since then but to match example version

@nflaig nflaig changed the title chore: update payload_attributes event test data chore: update payload_attributes event test data Sep 2, 2025
@codecov
Copy link

codecov bot commented Sep 2, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 54.13%. Comparing base (7332b1a) to head (836495a).
⚠️ Report is 4 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #8308      +/-   ##
============================================
- Coverage     54.14%   54.13%   -0.01%     
============================================
  Files           849      849              
  Lines         63996    64017      +21     
  Branches       4850     4851       +1     
============================================
+ Hits          34649    34655       +6     
- Misses        29270    29285      +15     
  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 2, 2025

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: d9d2d54 Previous: 7332b1a Ratio
toHexString serialized data 1.1799 us/op 3.7358 us/op 0.32
Full benchmark results
Benchmark suite Current: d9d2d54 Previous: 7332b1a Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 991.48 us/op 1.2699 ms/op 0.78
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.390 us/op 50.356 us/op 0.74
BLS verify - blst 800.08 us/op 1.1643 ms/op 0.69
BLS verifyMultipleSignatures 3 - blst 1.2526 ms/op 1.7964 ms/op 0.70
BLS verifyMultipleSignatures 8 - blst 1.7995 ms/op 2.2582 ms/op 0.80
BLS verifyMultipleSignatures 32 - blst 5.1426 ms/op 6.8894 ms/op 0.75
BLS verifyMultipleSignatures 64 - blst 10.777 ms/op 12.562 ms/op 0.86
BLS verifyMultipleSignatures 128 - blst 18.459 ms/op 20.526 ms/op 0.90
BLS deserializing 10000 signatures 721.61 ms/op 760.25 ms/op 0.95
BLS deserializing 100000 signatures 7.2378 s/op 8.0012 s/op 0.90
BLS verifyMultipleSignatures - same message - 3 - blst 988.57 us/op 1.0829 ms/op 0.91
BLS verifyMultipleSignatures - same message - 8 - blst 1.0016 ms/op 1.2772 ms/op 0.78
BLS verifyMultipleSignatures - same message - 32 - blst 1.7028 ms/op 2.0199 ms/op 0.84
BLS verifyMultipleSignatures - same message - 64 - blst 2.6372 ms/op 3.0454 ms/op 0.87
BLS verifyMultipleSignatures - same message - 128 - blst 4.4570 ms/op 5.0216 ms/op 0.89
BLS aggregatePubkeys 32 - blst 20.233 us/op 21.031 us/op 0.96
BLS aggregatePubkeys 128 - blst 71.573 us/op 73.363 us/op 0.98
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 51.719 ms/op 71.961 ms/op 0.72
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 49.677 ms/op 68.997 ms/op 0.72
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 38.884 ms/op 50.034 ms/op 0.78
getSlashingsAndExits - default max 83.231 us/op 92.126 us/op 0.90
getSlashingsAndExits - 2k 342.57 us/op 435.63 us/op 0.79
proposeBlockBody type=full, size=empty 5.7090 ms/op 6.7074 ms/op 0.85
isKnown best case - 1 super set check 210.00 ns/op 235.00 ns/op 0.89
isKnown normal case - 2 super set checks 210.00 ns/op 226.00 ns/op 0.93
isKnown worse case - 16 super set checks 209.00 ns/op 225.00 ns/op 0.93
InMemoryCheckpointStateCache - add get delete 2.5420 us/op 2.4870 us/op 1.02
validate api signedAggregateAndProof - struct 1.4810 ms/op 1.5476 ms/op 0.96
validate gossip signedAggregateAndProof - struct 1.4752 ms/op 1.6722 ms/op 0.88
batch validate gossip attestation - vc 640000 - chunk 32 121.69 us/op 127.50 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 64 110.25 us/op 114.21 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 128 102.43 us/op 106.01 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 256 109.47 us/op 109.00 us/op 1.00
pickEth1Vote - no votes 1.0896 ms/op 1.0694 ms/op 1.02
pickEth1Vote - max votes 10.774 ms/op 9.5646 ms/op 1.13
pickEth1Vote - Eth1Data hashTreeRoot value x2048 15.626 ms/op 12.509 ms/op 1.25
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 22.780 ms/op 20.753 ms/op 1.10
pickEth1Vote - Eth1Data fastSerialize value x2048 474.78 us/op 462.38 us/op 1.03
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.5013 ms/op 4.2046 ms/op 0.59
bytes32 toHexString 389.00 ns/op 412.00 ns/op 0.94
bytes32 Buffer.toString(hex) 263.00 ns/op 256.00 ns/op 1.03
bytes32 Buffer.toString(hex) from Uint8Array 352.00 ns/op 362.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 272.00 ns/op 244.00 ns/op 1.11
Object access 1 prop 0.12300 ns/op 0.13500 ns/op 0.91
Map access 1 prop 0.13200 ns/op 0.13400 ns/op 0.99
Object get x1000 6.0290 ns/op 6.0890 ns/op 0.99
Map get x1000 6.6100 ns/op 6.6850 ns/op 0.99
Object set x1000 33.605 ns/op 31.042 ns/op 1.08
Map set x1000 22.193 ns/op 20.770 ns/op 1.07
Return object 10000 times 0.30340 ns/op 0.32430 ns/op 0.94
Throw Error 10000 times 4.8358 us/op 4.6514 us/op 1.04
toHex 149.97 ns/op 136.19 ns/op 1.10
Buffer.from 127.16 ns/op 129.59 ns/op 0.98
shared Buffer 86.595 ns/op 83.780 ns/op 1.03
fastMsgIdFn sha256 / 200 bytes 2.3410 us/op 2.2890 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 218.00 ns/op 236.00 ns/op 0.92
fastMsgIdFn h64 xxhash / 200 bytes 276.00 ns/op 308.00 ns/op 0.90
fastMsgIdFn sha256 / 1000 bytes 10.631 us/op 7.5210 us/op 1.41
fastMsgIdFn h32 xxhash / 1000 bytes 352.00 ns/op 343.00 ns/op 1.03
fastMsgIdFn h64 xxhash / 1000 bytes 472.00 ns/op 388.00 ns/op 1.22
fastMsgIdFn sha256 / 10000 bytes 76.307 us/op 68.417 us/op 1.12
fastMsgIdFn h32 xxhash / 10000 bytes 2.7480 us/op 1.9780 us/op 1.39
fastMsgIdFn h64 xxhash / 10000 bytes 1.4030 us/op 1.2940 us/op 1.08
send data - 1000 256B messages 19.191 ms/op 18.885 ms/op 1.02
send data - 1000 512B messages 24.430 ms/op 23.124 ms/op 1.06
send data - 1000 1024B messages 32.572 ms/op 30.557 ms/op 1.07
send data - 1000 1200B messages 29.103 ms/op 27.214 ms/op 1.07
send data - 1000 2048B messages 33.347 ms/op 28.968 ms/op 1.15
send data - 1000 4096B messages 36.261 ms/op 36.448 ms/op 0.99
send data - 1000 16384B messages 46.870 ms/op 49.033 ms/op 0.96
send data - 1000 65536B messages 125.31 ms/op 136.67 ms/op 0.92
enrSubnets - fastDeserialize 64 bits 940.00 ns/op 1.0070 us/op 0.93
enrSubnets - ssz BitVector 64 bits 339.00 ns/op 380.00 ns/op 0.89
enrSubnets - fastDeserialize 4 bits 136.00 ns/op 147.00 ns/op 0.93
enrSubnets - ssz BitVector 4 bits 344.00 ns/op 391.00 ns/op 0.88
prioritizePeers score -10:0 att 32-0.1 sync 2-0 241.82 us/op 258.72 us/op 0.93
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 270.66 us/op 278.75 us/op 0.97
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 384.72 us/op 409.80 us/op 0.94
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 732.88 us/op 762.12 us/op 0.96
prioritizePeers score 0:0 att 64-1 sync 4-1 873.58 us/op 905.54 us/op 0.96
array of 16000 items push then shift 1.6595 us/op 1.6769 us/op 0.99
LinkedList of 16000 items push then shift 7.6630 ns/op 9.1330 ns/op 0.84
array of 16000 items push then pop 80.662 ns/op 88.544 ns/op 0.91
LinkedList of 16000 items push then pop 7.3340 ns/op 8.0780 ns/op 0.91
array of 24000 items push then shift 2.4526 us/op 2.5198 us/op 0.97
LinkedList of 24000 items push then shift 7.8210 ns/op 8.5240 ns/op 0.92
array of 24000 items push then pop 114.34 ns/op 137.17 ns/op 0.83
LinkedList of 24000 items push then pop 7.5150 ns/op 9.7930 ns/op 0.77
intersect bitArray bitLen 8 6.6570 ns/op 6.7690 ns/op 0.98
intersect array and set length 8 40.087 ns/op 43.538 ns/op 0.92
intersect bitArray bitLen 128 31.380 ns/op 31.336 ns/op 1.00
intersect array and set length 128 647.22 ns/op 668.75 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 1.0370 us/op 1.0710 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 248 1.8450 us/op 1.9240 us/op 0.96
bitArray.getTrueBitIndexes() bitLen 512 3.7890 us/op 3.9190 us/op 0.97
Buffer.concat 32 items 624.00 ns/op 756.00 ns/op 0.83
Uint8Array.set 32 items 900.00 ns/op 1.2060 us/op 0.75
Buffer.copy 2.0120 us/op 2.2990 us/op 0.88
Uint8Array.set - with subarray 1.6370 us/op 1.9010 us/op 0.86
Uint8Array.set - without subarray 889.00 ns/op 1.0410 us/op 0.85
getUint32 - dataview 202.00 ns/op 238.00 ns/op 0.85
getUint32 - manual 126.00 ns/op 138.00 ns/op 0.91
Set add up to 64 items then delete first 2.5093 us/op 3.3941 us/op 0.74
OrderedSet add up to 64 items then delete first 3.8683 us/op 5.1126 us/op 0.76
Set add up to 64 items then delete last 2.7513 us/op 3.2385 us/op 0.85
OrderedSet add up to 64 items then delete last 4.6292 us/op 5.4471 us/op 0.85
Set add up to 64 items then delete middle 2.7838 us/op 3.5131 us/op 0.79
OrderedSet add up to 64 items then delete middle 6.0141 us/op 7.3974 us/op 0.81
Set add up to 128 items then delete first 5.7690 us/op 7.3987 us/op 0.78
OrderedSet add up to 128 items then delete first 8.9427 us/op 11.020 us/op 0.81
Set add up to 128 items then delete last 5.5543 us/op 7.2574 us/op 0.77
OrderedSet add up to 128 items then delete last 8.7316 us/op 10.730 us/op 0.81
Set add up to 128 items then delete middle 5.4432 us/op 7.1625 us/op 0.76
OrderedSet add up to 128 items then delete middle 15.670 us/op 18.636 us/op 0.84
Set add up to 256 items then delete first 11.813 us/op 15.040 us/op 0.79
OrderedSet add up to 256 items then delete first 18.887 us/op 26.516 us/op 0.71
Set add up to 256 items then delete last 11.025 us/op 14.320 us/op 0.77
OrderedSet add up to 256 items then delete last 18.171 us/op 21.730 us/op 0.84
Set add up to 256 items then delete middle 12.029 us/op 14.341 us/op 0.84
OrderedSet add up to 256 items then delete middle 49.985 us/op 51.054 us/op 0.98
transfer serialized Status (84 B) 2.2260 us/op 2.3230 us/op 0.96
copy serialized Status (84 B) 1.1350 us/op 1.2090 us/op 0.94
transfer serialized SignedVoluntaryExit (112 B) 2.2480 us/op 2.3580 us/op 0.95
copy serialized SignedVoluntaryExit (112 B) 1.1430 us/op 1.3310 us/op 0.86
transfer serialized ProposerSlashing (416 B) 2.2890 us/op 2.3680 us/op 0.97
copy serialized ProposerSlashing (416 B) 1.2030 us/op 1.3850 us/op 0.87
transfer serialized Attestation (485 B) 2.2720 us/op 3.1580 us/op 0.72
copy serialized Attestation (485 B) 1.1770 us/op 2.7990 us/op 0.42
transfer serialized AttesterSlashing (33232 B) 2.3050 us/op 3.5070 us/op 0.66
copy serialized AttesterSlashing (33232 B) 3.6230 us/op 5.5200 us/op 0.66
transfer serialized Small SignedBeaconBlock (128000 B) 2.8780 us/op 3.7910 us/op 0.76
copy serialized Small SignedBeaconBlock (128000 B) 10.767 us/op 11.677 us/op 0.92
transfer serialized Avg SignedBeaconBlock (200000 B) 3.3090 us/op 3.9260 us/op 0.84
copy serialized Avg SignedBeaconBlock (200000 B) 16.572 us/op 17.493 us/op 0.95
transfer serialized BlobsSidecar (524380 B) 3.3720 us/op 4.1770 us/op 0.81
copy serialized BlobsSidecar (524380 B) 69.255 us/op 86.563 us/op 0.80
transfer serialized Big SignedBeaconBlock (1000000 B) 3.4970 us/op 4.8770 us/op 0.72
copy serialized Big SignedBeaconBlock (1000000 B) 119.03 us/op 128.90 us/op 0.92
pass gossip attestations to forkchoice per slot 2.9327 ms/op 2.9908 ms/op 0.98
forkChoice updateHead vc 100000 bc 64 eq 0 475.87 us/op 509.00 us/op 0.93
forkChoice updateHead vc 600000 bc 64 eq 0 3.2822 ms/op 4.3232 ms/op 0.76
forkChoice updateHead vc 1000000 bc 64 eq 0 5.5726 ms/op 6.1153 ms/op 0.91
forkChoice updateHead vc 600000 bc 320 eq 0 3.2516 ms/op 3.4965 ms/op 0.93
forkChoice updateHead vc 600000 bc 1200 eq 0 3.2222 ms/op 3.4809 ms/op 0.93
forkChoice updateHead vc 600000 bc 7200 eq 0 3.8385 ms/op 4.2156 ms/op 0.91
forkChoice updateHead vc 600000 bc 64 eq 1000 10.881 ms/op 11.153 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 10000 10.668 ms/op 10.905 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 300000 13.706 ms/op 17.823 ms/op 0.77
computeDeltas 500000 validators 300 proto nodes 4.0301 ms/op 4.3973 ms/op 0.92
computeDeltas 500000 validators 1200 proto nodes 4.0645 ms/op 4.5615 ms/op 0.89
computeDeltas 500000 validators 7200 proto nodes 4.1219 ms/op 4.5216 ms/op 0.91
computeDeltas 750000 validators 300 proto nodes 6.0599 ms/op 6.6161 ms/op 0.92
computeDeltas 750000 validators 1200 proto nodes 6.1382 ms/op 6.5867 ms/op 0.93
computeDeltas 750000 validators 7200 proto nodes 6.2709 ms/op 6.8529 ms/op 0.92
computeDeltas 1400000 validators 300 proto nodes 11.607 ms/op 13.528 ms/op 0.86
computeDeltas 1400000 validators 1200 proto nodes 11.719 ms/op 12.140 ms/op 0.97
computeDeltas 1400000 validators 7200 proto nodes 11.528 ms/op 12.240 ms/op 0.94
computeDeltas 2100000 validators 300 proto nodes 19.012 ms/op 19.141 ms/op 0.99
computeDeltas 2100000 validators 1200 proto nodes 18.525 ms/op 18.262 ms/op 1.01
computeDeltas 2100000 validators 7200 proto nodes 19.307 ms/op 17.992 ms/op 1.07
altair processAttestation - 250000 vs - 7PWei normalcase 3.2309 ms/op 3.2773 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 3.7212 ms/op 3.3965 ms/op 1.10
altair processAttestation - setStatus - 1/6 committees join 138.30 us/op 126.81 us/op 1.09
altair processAttestation - setStatus - 1/3 committees join 245.04 us/op 267.75 us/op 0.92
altair processAttestation - setStatus - 1/2 committees join 354.79 us/op 391.14 us/op 0.91
altair processAttestation - setStatus - 2/3 committees join 449.36 us/op 437.89 us/op 1.03
altair processAttestation - setStatus - 4/5 committees join 624.41 us/op 599.77 us/op 1.04
altair processAttestation - setStatus - 100% committees join 729.11 us/op 725.03 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 4.5792 ms/op 6.0394 ms/op 0.76
altair processBlock - 250000 vs - 7PWei normalcase hashState 30.984 ms/op 34.872 ms/op 0.89
altair processBlock - 250000 vs - 7PWei worstcase 37.758 ms/op 42.139 ms/op 0.90
altair processBlock - 250000 vs - 7PWei worstcase hashState 76.380 ms/op 92.511 ms/op 0.83
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6030 ms/op 2.3635 ms/op 0.68
phase0 processBlock - 250000 vs - 7PWei worstcase 21.699 ms/op 28.254 ms/op 0.77
altair processEth1Data - 250000 vs - 7PWei normalcase 342.33 us/op 341.38 us/op 1.00
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.8670 us/op 5.9280 us/op 0.99
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 35.782 us/op 35.467 us/op 1.01
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 11.026 us/op 16.797 us/op 0.66
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.4030 us/op 9.9820 us/op 0.64
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 138.39 us/op 267.09 us/op 0.52
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9398 ms/op 1.9689 ms/op 0.99
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4510 ms/op 2.7202 ms/op 0.90
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4929 ms/op 2.6330 ms/op 0.95
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.6763 ms/op 4.6129 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4359 ms/op 2.6373 ms/op 0.92
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.0770 ms/op 4.6630 ms/op 1.09
Tree 40 250000 create 444.84 ms/op 436.66 ms/op 1.02
Tree 40 250000 get(125000) 146.66 ns/op 147.92 ns/op 0.99
Tree 40 250000 set(125000) 1.4579 us/op 1.4683 us/op 0.99
Tree 40 250000 toArray() 16.126 ms/op 22.028 ms/op 0.73
Tree 40 250000 iterate all - toArray() + loop 18.407 ms/op 21.442 ms/op 0.86
Tree 40 250000 iterate all - get(i) 55.495 ms/op 58.462 ms/op 0.95
Array 250000 create 2.7300 ms/op 3.9464 ms/op 0.69
Array 250000 clone - spread 1.4074 ms/op 1.4097 ms/op 1.00
Array 250000 get(125000) 0.42600 ns/op 0.42800 ns/op 1.00
Array 250000 set(125000) 0.45000 ns/op 0.48400 ns/op 0.93
Array 250000 iterate all - loop 85.347 us/op 102.96 us/op 0.83
phase0 afterProcessEpoch - 250000 vs - 7PWei 43.223 ms/op 42.235 ms/op 1.02
Array.fill - length 1000000 3.4749 ms/op 3.4572 ms/op 1.01
Array push - length 1000000 13.480 ms/op 14.167 ms/op 0.95
Array.get 0.29007 ns/op 0.28104 ns/op 1.03
Uint8Array.get 0.46850 ns/op 0.44340 ns/op 1.06
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.817 ms/op 17.423 ms/op 0.97
altair processEpoch - mainnet_e81889 276.78 ms/op 298.58 ms/op 0.93
mainnet_e81889 - altair beforeProcessEpoch 19.954 ms/op 19.942 ms/op 1.00
mainnet_e81889 - altair processJustificationAndFinalization 5.2890 us/op 6.6870 us/op 0.79
mainnet_e81889 - altair processInactivityUpdates 4.0274 ms/op 4.2618 ms/op 0.95
mainnet_e81889 - altair processRewardsAndPenalties 39.189 ms/op 49.387 ms/op 0.79
mainnet_e81889 - altair processRegistryUpdates 723.00 ns/op 668.00 ns/op 1.08
mainnet_e81889 - altair processSlashings 181.00 ns/op 186.00 ns/op 0.97
mainnet_e81889 - altair processEth1DataReset 180.00 ns/op 186.00 ns/op 0.97
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2101 ms/op 1.2160 ms/op 1.00
mainnet_e81889 - altair processSlashingsReset 852.00 ns/op 1.2390 us/op 0.69
mainnet_e81889 - altair processRandaoMixesReset 1.1350 us/op 1.3420 us/op 0.85
mainnet_e81889 - altair processHistoricalRootsUpdate 179.00 ns/op 176.00 ns/op 1.02
mainnet_e81889 - altair processParticipationFlagUpdates 515.00 ns/op 518.00 ns/op 0.99
mainnet_e81889 - altair processSyncCommitteeUpdates 140.00 ns/op 142.00 ns/op 0.99
mainnet_e81889 - altair afterProcessEpoch 43.184 ms/op 44.625 ms/op 0.97
capella processEpoch - mainnet_e217614 875.76 ms/op 1.0057 s/op 0.87
mainnet_e217614 - capella beforeProcessEpoch 59.898 ms/op 65.498 ms/op 0.91
mainnet_e217614 - capella processJustificationAndFinalization 5.3370 us/op 6.4250 us/op 0.83
mainnet_e217614 - capella processInactivityUpdates 15.693 ms/op 14.220 ms/op 1.10
mainnet_e217614 - capella processRewardsAndPenalties 181.95 ms/op 198.69 ms/op 0.92
mainnet_e217614 - capella processRegistryUpdates 6.4870 us/op 8.1630 us/op 0.79
mainnet_e217614 - capella processSlashings 177.00 ns/op 198.00 ns/op 0.89
mainnet_e217614 - capella processEth1DataReset 174.00 ns/op 172.00 ns/op 1.01
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2319 ms/op 4.2300 ms/op 1.00
mainnet_e217614 - capella processSlashingsReset 852.00 ns/op 1.0050 us/op 0.85
mainnet_e217614 - capella processRandaoMixesReset 1.1300 us/op 1.1750 us/op 0.96
mainnet_e217614 - capella processHistoricalRootsUpdate 175.00 ns/op 185.00 ns/op 0.95
mainnet_e217614 - capella processParticipationFlagUpdates 511.00 ns/op 555.00 ns/op 0.92
mainnet_e217614 - capella afterProcessEpoch 113.14 ms/op 116.93 ms/op 0.97
phase0 processEpoch - mainnet_e58758 274.29 ms/op 339.00 ms/op 0.81
mainnet_e58758 - phase0 beforeProcessEpoch 70.579 ms/op 90.069 ms/op 0.78
mainnet_e58758 - phase0 processJustificationAndFinalization 5.5850 us/op 8.0760 us/op 0.69
mainnet_e58758 - phase0 processRewardsAndPenalties 35.254 ms/op 45.813 ms/op 0.77
mainnet_e58758 - phase0 processRegistryUpdates 3.1160 us/op 3.4860 us/op 0.89
mainnet_e58758 - phase0 processSlashings 174.00 ns/op 187.00 ns/op 0.93
mainnet_e58758 - phase0 processEth1DataReset 174.00 ns/op 187.00 ns/op 0.93
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1835 ms/op 1.4150 ms/op 0.84
mainnet_e58758 - phase0 processSlashingsReset 890.00 ns/op 1.0540 us/op 0.84
mainnet_e58758 - phase0 processRandaoMixesReset 1.1500 us/op 1.6490 us/op 0.70
mainnet_e58758 - phase0 processHistoricalRootsUpdate 175.00 ns/op 179.00 ns/op 0.98
mainnet_e58758 - phase0 processParticipationRecordUpdates 877.00 ns/op 1.1090 us/op 0.79
mainnet_e58758 - phase0 afterProcessEpoch 35.061 ms/op 35.951 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.2997 ms/op 2.0215 ms/op 0.64
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9804 ms/op 2.1635 ms/op 0.92
altair processInactivityUpdates - 250000 normalcase 17.308 ms/op 20.765 ms/op 0.83
altair processInactivityUpdates - 250000 worstcase 17.636 ms/op 19.291 ms/op 0.91
phase0 processRegistryUpdates - 250000 normalcase 6.5580 us/op 6.3920 us/op 1.03
phase0 processRegistryUpdates - 250000 badcase_full_deposits 248.87 us/op 285.14 us/op 0.87
phase0 processRegistryUpdates - 250000 worstcase 0.5 97.843 ms/op 106.54 ms/op 0.92
altair processRewardsAndPenalties - 250000 normalcase 27.204 ms/op 24.701 ms/op 1.10
altair processRewardsAndPenalties - 250000 worstcase 26.798 ms/op 29.926 ms/op 0.90
phase0 getAttestationDeltas - 250000 normalcase 7.0171 ms/op 6.2395 ms/op 1.12
phase0 getAttestationDeltas - 250000 worstcase 6.8960 ms/op 6.0665 ms/op 1.14
phase0 processSlashings - 250000 worstcase 84.809 us/op 125.03 us/op 0.68
altair processSyncCommitteeUpdates - 250000 10.973 ms/op 10.925 ms/op 1.00
BeaconState.hashTreeRoot - No change 210.00 ns/op 319.00 ns/op 0.66
BeaconState.hashTreeRoot - 1 full validator 77.297 us/op 76.383 us/op 1.01
BeaconState.hashTreeRoot - 32 full validator 1.0818 ms/op 800.51 us/op 1.35
BeaconState.hashTreeRoot - 512 full validator 10.578 ms/op 11.909 ms/op 0.89
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 105.56 us/op 125.56 us/op 0.84
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3465 ms/op 1.5503 ms/op 0.87
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 20.310 ms/op 19.146 ms/op 1.06
BeaconState.hashTreeRoot - 1 balances 81.043 us/op 85.593 us/op 0.95
BeaconState.hashTreeRoot - 32 balances 992.92 us/op 862.38 us/op 1.15
BeaconState.hashTreeRoot - 512 balances 8.4540 ms/op 7.9294 ms/op 1.07
BeaconState.hashTreeRoot - 250000 balances 181.78 ms/op 159.75 ms/op 1.14
aggregationBits - 2048 els - zipIndexesInBitList 21.616 us/op 22.158 us/op 0.98
byteArrayEquals 32 53.467 ns/op 54.590 ns/op 0.98
Buffer.compare 32 17.434 ns/op 17.527 ns/op 0.99
byteArrayEquals 1024 1.5834 us/op 1.6055 us/op 0.99
Buffer.compare 1024 26.433 ns/op 25.051 ns/op 1.06
byteArrayEquals 16384 26.530 us/op 25.651 us/op 1.03
Buffer.compare 16384 205.29 ns/op 183.21 ns/op 1.12
byteArrayEquals 123687377 192.29 ms/op 196.25 ms/op 0.98
Buffer.compare 123687377 6.5843 ms/op 7.8514 ms/op 0.84
byteArrayEquals 32 - diff last byte 52.900 ns/op 54.396 ns/op 0.97
Buffer.compare 32 - diff last byte 17.036 ns/op 17.540 ns/op 0.97
byteArrayEquals 1024 - diff last byte 1.5967 us/op 1.6483 us/op 0.97
Buffer.compare 1024 - diff last byte 24.911 ns/op 26.557 ns/op 0.94
byteArrayEquals 16384 - diff last byte 25.470 us/op 26.198 us/op 0.97
Buffer.compare 16384 - diff last byte 202.51 ns/op 199.63 ns/op 1.01
byteArrayEquals 123687377 - diff last byte 194.22 ms/op 195.16 ms/op 1.00
Buffer.compare 123687377 - diff last byte 6.9997 ms/op 7.8291 ms/op 0.89
byteArrayEquals 32 - random bytes 5.2140 ns/op 5.3050 ns/op 0.98
Buffer.compare 32 - random bytes 17.428 ns/op 17.740 ns/op 0.98
byteArrayEquals 1024 - random bytes 5.1760 ns/op 5.3260 ns/op 0.97
Buffer.compare 1024 - random bytes 17.413 ns/op 17.803 ns/op 0.98
byteArrayEquals 16384 - random bytes 5.2030 ns/op 5.2960 ns/op 0.98
Buffer.compare 16384 - random bytes 17.427 ns/op 17.664 ns/op 0.99
byteArrayEquals 123687377 - random bytes 6.4500 ns/op 7.2500 ns/op 0.89
Buffer.compare 123687377 - random bytes 18.600 ns/op 20.220 ns/op 0.92
regular array get 100000 times 33.206 us/op 40.779 us/op 0.81
wrappedArray get 100000 times 33.210 us/op 45.109 us/op 0.74
arrayWithProxy get 100000 times 12.704 ms/op 11.944 ms/op 1.06
ssz.Root.equals 46.791 ns/op 48.630 ns/op 0.96
byteArrayEquals 46.104 ns/op 47.285 ns/op 0.98
Buffer.compare 10.548 ns/op 10.812 ns/op 0.98
processSlot - 1 slots 10.213 us/op 10.714 us/op 0.95
processSlot - 32 slots 2.4016 ms/op 3.2709 ms/op 0.73
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.1384 ms/op 3.7707 ms/op 0.83
getCommitteeAssignments - req 1 vs - 250000 vc 2.1830 ms/op 2.2456 ms/op 0.97
getCommitteeAssignments - req 100 vs - 250000 vc 4.2150 ms/op 4.2916 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4482 ms/op 4.5535 ms/op 0.98
findModifiedValidators - 10000 modified validators 741.20 ms/op 807.40 ms/op 0.92
findModifiedValidators - 1000 modified validators 756.42 ms/op 754.84 ms/op 1.00
findModifiedValidators - 100 modified validators 259.03 ms/op 308.89 ms/op 0.84
findModifiedValidators - 10 modified validators 142.61 ms/op 158.75 ms/op 0.90
findModifiedValidators - 1 modified validators 256.26 ms/op 194.51 ms/op 1.32
findModifiedValidators - no difference 155.25 ms/op 175.49 ms/op 0.88
compare ViewDUs 6.3919 s/op 7.1390 s/op 0.90
compare each validator Uint8Array 1.5258 s/op 1.9634 s/op 0.78
compare ViewDU to Uint8Array 1.1428 s/op 1.5867 s/op 0.72
migrate state 1000000 validators, 24 modified, 0 new 851.27 ms/op 992.13 ms/op 0.86
migrate state 1000000 validators, 1700 modified, 1000 new 1.1641 s/op 1.3591 s/op 0.86
migrate state 1000000 validators, 3400 modified, 2000 new 1.4242 s/op 1.7332 s/op 0.82
migrate state 1500000 validators, 24 modified, 0 new 1.0384 s/op 1.0809 s/op 0.96
migrate state 1500000 validators, 1700 modified, 1000 new 1.0978 s/op 1.2092 s/op 0.91
migrate state 1500000 validators, 3400 modified, 2000 new 1.4753 s/op 1.5083 s/op 0.98
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.5000 ns/op 4.5400 ns/op 0.99
state getBlockRootAtSlot - 250000 vs - 7PWei 645.74 ns/op 802.25 ns/op 0.80
naive computeProposerIndex 100000 validators 58.332 ms/op 70.660 ms/op 0.83
computeProposerIndex 100000 validators 1.5623 ms/op 1.6337 ms/op 0.96
naiveGetNextSyncCommitteeIndices 1000 validators 8.5638 s/op 9.2664 s/op 0.92
getNextSyncCommitteeIndices 1000 validators 114.54 ms/op 126.54 ms/op 0.91
naiveGetNextSyncCommitteeIndices 10000 validators 7.8048 s/op 8.8493 s/op 0.88
getNextSyncCommitteeIndices 10000 validators 112.28 ms/op 133.52 ms/op 0.84
naiveGetNextSyncCommitteeIndices 100000 validators 7.7333 s/op 9.1723 s/op 0.84
getNextSyncCommitteeIndices 100000 validators 114.19 ms/op 131.26 ms/op 0.87
naive computeShuffledIndex 100000 validators 25.320 s/op 28.318 s/op 0.89
cached computeShuffledIndex 100000 validators 574.55 ms/op 628.94 ms/op 0.91
naive computeShuffledIndex 2000000 validators 544.08 s/op 671.25 s/op 0.81
cached computeShuffledIndex 2000000 validators 41.289 s/op 77.151 s/op 0.54
computeProposers - vc 250000 614.54 us/op 653.50 us/op 0.94
computeEpochShuffling - vc 250000 41.804 ms/op 45.396 ms/op 0.92
getNextSyncCommittee - vc 250000 10.534 ms/op 12.977 ms/op 0.81
computeSigningRoot for AttestationData 20.147 us/op 59.547 us/op 0.34
hash AttestationData serialized data then Buffer.toString(base64) 1.5968 us/op 1.9426 us/op 0.82
toHexString serialized data 1.1799 us/op 3.7358 us/op 0.32
Buffer.toString(base64) 151.13 ns/op 175.07 ns/op 0.86
nodejs block root to RootHex using toHex 137.47 ns/op 162.71 ns/op 0.84
nodejs block root to RootHex using toRootHex 85.148 ns/op 94.266 ns/op 0.90
nodejs fromhex(blob) 117.70 ms/op 131.15 ms/op 0.90
nodejs fromHexInto(blob) 94.971 ms/op 102.70 ms/op 0.92
browser block root to RootHex using the deprecated toHexString 231.11 ns/op 253.22 ns/op 0.91
browser block root to RootHex using toHex 180.62 ns/op 198.12 ns/op 0.91
browser block root to RootHex using toRootHex 162.99 ns/op 171.62 ns/op 0.95
browser fromHexInto(blob) 867.54 us/op 911.89 us/op 0.95
browser fromHex(blob) 825.79 ms/op 884.25 ms/op 0.93

by benchmarkbot/action

@wemeetagain wemeetagain merged commit ac245ef into unstable Sep 2, 2025
31 of 34 checks passed
@wemeetagain wemeetagain deleted the nflaig/update-payload_attributes branch September 2, 2025 17:39
@wemeetagain
Copy link
Member

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

3 participants