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

Conversation

@twoeths
Copy link
Contributor

@twoeths twoeths commented Sep 19, 2025

Motivation

  • got a case where all columns came timely while block came very late and we did not trigger incompleteBlockInput event

Description

  • trigger incompleteBlockInput in that case

Closes #8405

@twoeths twoeths requested a review from a team as a code owner September 19, 2025 06:45
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @twoeths, 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 addresses a critical bug in the network processor's block input handling. Previously, the system failed to trigger an incompleteBlockInput event in scenarios where all related data columns were received promptly, but the actual block was delayed. The fix ensures that the system now correctly waits for the block itself, in addition to all other data, thereby guaranteeing that the incompleteBlockInput event is fired as expected under these conditions, improving the robustness and accuracy of block processing.

Highlights

  • Bug Fix: Resolved an issue where the incompleteBlockInput event was not triggered when all data columns arrived timely but the block itself was significantly delayed.
  • Block Input Handling: Updated the blockInput mechanism to explicitly wait for both the block and all its associated data by changing waitForAllData to waitForBlockAndAllData.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request correctly addresses a bug where an incompleteBlockInput event failed to trigger when all data columns were received before the block itself. By changing the wait condition from waitForAllData to waitForBlockAndAllData, the logic now correctly waits for both the block and all associated data to arrive before proceeding. This ensures that timeouts for incomplete data are handled properly, making the block processing logic more robust. The change is precise and effectively resolves the described issue.

@codecov
Copy link

codecov bot commented Sep 19, 2025

Codecov Report

❌ Patch coverage is 0% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 52.27%. Comparing base (5e2a800) to head (a87647d).
⚠️ Report is 5 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #8430   +/-   ##
=========================================
  Coverage     52.27%   52.27%           
=========================================
  Files           853      853           
  Lines         64742    64742           
  Branches       4765     4766    +1     
=========================================
+ Hits          33842    33845    +3     
+ Misses        30830    30827    -3     
  Partials         70       70           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 8a17c8e Previous: 5e2a800 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.2795 ms/op 1.0023 ms/op 1.28
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 42.956 us/op 38.869 us/op 1.11
BLS verify - blst 1.3153 ms/op 833.46 us/op 1.58
BLS verifyMultipleSignatures 3 - blst 2.0052 ms/op 2.2334 ms/op 0.90
BLS verifyMultipleSignatures 8 - blst 1.9778 ms/op 1.8608 ms/op 1.06
BLS verifyMultipleSignatures 32 - blst 8.2423 ms/op 5.5550 ms/op 1.48
BLS verifyMultipleSignatures 64 - blst 11.048 ms/op 10.646 ms/op 1.04
BLS verifyMultipleSignatures 128 - blst 18.174 ms/op 17.229 ms/op 1.05
BLS deserializing 10000 signatures 719.79 ms/op 692.77 ms/op 1.04
BLS deserializing 100000 signatures 7.0626 s/op 6.9571 s/op 1.02
BLS verifyMultipleSignatures - same message - 3 - blst 1.1176 ms/op 1.0795 ms/op 1.04
BLS verifyMultipleSignatures - same message - 8 - blst 1.0351 ms/op 1.2338 ms/op 0.84
BLS verifyMultipleSignatures - same message - 32 - blst 1.6878 ms/op 1.7812 ms/op 0.95
BLS verifyMultipleSignatures - same message - 64 - blst 2.5863 ms/op 2.6776 ms/op 0.97
BLS verifyMultipleSignatures - same message - 128 - blst 4.3690 ms/op 4.4470 ms/op 0.98
BLS aggregatePubkeys 32 - blst 19.397 us/op 20.923 us/op 0.93
BLS aggregatePubkeys 128 - blst 68.902 us/op 70.142 us/op 0.98
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 65.621 ms/op 55.496 ms/op 1.18
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 61.197 ms/op 48.816 ms/op 1.25
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 41.939 ms/op 45.606 ms/op 0.92
getSlashingsAndExits - default max 92.929 us/op 70.813 us/op 1.31
getSlashingsAndExits - 2k 396.85 us/op 336.52 us/op 1.18
isKnown best case - 1 super set check 220.00 ns/op 206.00 ns/op 1.07
isKnown normal case - 2 super set checks 215.00 ns/op 203.00 ns/op 1.06
isKnown worse case - 16 super set checks 218.00 ns/op 202.00 ns/op 1.08
InMemoryCheckpointStateCache - add get delete 2.6860 us/op 2.3290 us/op 1.15
validate api signedAggregateAndProof - struct 2.1351 ms/op 2.5779 ms/op 0.83
validate gossip signedAggregateAndProof - struct 1.9877 ms/op 2.5815 ms/op 0.77
batch validate gossip attestation - vc 640000 - chunk 32 123.07 us/op 113.19 us/op 1.09
batch validate gossip attestation - vc 640000 - chunk 64 110.57 us/op 99.828 us/op 1.11
batch validate gossip attestation - vc 640000 - chunk 128 95.892 us/op 94.167 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 256 102.99 us/op 95.106 us/op 1.08
pickEth1Vote - no votes 980.57 us/op 967.05 us/op 1.01
pickEth1Vote - max votes 6.9714 ms/op 7.4499 ms/op 0.94
pickEth1Vote - Eth1Data hashTreeRoot value x2048 12.732 ms/op 11.488 ms/op 1.11
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 21.857 ms/op 20.541 ms/op 1.06
pickEth1Vote - Eth1Data fastSerialize value x2048 451.61 us/op 430.70 us/op 1.05
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.2464 ms/op 3.5892 ms/op 0.63
bytes32 toHexString 378.00 ns/op 360.00 ns/op 1.05
bytes32 Buffer.toString(hex) 273.00 ns/op 237.00 ns/op 1.15
bytes32 Buffer.toString(hex) from Uint8Array 372.00 ns/op 328.00 ns/op 1.13
bytes32 Buffer.toString(hex) + 0x 265.00 ns/op 243.00 ns/op 1.09
Object access 1 prop 0.12400 ns/op 0.12000 ns/op 1.03
Map access 1 prop 0.14200 ns/op 0.13700 ns/op 1.04
Object get x1000 7.1470 ns/op 6.2220 ns/op 1.15
Map get x1000 6.3910 ns/op 6.4660 ns/op 0.99
Object set x1000 31.229 ns/op 29.240 ns/op 1.07
Map set x1000 20.395 ns/op 20.040 ns/op 1.02
Return object 10000 times 0.29500 ns/op 0.29100 ns/op 1.01
Throw Error 10000 times 4.5723 us/op 4.3704 us/op 1.05
toHex 136.06 ns/op 130.19 ns/op 1.05
Buffer.from 117.67 ns/op 119.80 ns/op 0.98
shared Buffer 85.971 ns/op 80.563 ns/op 1.07
fastMsgIdFn sha256 / 200 bytes 2.2210 us/op 2.1710 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 229.00 ns/op 248.00 ns/op 0.92
fastMsgIdFn h64 xxhash / 200 bytes 286.00 ns/op 263.00 ns/op 1.09
fastMsgIdFn sha256 / 1000 bytes 7.4200 us/op 7.2790 us/op 1.02
fastMsgIdFn h32 xxhash / 1000 bytes 403.00 ns/op 333.00 ns/op 1.21
fastMsgIdFn h64 xxhash / 1000 bytes 395.00 ns/op 336.00 ns/op 1.18
fastMsgIdFn sha256 / 10000 bytes 66.958 us/op 67.872 us/op 0.99
fastMsgIdFn h32 xxhash / 10000 bytes 1.9280 us/op 1.7940 us/op 1.07
fastMsgIdFn h64 xxhash / 10000 bytes 1.5080 us/op 1.2020 us/op 1.25
send data - 1000 256B messages 19.903 ms/op 15.014 ms/op 1.33
send data - 1000 512B messages 24.225 ms/op 18.395 ms/op 1.32
send data - 1000 1024B messages 31.365 ms/op 25.775 ms/op 1.22
send data - 1000 1200B messages 27.265 ms/op 26.121 ms/op 1.04
send data - 1000 2048B messages 29.967 ms/op 27.842 ms/op 1.08
send data - 1000 4096B messages 30.592 ms/op 28.004 ms/op 1.09
send data - 1000 16384B messages 48.716 ms/op 46.404 ms/op 1.05
send data - 1000 65536B messages 128.73 ms/op 111.34 ms/op 1.16
enrSubnets - fastDeserialize 64 bits 920.00 ns/op 881.00 ns/op 1.04
enrSubnets - ssz BitVector 64 bits 361.00 ns/op 324.00 ns/op 1.11
enrSubnets - fastDeserialize 4 bits 157.00 ns/op 131.00 ns/op 1.20
enrSubnets - ssz BitVector 4 bits 328.00 ns/op 320.00 ns/op 1.02
prioritizePeers score -10:0 att 32-0.1 sync 2-0 264.63 us/op 236.78 us/op 1.12
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 272.83 us/op 330.26 us/op 0.83
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 397.81 us/op 375.84 us/op 1.06
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 741.37 us/op 748.13 us/op 0.99
prioritizePeers score 0:0 att 64-1 sync 4-1 889.20 us/op 904.55 us/op 0.98
array of 16000 items push then shift 1.6632 us/op 1.6959 us/op 0.98
LinkedList of 16000 items push then shift 8.4420 ns/op 7.7460 ns/op 1.09
array of 16000 items push then pop 96.820 ns/op 76.369 ns/op 1.27
LinkedList of 16000 items push then pop 8.1140 ns/op 7.2430 ns/op 1.12
array of 24000 items push then shift 2.4799 us/op 2.3564 us/op 1.05
LinkedList of 24000 items push then shift 9.0480 ns/op 7.1640 ns/op 1.26
array of 24000 items push then pop 139.17 ns/op 102.29 ns/op 1.36
LinkedList of 24000 items push then pop 8.0050 ns/op 7.0820 ns/op 1.13
intersect bitArray bitLen 8 10.539 ns/op 6.3260 ns/op 1.67
intersect array and set length 8 42.101 ns/op 41.342 ns/op 1.02
intersect bitArray bitLen 128 30.590 ns/op 30.366 ns/op 1.01
intersect array and set length 128 628.63 ns/op 743.26 ns/op 0.85
bitArray.getTrueBitIndexes() bitLen 128 1.0890 us/op 1.0570 us/op 1.03
bitArray.getTrueBitIndexes() bitLen 248 1.8350 us/op 1.8510 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 512 3.8520 us/op 3.7820 us/op 1.02
Buffer.concat 32 items 650.00 ns/op 746.00 ns/op 0.87
Uint8Array.set 32 items 1.0250 us/op 1.0390 us/op 0.99
Buffer.copy 2.1220 us/op 2.0590 us/op 1.03
Uint8Array.set - with subarray 1.6640 us/op 1.6100 us/op 1.03
Uint8Array.set - without subarray 1.3280 us/op 947.00 ns/op 1.40
getUint32 - dataview 210.00 ns/op 197.00 ns/op 1.07
getUint32 - manual 125.00 ns/op 118.00 ns/op 1.06
Set add up to 64 items then delete first 2.4780 us/op 2.2262 us/op 1.11
OrderedSet add up to 64 items then delete first 3.6686 us/op 3.3253 us/op 1.10
Set add up to 64 items then delete last 2.7456 us/op 2.5304 us/op 1.09
OrderedSet add up to 64 items then delete last 4.2620 us/op 4.0449 us/op 1.05
Set add up to 64 items then delete middle 2.9724 us/op 2.7472 us/op 1.08
OrderedSet add up to 64 items then delete middle 6.3518 us/op 6.0030 us/op 1.06
Set add up to 128 items then delete first 5.6970 us/op 5.1479 us/op 1.11
OrderedSet add up to 128 items then delete first 10.678 us/op 7.6058 us/op 1.40
Set add up to 128 items then delete last 5.9657 us/op 5.4488 us/op 1.09
OrderedSet add up to 128 items then delete last 9.6598 us/op 8.4614 us/op 1.14
Set add up to 128 items then delete middle 6.1330 us/op 5.1684 us/op 1.19
OrderedSet add up to 128 items then delete middle 14.970 us/op 15.298 us/op 0.98
Set add up to 256 items then delete first 11.608 us/op 10.396 us/op 1.12
OrderedSet add up to 256 items then delete first 19.111 us/op 16.767 us/op 1.14
Set add up to 256 items then delete last 11.118 us/op 10.601 us/op 1.05
OrderedSet add up to 256 items then delete last 20.840 us/op 16.963 us/op 1.23
Set add up to 256 items then delete middle 13.687 us/op 18.436 us/op 0.74
OrderedSet add up to 256 items then delete middle 50.018 us/op 60.345 us/op 0.83
transfer serialized Status (84 B) 3.2920 us/op 4.4910 us/op 0.73
copy serialized Status (84 B) 1.9340 us/op 3.0170 us/op 0.64
transfer serialized SignedVoluntaryExit (112 B) 3.1910 us/op 2.6170 us/op 1.22
copy serialized SignedVoluntaryExit (112 B) 1.9530 us/op 2.2320 us/op 0.88
transfer serialized ProposerSlashing (416 B) 3.7460 us/op 4.9020 us/op 0.76
copy serialized ProposerSlashing (416 B) 2.5380 us/op 2.5460 us/op 1.00
transfer serialized Attestation (485 B) 3.6560 us/op 4.3420 us/op 0.84
copy serialized Attestation (485 B) 2.6490 us/op 2.7970 us/op 0.95
transfer serialized AttesterSlashing (33232 B) 3.6000 us/op 5.0290 us/op 0.72
copy serialized AttesterSlashing (33232 B) 5.9020 us/op 6.6210 us/op 0.89
transfer serialized Small SignedBeaconBlock (128000 B) 4.4540 us/op 5.0340 us/op 0.88
copy serialized Small SignedBeaconBlock (128000 B) 15.480 us/op 18.696 us/op 0.83
transfer serialized Avg SignedBeaconBlock (200000 B) 4.9120 us/op 5.2370 us/op 0.94
copy serialized Avg SignedBeaconBlock (200000 B) 23.228 us/op 40.264 us/op 0.58
transfer serialized BlobsSidecar (524380 B) 5.1010 us/op 6.6310 us/op 0.77
copy serialized BlobsSidecar (524380 B) 73.715 us/op 157.98 us/op 0.47
transfer serialized Big SignedBeaconBlock (1000000 B) 6.5240 us/op 11.447 us/op 0.57
copy serialized Big SignedBeaconBlock (1000000 B) 175.60 us/op 328.94 us/op 0.53
pass gossip attestations to forkchoice per slot 3.2556 ms/op 3.6270 ms/op 0.90
forkChoice updateHead vc 100000 bc 64 eq 0 478.71 us/op 930.99 us/op 0.51
forkChoice updateHead vc 600000 bc 64 eq 0 4.7112 ms/op 3.1642 ms/op 1.49
forkChoice updateHead vc 1000000 bc 64 eq 0 8.2853 ms/op 4.7523 ms/op 1.74
forkChoice updateHead vc 600000 bc 320 eq 0 4.7601 ms/op 3.1097 ms/op 1.53
forkChoice updateHead vc 600000 bc 1200 eq 0 4.4357 ms/op 2.8160 ms/op 1.58
forkChoice updateHead vc 600000 bc 7200 eq 0 4.9635 ms/op 3.1922 ms/op 1.55
forkChoice updateHead vc 600000 bc 64 eq 1000 10.819 ms/op 10.406 ms/op 1.04
forkChoice updateHead vc 600000 bc 64 eq 10000 10.908 ms/op 10.644 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 300000 16.206 ms/op 14.369 ms/op 1.13
computeDeltas 500000 validators 300 proto nodes 4.4723 ms/op 4.7302 ms/op 0.95
computeDeltas 500000 validators 1200 proto nodes 4.7588 ms/op 4.7915 ms/op 0.99
computeDeltas 500000 validators 7200 proto nodes 4.6974 ms/op 6.6276 ms/op 0.71
computeDeltas 750000 validators 300 proto nodes 6.6528 ms/op 7.5256 ms/op 0.88
computeDeltas 750000 validators 1200 proto nodes 6.9206 ms/op 7.3972 ms/op 0.94
computeDeltas 750000 validators 7200 proto nodes 6.4450 ms/op 6.2308 ms/op 1.03
computeDeltas 1400000 validators 300 proto nodes 11.175 ms/op 11.332 ms/op 0.99
computeDeltas 1400000 validators 1200 proto nodes 11.158 ms/op 11.010 ms/op 1.01
computeDeltas 1400000 validators 7200 proto nodes 11.156 ms/op 10.911 ms/op 1.02
computeDeltas 2100000 validators 300 proto nodes 16.938 ms/op 16.543 ms/op 1.02
computeDeltas 2100000 validators 1200 proto nodes 17.120 ms/op 16.190 ms/op 1.06
computeDeltas 2100000 validators 7200 proto nodes 16.595 ms/op 16.199 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei normalcase 2.2087 ms/op 1.9258 ms/op 1.15
altair processAttestation - 250000 vs - 7PWei worstcase 2.9863 ms/op 2.8344 ms/op 1.05
altair processAttestation - setStatus - 1/6 committees join 126.67 us/op 125.56 us/op 1.01
altair processAttestation - setStatus - 1/3 committees join 236.81 us/op 230.52 us/op 1.03
altair processAttestation - setStatus - 1/2 committees join 340.31 us/op 326.92 us/op 1.04
altair processAttestation - setStatus - 2/3 committees join 434.27 us/op 414.86 us/op 1.05
altair processAttestation - setStatus - 4/5 committees join 609.18 us/op 571.34 us/op 1.07
altair processAttestation - setStatus - 100% committees join 693.62 us/op 691.04 us/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase 6.1314 ms/op 4.1483 ms/op 1.48
altair processBlock - 250000 vs - 7PWei normalcase hashState 43.501 ms/op 42.912 ms/op 1.01
altair processBlock - 250000 vs - 7PWei worstcase 47.064 ms/op 36.818 ms/op 1.28
altair processBlock - 250000 vs - 7PWei worstcase hashState 100.21 ms/op 105.92 ms/op 0.95
phase0 processBlock - 250000 vs - 7PWei normalcase 1.9771 ms/op 2.3182 ms/op 0.85
phase0 processBlock - 250000 vs - 7PWei worstcase 32.143 ms/op 29.003 ms/op 1.11
altair processEth1Data - 250000 vs - 7PWei normalcase 377.92 us/op 340.74 us/op 1.11
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.1230 us/op 9.0520 us/op 1.01
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 55.545 us/op 55.919 us/op 0.99
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 16.763 us/op 9.6190 us/op 1.74
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.9160 us/op 9.7850 us/op 0.71
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 149.90 us/op 240.16 us/op 0.62
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.9440 ms/op 1.7715 ms/op 1.10
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.4267 ms/op 2.0885 ms/op 1.16
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.4203 ms/op 2.2317 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.4644 ms/op 4.2685 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.4382 ms/op 2.2280 ms/op 1.09
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.4384 ms/op 4.4782 ms/op 0.99
Tree 40 250000 create 410.81 ms/op 411.94 ms/op 1.00
Tree 40 250000 get(125000) 136.26 ns/op 139.83 ns/op 0.97
Tree 40 250000 set(125000) 1.4943 us/op 1.5242 us/op 0.98
Tree 40 250000 toArray() 17.558 ms/op 21.448 ms/op 0.82
Tree 40 250000 iterate all - toArray() + loop 17.062 ms/op 18.442 ms/op 0.93
Tree 40 250000 iterate all - get(i) 48.760 ms/op 52.383 ms/op 0.93
Array 250000 create 2.8338 ms/op 3.3839 ms/op 0.84
Array 250000 clone - spread 1.6023 ms/op 801.68 us/op 2.00
Array 250000 get(125000) 0.39700 ns/op 0.48300 ns/op 0.82
Array 250000 set(125000) 0.41800 ns/op 0.42500 ns/op 0.98
Array 250000 iterate all - loop 80.693 us/op 82.309 us/op 0.98
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.245 ms/op 40.895 ms/op 1.01
Array.fill - length 1000000 3.6792 ms/op 3.3971 ms/op 1.08
Array push - length 1000000 14.177 ms/op 14.830 ms/op 0.96
Array.get 0.28042 ns/op 0.27179 ns/op 1.03
Uint8Array.get 0.43703 ns/op 0.44387 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.662 ms/op 15.663 ms/op 1.06
altair processEpoch - mainnet_e81889 289.23 ms/op 257.87 ms/op 1.12
mainnet_e81889 - altair beforeProcessEpoch 17.384 ms/op 18.481 ms/op 0.94
mainnet_e81889 - altair processJustificationAndFinalization 5.2630 us/op 6.4930 us/op 0.81
mainnet_e81889 - altair processInactivityUpdates 3.9854 ms/op 4.2704 ms/op 0.93
mainnet_e81889 - altair processRewardsAndPenalties 46.858 ms/op 47.269 ms/op 0.99
mainnet_e81889 - altair processRegistryUpdates 714.00 ns/op 684.00 ns/op 1.04
mainnet_e81889 - altair processSlashings 188.00 ns/op 177.00 ns/op 1.06
mainnet_e81889 - altair processEth1DataReset 182.00 ns/op 168.00 ns/op 1.08
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2212 ms/op 1.1722 ms/op 1.04
mainnet_e81889 - altair processSlashingsReset 1.1790 us/op 1.0530 us/op 1.12
mainnet_e81889 - altair processRandaoMixesReset 1.3730 us/op 1.0920 us/op 1.26
mainnet_e81889 - altair processHistoricalRootsUpdate 182.00 ns/op 202.00 ns/op 0.90
mainnet_e81889 - altair processParticipationFlagUpdates 523.00 ns/op 503.00 ns/op 1.04
mainnet_e81889 - altair processSyncCommitteeUpdates 135.00 ns/op 130.00 ns/op 1.04
mainnet_e81889 - altair afterProcessEpoch 41.640 ms/op 43.804 ms/op 0.95
capella processEpoch - mainnet_e217614 1.0385 s/op 914.73 ms/op 1.14
mainnet_e217614 - capella beforeProcessEpoch 65.280 ms/op 62.078 ms/op 1.05
mainnet_e217614 - capella processJustificationAndFinalization 5.2320 us/op 5.3300 us/op 0.98
mainnet_e217614 - capella processInactivityUpdates 14.831 ms/op 14.450 ms/op 1.03
mainnet_e217614 - capella processRewardsAndPenalties 241.04 ms/op 186.37 ms/op 1.29
mainnet_e217614 - capella processRegistryUpdates 6.0640 us/op 6.2680 us/op 0.97
mainnet_e217614 - capella processSlashings 182.00 ns/op 172.00 ns/op 1.06
mainnet_e217614 - capella processEth1DataReset 174.00 ns/op 170.00 ns/op 1.02
mainnet_e217614 - capella processEffectiveBalanceUpdates 3.8798 ms/op 4.2460 ms/op 0.91
mainnet_e217614 - capella processSlashingsReset 1.1080 us/op 1.1260 us/op 0.98
mainnet_e217614 - capella processRandaoMixesReset 1.2030 us/op 1.1490 us/op 1.05
mainnet_e217614 - capella processHistoricalRootsUpdate 173.00 ns/op 171.00 ns/op 1.01
mainnet_e217614 - capella processParticipationFlagUpdates 520.00 ns/op 497.00 ns/op 1.05
mainnet_e217614 - capella afterProcessEpoch 107.40 ms/op 113.84 ms/op 0.94
phase0 processEpoch - mainnet_e58758 357.60 ms/op 319.41 ms/op 1.12
mainnet_e58758 - phase0 beforeProcessEpoch 94.731 ms/op 83.082 ms/op 1.14
mainnet_e58758 - phase0 processJustificationAndFinalization 5.7640 us/op 7.2070 us/op 0.80
mainnet_e58758 - phase0 processRewardsAndPenalties 42.267 ms/op 42.794 ms/op 0.99
mainnet_e58758 - phase0 processRegistryUpdates 3.1080 us/op 3.2370 us/op 0.96
mainnet_e58758 - phase0 processSlashings 220.00 ns/op 184.00 ns/op 1.20
mainnet_e58758 - phase0 processEth1DataReset 170.00 ns/op 192.00 ns/op 0.89
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1249 ms/op 1.3313 ms/op 0.84
mainnet_e58758 - phase0 processSlashingsReset 899.00 ns/op 937.00 ns/op 0.96
mainnet_e58758 - phase0 processRandaoMixesReset 1.3480 us/op 1.3100 us/op 1.03
mainnet_e58758 - phase0 processHistoricalRootsUpdate 178.00 ns/op 188.00 ns/op 0.95
mainnet_e58758 - phase0 processParticipationRecordUpdates 879.00 ns/op 927.00 ns/op 0.95
mainnet_e58758 - phase0 afterProcessEpoch 35.531 ms/op 35.845 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.2693 ms/op 1.6032 ms/op 0.79
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9008 ms/op 3.7044 ms/op 0.51
altair processInactivityUpdates - 250000 normalcase 21.876 ms/op 20.105 ms/op 1.09
altair processInactivityUpdates - 250000 worstcase 18.415 ms/op 17.539 ms/op 1.05
phase0 processRegistryUpdates - 250000 normalcase 11.230 us/op 8.5250 us/op 1.32
phase0 processRegistryUpdates - 250000 badcase_full_deposits 431.24 us/op 248.61 us/op 1.73
phase0 processRegistryUpdates - 250000 worstcase 0.5 138.01 ms/op 115.59 ms/op 1.19
altair processRewardsAndPenalties - 250000 normalcase 35.072 ms/op 36.880 ms/op 0.95
altair processRewardsAndPenalties - 250000 worstcase 36.366 ms/op 32.041 ms/op 1.13
phase0 getAttestationDeltas - 250000 normalcase 7.8636 ms/op 6.4805 ms/op 1.21
phase0 getAttestationDeltas - 250000 worstcase 6.2500 ms/op 5.7628 ms/op 1.08
phase0 processSlashings - 250000 worstcase 124.42 us/op 121.14 us/op 1.03
altair processSyncCommitteeUpdates - 250000 10.928 ms/op 10.792 ms/op 1.01
BeaconState.hashTreeRoot - No change 216.00 ns/op 252.00 ns/op 0.86
BeaconState.hashTreeRoot - 1 full validator 76.240 us/op 86.966 us/op 0.88
BeaconState.hashTreeRoot - 32 full validator 1.4371 ms/op 1.0304 ms/op 1.39
BeaconState.hashTreeRoot - 512 full validator 8.4765 ms/op 12.844 ms/op 0.66
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 113.58 us/op 106.87 us/op 1.06
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 2.1639 ms/op 2.3156 ms/op 0.93
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 28.822 ms/op 23.657 ms/op 1.22
BeaconState.hashTreeRoot - 1 balances 82.190 us/op 90.474 us/op 0.91
BeaconState.hashTreeRoot - 32 balances 1.0930 ms/op 1.0584 ms/op 1.03
BeaconState.hashTreeRoot - 512 balances 8.3184 ms/op 9.0990 ms/op 0.91
BeaconState.hashTreeRoot - 250000 balances 165.37 ms/op 196.29 ms/op 0.84
aggregationBits - 2048 els - zipIndexesInBitList 21.722 us/op 20.851 us/op 1.04
byteArrayEquals 32 53.359 ns/op 52.547 ns/op 1.02
Buffer.compare 32 16.401 ns/op 16.737 ns/op 0.98
byteArrayEquals 1024 1.5310 us/op 1.5561 us/op 0.98
Buffer.compare 1024 23.886 ns/op 25.016 ns/op 0.95
byteArrayEquals 16384 24.393 us/op 24.777 us/op 0.98
Buffer.compare 16384 193.98 ns/op 172.69 ns/op 1.12
byteArrayEquals 123687377 184.71 ms/op 189.68 ms/op 0.97
Buffer.compare 123687377 6.2815 ms/op 6.6295 ms/op 0.95
byteArrayEquals 32 - diff last byte 50.949 ns/op 51.952 ns/op 0.98
Buffer.compare 32 - diff last byte 16.876 ns/op 16.867 ns/op 1.00
byteArrayEquals 1024 - diff last byte 1.5692 us/op 1.5663 us/op 1.00
Buffer.compare 1024 - diff last byte 25.396 ns/op 25.412 ns/op 1.00
byteArrayEquals 16384 - diff last byte 25.003 us/op 24.748 us/op 1.01
Buffer.compare 16384 - diff last byte 189.22 ns/op 387.02 ns/op 0.49
byteArrayEquals 123687377 - diff last byte 191.47 ms/op 190.36 ms/op 1.01
Buffer.compare 123687377 - diff last byte 6.2736 ms/op 6.4957 ms/op 0.97
byteArrayEquals 32 - random bytes 4.9500 ns/op 5.0100 ns/op 0.99
Buffer.compare 32 - random bytes 16.515 ns/op 17.344 ns/op 0.95
byteArrayEquals 1024 - random bytes 4.9440 ns/op 5.0910 ns/op 0.97
Buffer.compare 1024 - random bytes 16.524 ns/op 17.046 ns/op 0.97
byteArrayEquals 16384 - random bytes 4.9490 ns/op 5.0900 ns/op 0.97
Buffer.compare 16384 - random bytes 16.518 ns/op 17.025 ns/op 0.97
byteArrayEquals 123687377 - random bytes 6.3200 ns/op 6.5800 ns/op 0.96
Buffer.compare 123687377 - random bytes 22.420 ns/op 18.030 ns/op 1.24
regular array get 100000 times 42.758 us/op 43.265 us/op 0.99
wrappedArray get 100000 times 31.992 us/op 32.601 us/op 0.98
arrayWithProxy get 100000 times 11.792 ms/op 21.225 ms/op 0.56
ssz.Root.equals 45.195 ns/op 45.249 ns/op 1.00
byteArrayEquals 44.289 ns/op 44.631 ns/op 0.99
Buffer.compare 10.159 ns/op 10.179 ns/op 1.00
processSlot - 1 slots 10.007 us/op 10.709 us/op 0.93
processSlot - 32 slots 2.5752 ms/op 3.4670 ms/op 0.74
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.9458 ms/op 2.9135 ms/op 1.01
getCommitteeAssignments - req 1 vs - 250000 vc 2.0473 ms/op 2.1521 ms/op 0.95
getCommitteeAssignments - req 100 vs - 250000 vc 3.9735 ms/op 4.1610 ms/op 0.95
getCommitteeAssignments - req 1000 vs - 250000 vc 4.2340 ms/op 4.4185 ms/op 0.96
findModifiedValidators - 10000 modified validators 735.43 ms/op 736.74 ms/op 1.00
findModifiedValidators - 1000 modified validators 679.72 ms/op 697.61 ms/op 0.97
findModifiedValidators - 100 modified validators 257.23 ms/op 322.83 ms/op 0.80
findModifiedValidators - 10 modified validators 255.46 ms/op 135.78 ms/op 1.88
findModifiedValidators - 1 modified validators 172.45 ms/op 136.97 ms/op 1.26
findModifiedValidators - no difference 165.52 ms/op 147.55 ms/op 1.12
compare ViewDUs 6.3945 s/op 6.1345 s/op 1.04
compare each validator Uint8Array 1.6107 s/op 981.41 ms/op 1.64
compare ViewDU to Uint8Array 972.37 ms/op 979.03 ms/op 0.99
migrate state 1000000 validators, 24 modified, 0 new 956.06 ms/op 895.83 ms/op 1.07
migrate state 1000000 validators, 1700 modified, 1000 new 1.2572 s/op 1.2043 s/op 1.04
migrate state 1000000 validators, 3400 modified, 2000 new 1.4171 s/op 1.4022 s/op 1.01
migrate state 1500000 validators, 24 modified, 0 new 932.10 ms/op 866.71 ms/op 1.08
migrate state 1500000 validators, 1700 modified, 1000 new 1.1567 s/op 1.2271 s/op 0.94
migrate state 1500000 validators, 3400 modified, 2000 new 1.4248 s/op 1.4204 s/op 1.00
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.1200 ns/op 3.9600 ns/op 1.04
state getBlockRootAtSlot - 250000 vs - 7PWei 600.73 ns/op 582.69 ns/op 1.03
naive computeProposerIndex 100000 validators 48.552 ms/op 51.046 ms/op 0.95
computeProposerIndex 100000 validators 1.4109 ms/op 1.4522 ms/op 0.97
naiveGetNextSyncCommitteeIndices 1000 validators 8.1561 s/op 7.4755 s/op 1.09
getNextSyncCommitteeIndices 1000 validators 108.09 ms/op 106.58 ms/op 1.01
naiveGetNextSyncCommitteeIndices 10000 validators 8.1058 s/op 8.2720 s/op 0.98
getNextSyncCommitteeIndices 10000 validators 107.03 ms/op 106.91 ms/op 1.00
naiveGetNextSyncCommitteeIndices 100000 validators 7.8570 s/op 7.1921 s/op 1.09
getNextSyncCommitteeIndices 100000 validators 108.84 ms/op 112.36 ms/op 0.97
naive computeShuffledIndex 100000 validators 24.091 s/op 22.937 s/op 1.05
cached computeShuffledIndex 100000 validators 537.91 ms/op 556.51 ms/op 0.97
naive computeShuffledIndex 2000000 validators 487.40 s/op 478.29 s/op 1.02
cached computeShuffledIndex 2000000 validators 36.856 s/op 31.136 s/op 1.18
computeProposers - vc 250000 601.85 us/op 615.97 us/op 0.98
computeEpochShuffling - vc 250000 40.750 ms/op 40.863 ms/op 1.00
getNextSyncCommittee - vc 250000 10.302 ms/op 10.578 ms/op 0.97
computeSigningRoot for AttestationData 20.435 us/op 21.086 us/op 0.97
hash AttestationData serialized data then Buffer.toString(base64) 1.5629 us/op 1.5972 us/op 0.98
toHexString serialized data 1.2677 us/op 1.1797 us/op 1.07
Buffer.toString(base64) 140.40 ns/op 160.01 ns/op 0.88
nodejs block root to RootHex using toHex 148.18 ns/op 142.60 ns/op 1.04
nodejs block root to RootHex using toRootHex 90.346 ns/op 88.083 ns/op 1.03
nodejs fromhex(blob) 122.83 ms/op 116.92 ms/op 1.05
nodejs fromHexInto(blob) 93.220 ms/op 95.088 ms/op 0.98
browser block root to RootHex using the deprecated toHexString 214.17 ns/op 216.79 ns/op 0.99
browser block root to RootHex using toHex 176.59 ns/op 174.90 ns/op 1.01
browser block root to RootHex using toRootHex 161.61 ns/op 161.43 ns/op 1.00
browser fromHexInto(blob) 819.75 us/op 838.87 us/op 0.98
browser fromHex(blob) 792.06 ms/op 796.34 ms/op 0.99

by benchmarkbot/action

@wemeetagain wemeetagain merged commit 5c65fa3 into unstable Sep 19, 2025
25 of 27 checks passed
@wemeetagain wemeetagain deleted the te/waitForBlockAndAllData branch September 19, 2025 12:59
@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.

[block-input-refactor] handle late gossip block received

3 participants