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

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Oct 10, 2025

No description provided.

@nflaig nflaig requested a review from a team as a code owner October 10, 2025 12:09
@gemini-code-assist
Copy link
Contributor

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 introduces a crucial cleanup step within the network service's shutdown process. It ensures that an event listener associated with blob sidecars is properly removed, preventing potential memory leaks or unintended behavior that could arise if the listener persisted after the service has been terminated. This is a maintenance improvement focused on robust resource management.

Highlights

  • Event Listener Cleanup: A specific event listener for ChainEvent.publishBlobSidecars is now explicitly de-registered when the network service's close method is invoked.
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
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 pull request 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 correctly adds the removal of the publishBlobSidecars chain event listener in the close method of the Network class. This is an important fix to prevent memory leaks by ensuring that all event listeners registered during the component's lifecycle are properly cleaned up upon its destruction. The change is correct and improves the robustness of the application's shutdown sequence.

@codecov
Copy link

codecov bot commented Oct 10, 2025

Codecov Report

❌ Patch coverage is 0% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 52.19%. Comparing base (793f92c) to head (bb41e3c).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #8520      +/-   ##
============================================
- Coverage     52.19%   52.19%   -0.01%     
============================================
  Files           852      852              
  Lines         65054    65055       +1     
  Branches       4771     4772       +1     
============================================
- Hits          33958    33955       -3     
- Misses        31027    31031       +4     
  Partials         69       69              
🚀 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

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 023b50c Previous: 793f92c Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 752.66 us/op 1.0840 ms/op 0.69
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 29.876 us/op 39.051 us/op 0.77
BLS verify - blst 887.17 us/op 1.0463 ms/op 0.85
BLS verifyMultipleSignatures 3 - blst 1.2997 ms/op 1.4801 ms/op 0.88
BLS verifyMultipleSignatures 8 - blst 2.0582 ms/op 2.0152 ms/op 1.02
BLS verifyMultipleSignatures 32 - blst 4.4992 ms/op 5.9919 ms/op 0.75
BLS verifyMultipleSignatures 64 - blst 8.4295 ms/op 11.866 ms/op 0.71
BLS verifyMultipleSignatures 128 - blst 16.021 ms/op 20.876 ms/op 0.77
BLS deserializing 10000 signatures 632.72 ms/op 794.16 ms/op 0.80
BLS deserializing 100000 signatures 6.1240 s/op 7.3711 s/op 0.83
BLS verifyMultipleSignatures - same message - 3 - blst 907.78 us/op 1.1435 ms/op 0.79
BLS verifyMultipleSignatures - same message - 8 - blst 1.0364 ms/op 1.2516 ms/op 0.83
BLS verifyMultipleSignatures - same message - 32 - blst 1.6299 ms/op 1.9429 ms/op 0.84
BLS verifyMultipleSignatures - same message - 64 - blst 2.4385 ms/op 2.8716 ms/op 0.85
BLS verifyMultipleSignatures - same message - 128 - blst 4.1922 ms/op 4.6898 ms/op 0.89
BLS aggregatePubkeys 32 - blst 17.033 us/op 21.794 us/op 0.78
BLS aggregatePubkeys 128 - blst 59.833 us/op 70.539 us/op 0.85
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 45.227 ms/op 57.173 ms/op 0.79
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 43.444 ms/op 50.871 ms/op 0.85
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 29.660 ms/op 41.419 ms/op 0.72
getSlashingsAndExits - default max 48.510 us/op 73.255 us/op 0.66
getSlashingsAndExits - 2k 220.72 us/op 302.54 us/op 0.73
isKnown best case - 1 super set check 410.00 ns/op 206.00 ns/op 1.99
isKnown normal case - 2 super set checks 406.00 ns/op 207.00 ns/op 1.96
isKnown worse case - 16 super set checks 406.00 ns/op 205.00 ns/op 1.98
InMemoryCheckpointStateCache - add get delete 2.3740 us/op 2.4260 us/op 0.98
validate api signedAggregateAndProof - struct 1.4132 ms/op 1.7095 ms/op 0.83
validate gossip signedAggregateAndProof - struct 1.6146 ms/op 1.3378 ms/op 1.21
batch validate gossip attestation - vc 640000 - chunk 32 108.01 us/op 118.68 us/op 0.91
batch validate gossip attestation - vc 640000 - chunk 64 90.504 us/op 111.72 us/op 0.81
batch validate gossip attestation - vc 640000 - chunk 128 84.759 us/op 104.72 us/op 0.81
batch validate gossip attestation - vc 640000 - chunk 256 84.488 us/op 97.342 us/op 0.87
pickEth1Vote - no votes 733.84 us/op 1.0033 ms/op 0.73
pickEth1Vote - max votes 4.3209 ms/op 7.7499 ms/op 0.56
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.5567 ms/op 11.290 ms/op 0.76
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 12.075 ms/op 18.235 ms/op 0.66
pickEth1Vote - Eth1Data fastSerialize value x2048 370.36 us/op 457.45 us/op 0.81
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.4693 ms/op 3.6201 ms/op 0.68
bytes32 toHexString 532.00 ns/op 369.00 ns/op 1.44
bytes32 Buffer.toString(hex) 428.00 ns/op 261.00 ns/op 1.64
bytes32 Buffer.toString(hex) from Uint8Array 486.00 ns/op 365.00 ns/op 1.33
bytes32 Buffer.toString(hex) + 0x 416.00 ns/op 271.00 ns/op 1.54
Object access 1 prop 0.29600 ns/op 0.11700 ns/op 2.53
Map access 1 prop 0.30400 ns/op 0.12000 ns/op 2.53
Object get x1000 4.8360 ns/op 5.8260 ns/op 0.83
Map get x1000 5.3920 ns/op 6.3940 ns/op 0.84
Object set x1000 18.703 ns/op 29.320 ns/op 0.64
Map set x1000 16.169 ns/op 19.721 ns/op 0.82
Return object 10000 times 0.28160 ns/op 0.28980 ns/op 0.97
Throw Error 10000 times 3.2705 us/op 4.3675 us/op 0.75
toHex 95.528 ns/op 136.58 ns/op 0.70
Buffer.from 85.151 ns/op 122.86 ns/op 0.69
shared Buffer 62.665 ns/op 82.995 ns/op 0.76
fastMsgIdFn sha256 / 200 bytes 1.8830 us/op 2.3570 us/op 0.80
fastMsgIdFn h32 xxhash / 200 bytes 391.00 ns/op 195.00 ns/op 2.01
fastMsgIdFn h64 xxhash / 200 bytes 417.00 ns/op 265.00 ns/op 1.57
fastMsgIdFn sha256 / 1000 bytes 5.4290 us/op 7.1980 us/op 0.75
fastMsgIdFn h32 xxhash / 1000 bytes 488.00 ns/op 330.00 ns/op 1.48
fastMsgIdFn h64 xxhash / 1000 bytes 489.00 ns/op 337.00 ns/op 1.45
fastMsgIdFn sha256 / 10000 bytes 46.404 us/op 65.503 us/op 0.71
fastMsgIdFn h32 xxhash / 10000 bytes 1.7900 us/op 1.8320 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 1.2480 us/op 1.2220 us/op 1.02
send data - 1000 256B messages 11.949 ms/op 18.208 ms/op 0.66
send data - 1000 512B messages 14.273 ms/op 20.205 ms/op 0.71
send data - 1000 1024B messages 19.793 ms/op 27.989 ms/op 0.71
send data - 1000 1200B messages 15.801 ms/op 22.048 ms/op 0.72
send data - 1000 2048B messages 15.000 ms/op 21.575 ms/op 0.70
send data - 1000 4096B messages 17.831 ms/op 26.398 ms/op 0.68
send data - 1000 16384B messages 24.159 ms/op 43.453 ms/op 0.56
send data - 1000 65536B messages 61.947 ms/op 111.22 ms/op 0.56
enrSubnets - fastDeserialize 64 bits 978.00 ns/op 884.00 ns/op 1.11
enrSubnets - ssz BitVector 64 bits 495.00 ns/op 402.00 ns/op 1.23
enrSubnets - fastDeserialize 4 bits 310.00 ns/op 132.00 ns/op 2.35
enrSubnets - ssz BitVector 4 bits 502.00 ns/op 332.00 ns/op 1.51
prioritizePeers score -10:0 att 32-0.1 sync 2-0 193.62 us/op 232.81 us/op 0.83
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 225.01 us/op 258.79 us/op 0.87
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 365.24 us/op 368.52 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 638.60 us/op 692.83 us/op 0.92
prioritizePeers score 0:0 att 64-1 sync 4-1 769.36 us/op 841.05 us/op 0.91
array of 16000 items push then shift 1.2752 us/op 1.5896 us/op 0.80
LinkedList of 16000 items push then shift 6.2970 ns/op 7.1010 ns/op 0.89
array of 16000 items push then pop 61.386 ns/op 75.607 ns/op 0.81
LinkedList of 16000 items push then pop 6.1800 ns/op 6.8510 ns/op 0.90
array of 24000 items push then shift 1.8824 us/op 2.3063 us/op 0.82
LinkedList of 24000 items push then shift 6.3360 ns/op 7.2310 ns/op 0.88
array of 24000 items push then pop 86.262 ns/op 98.872 ns/op 0.87
LinkedList of 24000 items push then pop 6.2620 ns/op 7.0270 ns/op 0.89
intersect bitArray bitLen 8 5.4260 ns/op 6.3440 ns/op 0.86
intersect array and set length 8 32.302 ns/op 37.448 ns/op 0.86
intersect bitArray bitLen 128 26.408 ns/op 29.577 ns/op 0.89
intersect array and set length 128 540.75 ns/op 615.97 ns/op 0.88
bitArray.getTrueBitIndexes() bitLen 128 1.1120 us/op 1.0140 us/op 1.10
bitArray.getTrueBitIndexes() bitLen 248 1.7580 us/op 1.7610 us/op 1.00
bitArray.getTrueBitIndexes() bitLen 512 3.2230 us/op 3.6010 us/op 0.90
Buffer.concat 32 items 782.00 ns/op 721.00 ns/op 1.08
Uint8Array.set 32 items 980.00 ns/op 1.0780 us/op 0.91
Buffer.copy 2.0070 us/op 2.0640 us/op 0.97
Uint8Array.set - with subarray 1.6050 us/op 2.1010 us/op 0.76
Uint8Array.set - without subarray 955.00 ns/op 1.2490 us/op 0.76
getUint32 - dataview 372.00 ns/op 190.00 ns/op 1.96
getUint32 - manual 297.00 ns/op 116.00 ns/op 2.56
Set add up to 64 items then delete first 1.8056 us/op 2.1082 us/op 0.86
OrderedSet add up to 64 items then delete first 2.8227 us/op 3.2174 us/op 0.88
Set add up to 64 items then delete last 2.0621 us/op 2.3920 us/op 0.86
OrderedSet add up to 64 items then delete last 3.1356 us/op 3.5589 us/op 0.88
Set add up to 64 items then delete middle 2.0576 us/op 2.5069 us/op 0.82
OrderedSet add up to 64 items then delete middle 4.5623 us/op 5.0317 us/op 0.91
Set add up to 128 items then delete first 4.0845 us/op 4.8749 us/op 0.84
OrderedSet add up to 128 items then delete first 6.4437 us/op 7.6233 us/op 0.85
Set add up to 128 items then delete last 3.9482 us/op 4.9409 us/op 0.80
OrderedSet add up to 128 items then delete last 6.0929 us/op 7.1724 us/op 0.85
Set add up to 128 items then delete middle 3.9538 us/op 4.6885 us/op 0.84
OrderedSet add up to 128 items then delete middle 11.818 us/op 13.610 us/op 0.87
Set add up to 256 items then delete first 7.9859 us/op 10.612 us/op 0.75
OrderedSet add up to 256 items then delete first 12.538 us/op 15.474 us/op 0.81
Set add up to 256 items then delete last 7.7415 us/op 9.3460 us/op 0.83
OrderedSet add up to 256 items then delete last 12.097 us/op 14.448 us/op 0.84
Set add up to 256 items then delete middle 7.7641 us/op 9.6537 us/op 0.80
OrderedSet add up to 256 items then delete middle 34.865 us/op 40.584 us/op 0.86
transfer serialized Status (84 B) 1.8920 us/op 2.2600 us/op 0.84
copy serialized Status (84 B) 1.1560 us/op 1.1910 us/op 0.97
transfer serialized SignedVoluntaryExit (112 B) 1.9380 us/op 2.3040 us/op 0.84
copy serialized SignedVoluntaryExit (112 B) 1.1730 us/op 1.2080 us/op 0.97
transfer serialized ProposerSlashing (416 B) 1.9420 us/op 2.4250 us/op 0.80
copy serialized ProposerSlashing (416 B) 1.2000 us/op 1.8460 us/op 0.65
transfer serialized Attestation (485 B) 1.9550 us/op 2.4150 us/op 0.81
copy serialized Attestation (485 B) 1.1960 us/op 1.5950 us/op 0.75
transfer serialized AttesterSlashing (33232 B) 1.9910 us/op 3.6810 us/op 0.54
copy serialized AttesterSlashing (33232 B) 2.3500 us/op 4.7430 us/op 0.50
transfer serialized Small SignedBeaconBlock (128000 B) 2.0660 us/op 3.5180 us/op 0.59
copy serialized Small SignedBeaconBlock (128000 B) 5.4200 us/op 8.9060 us/op 0.61
transfer serialized Avg SignedBeaconBlock (200000 B) 2.1210 us/op 3.9170 us/op 0.54
copy serialized Avg SignedBeaconBlock (200000 B) 7.6950 us/op 12.662 us/op 0.61
transfer serialized BlobsSidecar (524380 B) 2.7800 us/op 3.7290 us/op 0.75
copy serialized BlobsSidecar (524380 B) 57.871 us/op 123.37 us/op 0.47
transfer serialized Big SignedBeaconBlock (1000000 B) 3.2680 us/op 3.8760 us/op 0.84
copy serialized Big SignedBeaconBlock (1000000 B) 108.95 us/op 107.57 us/op 1.01
pass gossip attestations to forkchoice per slot 2.2326 ms/op 2.7317 ms/op 0.82
forkChoice updateHead vc 100000 bc 64 eq 0 331.53 us/op 453.04 us/op 0.73
forkChoice updateHead vc 600000 bc 64 eq 0 2.2901 ms/op 2.7871 ms/op 0.82
forkChoice updateHead vc 1000000 bc 64 eq 0 3.7633 ms/op 4.8136 ms/op 0.78
forkChoice updateHead vc 600000 bc 320 eq 0 2.1226 ms/op 2.7190 ms/op 0.78
forkChoice updateHead vc 600000 bc 1200 eq 0 2.1759 ms/op 2.7822 ms/op 0.78
forkChoice updateHead vc 600000 bc 7200 eq 0 2.3956 ms/op 2.9906 ms/op 0.80
forkChoice updateHead vc 600000 bc 64 eq 1000 9.0520 ms/op 10.092 ms/op 0.90
forkChoice updateHead vc 600000 bc 64 eq 10000 8.8810 ms/op 10.086 ms/op 0.88
forkChoice updateHead vc 600000 bc 64 eq 300000 11.741 ms/op 13.734 ms/op 0.85
computeDeltas 500000 validators 300 proto nodes 3.0795 ms/op 3.7730 ms/op 0.82
computeDeltas 500000 validators 1200 proto nodes 3.1023 ms/op 3.7655 ms/op 0.82
computeDeltas 500000 validators 7200 proto nodes 3.1007 ms/op 3.7784 ms/op 0.82
computeDeltas 750000 validators 300 proto nodes 4.5948 ms/op 6.0163 ms/op 0.76
computeDeltas 750000 validators 1200 proto nodes 4.6714 ms/op 5.8451 ms/op 0.80
computeDeltas 750000 validators 7200 proto nodes 4.6144 ms/op 5.9061 ms/op 0.78
computeDeltas 1400000 validators 300 proto nodes 8.6641 ms/op 11.726 ms/op 0.74
computeDeltas 1400000 validators 1200 proto nodes 8.7059 ms/op 11.946 ms/op 0.73
computeDeltas 1400000 validators 7200 proto nodes 8.8389 ms/op 10.752 ms/op 0.82
computeDeltas 2100000 validators 300 proto nodes 13.392 ms/op 16.151 ms/op 0.83
computeDeltas 2100000 validators 1200 proto nodes 13.179 ms/op 16.051 ms/op 0.82
computeDeltas 2100000 validators 7200 proto nodes 13.096 ms/op 16.113 ms/op 0.81
altair processAttestation - 250000 vs - 7PWei normalcase 1.7159 ms/op 1.9677 ms/op 0.87
altair processAttestation - 250000 vs - 7PWei worstcase 2.4716 ms/op 2.8148 ms/op 0.88
altair processAttestation - setStatus - 1/6 committees join 90.043 us/op 114.15 us/op 0.79
altair processAttestation - setStatus - 1/3 committees join 198.35 us/op 241.81 us/op 0.82
altair processAttestation - setStatus - 1/2 committees join 277.56 us/op 314.80 us/op 0.88
altair processAttestation - setStatus - 2/3 committees join 351.00 us/op 427.86 us/op 0.82
altair processAttestation - setStatus - 4/5 committees join 492.93 us/op 606.24 us/op 0.81
altair processAttestation - setStatus - 100% committees join 556.06 us/op 743.99 us/op 0.75
altair processBlock - 250000 vs - 7PWei normalcase 4.8262 ms/op 6.0770 ms/op 0.79
altair processBlock - 250000 vs - 7PWei normalcase hashState 32.196 ms/op 32.293 ms/op 1.00
altair processBlock - 250000 vs - 7PWei worstcase 39.924 ms/op 44.919 ms/op 0.89
altair processBlock - 250000 vs - 7PWei worstcase hashState 84.304 ms/op 89.436 ms/op 0.94
phase0 processBlock - 250000 vs - 7PWei normalcase 1.4044 ms/op 2.0153 ms/op 0.70
phase0 processBlock - 250000 vs - 7PWei worstcase 23.824 ms/op 29.465 ms/op 0.81
altair processEth1Data - 250000 vs - 7PWei normalcase 261.93 us/op 338.79 us/op 0.77
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.8850 us/op 9.7220 us/op 0.61
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 43.723 us/op 56.689 us/op 0.77
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 9.1190 us/op 16.415 us/op 0.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 8.1340 us/op 10.434 us/op 0.78
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 94.613 us/op 243.57 us/op 0.39
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.3337 ms/op 1.8229 ms/op 0.73
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8771 ms/op 2.3221 ms/op 0.81
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7669 ms/op 2.2864 ms/op 0.77
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.5401 ms/op 4.6309 ms/op 0.76
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.9160 ms/op 2.4617 ms/op 0.78
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.7762 ms/op 4.6636 ms/op 0.81
Tree 40 250000 create 350.40 ms/op 408.33 ms/op 0.86
Tree 40 250000 get(125000) 111.76 ns/op 143.60 ns/op 0.78
Tree 40 250000 set(125000) 1.2345 us/op 1.4194 us/op 0.87
Tree 40 250000 toArray() 9.6685 ms/op 19.362 ms/op 0.50
Tree 40 250000 iterate all - toArray() + loop 9.6776 ms/op 17.204 ms/op 0.56
Tree 40 250000 iterate all - get(i) 41.437 ms/op 54.064 ms/op 0.77
Array 250000 create 1.9314 ms/op 2.9174 ms/op 0.66
Array 250000 clone - spread 623.73 us/op 1.4539 ms/op 0.43
Array 250000 get(125000) 0.57800 ns/op 0.43700 ns/op 1.32
Array 250000 set(125000) 0.57600 ns/op 0.49000 ns/op 1.18
Array 250000 iterate all - loop 76.681 us/op 93.763 us/op 0.82
phase0 afterProcessEpoch - 250000 vs - 7PWei 37.987 ms/op 42.974 ms/op 0.88
Array.fill - length 1000000 2.5445 ms/op 3.5506 ms/op 0.72
Array push - length 1000000 9.5165 ms/op 16.953 ms/op 0.56
Array.get 0.26351 ns/op 0.27878 ns/op 0.95
Uint8Array.get 0.34269 ns/op 0.46076 ns/op 0.74
phase0 beforeProcessEpoch - 250000 vs - 7PWei 12.298 ms/op 17.077 ms/op 0.72
altair processEpoch - mainnet_e81889 279.16 ms/op 305.92 ms/op 0.91
mainnet_e81889 - altair beforeProcessEpoch 15.819 ms/op 18.217 ms/op 0.87
mainnet_e81889 - altair processJustificationAndFinalization 4.4760 us/op 7.0670 us/op 0.63
mainnet_e81889 - altair processInactivityUpdates 3.4851 ms/op 4.2684 ms/op 0.82
mainnet_e81889 - altair processRewardsAndPenalties 41.591 ms/op 53.814 ms/op 0.77
mainnet_e81889 - altair processRegistryUpdates 853.00 ns/op 690.00 ns/op 1.24
mainnet_e81889 - altair processSlashings 401.00 ns/op 190.00 ns/op 2.11
mainnet_e81889 - altair processEth1DataReset 396.00 ns/op 170.00 ns/op 2.33
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.0215 ms/op 1.2112 ms/op 0.84
mainnet_e81889 - altair processSlashingsReset 990.00 ns/op 1.1480 us/op 0.86
mainnet_e81889 - altair processRandaoMixesReset 1.2020 us/op 1.5120 us/op 0.79
mainnet_e81889 - altair processHistoricalRootsUpdate 395.00 ns/op 186.00 ns/op 2.12
mainnet_e81889 - altair processParticipationFlagUpdates 678.00 ns/op 515.00 ns/op 1.32
mainnet_e81889 - altair processSyncCommitteeUpdates 354.00 ns/op 150.00 ns/op 2.36
mainnet_e81889 - altair afterProcessEpoch 38.771 ms/op 43.093 ms/op 0.90
capella processEpoch - mainnet_e217614 985.35 ms/op 958.46 ms/op 1.03
mainnet_e217614 - capella beforeProcessEpoch 58.242 ms/op 69.340 ms/op 0.84
mainnet_e217614 - capella processJustificationAndFinalization 4.5620 us/op 5.5960 us/op 0.82
mainnet_e217614 - capella processInactivityUpdates 11.779 ms/op 15.033 ms/op 0.78
mainnet_e217614 - capella processRewardsAndPenalties 203.54 ms/op 188.19 ms/op 1.08
mainnet_e217614 - capella processRegistryUpdates 5.3790 us/op 6.8430 us/op 0.79
mainnet_e217614 - capella processSlashings 402.00 ns/op 183.00 ns/op 2.20
mainnet_e217614 - capella processEth1DataReset 401.00 ns/op 177.00 ns/op 2.27
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.5212 ms/op 4.1835 ms/op 0.84
mainnet_e217614 - capella processSlashingsReset 1.2430 us/op 899.00 ns/op 1.38
mainnet_e217614 - capella processRandaoMixesReset 1.2150 us/op 1.4040 us/op 0.87
mainnet_e217614 - capella processHistoricalRootsUpdate 400.00 ns/op 193.00 ns/op 2.07
mainnet_e217614 - capella processParticipationFlagUpdates 709.00 ns/op 572.00 ns/op 1.24
mainnet_e217614 - capella afterProcessEpoch 107.11 ms/op 116.68 ms/op 0.92
phase0 processEpoch - mainnet_e58758 276.75 ms/op 337.72 ms/op 0.82
mainnet_e58758 - phase0 beforeProcessEpoch 69.588 ms/op 81.987 ms/op 0.85
mainnet_e58758 - phase0 processJustificationAndFinalization 4.5320 us/op 6.0610 us/op 0.75
mainnet_e58758 - phase0 processRewardsAndPenalties 39.174 ms/op 38.690 ms/op 1.01
mainnet_e58758 - phase0 processRegistryUpdates 2.7500 us/op 4.0860 us/op 0.67
mainnet_e58758 - phase0 processSlashings 389.00 ns/op 170.00 ns/op 2.29
mainnet_e58758 - phase0 processEth1DataReset 388.00 ns/op 169.00 ns/op 2.30
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 908.92 us/op 1.1910 ms/op 0.76
mainnet_e58758 - phase0 processSlashingsReset 1.1010 us/op 919.00 ns/op 1.20
mainnet_e58758 - phase0 processRandaoMixesReset 1.2620 us/op 1.4060 us/op 0.90
mainnet_e58758 - phase0 processHistoricalRootsUpdate 396.00 ns/op 175.00 ns/op 2.26
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1680 us/op 939.00 ns/op 1.24
mainnet_e58758 - phase0 afterProcessEpoch 32.089 ms/op 35.390 ms/op 0.91
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.1326 ms/op 1.4782 ms/op 0.77
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4645 ms/op 2.0246 ms/op 0.72
altair processInactivityUpdates - 250000 normalcase 18.991 ms/op 23.768 ms/op 0.80
altair processInactivityUpdates - 250000 worstcase 15.602 ms/op 24.085 ms/op 0.65
phase0 processRegistryUpdates - 250000 normalcase 2.7440 us/op 9.5050 us/op 0.29
phase0 processRegistryUpdates - 250000 badcase_full_deposits 287.66 us/op 427.20 us/op 0.67
phase0 processRegistryUpdates - 250000 worstcase 0.5 99.734 ms/op 111.91 ms/op 0.89
altair processRewardsAndPenalties - 250000 normalcase 27.873 ms/op 31.436 ms/op 0.89
altair processRewardsAndPenalties - 250000 worstcase 24.336 ms/op 28.459 ms/op 0.86
phase0 getAttestationDeltas - 250000 normalcase 5.3719 ms/op 7.1469 ms/op 0.75
phase0 getAttestationDeltas - 250000 worstcase 4.9655 ms/op 7.0516 ms/op 0.70
phase0 processSlashings - 250000 worstcase 90.192 us/op 109.52 us/op 0.82
altair processSyncCommitteeUpdates - 250000 9.9222 ms/op 12.371 ms/op 0.80
BeaconState.hashTreeRoot - No change 437.00 ns/op 218.00 ns/op 2.00
BeaconState.hashTreeRoot - 1 full validator 85.617 us/op 103.11 us/op 0.83
BeaconState.hashTreeRoot - 32 full validator 834.91 us/op 1.0608 ms/op 0.79
BeaconState.hashTreeRoot - 512 full validator 9.7241 ms/op 10.764 ms/op 0.90
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 96.522 us/op 93.429 us/op 1.03
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3376 ms/op 1.9822 ms/op 0.67
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 25.829 ms/op 19.188 ms/op 1.35
BeaconState.hashTreeRoot - 1 balances 71.190 us/op 95.783 us/op 0.74
BeaconState.hashTreeRoot - 32 balances 801.87 us/op 838.16 us/op 0.96
BeaconState.hashTreeRoot - 512 balances 5.7379 ms/op 9.1666 ms/op 0.63
BeaconState.hashTreeRoot - 250000 balances 173.74 ms/op 180.64 ms/op 0.96
aggregationBits - 2048 els - zipIndexesInBitList 18.629 us/op 22.346 us/op 0.83
byteArrayEquals 32 44.457 ns/op 54.841 ns/op 0.81
Buffer.compare 32 15.346 ns/op 17.607 ns/op 0.87
byteArrayEquals 1024 1.2160 us/op 1.6178 us/op 0.75
Buffer.compare 1024 23.191 ns/op 26.375 ns/op 0.88
byteArrayEquals 16384 19.330 us/op 25.403 us/op 0.76
Buffer.compare 16384 190.89 ns/op 235.59 ns/op 0.81
byteArrayEquals 123687377 146.82 ms/op 192.69 ms/op 0.76
Buffer.compare 123687377 5.1699 ms/op 7.2319 ms/op 0.71
byteArrayEquals 32 - diff last byte 43.869 ns/op 53.353 ns/op 0.82
Buffer.compare 32 - diff last byte 15.179 ns/op 17.258 ns/op 0.88
byteArrayEquals 1024 - diff last byte 1.2329 us/op 1.5945 us/op 0.77
Buffer.compare 1024 - diff last byte 23.323 ns/op 25.061 ns/op 0.93
byteArrayEquals 16384 - diff last byte 19.523 us/op 25.663 us/op 0.76
Buffer.compare 16384 - diff last byte 164.73 ns/op 203.83 ns/op 0.81
byteArrayEquals 123687377 - diff last byte 148.57 ms/op 193.35 ms/op 0.77
Buffer.compare 123687377 - diff last byte 5.2089 ms/op 7.0474 ms/op 0.74
byteArrayEquals 32 - random bytes 4.8740 ns/op 5.1600 ns/op 0.94
Buffer.compare 32 - random bytes 15.404 ns/op 17.292 ns/op 0.89
byteArrayEquals 1024 - random bytes 4.9090 ns/op 5.1630 ns/op 0.95
Buffer.compare 1024 - random bytes 15.743 ns/op 17.262 ns/op 0.91
byteArrayEquals 16384 - random bytes 4.8970 ns/op 5.1670 ns/op 0.95
Buffer.compare 16384 - random bytes 15.787 ns/op 17.316 ns/op 0.91
byteArrayEquals 123687377 - random bytes 8.0300 ns/op 6.4600 ns/op 1.24
Buffer.compare 123687377 - random bytes 18.740 ns/op 24.650 ns/op 0.76
regular array get 100000 times 31.262 us/op 33.341 us/op 0.94
wrappedArray get 100000 times 31.199 us/op 33.081 us/op 0.94
arrayWithProxy get 100000 times 9.2993 ms/op 12.225 ms/op 0.76
ssz.Root.equals 39.969 ns/op 46.609 ns/op 0.86
byteArrayEquals 39.359 ns/op 45.760 ns/op 0.86
Buffer.compare 9.1340 ns/op 10.487 ns/op 0.87
processSlot - 1 slots 9.3920 us/op 10.177 us/op 0.92
processSlot - 32 slots 2.1692 ms/op 1.9801 ms/op 1.10
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 1.9685 ms/op 3.0776 ms/op 0.64
getCommitteeAssignments - req 1 vs - 250000 vc 1.7792 ms/op 2.1416 ms/op 0.83
getCommitteeAssignments - req 100 vs - 250000 vc 3.5046 ms/op 4.1673 ms/op 0.84
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7156 ms/op 4.4193 ms/op 0.84
findModifiedValidators - 10000 modified validators 749.95 ms/op 773.93 ms/op 0.97
findModifiedValidators - 1000 modified validators 656.24 ms/op 748.75 ms/op 0.88
findModifiedValidators - 100 modified validators 155.58 ms/op 257.13 ms/op 0.61
findModifiedValidators - 10 modified validators 124.39 ms/op 140.10 ms/op 0.89
findModifiedValidators - 1 modified validators 123.51 ms/op 150.07 ms/op 0.82
findModifiedValidators - no difference 130.05 ms/op 148.41 ms/op 0.88
compare ViewDUs 6.1255 s/op 6.3643 s/op 0.96
compare each validator Uint8Array 1.7688 s/op 1.4445 s/op 1.22
compare ViewDU to Uint8Array 900.68 ms/op 1.0952 s/op 0.82
migrate state 1000000 validators, 24 modified, 0 new 870.66 ms/op 896.59 ms/op 0.97
migrate state 1000000 validators, 1700 modified, 1000 new 1.1146 s/op 1.2402 s/op 0.90
migrate state 1000000 validators, 3400 modified, 2000 new 1.2877 s/op 1.5461 s/op 0.83
migrate state 1500000 validators, 24 modified, 0 new 781.69 ms/op 1.0197 s/op 0.77
migrate state 1500000 validators, 1700 modified, 1000 new 967.67 ms/op 1.4107 s/op 0.69
migrate state 1500000 validators, 3400 modified, 2000 new 1.2848 s/op 1.5862 s/op 0.81
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.6900 ns/op 4.6200 ns/op 1.23
state getBlockRootAtSlot - 250000 vs - 7PWei 607.86 ns/op 576.58 ns/op 1.05
naive computeProposerIndex 100000 validators 47.115 ms/op 55.736 ms/op 0.85
computeProposerIndex 100000 validators 1.2943 ms/op 1.5351 ms/op 0.84
naiveGetNextSyncCommitteeIndices 1000 validators 6.5166 s/op 7.8561 s/op 0.83
getNextSyncCommitteeIndices 1000 validators 89.675 ms/op 108.29 ms/op 0.83
naiveGetNextSyncCommitteeIndices 10000 validators 6.1674 s/op 7.3226 s/op 0.84
getNextSyncCommitteeIndices 10000 validators 93.454 ms/op 109.82 ms/op 0.85
naiveGetNextSyncCommitteeIndices 100000 validators 6.8002 s/op 7.6854 s/op 0.88
getNextSyncCommitteeIndices 100000 validators 96.404 ms/op 112.13 ms/op 0.86
naive computeShuffledIndex 100000 validators 18.893 s/op 24.285 s/op 0.78
cached computeShuffledIndex 100000 validators 472.59 ms/op 542.52 ms/op 0.87
naive computeShuffledIndex 2000000 validators 399.19 s/op 570.30 s/op 0.70
cached computeShuffledIndex 2000000 validators 23.916 s/op 47.196 s/op 0.51
computeProposers - vc 250000 522.38 us/op 610.68 us/op 0.86
computeEpochShuffling - vc 250000 36.732 ms/op 43.051 ms/op 0.85
getNextSyncCommittee - vc 250000 9.2727 ms/op 11.287 ms/op 0.82
computeSigningRoot for AttestationData 20.023 us/op 22.680 us/op 0.88
hash AttestationData serialized data then Buffer.toString(base64) 1.2158 us/op 1.6485 us/op 0.74
toHexString serialized data 940.97 ns/op 1.2893 us/op 0.73
Buffer.toString(base64) 107.27 ns/op 158.36 ns/op 0.68
nodejs block root to RootHex using toHex 102.58 ns/op 153.42 ns/op 0.67
nodejs block root to RootHex using toRootHex 67.128 ns/op 88.795 ns/op 0.76
nodejs fromhex(blob) 84.334 ms/op 114.17 ms/op 0.74
nodejs fromHexInto(blob) 81.489 ms/op 97.056 ms/op 0.84
browser block root to RootHex using the deprecated toHexString 189.82 ns/op 218.31 ns/op 0.87
browser block root to RootHex using toHex 157.28 ns/op 178.00 ns/op 0.88
browser block root to RootHex using toRootHex 144.54 ns/op 168.50 ns/op 0.86
browser fromHexInto(blob) 683.05 us/op 835.78 us/op 0.82
browser fromHex(blob) 661.00 ms/op 799.63 ms/op 0.83

by benchmarkbot/action

@nflaig nflaig merged commit a2a22d6 into unstable Oct 13, 2025
39 of 44 checks passed
@nflaig nflaig deleted the nflaig/unsubscribe-blobsidecars branch October 13, 2025 08:58
AbolareRoheemah pushed a commit to AbolareRoheemah/lodestar that referenced this pull request Oct 14, 2025
@wemeetagain
Copy link
Member

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