Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: handle getDependentRoot() error when importing block #7552

Merged
merged 1 commit into from
Mar 12, 2025

Conversation

twoeths
Copy link
Contributor

@twoeths twoeths commented Mar 11, 2025

Motivation

  • when emitting head, forkchoice.getDependentRoot() may failed with "No block root" error and break the block import process

Description

@twoeths twoeths requested a review from a team as a code owner March 11, 2025 07:16
Copy link

codecov bot commented Mar 11, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 50.14%. Comparing base (ca29dbb) to head (309eb03).
Report is 2 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7552      +/-   ##
============================================
- Coverage     50.15%   50.14%   -0.02%     
============================================
  Files           603      603              
  Lines         40454    40454              
  Branches       2231     2226       -5     
============================================
- Hits          20291    20285       -6     
- Misses        20123    20129       +6     
  Partials         40       40              
🚀 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.

Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 2c7ebed Previous: ca29dbb Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 982.31 us/op 933.72 us/op 1.05
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 36.350 us/op 34.621 us/op 1.05
BLS verify - blst 826.39 us/op 820.52 us/op 1.01
BLS verifyMultipleSignatures 3 - blst 1.3102 ms/op 1.1481 ms/op 1.14
BLS verifyMultipleSignatures 8 - blst 1.8807 ms/op 1.6237 ms/op 1.16
BLS verifyMultipleSignatures 32 - blst 6.0325 ms/op 4.7999 ms/op 1.26
BLS verifyMultipleSignatures 64 - blst 10.758 ms/op 8.8486 ms/op 1.22
BLS verifyMultipleSignatures 128 - blst 17.398 ms/op 16.970 ms/op 1.03
BLS deserializing 10000 signatures 695.88 ms/op 674.39 ms/op 1.03
BLS deserializing 100000 signatures 6.8046 s/op 6.6688 s/op 1.02
BLS verifyMultipleSignatures - same message - 3 - blst 826.31 us/op 859.04 us/op 0.96
BLS verifyMultipleSignatures - same message - 8 - blst 959.43 us/op 989.68 us/op 0.97
BLS verifyMultipleSignatures - same message - 32 - blst 1.5979 ms/op 1.6481 ms/op 0.97
BLS verifyMultipleSignatures - same message - 64 - blst 2.4676 ms/op 2.5401 ms/op 0.97
BLS verifyMultipleSignatures - same message - 128 - blst 4.1453 ms/op 4.2627 ms/op 0.97
BLS aggregatePubkeys 32 - blst 22.807 us/op 19.006 us/op 1.20
BLS aggregatePubkeys 128 - blst 67.564 us/op 68.183 us/op 0.99
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 58.479 ms/op 45.504 ms/op 1.29
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 54.387 ms/op 44.338 ms/op 1.23
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 47.612 ms/op 32.773 ms/op 1.45
getSlashingsAndExits - default max 73.380 us/op 74.094 us/op 0.99
getSlashingsAndExits - 2k 300.92 us/op 281.31 us/op 1.07
proposeBlockBody type=full, size=empty 4.7175 ms/op 5.3318 ms/op 0.88
isKnown best case - 1 super set check 185.00 ns/op 205.00 ns/op 0.90
isKnown normal case - 2 super set checks 185.00 ns/op 203.00 ns/op 0.91
isKnown worse case - 16 super set checks 181.00 ns/op 203.00 ns/op 0.89
InMemoryCheckpointStateCache - add get delete 2.3450 us/op 2.3120 us/op 1.01
validate api signedAggregateAndProof - struct 1.5186 ms/op 1.3549 ms/op 1.12
validate gossip signedAggregateAndProof - struct 2.5959 ms/op 1.5558 ms/op 1.67
batch validate gossip attestation - vc 640000 - chunk 32 122.43 us/op 118.58 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 64 103.71 us/op 101.58 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 128 96.178 us/op 95.273 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 256 97.781 us/op 96.637 us/op 1.01
pickEth1Vote - no votes 950.37 us/op 927.04 us/op 1.03
pickEth1Vote - max votes 5.2018 ms/op 5.9909 ms/op 0.87
pickEth1Vote - Eth1Data hashTreeRoot value x2048 11.216 ms/op 18.766 ms/op 0.60
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 17.878 ms/op 22.136 ms/op 0.81
pickEth1Vote - Eth1Data fastSerialize value x2048 442.94 us/op 408.68 us/op 1.08
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.2536 ms/op 3.8737 ms/op 0.58
bytes32 toHexString 366.00 ns/op 362.00 ns/op 1.01
bytes32 Buffer.toString(hex) 354.00 ns/op 239.00 ns/op 1.48
bytes32 Buffer.toString(hex) from Uint8Array 328.00 ns/op 345.00 ns/op 0.95
bytes32 Buffer.toString(hex) + 0x 232.00 ns/op 242.00 ns/op 0.96
Object access 1 prop 0.11600 ns/op 0.11700 ns/op 0.99
Map access 1 prop 0.12000 ns/op 0.12400 ns/op 0.97
Object get x1000 5.8770 ns/op 5.8180 ns/op 1.01
Map get x1000 6.3530 ns/op 6.2820 ns/op 1.01
Object set x1000 27.516 ns/op 26.953 ns/op 1.02
Map set x1000 19.344 ns/op 18.550 ns/op 1.04
Return object 10000 times 0.28530 ns/op 0.27650 ns/op 1.03
Throw Error 10000 times 4.2700 us/op 4.1129 us/op 1.04
toHex 130.73 ns/op 134.17 ns/op 0.97
Buffer.from 122.83 ns/op 130.38 ns/op 0.94
shared Buffer 81.578 ns/op 78.852 ns/op 1.03
fastMsgIdFn sha256 / 200 bytes 2.1580 us/op 2.1170 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 244.00 ns/op 202.00 ns/op 1.21
fastMsgIdFn h64 xxhash / 200 bytes 260.00 ns/op 254.00 ns/op 1.02
fastMsgIdFn sha256 / 1000 bytes 7.1080 us/op 6.8580 us/op 1.04
fastMsgIdFn h32 xxhash / 1000 bytes 328.00 ns/op 327.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 1000 bytes 333.00 ns/op 327.00 ns/op 1.02
fastMsgIdFn sha256 / 10000 bytes 64.198 us/op 62.470 us/op 1.03
fastMsgIdFn h32 xxhash / 10000 bytes 1.7940 us/op 1.7660 us/op 1.02
fastMsgIdFn h64 xxhash / 10000 bytes 1.1970 us/op 1.1710 us/op 1.02
send data - 1000 256B messages 11.543 ms/op 12.307 ms/op 0.94
send data - 1000 512B messages 15.900 ms/op 15.858 ms/op 1.00
send data - 1000 1024B messages 23.243 ms/op 24.490 ms/op 0.95
send data - 1000 1200B messages 20.706 ms/op 19.951 ms/op 1.04
send data - 1000 2048B messages 21.263 ms/op 21.088 ms/op 1.01
send data - 1000 4096B messages 23.164 ms/op 25.055 ms/op 0.92
send data - 1000 16384B messages 86.282 ms/op 72.309 ms/op 1.19
send data - 1000 65536B messages 213.79 ms/op 210.58 ms/op 1.02
enrSubnets - fastDeserialize 64 bits 867.00 ns/op 880.00 ns/op 0.99
enrSubnets - ssz BitVector 64 bits 318.00 ns/op 329.00 ns/op 0.97
enrSubnets - fastDeserialize 4 bits 124.00 ns/op 126.00 ns/op 0.98
enrSubnets - ssz BitVector 4 bits 327.00 ns/op 308.00 ns/op 1.06
prioritizePeers score -10:0 att 32-0.1 sync 2-0 114.87 us/op 113.22 us/op 1.01
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 133.50 us/op 135.94 us/op 0.98
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 192.89 us/op 195.11 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 361.59 us/op 367.89 us/op 0.98
prioritizePeers score 0:0 att 64-1 sync 4-1 439.14 us/op 445.31 us/op 0.99
array of 16000 items push then shift 1.5458 us/op 1.5653 us/op 0.99
LinkedList of 16000 items push then shift 6.7490 ns/op 6.8110 ns/op 0.99
array of 16000 items push then pop 71.251 ns/op 73.795 ns/op 0.97
LinkedList of 16000 items push then pop 6.6460 ns/op 6.7540 ns/op 0.98
array of 24000 items push then shift 2.2994 us/op 2.3511 us/op 0.98
LinkedList of 24000 items push then shift 6.9130 ns/op 6.9060 ns/op 1.00
array of 24000 items push then pop 96.939 ns/op 102.24 ns/op 0.95
LinkedList of 24000 items push then pop 6.6750 ns/op 6.6140 ns/op 1.01
intersect bitArray bitLen 8 6.2370 ns/op 6.1490 ns/op 1.01
intersect array and set length 8 37.274 ns/op 36.195 ns/op 1.03
intersect bitArray bitLen 128 29.309 ns/op 28.631 ns/op 1.02
intersect array and set length 128 611.20 ns/op 595.20 ns/op 1.03
bitArray.getTrueBitIndexes() bitLen 128 980.00 ns/op 984.00 ns/op 1.00
bitArray.getTrueBitIndexes() bitLen 248 1.7310 us/op 1.7460 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 512 3.5530 us/op 3.5500 us/op 1.00
Buffer.concat 32 items 576.00 ns/op 595.00 ns/op 0.97
Uint8Array.set 32 items 1.2280 us/op 1.4250 us/op 0.86
Buffer.copy 2.3510 us/op 2.0100 us/op 1.17
Uint8Array.set - with subarray 1.5040 us/op 1.6000 us/op 0.94
Uint8Array.set - without subarray 989.00 ns/op 1.8130 us/op 0.55
getUint32 - dataview 195.00 ns/op 187.00 ns/op 1.04
getUint32 - manual 115.00 ns/op 115.00 ns/op 1.00
Set add up to 64 items then delete first 2.2157 us/op 2.0858 us/op 1.06
OrderedSet add up to 64 items then delete first 3.2682 us/op 3.1100 us/op 1.05
Set add up to 64 items then delete last 2.3714 us/op 2.4091 us/op 0.98
OrderedSet add up to 64 items then delete last 3.6871 us/op 3.6331 us/op 1.01
Set add up to 64 items then delete middle 2.3823 us/op 2.3109 us/op 1.03
OrderedSet add up to 64 items then delete middle 5.0489 us/op 5.0925 us/op 0.99
Set add up to 128 items then delete first 4.9520 us/op 5.0614 us/op 0.98
OrderedSet add up to 128 items then delete first 7.4849 us/op 7.6115 us/op 0.98
Set add up to 128 items then delete last 4.6677 us/op 4.7992 us/op 0.97
OrderedSet add up to 128 items then delete last 6.8875 us/op 7.2240 us/op 0.95
Set add up to 128 items then delete middle 4.8220 us/op 4.8972 us/op 0.98
OrderedSet add up to 128 items then delete middle 13.750 us/op 13.436 us/op 1.02
Set add up to 256 items then delete first 9.8654 us/op 9.9256 us/op 0.99
OrderedSet add up to 256 items then delete first 15.371 us/op 15.654 us/op 0.98
Set add up to 256 items then delete last 9.8385 us/op 9.4545 us/op 1.04
OrderedSet add up to 256 items then delete last 14.125 us/op 14.380 us/op 0.98
Set add up to 256 items then delete middle 9.2399 us/op 9.3036 us/op 0.99
OrderedSet add up to 256 items then delete middle 42.798 us/op 41.029 us/op 1.04
transfer serialized Status (84 B) 2.1020 us/op 2.1530 us/op 0.98
copy serialized Status (84 B) 1.1030 us/op 1.1610 us/op 0.95
transfer serialized SignedVoluntaryExit (112 B) 2.1480 us/op 2.2370 us/op 0.96
copy serialized SignedVoluntaryExit (112 B) 1.1250 us/op 1.2570 us/op 0.89
transfer serialized ProposerSlashing (416 B) 2.1810 us/op 2.3030 us/op 0.95
copy serialized ProposerSlashing (416 B) 1.1660 us/op 1.2520 us/op 0.93
transfer serialized Attestation (485 B) 2.2070 us/op 2.2870 us/op 0.97
copy serialized Attestation (485 B) 1.1640 us/op 1.2850 us/op 0.91
transfer serialized AttesterSlashing (33232 B) 2.2650 us/op 2.3190 us/op 0.98
copy serialized AttesterSlashing (33232 B) 3.0890 us/op 3.8150 us/op 0.81
transfer serialized Small SignedBeaconBlock (128000 B) 2.9800 us/op 2.6720 us/op 1.12
copy serialized Small SignedBeaconBlock (128000 B) 8.6090 us/op 11.721 us/op 0.73
transfer serialized Avg SignedBeaconBlock (200000 B) 3.5180 us/op 3.4490 us/op 1.02
copy serialized Avg SignedBeaconBlock (200000 B) 12.990 us/op 13.082 us/op 0.99
transfer serialized BlobsSidecar (524380 B) 3.3780 us/op 3.3820 us/op 1.00
copy serialized BlobsSidecar (524380 B) 59.916 us/op 165.50 us/op 0.36
transfer serialized Big SignedBeaconBlock (1000000 B) 3.4580 us/op 3.5570 us/op 0.97
copy serialized Big SignedBeaconBlock (1000000 B) 118.98 us/op 172.68 us/op 0.69
pass gossip attestations to forkchoice per slot 2.7791 ms/op 2.6911 ms/op 1.03
forkChoice updateHead vc 100000 bc 64 eq 0 464.12 us/op 449.07 us/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 0 2.9044 ms/op 2.7395 ms/op 1.06
forkChoice updateHead vc 1000000 bc 64 eq 0 4.8881 ms/op 4.6925 ms/op 1.04
forkChoice updateHead vc 600000 bc 320 eq 0 2.7420 ms/op 2.7724 ms/op 0.99
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1658 ms/op 2.7961 ms/op 1.13
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1904 ms/op 3.0303 ms/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 1000 10.165 ms/op 10.323 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 10000 10.070 ms/op 10.306 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 300000 13.571 ms/op 13.391 ms/op 1.01
computeDeltas 500000 validators 300 proto nodes 3.7806 ms/op 3.7955 ms/op 1.00
computeDeltas 500000 validators 1200 proto nodes 3.7747 ms/op 3.8613 ms/op 0.98
computeDeltas 500000 validators 7200 proto nodes 3.8691 ms/op 3.8158 ms/op 1.01
computeDeltas 750000 validators 300 proto nodes 5.8170 ms/op 5.7136 ms/op 1.02
computeDeltas 750000 validators 1200 proto nodes 5.8879 ms/op 5.7043 ms/op 1.03
computeDeltas 750000 validators 7200 proto nodes 5.8916 ms/op 5.6883 ms/op 1.04
computeDeltas 1400000 validators 300 proto nodes 10.905 ms/op 10.710 ms/op 1.02
computeDeltas 1400000 validators 1200 proto nodes 11.073 ms/op 10.756 ms/op 1.03
computeDeltas 1400000 validators 7200 proto nodes 12.300 ms/op 10.665 ms/op 1.15
computeDeltas 2100000 validators 300 proto nodes 18.393 ms/op 16.051 ms/op 1.15
computeDeltas 2100000 validators 1200 proto nodes 17.789 ms/op 15.981 ms/op 1.11
computeDeltas 2100000 validators 7200 proto nodes 16.065 ms/op 15.878 ms/op 1.01
altair processAttestation - 250000 vs - 7PWei normalcase 2.0037 ms/op 2.0211 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 2.9209 ms/op 2.9343 ms/op 1.00
altair processAttestation - setStatus - 1/6 committees join 114.28 us/op 119.82 us/op 0.95
altair processAttestation - setStatus - 1/3 committees join 228.45 us/op 232.37 us/op 0.98
altair processAttestation - setStatus - 1/2 committees join 317.86 us/op 330.96 us/op 0.96
altair processAttestation - setStatus - 2/3 committees join 408.89 us/op 418.33 us/op 0.98
altair processAttestation - setStatus - 4/5 committees join 560.50 us/op 594.60 us/op 0.94
altair processAttestation - setStatus - 100% committees join 679.53 us/op 672.07 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 5.2374 ms/op 4.1061 ms/op 1.28
altair processBlock - 250000 vs - 7PWei normalcase hashState 33.281 ms/op 31.734 ms/op 1.05
altair processBlock - 250000 vs - 7PWei worstcase 50.848 ms/op 34.381 ms/op 1.48
altair processBlock - 250000 vs - 7PWei worstcase hashState 89.627 ms/op 88.329 ms/op 1.01
phase0 processBlock - 250000 vs - 7PWei normalcase 2.2430 ms/op 1.6578 ms/op 1.35
phase0 processBlock - 250000 vs - 7PWei worstcase 28.131 ms/op 21.100 ms/op 1.33
altair processEth1Data - 250000 vs - 7PWei normalcase 325.82 us/op 333.97 us/op 0.98
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 4.5530 us/op 4.8110 us/op 0.95
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 40.748 us/op 24.965 us/op 1.63
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 12.259 us/op 7.2590 us/op 1.69
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 7.6830 us/op 4.7420 us/op 1.62
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 184.83 us/op 96.765 us/op 1.91
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 2.0948 ms/op 914.91 us/op 2.29
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.2860 ms/op 1.2811 ms/op 1.78
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.2688 ms/op 1.2067 ms/op 1.88
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.2903 ms/op 3.2183 ms/op 1.02
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.3415 ms/op 1.2624 ms/op 1.85
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.3839 ms/op 3.3436 ms/op 1.01
Tree 40 250000 create 409.76 ms/op 433.77 ms/op 0.94
Tree 40 250000 get(125000) 142.94 ns/op 147.16 ns/op 0.97
Tree 40 250000 set(125000) 1.3837 us/op 1.3844 us/op 1.00
Tree 40 250000 toArray() 14.243 ms/op 14.710 ms/op 0.97
Tree 40 250000 iterate all - toArray() + loop 14.599 ms/op 14.498 ms/op 1.01
Tree 40 250000 iterate all - get(i) 50.852 ms/op 49.597 ms/op 1.03
Array 250000 create 2.7059 ms/op 2.3712 ms/op 1.14
Array 250000 clone - spread 788.03 us/op 801.34 us/op 0.98
Array 250000 get(125000) 0.39500 ns/op 0.41000 ns/op 0.96
Array 250000 set(125000) 0.43000 ns/op 0.42900 ns/op 1.00
Array 250000 iterate all - loop 81.954 us/op 81.198 us/op 1.01
phase0 afterProcessEpoch - 250000 vs - 7PWei 47.873 ms/op 48.251 ms/op 0.99
Array.fill - length 1000000 3.3430 ms/op 3.3662 ms/op 0.99
Array push - length 1000000 11.926 ms/op 12.184 ms/op 0.98
Array.get 0.26354 ns/op 0.26574 ns/op 0.99
Uint8Array.get 0.42415 ns/op 0.42955 ns/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 17.412 ms/op 15.176 ms/op 1.15
altair processEpoch - mainnet_e81889 292.13 ms/op 279.88 ms/op 1.04
mainnet_e81889 - altair beforeProcessEpoch 16.796 ms/op 18.709 ms/op 0.90
mainnet_e81889 - altair processJustificationAndFinalization 6.1020 us/op 7.4940 us/op 0.81
mainnet_e81889 - altair processInactivityUpdates 3.7435 ms/op 4.0003 ms/op 0.94
mainnet_e81889 - altair processRewardsAndPenalties 63.623 ms/op 37.890 ms/op 1.68
mainnet_e81889 - altair processRegistryUpdates 667.00 ns/op 694.00 ns/op 0.96
mainnet_e81889 - altair processSlashings 182.00 ns/op 176.00 ns/op 1.03
mainnet_e81889 - altair processEth1DataReset 168.00 ns/op 175.00 ns/op 0.96
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2514 ms/op 1.2277 ms/op 1.02
mainnet_e81889 - altair processSlashingsReset 843.00 ns/op 841.00 ns/op 1.00
mainnet_e81889 - altair processRandaoMixesReset 1.1220 us/op 1.1450 us/op 0.98
mainnet_e81889 - altair processHistoricalRootsUpdate 168.00 ns/op 176.00 ns/op 0.95
mainnet_e81889 - altair processParticipationFlagUpdates 502.00 ns/op 510.00 ns/op 0.98
mainnet_e81889 - altair processSyncCommitteeUpdates 133.00 ns/op 141.00 ns/op 0.94
mainnet_e81889 - altair afterProcessEpoch 51.067 ms/op 51.281 ms/op 1.00
capella processEpoch - mainnet_e217614 1.0297 s/op 976.32 ms/op 1.05
mainnet_e217614 - capella beforeProcessEpoch 60.876 ms/op 69.597 ms/op 0.87
mainnet_e217614 - capella processJustificationAndFinalization 5.3510 us/op 5.1550 us/op 1.04
mainnet_e217614 - capella processInactivityUpdates 15.259 ms/op 15.540 ms/op 0.98
mainnet_e217614 - capella processRewardsAndPenalties 226.42 ms/op 187.78 ms/op 1.21
mainnet_e217614 - capella processRegistryUpdates 6.2890 us/op 6.4950 us/op 0.97
mainnet_e217614 - capella processSlashings 176.00 ns/op 177.00 ns/op 0.99
mainnet_e217614 - capella processEth1DataReset 162.00 ns/op 173.00 ns/op 0.94
mainnet_e217614 - capella processEffectiveBalanceUpdates 10.197 ms/op 10.178 ms/op 1.00
mainnet_e217614 - capella processSlashingsReset 886.00 ns/op 852.00 ns/op 1.04
mainnet_e217614 - capella processRandaoMixesReset 1.2170 us/op 1.1300 us/op 1.08
mainnet_e217614 - capella processHistoricalRootsUpdate 172.00 ns/op 176.00 ns/op 0.98
mainnet_e217614 - capella processParticipationFlagUpdates 512.00 ns/op 507.00 ns/op 1.01
mainnet_e217614 - capella afterProcessEpoch 119.37 ms/op 124.16 ms/op 0.96
phase0 processEpoch - mainnet_e58758 341.18 ms/op 287.23 ms/op 1.19
mainnet_e58758 - phase0 beforeProcessEpoch 80.951 ms/op 69.192 ms/op 1.17
mainnet_e58758 - phase0 processJustificationAndFinalization 6.5510 us/op 5.6920 us/op 1.15
mainnet_e58758 - phase0 processRewardsAndPenalties 42.918 ms/op 34.749 ms/op 1.24
mainnet_e58758 - phase0 processRegistryUpdates 3.0180 us/op 3.1040 us/op 0.97
mainnet_e58758 - phase0 processSlashings 176.00 ns/op 181.00 ns/op 0.97
mainnet_e58758 - phase0 processEth1DataReset 162.00 ns/op 176.00 ns/op 0.92
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.0084 ms/op 1.0087 ms/op 1.00
mainnet_e58758 - phase0 processSlashingsReset 910.00 ns/op 840.00 ns/op 1.08
mainnet_e58758 - phase0 processRandaoMixesReset 1.1420 us/op 1.1930 us/op 0.96
mainnet_e58758 - phase0 processHistoricalRootsUpdate 170.00 ns/op 176.00 ns/op 0.97
mainnet_e58758 - phase0 processParticipationRecordUpdates 955.00 ns/op 873.00 ns/op 1.09
mainnet_e58758 - phase0 afterProcessEpoch 43.645 ms/op 41.987 ms/op 1.04
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.4302 ms/op 1.3361 ms/op 1.82
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.3169 ms/op 1.9156 ms/op 1.73
altair processInactivityUpdates - 250000 normalcase 23.709 ms/op 16.144 ms/op 1.47
altair processInactivityUpdates - 250000 worstcase 21.135 ms/op 16.529 ms/op 1.28
phase0 processRegistryUpdates - 250000 normalcase 10.427 us/op 6.5180 us/op 1.60
phase0 processRegistryUpdates - 250000 badcase_full_deposits 432.40 us/op 212.12 us/op 2.04
phase0 processRegistryUpdates - 250000 worstcase 0.5 119.47 ms/op 103.00 ms/op 1.16
altair processRewardsAndPenalties - 250000 normalcase 56.006 ms/op 41.198 ms/op 1.36
altair processRewardsAndPenalties - 250000 worstcase 45.466 ms/op 40.974 ms/op 1.11
phase0 getAttestationDeltas - 250000 normalcase 6.9417 ms/op 6.8360 ms/op 1.02
phase0 getAttestationDeltas - 250000 worstcase 6.7322 ms/op 5.8993 ms/op 1.14
phase0 processSlashings - 250000 worstcase 122.28 us/op 77.831 us/op 1.57
altair processSyncCommitteeUpdates - 250000 120.56 ms/op 116.90 ms/op 1.03
BeaconState.hashTreeRoot - No change 229.00 ns/op 211.00 ns/op 1.09
BeaconState.hashTreeRoot - 1 full validator 95.403 us/op 96.873 us/op 0.98
BeaconState.hashTreeRoot - 32 full validator 953.35 us/op 796.90 us/op 1.20
BeaconState.hashTreeRoot - 512 full validator 11.238 ms/op 9.2053 ms/op 1.22
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 88.062 us/op 100.83 us/op 0.87
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3743 ms/op 1.5654 ms/op 0.88
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 18.030 ms/op 23.504 ms/op 0.77
BeaconState.hashTreeRoot - 1 balances 75.666 us/op 86.879 us/op 0.87
BeaconState.hashTreeRoot - 32 balances 894.68 us/op 763.57 us/op 1.17
BeaconState.hashTreeRoot - 512 balances 8.9177 ms/op 7.0571 ms/op 1.26
BeaconState.hashTreeRoot - 250000 balances 197.25 ms/op 182.70 ms/op 1.08
aggregationBits - 2048 els - zipIndexesInBitList 21.823 us/op 21.252 us/op 1.03
byteArrayEquals 32 53.443 ns/op 53.044 ns/op 1.01
Buffer.compare 32 16.496 ns/op 17.594 ns/op 0.94
byteArrayEquals 1024 1.5321 us/op 1.5712 us/op 0.98
Buffer.compare 1024 24.671 ns/op 25.651 ns/op 0.96
byteArrayEquals 16384 24.386 us/op 25.012 us/op 0.97
Buffer.compare 16384 192.93 ns/op 175.75 ns/op 1.10
byteArrayEquals 123687377 188.88 ms/op 184.86 ms/op 1.02
Buffer.compare 123687377 6.1776 ms/op 6.0015 ms/op 1.03
byteArrayEquals 32 - diff last byte 52.437 ns/op 50.581 ns/op 1.04
Buffer.compare 32 - diff last byte 17.117 ns/op 16.703 ns/op 1.02
byteArrayEquals 1024 - diff last byte 1.5889 us/op 1.5314 us/op 1.04
Buffer.compare 1024 - diff last byte 25.044 ns/op 24.411 ns/op 1.03
byteArrayEquals 16384 - diff last byte 25.331 us/op 24.383 us/op 1.04
Buffer.compare 16384 - diff last byte 201.29 ns/op 198.34 ns/op 1.01
byteArrayEquals 123687377 - diff last byte 188.88 ms/op 184.09 ms/op 1.03
Buffer.compare 123687377 - diff last byte 6.3325 ms/op 6.0385 ms/op 1.05
byteArrayEquals 32 - random bytes 5.0520 ns/op 4.9260 ns/op 1.03
Buffer.compare 32 - random bytes 16.562 ns/op 16.754 ns/op 0.99
byteArrayEquals 1024 - random bytes 4.9570 ns/op 4.9420 ns/op 1.00
Buffer.compare 1024 - random bytes 17.018 ns/op 16.750 ns/op 1.02
byteArrayEquals 16384 - random bytes 5.1470 ns/op 4.9720 ns/op 1.04
Buffer.compare 16384 - random bytes 17.441 ns/op 16.737 ns/op 1.04
byteArrayEquals 123687377 - random bytes 8.2500 ns/op 6.3600 ns/op 1.30
Buffer.compare 123687377 - random bytes 18.560 ns/op 18.550 ns/op 1.00
regular array get 100000 times 44.303 us/op 32.427 us/op 1.37
wrappedArray get 100000 times 33.178 us/op 32.431 us/op 1.02
arrayWithProxy get 100000 times 13.561 ms/op 11.744 ms/op 1.15
ssz.Root.equals 46.951 ns/op 45.635 ns/op 1.03
byteArrayEquals 45.065 ns/op 44.656 ns/op 1.01
Buffer.compare 10.298 ns/op 10.260 ns/op 1.00
processSlot - 1 slots 11.639 us/op 10.419 us/op 1.12
processSlot - 32 slots 2.5339 ms/op 2.2872 ms/op 1.11
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 64.332 ms/op 51.665 ms/op 1.25
getCommitteeAssignments - req 1 vs - 250000 vc 2.0702 ms/op 2.0849 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.9830 ms/op 4.0561 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 4.2442 ms/op 4.3048 ms/op 0.99
findModifiedValidators - 10000 modified validators 747.69 ms/op 736.05 ms/op 1.02
findModifiedValidators - 1000 modified validators 687.77 ms/op 722.91 ms/op 0.95
findModifiedValidators - 100 modified validators 241.05 ms/op 164.83 ms/op 1.46
findModifiedValidators - 10 modified validators 135.99 ms/op 231.57 ms/op 0.59
findModifiedValidators - 1 modified validators 170.52 ms/op 132.25 ms/op 1.29
findModifiedValidators - no difference 141.90 ms/op 160.75 ms/op 0.88
compare ViewDUs 6.2088 s/op 5.9965 s/op 1.04
compare each validator Uint8Array 1.8966 s/op 1.2346 s/op 1.54
compare ViewDU to Uint8Array 914.02 ms/op 920.61 ms/op 0.99
migrate state 1000000 validators, 24 modified, 0 new 920.23 ms/op 875.81 ms/op 1.05
migrate state 1000000 validators, 1700 modified, 1000 new 1.2437 s/op 1.1255 s/op 1.11
migrate state 1000000 validators, 3400 modified, 2000 new 1.3641 s/op 1.2703 s/op 1.07
migrate state 1500000 validators, 24 modified, 0 new 985.38 ms/op 813.73 ms/op 1.21
migrate state 1500000 validators, 1700 modified, 1000 new 1.1946 s/op 1.0891 s/op 1.10
migrate state 1500000 validators, 3400 modified, 2000 new 1.3886 s/op 1.1795 s/op 1.18
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.1500 ns/op 5.9800 ns/op 0.69
state getBlockRootAtSlot - 250000 vs - 7PWei 552.94 ns/op 677.12 ns/op 0.82
naive computeProposerIndex 100000 validators 51.735 ms/op 47.486 ms/op 1.09
computeProposerIndex 100000 validators 9.2833 ms/op 8.2873 ms/op 1.12
naiveGetNextSyncCommitteeIndices 1000 validators 7.4231 s/op 7.2792 s/op 1.02
getNextSyncCommitteeIndices 1000 validators 250.88 ms/op 238.53 ms/op 1.05
naiveGetNextSyncCommitteeIndices 10000 validators 7.3260 s/op 7.4221 s/op 0.99
getNextSyncCommitteeIndices 10000 validators 235.02 ms/op 233.27 ms/op 1.01
naiveGetNextSyncCommitteeIndices 100000 validators 7.6770 s/op 7.0475 s/op 1.09
getNextSyncCommitteeIndices 100000 validators 234.55 ms/op 237.47 ms/op 0.99
naive computeShuffledIndex 100000 validators 23.992 s/op 22.802 s/op 1.05
cached computeShuffledIndex 100000 validators 560.67 ms/op 551.21 ms/op 1.02
naive computeShuffledIndex 2000000 validators 477.56 s/op 465.58 s/op 1.03
cached computeShuffledIndex 2000000 validators 39.292 s/op 30.412 s/op 1.29
computeProposers - vc 250000 9.5597 ms/op 9.0665 ms/op 1.05
computeEpochShuffling - vc 250000 43.319 ms/op 43.223 ms/op 1.00
getNextSyncCommittee - vc 250000 139.35 ms/op 134.27 ms/op 1.04
computeSigningRoot for AttestationData 19.180 us/op 18.736 us/op 1.02
hash AttestationData serialized data then Buffer.toString(base64) 1.5716 us/op 1.5631 us/op 1.01
toHexString serialized data 1.1029 us/op 1.0757 us/op 1.03
Buffer.toString(base64) 169.85 ns/op 169.78 ns/op 1.00
nodejs block root to RootHex using toHex 141.22 ns/op 142.36 ns/op 0.99
nodejs block root to RootHex using toRootHex 86.349 ns/op 81.523 ns/op 1.06
browser block root to RootHex using the deprecated toHexString 211.39 ns/op 210.59 ns/op 1.00
browser block root to RootHex using toHex 170.02 ns/op 170.75 ns/op 1.00
browser block root to RootHex using toRootHex 159.25 ns/op 159.39 ns/op 1.00

by benchmarkbot/action

@philknows philknows added this to the v1.27.2 milestone Mar 11, 2025
@wemeetagain
Copy link
Member

When did we get the "No block root" error? Is this when we set the unfinalized state at startup?

@philknows philknows removed this from the v1.27.2 milestone Mar 11, 2025
Copy link
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

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

LGTM - we have tested this fix for a while on holesky-rescue branch, see diff

@twoeths
Copy link
Contributor Author

twoeths commented Mar 12, 2025

When did we get the "No block root" error? Is this when we set the unfinalized state at startup?

yes it's from that work https://github.com/ChainSafe/lodestar/pull/7509/files#diff-c21a87c055e2b34c02de2fa28ecc52c53837159f567eef5fb22e80ed55827044R231

but it makes sense from code perspective I guess

@twoeths twoeths merged commit e647fd7 into unstable Mar 12, 2025
18 of 19 checks passed
@twoeths twoeths deleted the te/fix_block_import branch March 12, 2025 01:42
@wemeetagain
Copy link
Member

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