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

Conversation

@nazarhussain
Copy link
Contributor

Motivation

  • run a node starting from electra passing through fulu
  • start another node to do range sync and try to catch up

Description

../../node_modules/.bin/vitest test/e2e/sync/finalizedSync.test.ts

@nazarhussain nazarhussain requested a review from a team as a code owner September 5, 2025 10:54
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 @nazarhussain, 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 primarily focuses on enhancing the robustness and testability of the beacon node's synchronization mechanism, particularly concerning upcoming network upgrades. It introduces a dedicated end-to-end test to simulate and validate finalized sync behavior across specific hard forks, alongside improvements to internal data handling and debugging outputs. The changes aim to ensure reliable node operation and provide better insights into sync processes.

Highlights

  • End-to-End Test for Electra and Fulu Finalized Sync: A new end-to-end test has been introduced to validate the finalized synchronization process specifically for nodes starting from the Electra fork and progressing through the Fulu fork. This test ensures that a beacon node can successfully catch up and finalize blocks across these critical network upgrades.
  • Enhanced Logging and Error Messaging: Improved debugging capabilities by adding more detailed logging information for data column sidecars during block persistence and by providing more comprehensive error messages when blocks are not found during range synchronization requests. These enhancements will aid in diagnosing sync-related issues more effectively.
  • Unit Test for Data Column Sidecar Archiving: A new unit test has been added to verify the proper migration and retrieval of data column sidecars to and from an archived database. This test is crucial for ensuring the integrity and accessibility of historical data, supporting efficient data management within the beacon node.
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 introduces an end-to-end test for finalized sync in a post-Electra (Fulu) context, which is a valuable addition for ensuring sync functionality. The changes also include helpful enhancements to logging and error messages for better debugging, and good refactoring in the database repository tests to improve code structure. I have one suggestion regarding a misleading comment in the new e2e test that could cause confusion for future readers.

@codecov
Copy link

codecov bot commented Sep 5, 2025

Codecov Report

❌ Patch coverage is 0% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 54.07%. Comparing base (083b7cc) to head (3060d83).
⚠️ Report is 4 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #8340   +/-   ##
=========================================
  Coverage     54.07%   54.07%           
=========================================
  Files           849      849           
  Lines         64121    64127    +6     
  Branches       4853     4852    -1     
=========================================
+ Hits          34674    34679    +5     
- Misses        29370    29371    +1     
  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 5, 2025

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 457274a Previous: 8a8da6a Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0065 ms/op 1.0079 ms/op 1.00
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.856 us/op 38.327 us/op 0.99
BLS verify - blst 866.32 us/op 896.63 us/op 0.97
BLS verifyMultipleSignatures 3 - blst 1.2614 ms/op 1.6620 ms/op 0.76
BLS verifyMultipleSignatures 8 - blst 1.7504 ms/op 2.0479 ms/op 0.85
BLS verifyMultipleSignatures 32 - blst 5.0255 ms/op 5.7911 ms/op 0.87
BLS verifyMultipleSignatures 64 - blst 9.3789 ms/op 10.790 ms/op 0.87
BLS verifyMultipleSignatures 128 - blst 17.735 ms/op 17.594 ms/op 1.01
BLS deserializing 10000 signatures 709.81 ms/op 719.20 ms/op 0.99
BLS deserializing 100000 signatures 7.1170 s/op 7.2521 s/op 0.98
BLS verifyMultipleSignatures - same message - 3 - blst 932.31 us/op 1.0902 ms/op 0.86
BLS verifyMultipleSignatures - same message - 8 - blst 1.0475 ms/op 1.2165 ms/op 0.86
BLS verifyMultipleSignatures - same message - 32 - blst 1.7603 ms/op 1.8597 ms/op 0.95
BLS verifyMultipleSignatures - same message - 64 - blst 2.6591 ms/op 2.7405 ms/op 0.97
BLS verifyMultipleSignatures - same message - 128 - blst 4.4627 ms/op 4.6509 ms/op 0.96
BLS aggregatePubkeys 32 - blst 19.541 us/op 20.650 us/op 0.95
BLS aggregatePubkeys 128 - blst 69.681 us/op 76.397 us/op 0.91
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 51.323 ms/op 61.207 ms/op 0.84
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 46.684 ms/op 54.790 ms/op 0.85
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 37.174 ms/op 44.619 ms/op 0.83
getSlashingsAndExits - default max 76.240 us/op 81.204 us/op 0.94
getSlashingsAndExits - 2k 329.74 us/op 372.50 us/op 0.89
proposeBlockBody type=full, size=empty 6.7887 ms/op 6.4367 ms/op 1.05
isKnown best case - 1 super set check 221.00 ns/op 212.00 ns/op 1.04
isKnown normal case - 2 super set checks 218.00 ns/op 210.00 ns/op 1.04
isKnown worse case - 16 super set checks 216.00 ns/op 212.00 ns/op 1.02
InMemoryCheckpointStateCache - add get delete 2.3660 us/op 2.6590 us/op 0.89
validate api signedAggregateAndProof - struct 1.3621 ms/op 1.4561 ms/op 0.94
validate gossip signedAggregateAndProof - struct 1.3516 ms/op 1.5727 ms/op 0.86
batch validate gossip attestation - vc 640000 - chunk 32 116.62 us/op 119.90 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 64 100.76 us/op 105.43 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 128 92.613 us/op 95.282 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 256 92.987 us/op 95.039 us/op 0.98
pickEth1Vote - no votes 933.53 us/op 951.25 us/op 0.98
pickEth1Vote - max votes 5.7440 ms/op 5.0880 ms/op 1.13
pickEth1Vote - Eth1Data hashTreeRoot value x2048 10.782 ms/op 10.534 ms/op 1.02
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 15.412 ms/op 23.568 ms/op 0.65
pickEth1Vote - Eth1Data fastSerialize value x2048 587.92 us/op 444.24 us/op 1.32
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.2557 ms/op 2.1603 ms/op 1.97
bytes32 toHexString 362.00 ns/op 371.00 ns/op 0.98
bytes32 Buffer.toString(hex) 236.00 ns/op 251.00 ns/op 0.94
bytes32 Buffer.toString(hex) from Uint8Array 320.00 ns/op 341.00 ns/op 0.94
bytes32 Buffer.toString(hex) + 0x 238.00 ns/op 252.00 ns/op 0.94
Object access 1 prop 0.11700 ns/op 0.11600 ns/op 1.01
Map access 1 prop 0.12600 ns/op 0.13900 ns/op 0.91
Object get x1000 5.7920 ns/op 6.0750 ns/op 0.95
Map get x1000 6.2450 ns/op 6.2500 ns/op 1.00
Object set x1000 28.349 ns/op 28.742 ns/op 0.99
Map set x1000 19.022 ns/op 19.299 ns/op 0.99
Return object 10000 times 0.28440 ns/op 0.28810 ns/op 0.99
Throw Error 10000 times 4.2510 us/op 4.3830 us/op 0.97
toHex 127.19 ns/op 130.50 ns/op 0.97
Buffer.from 115.03 ns/op 126.95 ns/op 0.91
shared Buffer 82.602 ns/op 80.083 ns/op 1.03
fastMsgIdFn sha256 / 200 bytes 2.1620 us/op 2.1890 us/op 0.99
fastMsgIdFn h32 xxhash / 200 bytes 204.00 ns/op 311.00 ns/op 0.66
fastMsgIdFn h64 xxhash / 200 bytes 262.00 ns/op 272.00 ns/op 0.96
fastMsgIdFn sha256 / 1000 bytes 7.0960 us/op 7.9580 us/op 0.89
fastMsgIdFn h32 xxhash / 1000 bytes 331.00 ns/op 356.00 ns/op 0.93
fastMsgIdFn h64 xxhash / 1000 bytes 330.00 ns/op 338.00 ns/op 0.98
fastMsgIdFn sha256 / 10000 bytes 64.082 us/op 63.738 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.8170 us/op 1.8350 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 1.2160 us/op 1.2370 us/op 0.98
send data - 1000 256B messages 16.098 ms/op 16.494 ms/op 0.98
send data - 1000 512B messages 20.224 ms/op 19.756 ms/op 1.02
send data - 1000 1024B messages 26.330 ms/op 26.795 ms/op 0.98
send data - 1000 1200B messages 22.398 ms/op 23.945 ms/op 0.94
send data - 1000 2048B messages 22.533 ms/op 24.602 ms/op 0.92
send data - 1000 4096B messages 27.797 ms/op 26.737 ms/op 1.04
send data - 1000 16384B messages 43.738 ms/op 44.554 ms/op 0.98
send data - 1000 65536B messages 115.87 ms/op 115.79 ms/op 1.00
enrSubnets - fastDeserialize 64 bits 908.00 ns/op 887.00 ns/op 1.02
enrSubnets - ssz BitVector 64 bits 325.00 ns/op 324.00 ns/op 1.00
enrSubnets - fastDeserialize 4 bits 128.00 ns/op 127.00 ns/op 1.01
enrSubnets - ssz BitVector 4 bits 331.00 ns/op 333.00 ns/op 0.99
prioritizePeers score -10:0 att 32-0.1 sync 2-0 237.47 us/op 222.32 us/op 1.07
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 269.47 us/op 263.84 us/op 1.02
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 380.77 us/op 380.45 us/op 1.00
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 728.94 us/op 710.72 us/op 1.03
prioritizePeers score 0:0 att 64-1 sync 4-1 878.97 us/op 855.47 us/op 1.03
array of 16000 items push then shift 1.6133 us/op 1.6475 us/op 0.98
LinkedList of 16000 items push then shift 7.3980 ns/op 7.0110 ns/op 1.06
array of 16000 items push then pop 74.863 ns/op 77.012 ns/op 0.97
LinkedList of 16000 items push then pop 7.0610 ns/op 6.9090 ns/op 1.02
array of 24000 items push then shift 2.3672 us/op 2.3565 us/op 1.00
LinkedList of 24000 items push then shift 7.5590 ns/op 7.4210 ns/op 1.02
array of 24000 items push then pop 105.84 ns/op 103.55 ns/op 1.02
LinkedList of 24000 items push then pop 7.7710 ns/op 7.0210 ns/op 1.11
intersect bitArray bitLen 8 6.3120 ns/op 6.3410 ns/op 1.00
intersect array and set length 8 38.139 ns/op 37.594 ns/op 1.01
intersect bitArray bitLen 128 29.491 ns/op 29.511 ns/op 1.00
intersect array and set length 128 624.23 ns/op 618.68 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 128 982.00 ns/op 1.1010 us/op 0.89
bitArray.getTrueBitIndexes() bitLen 248 1.7440 us/op 1.8520 us/op 0.94
bitArray.getTrueBitIndexes() bitLen 512 3.6180 us/op 3.7180 us/op 0.97
Buffer.concat 32 items 604.00 ns/op 708.00 ns/op 0.85
Uint8Array.set 32 items 2.1930 us/op 1.7180 us/op 1.28
Buffer.copy 2.0670 us/op 2.1230 us/op 0.97
Uint8Array.set - with subarray 1.8460 us/op 1.7090 us/op 1.08
Uint8Array.set - without subarray 957.00 ns/op 1.0650 us/op 0.90
getUint32 - dataview 195.00 ns/op 195.00 ns/op 1.00
getUint32 - manual 118.00 ns/op 116.00 ns/op 1.02
Set add up to 64 items then delete first 2.3815 us/op 2.2023 us/op 1.08
OrderedSet add up to 64 items then delete first 3.5472 us/op 3.4696 us/op 1.02
Set add up to 64 items then delete last 2.6000 us/op 2.6826 us/op 0.97
OrderedSet add up to 64 items then delete last 3.9284 us/op 3.7203 us/op 1.06
Set add up to 64 items then delete middle 2.6880 us/op 2.5897 us/op 1.04
OrderedSet add up to 64 items then delete middle 5.3010 us/op 5.5785 us/op 0.95
Set add up to 128 items then delete first 5.4816 us/op 5.2301 us/op 1.05
OrderedSet add up to 128 items then delete first 8.0643 us/op 8.1110 us/op 0.99
Set add up to 128 items then delete last 5.4521 us/op 5.2091 us/op 1.05
OrderedSet add up to 128 items then delete last 8.1092 us/op 7.3393 us/op 1.10
Set add up to 128 items then delete middle 6.2069 us/op 5.0031 us/op 1.24
OrderedSet add up to 128 items then delete middle 14.607 us/op 15.078 us/op 0.97
Set add up to 256 items then delete first 13.131 us/op 10.224 us/op 1.28
OrderedSet add up to 256 items then delete first 18.426 us/op 16.012 us/op 1.15
Set add up to 256 items then delete last 11.056 us/op 9.2458 us/op 1.20
OrderedSet add up to 256 items then delete last 14.552 us/op 14.573 us/op 1.00
Set add up to 256 items then delete middle 9.9460 us/op 9.7706 us/op 1.02
OrderedSet add up to 256 items then delete middle 46.031 us/op 41.932 us/op 1.10
transfer serialized Status (84 B) 2.2960 us/op 2.1870 us/op 1.05
copy serialized Status (84 B) 1.2550 us/op 1.1850 us/op 1.06
transfer serialized SignedVoluntaryExit (112 B) 2.2590 us/op 2.2730 us/op 0.99
copy serialized SignedVoluntaryExit (112 B) 1.3350 us/op 1.1700 us/op 1.14
transfer serialized ProposerSlashing (416 B) 3.3150 us/op 2.3220 us/op 1.43
copy serialized ProposerSlashing (416 B) 2.1740 us/op 1.2940 us/op 1.68
transfer serialized Attestation (485 B) 2.9620 us/op 2.3390 us/op 1.27
copy serialized Attestation (485 B) 1.9050 us/op 1.2580 us/op 1.51
transfer serialized AttesterSlashing (33232 B) 2.9030 us/op 3.1430 us/op 0.92
copy serialized AttesterSlashing (33232 B) 4.3430 us/op 3.8430 us/op 1.13
transfer serialized Small SignedBeaconBlock (128000 B) 3.5370 us/op 3.3850 us/op 1.04
copy serialized Small SignedBeaconBlock (128000 B) 10.500 us/op 9.5880 us/op 1.10
transfer serialized Avg SignedBeaconBlock (200000 B) 3.8090 us/op 3.7650 us/op 1.01
copy serialized Avg SignedBeaconBlock (200000 B) 15.669 us/op 13.068 us/op 1.20
transfer serialized BlobsSidecar (524380 B) 4.0660 us/op 3.5980 us/op 1.13
copy serialized BlobsSidecar (524380 B) 70.527 us/op 61.557 us/op 1.15
transfer serialized Big SignedBeaconBlock (1000000 B) 4.4410 us/op 3.5310 us/op 1.26
copy serialized Big SignedBeaconBlock (1000000 B) 130.49 us/op 115.78 us/op 1.13
pass gossip attestations to forkchoice per slot 2.8819 ms/op 2.9080 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 465.51 us/op 459.60 us/op 1.01
forkChoice updateHead vc 600000 bc 64 eq 0 2.9136 ms/op 2.8735 ms/op 1.01
forkChoice updateHead vc 1000000 bc 64 eq 0 5.0273 ms/op 4.9316 ms/op 1.02
forkChoice updateHead vc 600000 bc 320 eq 0 2.9350 ms/op 2.8784 ms/op 1.02
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8585 ms/op 2.9618 ms/op 0.97
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1917 ms/op 3.2473 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 1000 10.437 ms/op 10.929 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 10000 10.563 ms/op 10.692 ms/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 300000 14.003 ms/op 14.141 ms/op 0.99
computeDeltas 500000 validators 300 proto nodes 3.9914 ms/op 3.8564 ms/op 1.04
computeDeltas 500000 validators 1200 proto nodes 4.0277 ms/op 3.7871 ms/op 1.06
computeDeltas 500000 validators 7200 proto nodes 3.9908 ms/op 3.7869 ms/op 1.05
computeDeltas 750000 validators 300 proto nodes 5.7529 ms/op 5.6420 ms/op 1.02
computeDeltas 750000 validators 1200 proto nodes 5.6504 ms/op 5.6563 ms/op 1.00
computeDeltas 750000 validators 7200 proto nodes 5.6869 ms/op 5.7074 ms/op 1.00
computeDeltas 1400000 validators 300 proto nodes 10.799 ms/op 10.689 ms/op 1.01
computeDeltas 1400000 validators 1200 proto nodes 10.827 ms/op 10.650 ms/op 1.02
computeDeltas 1400000 validators 7200 proto nodes 10.744 ms/op 10.566 ms/op 1.02
computeDeltas 2100000 validators 300 proto nodes 16.371 ms/op 16.232 ms/op 1.01
computeDeltas 2100000 validators 1200 proto nodes 16.382 ms/op 15.820 ms/op 1.04
computeDeltas 2100000 validators 7200 proto nodes 16.127 ms/op 16.079 ms/op 1.00
altair processAttestation - 250000 vs - 7PWei normalcase 1.9573 ms/op 1.9393 ms/op 1.01
altair processAttestation - 250000 vs - 7PWei worstcase 2.8716 ms/op 2.8243 ms/op 1.02
altair processAttestation - setStatus - 1/6 committees join 120.54 us/op 116.81 us/op 1.03
altair processAttestation - setStatus - 1/3 committees join 248.68 us/op 233.85 us/op 1.06
altair processAttestation - setStatus - 1/2 committees join 328.32 us/op 327.25 us/op 1.00
altair processAttestation - setStatus - 2/3 committees join 417.05 us/op 420.82 us/op 0.99
altair processAttestation - setStatus - 4/5 committees join 573.91 us/op 592.96 us/op 0.97
altair processAttestation - setStatus - 100% committees join 705.11 us/op 680.36 us/op 1.04
altair processBlock - 250000 vs - 7PWei normalcase 4.2265 ms/op 4.3642 ms/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase hashState 29.931 ms/op 39.772 ms/op 0.75
altair processBlock - 250000 vs - 7PWei worstcase 34.509 ms/op 49.907 ms/op 0.69
altair processBlock - 250000 vs - 7PWei worstcase hashState 77.993 ms/op 104.98 ms/op 0.74
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6552 ms/op 2.2971 ms/op 0.72
phase0 processBlock - 250000 vs - 7PWei worstcase 20.864 ms/op 32.930 ms/op 0.63
altair processEth1Data - 250000 vs - 7PWei normalcase 338.52 us/op 353.53 us/op 0.96
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.8420 us/op 9.4390 us/op 0.62
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 36.032 us/op 55.154 us/op 0.65
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.136 us/op 15.799 us/op 0.64
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.1760 us/op 10.411 us/op 0.59
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 133.66 us/op 235.45 us/op 0.57
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.8682 ms/op 1.6480 ms/op 1.13
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.2716 ms/op 2.0199 ms/op 1.12
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.3053 ms/op 2.1354 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.6228 ms/op 4.2430 ms/op 1.09
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.3517 ms/op 2.2561 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.7590 ms/op 4.4165 ms/op 1.08
Tree 40 250000 create 406.19 ms/op 407.01 ms/op 1.00
Tree 40 250000 get(125000) 137.39 ns/op 141.00 ns/op 0.97
Tree 40 250000 set(125000) 1.3835 us/op 1.4239 us/op 0.97
Tree 40 250000 toArray() 14.697 ms/op 15.309 ms/op 0.96
Tree 40 250000 iterate all - toArray() + loop 14.872 ms/op 15.087 ms/op 0.99
Tree 40 250000 iterate all - get(i) 47.620 ms/op 49.117 ms/op 0.97
Array 250000 create 2.2982 ms/op 2.3681 ms/op 0.97
Array 250000 clone - spread 771.50 us/op 796.57 us/op 0.97
Array 250000 get(125000) 0.39100 ns/op 0.39800 ns/op 0.98
Array 250000 set(125000) 0.42200 ns/op 0.42300 ns/op 1.00
Array 250000 iterate all - loop 81.252 us/op 108.85 us/op 0.75
phase0 afterProcessEpoch - 250000 vs - 7PWei 40.909 ms/op 41.441 ms/op 0.99
Array.fill - length 1000000 3.4235 ms/op 3.5723 ms/op 0.96
Array push - length 1000000 12.259 ms/op 12.549 ms/op 0.98
Array.get 0.27508 ns/op 0.27040 ns/op 1.02
Uint8Array.get 0.43278 ns/op 0.43686 ns/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.849 ms/op 15.156 ms/op 1.05
altair processEpoch - mainnet_e81889 263.32 ms/op 290.75 ms/op 0.91
mainnet_e81889 - altair beforeProcessEpoch 17.592 ms/op 18.423 ms/op 0.95
mainnet_e81889 - altair processJustificationAndFinalization 5.4370 us/op 7.3000 us/op 0.74
mainnet_e81889 - altair processInactivityUpdates 4.1053 ms/op 4.1346 ms/op 0.99
mainnet_e81889 - altair processRewardsAndPenalties 39.058 ms/op 43.403 ms/op 0.90
mainnet_e81889 - altair processRegistryUpdates 691.00 ns/op 855.00 ns/op 0.81
mainnet_e81889 - altair processSlashings 172.00 ns/op 183.00 ns/op 0.94
mainnet_e81889 - altair processEth1DataReset 168.00 ns/op 173.00 ns/op 0.97
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.1762 ms/op 1.1650 ms/op 1.01
mainnet_e81889 - altair processSlashingsReset 844.00 ns/op 1.1100 us/op 0.76
mainnet_e81889 - altair processRandaoMixesReset 1.1190 us/op 1.7540 us/op 0.64
mainnet_e81889 - altair processHistoricalRootsUpdate 171.00 ns/op 168.00 ns/op 1.02
mainnet_e81889 - altair processParticipationFlagUpdates 547.00 ns/op 507.00 ns/op 1.08
mainnet_e81889 - altair processSyncCommitteeUpdates 133.00 ns/op 145.00 ns/op 0.92
mainnet_e81889 - altair afterProcessEpoch 43.256 ms/op 41.377 ms/op 1.05
capella processEpoch - mainnet_e217614 910.84 ms/op 996.04 ms/op 0.91
mainnet_e217614 - capella beforeProcessEpoch 62.086 ms/op 62.697 ms/op 0.99
mainnet_e217614 - capella processJustificationAndFinalization 5.3200 us/op 4.9950 us/op 1.07
mainnet_e217614 - capella processInactivityUpdates 14.303 ms/op 14.261 ms/op 1.00
mainnet_e217614 - capella processRewardsAndPenalties 172.78 ms/op 208.27 ms/op 0.83
mainnet_e217614 - capella processRegistryUpdates 6.1560 us/op 7.7440 us/op 0.79
mainnet_e217614 - capella processSlashings 171.00 ns/op 250.00 ns/op 0.68
mainnet_e217614 - capella processEth1DataReset 167.00 ns/op 174.00 ns/op 0.96
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.0323 ms/op 4.0862 ms/op 0.99
mainnet_e217614 - capella processSlashingsReset 853.00 ns/op 914.00 ns/op 0.93
mainnet_e217614 - capella processRandaoMixesReset 1.1500 us/op 1.1630 us/op 0.99
mainnet_e217614 - capella processHistoricalRootsUpdate 167.00 ns/op 182.00 ns/op 0.92
mainnet_e217614 - capella processParticipationFlagUpdates 546.00 ns/op 572.00 ns/op 0.95
mainnet_e217614 - capella afterProcessEpoch 112.61 ms/op 114.85 ms/op 0.98
phase0 processEpoch - mainnet_e58758 277.70 ms/op 318.81 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 62.265 ms/op 79.926 ms/op 0.78
mainnet_e58758 - phase0 processJustificationAndFinalization 5.4120 us/op 8.0180 us/op 0.67
mainnet_e58758 - phase0 processRewardsAndPenalties 34.861 ms/op 43.961 ms/op 0.79
mainnet_e58758 - phase0 processRegistryUpdates 3.0680 us/op 3.0550 us/op 1.00
mainnet_e58758 - phase0 processSlashings 170.00 ns/op 176.00 ns/op 0.97
mainnet_e58758 - phase0 processEth1DataReset 170.00 ns/op 183.00 ns/op 0.93
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1234 ms/op 1.1436 ms/op 0.98
mainnet_e58758 - phase0 processSlashingsReset 871.00 ns/op 892.00 ns/op 0.98
mainnet_e58758 - phase0 processRandaoMixesReset 1.1910 us/op 1.3770 us/op 0.86
mainnet_e58758 - phase0 processHistoricalRootsUpdate 170.00 ns/op 181.00 ns/op 0.94
mainnet_e58758 - phase0 processParticipationRecordUpdates 882.00 ns/op 925.00 ns/op 0.95
mainnet_e58758 - phase0 afterProcessEpoch 34.629 ms/op 35.324 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3047 ms/op 2.4308 ms/op 0.54
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9561 ms/op 1.9389 ms/op 1.01
altair processInactivityUpdates - 250000 normalcase 16.343 ms/op 28.374 ms/op 0.58
altair processInactivityUpdates - 250000 worstcase 16.833 ms/op 20.455 ms/op 0.82
phase0 processRegistryUpdates - 250000 normalcase 5.4360 us/op 10.730 us/op 0.51
phase0 processRegistryUpdates - 250000 badcase_full_deposits 231.49 us/op 425.88 us/op 0.54
phase0 processRegistryUpdates - 250000 worstcase 0.5 100.27 ms/op 116.17 ms/op 0.86
altair processRewardsAndPenalties - 250000 normalcase 26.884 ms/op 31.493 ms/op 0.85
altair processRewardsAndPenalties - 250000 worstcase 27.117 ms/op 37.750 ms/op 0.72
phase0 getAttestationDeltas - 250000 normalcase 7.0112 ms/op 6.4551 ms/op 1.09
phase0 getAttestationDeltas - 250000 worstcase 6.4291 ms/op 5.9224 ms/op 1.09
phase0 processSlashings - 250000 worstcase 77.038 us/op 128.34 us/op 0.60
altair processSyncCommitteeUpdates - 250000 10.616 ms/op 10.939 ms/op 0.97
BeaconState.hashTreeRoot - No change 217.00 ns/op 215.00 ns/op 1.01
BeaconState.hashTreeRoot - 1 full validator 88.743 us/op 83.713 us/op 1.06
BeaconState.hashTreeRoot - 32 full validator 767.51 us/op 1.3670 ms/op 0.56
BeaconState.hashTreeRoot - 512 full validator 8.8400 ms/op 10.826 ms/op 0.82
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 88.432 us/op 158.44 us/op 0.56
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2568 ms/op 1.5704 ms/op 0.80
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 24.758 ms/op 29.098 ms/op 0.85
BeaconState.hashTreeRoot - 1 balances 77.073 us/op 90.149 us/op 0.85
BeaconState.hashTreeRoot - 32 balances 1.0304 ms/op 1.1326 ms/op 0.91
BeaconState.hashTreeRoot - 512 balances 8.9273 ms/op 10.051 ms/op 0.89
BeaconState.hashTreeRoot - 250000 balances 176.22 ms/op 209.31 ms/op 0.84
aggregationBits - 2048 els - zipIndexesInBitList 21.470 us/op 20.956 us/op 1.02
byteArrayEquals 32 52.750 ns/op 52.932 ns/op 1.00
Buffer.compare 32 16.945 ns/op 17.098 ns/op 0.99
byteArrayEquals 1024 1.5595 us/op 1.5750 us/op 0.99
Buffer.compare 1024 24.144 ns/op 24.283 ns/op 0.99
byteArrayEquals 16384 24.834 us/op 25.089 us/op 0.99
Buffer.compare 16384 184.20 ns/op 202.08 ns/op 0.91
byteArrayEquals 123687377 189.13 ms/op 188.87 ms/op 1.00
Buffer.compare 123687377 6.3425 ms/op 6.2359 ms/op 1.02
byteArrayEquals 32 - diff last byte 52.245 ns/op 52.176 ns/op 1.00
Buffer.compare 32 - diff last byte 16.970 ns/op 16.870 ns/op 1.01
byteArrayEquals 1024 - diff last byte 1.5755 us/op 1.5665 us/op 1.01
Buffer.compare 1024 - diff last byte 26.032 ns/op 24.565 ns/op 1.06
byteArrayEquals 16384 - diff last byte 25.623 us/op 25.048 us/op 1.02
Buffer.compare 16384 - diff last byte 191.16 ns/op 174.66 ns/op 1.09
byteArrayEquals 123687377 - diff last byte 189.94 ms/op 188.49 ms/op 1.01
Buffer.compare 123687377 - diff last byte 6.5128 ms/op 6.4482 ms/op 1.01
byteArrayEquals 32 - random bytes 5.0990 ns/op 5.0520 ns/op 1.01
Buffer.compare 32 - random bytes 17.299 ns/op 16.815 ns/op 1.03
byteArrayEquals 1024 - random bytes 5.0730 ns/op 5.0580 ns/op 1.00
Buffer.compare 1024 - random bytes 17.268 ns/op 16.863 ns/op 1.02
byteArrayEquals 16384 - random bytes 5.0520 ns/op 5.0500 ns/op 1.00
Buffer.compare 16384 - random bytes 17.185 ns/op 16.827 ns/op 1.02
byteArrayEquals 123687377 - random bytes 6.2700 ns/op 6.3200 ns/op 0.99
Buffer.compare 123687377 - random bytes 18.310 ns/op 18.290 ns/op 1.00
regular array get 100000 times 39.999 us/op 35.967 us/op 1.11
wrappedArray get 100000 times 40.474 us/op 32.875 us/op 1.23
arrayWithProxy get 100000 times 12.192 ms/op 12.072 ms/op 1.01
ssz.Root.equals 46.434 ns/op 45.859 ns/op 1.01
byteArrayEquals 45.501 ns/op 45.022 ns/op 1.01
Buffer.compare 10.535 ns/op 10.341 ns/op 1.02
processSlot - 1 slots 10.393 us/op 10.143 us/op 1.02
processSlot - 32 slots 2.4542 ms/op 2.8742 ms/op 0.85
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.0286 ms/op 2.7673 ms/op 1.09
getCommitteeAssignments - req 1 vs - 250000 vc 2.1318 ms/op 1.9956 ms/op 1.07
getCommitteeAssignments - req 100 vs - 250000 vc 4.1477 ms/op 3.8882 ms/op 1.07
getCommitteeAssignments - req 1000 vs - 250000 vc 4.4582 ms/op 4.1535 ms/op 1.07
findModifiedValidators - 10000 modified validators 735.13 ms/op 730.81 ms/op 1.01
findModifiedValidators - 1000 modified validators 716.76 ms/op 700.02 ms/op 1.02
findModifiedValidators - 100 modified validators 227.53 ms/op 195.64 ms/op 1.16
findModifiedValidators - 10 modified validators 137.57 ms/op 242.38 ms/op 0.57
findModifiedValidators - 1 modified validators 218.21 ms/op 147.07 ms/op 1.48
findModifiedValidators - no difference 150.47 ms/op 154.69 ms/op 0.97
compare ViewDUs 6.3263 s/op 6.2750 s/op 1.01
compare each validator Uint8Array 1.6186 s/op 1.6606 s/op 0.97
compare ViewDU to Uint8Array 1.0428 s/op 920.47 ms/op 1.13
migrate state 1000000 validators, 24 modified, 0 new 835.30 ms/op 916.52 ms/op 0.91
migrate state 1000000 validators, 1700 modified, 1000 new 1.1534 s/op 1.2181 s/op 0.95
migrate state 1000000 validators, 3400 modified, 2000 new 1.3106 s/op 1.3255 s/op 0.99
migrate state 1500000 validators, 24 modified, 0 new 870.36 ms/op 978.80 ms/op 0.89
migrate state 1500000 validators, 1700 modified, 1000 new 1.2268 s/op 1.1827 s/op 1.04
migrate state 1500000 validators, 3400 modified, 2000 new 1.5256 s/op 1.3476 s/op 1.13
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.2400 ns/op 4.1200 ns/op 1.03
state getBlockRootAtSlot - 250000 vs - 7PWei 539.34 ns/op 958.43 ns/op 0.56
naive computeProposerIndex 100000 validators 65.735 ms/op 51.061 ms/op 1.29
computeProposerIndex 100000 validators 1.5650 ms/op 1.4863 ms/op 1.05
naiveGetNextSyncCommitteeIndices 1000 validators 8.6468 s/op 7.1831 s/op 1.20
getNextSyncCommitteeIndices 1000 validators 142.69 ms/op 113.19 ms/op 1.26
naiveGetNextSyncCommitteeIndices 10000 validators 9.0509 s/op 7.8758 s/op 1.15
getNextSyncCommitteeIndices 10000 validators 119.08 ms/op 113.89 ms/op 1.05
naiveGetNextSyncCommitteeIndices 100000 validators 9.4484 s/op 7.3993 s/op 1.28
getNextSyncCommitteeIndices 100000 validators 121.06 ms/op 114.00 ms/op 1.06
naive computeShuffledIndex 100000 validators 26.064 s/op 24.464 s/op 1.07
cached computeShuffledIndex 100000 validators 600.80 ms/op 548.67 ms/op 1.10
naive computeShuffledIndex 2000000 validators 713.36 s/op 486.61 s/op 1.47
cached computeShuffledIndex 2000000 validators 69.182 s/op 28.714 s/op 2.41
computeProposers - vc 250000 653.50 us/op 619.04 us/op 1.06
computeEpochShuffling - vc 250000 43.508 ms/op 41.453 ms/op 1.05
getNextSyncCommittee - vc 250000 11.121 ms/op 10.245 ms/op 1.09
computeSigningRoot for AttestationData 27.966 us/op 21.716 us/op 1.29
hash AttestationData serialized data then Buffer.toString(base64) 1.7042 us/op 1.5529 us/op 1.10
toHexString serialized data 1.2547 us/op 1.0978 us/op 1.14
Buffer.toString(base64) 154.30 ns/op 153.97 ns/op 1.00
nodejs block root to RootHex using toHex 146.37 ns/op 145.03 ns/op 1.01
nodejs block root to RootHex using toRootHex 87.973 ns/op 88.822 ns/op 0.99
nodejs fromhex(blob) 117.76 ms/op 108.21 ms/op 1.09
nodejs fromHexInto(blob) 99.031 ms/op 93.606 ms/op 1.06
browser block root to RootHex using the deprecated toHexString 240.56 ns/op 208.54 ns/op 1.15
browser block root to RootHex using toHex 184.56 ns/op 170.62 ns/op 1.08
browser block root to RootHex using toRootHex 175.99 ns/op 158.40 ns/op 1.11
browser fromHexInto(blob) 883.07 us/op 812.76 us/op 1.09
browser fromHex(blob) 800.45 ms/op 774.47 ms/op 1.03

by benchmarkbot/action

Copy link
Contributor

@twoeths twoeths left a comment

Choose a reason for hiding this comment

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

the main fix for this test was merged in #8319

@nflaig nflaig changed the title feat: finalized sync e2e post electra only test: finalized sync e2e post electra only Sep 8, 2025
@twoeths twoeths merged commit 2f71bae into unstable Sep 9, 2025
22 of 28 checks passed
@twoeths twoeths deleted the te/finalized_sync_fulu_0904-2 branch September 9, 2025 01:50
@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.

5 participants