Skip to content

refactor: update light_client_updates_by_range handler - #9745

Open
nflaig wants to merge 3 commits into
unstablefrom
nflaig/lc-refactor
Open

refactor: update light_client_updates_by_range handler#9745
nflaig wants to merge 3 commits into
unstablefrom
nflaig/lc-refactor

Conversation

@nflaig

@nflaig nflaig commented Aug 2, 2026

Copy link
Copy Markdown
Member

No description provided.

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 4a1afd9 Previous: b3cb0f6 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 971.00 us/op 1.0484 ms/op 0.93
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 39.261 us/op 40.844 us/op 0.96
BLS verify - blst 719.79 us/op 662.34 us/op 1.09
BLS verifyMultipleSignatures 3 - blst 1.3541 ms/op 1.3852 ms/op 0.98
BLS verifyMultipleSignatures 8 - blst 2.1586 ms/op 2.2027 ms/op 0.98
BLS verifyMultipleSignatures 32 - blst 6.8213 ms/op 6.9396 ms/op 0.98
BLS verifyMultipleSignatures 64 - blst 13.141 ms/op 13.781 ms/op 0.95
BLS verifyMultipleSignatures 128 - blst 25.499 ms/op 26.020 ms/op 0.98
BLS deserializing 10000 signatures 649.40 ms/op 642.55 ms/op 1.01
BLS deserializing 100000 signatures 6.4517 s/op 6.4661 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 812.45 us/op 798.28 us/op 1.02
BLS verifyMultipleSignatures - same message - 8 - blst 845.42 us/op 948.21 us/op 0.89
BLS verifyMultipleSignatures - same message - 32 - blst 1.5372 ms/op 1.4735 ms/op 1.04
BLS verifyMultipleSignatures - same message - 64 - blst 2.4606 ms/op 2.3872 ms/op 1.03
BLS verifyMultipleSignatures - same message - 128 - blst 4.1115 ms/op 4.1394 ms/op 0.99
BLS aggregatePubkeys 32 - blst 17.874 us/op 17.809 us/op 1.00
BLS aggregatePubkeys 128 - blst 63.736 us/op 63.908 us/op 1.00
getSlashingsAndExits - default max 48.844 us/op 49.481 us/op 0.99
getSlashingsAndExits - 2k 316.99 us/op 353.29 us/op 0.90
proposeBlockBody type=full, size=empty 675.58 us/op 640.40 us/op 1.05
isKnown best case - 1 super set check 180.00 ns/op 170.00 ns/op 1.06
isKnown normal case - 2 super set checks 166.00 ns/op 165.00 ns/op 1.01
isKnown worse case - 16 super set checks 167.00 ns/op 169.00 ns/op 0.99
validate api signedAggregateAndProof - struct 1.5182 ms/op 1.5601 ms/op 0.97
validate gossip signedAggregateAndProof - struct 1.5188 ms/op 1.5566 ms/op 0.98
batch validate gossip attestation - vc 640000 - chunk 32 110.07 us/op 111.02 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 64 94.173 us/op 95.224 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 128 89.260 us/op 89.225 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 256 89.452 us/op 84.843 us/op 1.05
bytes32 toHexString 287.00 ns/op 292.00 ns/op 0.98
bytes32 Buffer.toString(hex) 171.00 ns/op 165.00 ns/op 1.04
bytes32 Buffer.toString(hex) from Uint8Array 254.00 ns/op 235.00 ns/op 1.08
bytes32 Buffer.toString(hex) + 0x 176.00 ns/op 165.00 ns/op 1.07
Return object 10000 times 0.21330 ns/op 0.21320 ns/op 1.00
Throw Error 10000 times 3.6156 us/op 3.4972 us/op 1.03
toHex 101.11 ns/op 100.52 ns/op 1.01
Buffer.from 93.396 ns/op 93.044 ns/op 1.00
shared Buffer 66.494 ns/op 64.170 ns/op 1.04
fastMsgIdFn sha256 / 200 bytes 1.4930 us/op 1.4950 us/op 1.00
fastMsgIdFn h32 xxhash / 200 bytes 156.00 ns/op 150.00 ns/op 1.04
fastMsgIdFn h64 xxhash / 200 bytes 199.00 ns/op 209.00 ns/op 0.95
fastMsgIdFn sha256 / 1000 bytes 4.7660 us/op 4.9010 us/op 0.97
fastMsgIdFn h32 xxhash / 1000 bytes 242.00 ns/op 240.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 1000 bytes 247.00 ns/op 257.00 ns/op 0.96
fastMsgIdFn sha256 / 10000 bytes 41.922 us/op 43.245 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.2790 us/op 1.2670 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 832.00 ns/op 819.00 ns/op 1.02
send data - 1000 256B messages 4.2584 ms/op 4.1424 ms/op 1.03
send data - 1000 512B messages 5.3434 ms/op 4.9397 ms/op 1.08
send data - 1000 1024B messages 5.5538 ms/op 5.6226 ms/op 0.99
send data - 1000 1200B messages 6.2729 ms/op 6.0369 ms/op 1.04
send data - 1000 2048B messages 7.9743 ms/op 20.242 ms/op 0.39
send data - 1000 4096B messages 41.259 ms/op 47.211 ms/op 0.87
send data - 1000 16384B messages 297.04 ms/op 255.66 ms/op 1.16
send data - 1000 65536B messages 1.2110 s/op 1.2293 s/op 0.99
enrSubnets - fastDeserialize 64 bits 731.00 ns/op 784.00 ns/op 0.93
enrSubnets - ssz BitVector 64 bits 262.00 ns/op 266.00 ns/op 0.98
enrSubnets - fastDeserialize 4 bits 100.00 ns/op 104.00 ns/op 0.96
enrSubnets - ssz BitVector 4 bits 277.00 ns/op 269.00 ns/op 1.03
prioritizePeers score -10:0 att 32-0.1 sync 2-0 200.48 us/op 212.78 us/op 0.94
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 227.69 us/op 243.12 us/op 0.94
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 333.60 us/op 353.36 us/op 0.94
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 587.33 us/op 621.30 us/op 0.95
prioritizePeers score 0:0 att 64-1 sync 4-1 690.84 us/op 727.66 us/op 0.95
array of 16000 items push then shift 1.2960 us/op 1.3198 us/op 0.98
LinkedList of 16000 items push then shift 6.8930 ns/op 6.9230 ns/op 1.00
array of 16000 items push then pop 72.686 ns/op 66.659 ns/op 1.09
LinkedList of 16000 items push then pop 5.9300 ns/op 6.1480 ns/op 0.96
array of 24000 items push then shift 1.9026 us/op 1.9636 us/op 0.97
LinkedList of 24000 items push then shift 6.3390 ns/op 6.4990 ns/op 0.98
array of 24000 items push then pop 101.32 ns/op 93.766 ns/op 1.08
LinkedList of 24000 items push then pop 5.9490 ns/op 6.1320 ns/op 0.97
intersect bitArray bitLen 8 3.8630 ns/op 3.9010 ns/op 0.99
intersect array and set length 8 30.511 ns/op 30.630 ns/op 1.00
intersect bitArray bitLen 128 23.178 ns/op 23.527 ns/op 0.99
intersect array and set length 128 502.60 ns/op 517.67 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 910.00 ns/op 931.00 ns/op 0.98
bitArray.getTrueBitIndexes() bitLen 248 1.6480 us/op 1.6660 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 512 3.4330 us/op 3.4810 us/op 0.99
Full columns - reconstruct all 6 blobs 112.82 us/op 165.69 us/op 0.68
Full columns - reconstruct half of the blobs out of 6 121.63 us/op 68.287 us/op 1.78
Full columns - reconstruct single blob out of 6 34.629 us/op 33.919 us/op 1.02
Half columns - reconstruct all 6 blobs 384.00 ms/op 396.72 ms/op 0.97
Half columns - reconstruct half of the blobs out of 6 194.39 ms/op 203.65 ms/op 0.95
Half columns - reconstruct single blob out of 6 69.128 ms/op 70.710 ms/op 0.98
Set add up to 64 items then delete first 1.6618 us/op 1.6887 us/op 0.98
OrderedSet add up to 64 items then delete first 2.5346 us/op 2.5696 us/op 0.99
Set add up to 64 items then delete last 1.8985 us/op 1.9749 us/op 0.96
OrderedSet add up to 64 items then delete last 2.7909 us/op 3.0060 us/op 0.93
Set add up to 64 items then delete middle 1.8970 us/op 2.0226 us/op 0.94
OrderedSet add up to 64 items then delete middle 4.2536 us/op 4.5528 us/op 0.93
Set add up to 128 items then delete first 3.7413 us/op 3.9387 us/op 0.95
OrderedSet add up to 128 items then delete first 5.6858 us/op 5.8714 us/op 0.97
Set add up to 128 items then delete last 3.6389 us/op 3.8884 us/op 0.94
OrderedSet add up to 128 items then delete last 5.3492 us/op 5.9316 us/op 0.90
Set add up to 128 items then delete middle 3.6922 us/op 3.8388 us/op 0.96
OrderedSet add up to 128 items then delete middle 11.200 us/op 11.878 us/op 0.94
Set add up to 256 items then delete first 7.7118 us/op 7.9006 us/op 0.98
OrderedSet add up to 256 items then delete first 12.220 us/op 12.067 us/op 1.01
Set add up to 256 items then delete last 7.2263 us/op 7.7172 us/op 0.94
OrderedSet add up to 256 items then delete last 11.338 us/op 12.126 us/op 0.93
Set add up to 256 items then delete middle 7.5016 us/op 7.6175 us/op 0.98
OrderedSet add up to 256 items then delete middle 34.506 us/op 35.825 us/op 0.96
runFastConfirmationRules vc:100000 bc:96 eq:0 4.7892 ms/op 5.1926 ms/op 0.92
runFastConfirmationRules vc:600000 bc:96 eq:0 34.634 ms/op 35.686 ms/op 0.97
runFastConfirmationRules vc:1000000 bc:96 eq:0 58.155 ms/op 59.620 ms/op 0.98
runFastConfirmationRules vc:600000 bc:320 eq:0 35.905 ms/op 35.735 ms/op 1.00
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.1460 s/op 1.1033 s/op 1.04
pass gossip attestations to forkchoice per slot 2.5886 ms/op 2.6199 ms/op 0.99
forkChoice updateHead vc 100000 bc 64 eq 0 453.32 us/op 478.91 us/op 0.95
forkChoice updateHead vc 600000 bc 64 eq 0 2.6810 ms/op 2.7665 ms/op 0.97
forkChoice updateHead vc 1000000 bc 64 eq 0 4.4300 ms/op 4.6805 ms/op 0.95
forkChoice updateHead vc 600000 bc 320 eq 0 2.6744 ms/op 2.8882 ms/op 0.93
forkChoice updateHead vc 600000 bc 1200 eq 0 2.7134 ms/op 2.9500 ms/op 0.92
forkChoice updateHead vc 600000 bc 7200 eq 0 3.0133 ms/op 3.2581 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 1000 2.7350 ms/op 2.8826 ms/op 0.95
forkChoice updateHead vc 600000 bc 64 eq 10000 2.8174 ms/op 2.8364 ms/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 300000 6.7771 ms/op 6.7289 ms/op 1.01
computeDeltas 1400000 validators 0% inactive 12.993 ms/op 13.518 ms/op 0.96
computeDeltas 1400000 validators 10% inactive 12.286 ms/op 12.777 ms/op 0.96
computeDeltas 1400000 validators 20% inactive 11.729 ms/op 12.095 ms/op 0.97
computeDeltas 1400000 validators 50% inactive 9.6266 ms/op 9.8352 ms/op 0.98
computeDeltas 2100000 validators 0% inactive 19.669 ms/op 20.162 ms/op 0.98
computeDeltas 2100000 validators 10% inactive 18.619 ms/op 19.316 ms/op 0.96
computeDeltas 2100000 validators 20% inactive 17.328 ms/op 17.943 ms/op 0.97
computeDeltas 2100000 validators 50% inactive 14.093 ms/op 14.621 ms/op 0.96
altair processAttestation - 250000 vs - 7PWei normalcase 1.7490 ms/op 1.6198 ms/op 1.08
altair processAttestation - 250000 vs - 7PWei worstcase 2.7967 ms/op 2.3987 ms/op 1.17
altair processAttestation - setStatus - 1/6 committees join 105.00 us/op 106.13 us/op 0.99
altair processAttestation - setStatus - 1/3 committees join 201.81 us/op 202.89 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 287.49 us/op 287.01 us/op 1.00
altair processAttestation - setStatus - 2/3 committees join 373.32 us/op 368.76 us/op 1.01
altair processAttestation - setStatus - 4/5 committees join 521.45 us/op 510.32 us/op 1.02
altair processAttestation - setStatus - 100% committees join 614.80 us/op 602.03 us/op 1.02
altair processBlock - 250000 vs - 7PWei normalcase 3.3187 ms/op 3.2142 ms/op 1.03
altair processBlock - 250000 vs - 7PWei normalcase hashState 15.250 ms/op 12.444 ms/op 1.23
altair processBlock - 250000 vs - 7PWei worstcase 21.748 ms/op 19.820 ms/op 1.10
altair processBlock - 250000 vs - 7PWei worstcase hashState 42.947 ms/op 38.508 ms/op 1.12
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3101 ms/op 1.3453 ms/op 0.97
phase0 processBlock - 250000 vs - 7PWei worstcase 17.312 ms/op 17.320 ms/op 1.00
altair processEth1Data - 250000 vs - 7PWei normalcase 295.04 us/op 311.55 us/op 0.95
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.3100 us/op 3.7080 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 20.162 us/op 23.362 us/op 0.86
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.1340 us/op 6.5680 us/op 0.93
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.7690 us/op 5.2240 us/op 0.72
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 94.019 us/op 100.30 us/op 0.94
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4277 ms/op 1.4170 ms/op 1.01
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8860 ms/op 1.9115 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.9170 ms/op 1.8619 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7107 ms/op 3.7932 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.1331 ms/op 2.0805 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.0423 ms/op 4.0441 ms/op 1.00
Tree 40 250000 create 322.64 ms/op 320.02 ms/op 1.01
Tree 40 250000 get(125000) 102.90 ns/op 103.87 ns/op 0.99
Tree 40 250000 set(125000) 1.0731 us/op 1.0979 us/op 0.98
Tree 40 250000 toArray() 9.8163 ms/op 9.6388 ms/op 1.02
Tree 40 250000 iterate all - toArray() + loop 9.7421 ms/op 9.7342 ms/op 1.00
Tree 40 250000 iterate all - get(i) 34.339 ms/op 37.194 ms/op 0.92
Array 250000 create 2.3021 ms/op 2.0605 ms/op 1.12
Array 250000 clone - spread 732.73 us/op 648.88 us/op 1.13
Array 250000 get(125000) 0.29300 ns/op 0.29800 ns/op 0.98
Array 250000 set(125000) 0.29500 ns/op 0.30300 ns/op 0.97
Array 250000 iterate all - loop 56.479 us/op 57.337 us/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 53.088 ms/op 39.436 ms/op 1.35
Array.fill - length 1000000 2.2905 ms/op 2.3815 ms/op 0.96
Array push - length 1000000 8.1964 ms/op 7.6183 ms/op 1.08
Array.get 0.20277 ns/op 0.20628 ns/op 0.98
Uint8Array.get 0.21598 ns/op 0.24774 ns/op 0.87
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.236 ms/op 12.241 ms/op 1.24
altair processEpoch - mainnet_e81889 247.88 ms/op 245.23 ms/op 1.01
mainnet_e81889 - altair beforeProcessEpoch 14.038 ms/op 19.548 ms/op 0.72
mainnet_e81889 - altair processJustificationAndFinalization 4.9820 us/op 5.1910 us/op 0.96
mainnet_e81889 - altair processInactivityUpdates 3.7014 ms/op 3.7644 ms/op 0.98
mainnet_e81889 - altair processRewardsAndPenalties 19.154 ms/op 17.382 ms/op 1.10
mainnet_e81889 - altair processRegistryUpdates 544.00 ns/op 587.00 ns/op 0.93
mainnet_e81889 - altair processSlashings 142.00 ns/op 160.00 ns/op 0.89
mainnet_e81889 - altair processEth1DataReset 136.00 ns/op 155.00 ns/op 0.88
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6857 ms/op 1.7260 ms/op 0.98
mainnet_e81889 - altair processSlashingsReset 685.00 ns/op 714.00 ns/op 0.96
mainnet_e81889 - altair processRandaoMixesReset 1.0400 us/op 1.0960 us/op 0.95
mainnet_e81889 - altair processHistoricalRootsUpdate 138.00 ns/op 155.00 ns/op 0.89
mainnet_e81889 - altair processParticipationFlagUpdates 436.00 ns/op 462.00 ns/op 0.94
mainnet_e81889 - altair processSyncCommitteeUpdates 110.00 ns/op 130.00 ns/op 0.85
mainnet_e81889 - altair afterProcessEpoch 41.310 ms/op 40.583 ms/op 1.02
capella processEpoch - mainnet_e217614 705.78 ms/op 817.04 ms/op 0.86
mainnet_e217614 - capella beforeProcessEpoch 54.354 ms/op 59.005 ms/op 0.92
mainnet_e217614 - capella processJustificationAndFinalization 4.9210 us/op 5.6370 us/op 0.87
mainnet_e217614 - capella processInactivityUpdates 11.736 ms/op 12.247 ms/op 0.96
mainnet_e217614 - capella processRewardsAndPenalties 86.812 ms/op 96.748 ms/op 0.90
mainnet_e217614 - capella processRegistryUpdates 4.4580 us/op 4.5700 us/op 0.98
mainnet_e217614 - capella processSlashings 156.00 ns/op 147.00 ns/op 1.06
mainnet_e217614 - capella processEth1DataReset 156.00 ns/op 146.00 ns/op 1.07
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.5418 ms/op 5.9866 ms/op 0.93
mainnet_e217614 - capella processSlashingsReset 672.00 ns/op 694.00 ns/op 0.97
mainnet_e217614 - capella processRandaoMixesReset 977.00 ns/op 1.3210 us/op 0.74
mainnet_e217614 - capella processHistoricalRootsUpdate 154.00 ns/op 155.00 ns/op 0.99
mainnet_e217614 - capella processParticipationFlagUpdates 447.00 ns/op 467.00 ns/op 0.96
mainnet_e217614 - capella afterProcessEpoch 105.55 ms/op 109.96 ms/op 0.96
phase0 processEpoch - mainnet_e58758 236.54 ms/op 315.15 ms/op 0.75
mainnet_e58758 - phase0 beforeProcessEpoch 45.661 ms/op 71.026 ms/op 0.64
mainnet_e58758 - phase0 processJustificationAndFinalization 4.9930 us/op 6.5470 us/op 0.76
mainnet_e58758 - phase0 processRewardsAndPenalties 15.539 ms/op 16.802 ms/op 0.92
mainnet_e58758 - phase0 processRegistryUpdates 2.2310 us/op 2.3240 us/op 0.96
mainnet_e58758 - phase0 processSlashings 157.00 ns/op 157.00 ns/op 1.00
mainnet_e58758 - phase0 processEth1DataReset 151.00 ns/op 156.00 ns/op 0.97
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 888.04 us/op 1.3485 ms/op 0.66
mainnet_e58758 - phase0 processSlashingsReset 808.00 ns/op 931.00 ns/op 0.87
mainnet_e58758 - phase0 processRandaoMixesReset 1.0240 us/op 1.3170 us/op 0.78
mainnet_e58758 - phase0 processHistoricalRootsUpdate 362.00 ns/op 161.00 ns/op 2.25
mainnet_e58758 - phase0 processParticipationRecordUpdates 991.00 ns/op 1.1530 us/op 0.86
mainnet_e58758 - phase0 afterProcessEpoch 33.497 ms/op 34.029 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0040 ms/op 1.0407 ms/op 0.96
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.3793 ms/op 1.6731 ms/op 0.82
altair processInactivityUpdates - 250000 normalcase 10.471 ms/op 10.910 ms/op 0.96
altair processInactivityUpdates - 250000 worstcase 10.595 ms/op 10.626 ms/op 1.00
phase0 processRegistryUpdates - 250000 normalcase 2.5680 us/op 2.4390 us/op 1.05
phase0 processRegistryUpdates - 250000 badcase_full_deposits 167.86 us/op 144.99 us/op 1.16
phase0 processRegistryUpdates - 250000 worstcase 0.5 68.537 ms/op 51.709 ms/op 1.33
altair processRewardsAndPenalties - 250000 normalcase 13.880 ms/op 15.201 ms/op 0.91
altair processRewardsAndPenalties - 250000 worstcase 13.617 ms/op 15.602 ms/op 0.87
phase0 getAttestationDeltas - 250000 normalcase 5.3619 ms/op 5.4159 ms/op 0.99
phase0 getAttestationDeltas - 250000 worstcase 5.5168 ms/op 5.5034 ms/op 1.00
phase0 processSlashings - 250000 worstcase 73.634 us/op 62.399 us/op 1.18
altair processSyncCommitteeUpdates - 250000 29.315 ms/op 10.201 ms/op 2.87
BeaconState.hashTreeRoot - No change 174.00 ns/op 191.00 ns/op 0.91
BeaconState.hashTreeRoot - 1 full validator 56.852 us/op 57.076 us/op 1.00
BeaconState.hashTreeRoot - 32 full validator 721.52 us/op 719.35 us/op 1.00
BeaconState.hashTreeRoot - 512 full validator 7.3126 ms/op 5.9999 ms/op 1.22
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 89.171 us/op 70.494 us/op 1.26
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.1047 ms/op 1.0456 ms/op 1.06
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 13.365 ms/op 12.820 ms/op 1.04
BeaconState.hashTreeRoot - 1 balances 57.674 us/op 55.867 us/op 1.03
BeaconState.hashTreeRoot - 32 balances 561.94 us/op 540.14 us/op 1.04
BeaconState.hashTreeRoot - 512 balances 4.6714 ms/op 4.6233 ms/op 1.01
BeaconState.hashTreeRoot - 250000 balances 102.47 ms/op 89.826 ms/op 1.14
aggregationBits - 2048 els - zipIndexesInBitList 19.323 us/op 20.194 us/op 0.96
regular array get 100000 times 22.449 us/op 22.932 us/op 0.98
wrappedArray get 100000 times 22.381 us/op 22.929 us/op 0.98
arrayWithProxy get 100000 times 10.454 ms/op 10.719 ms/op 0.98
ssz.Root.equals 21.146 ns/op 21.536 ns/op 0.98
byteArrayEquals 20.937 ns/op 21.362 ns/op 0.98
Buffer.compare 9.2680 ns/op 9.6450 ns/op 0.96
processSlot - 1 slots 7.9470 us/op 8.2710 us/op 0.96
processSlot - 32 slots 1.5061 ms/op 1.8571 ms/op 0.81
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.6361 ms/op 2.8854 ms/op 1.26
getCommitteeAssignments - req 1 vs - 250000 vc 1.6776 ms/op 1.6924 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.4043 ms/op 3.4554 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6541 ms/op 3.7095 ms/op 0.99
findModifiedValidators - 10000 modified validators 812.92 ms/op 661.28 ms/op 1.23
findModifiedValidators - 1000 modified validators 503.92 ms/op 556.43 ms/op 0.91
findModifiedValidators - 100 modified validators 296.46 ms/op 323.50 ms/op 0.92
findModifiedValidators - 10 modified validators 163.02 ms/op 279.33 ms/op 0.58
findModifiedValidators - 1 modified validators 185.70 ms/op 241.05 ms/op 0.77
findModifiedValidators - no difference 175.10 ms/op 204.13 ms/op 0.86
migrate state 1500000 validators, 3400 modified, 2000 new 2.5451 s/op 2.6743 s/op 0.95
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6700 ns/op 3.8700 ns/op 0.95
state getBlockRootAtSlot - 250000 vs - 7PWei 277.29 ns/op 287.05 ns/op 0.97
computeProposerIndex 100000 validators 1.2972 ms/op 1.3246 ms/op 0.98
getNextSyncCommitteeIndices 1000 validators 2.7963 ms/op 2.8825 ms/op 0.97
getNextSyncCommitteeIndices 10000 validators 24.582 ms/op 25.180 ms/op 0.98
getNextSyncCommitteeIndices 100000 validators 85.379 ms/op 83.309 ms/op 1.02
computeProposers - vc 250000 537.13 us/op 549.11 us/op 0.98
computeEpochShuffling - vc 250000 37.607 ms/op 40.507 ms/op 0.93
getNextSyncCommittee - vc 250000 9.2113 ms/op 9.4038 ms/op 0.98
nodejs block root to RootHex using toHex 106.76 ns/op 104.82 ns/op 1.02
nodejs block root to RootHex using toRootHex 67.984 ns/op 69.665 ns/op 0.98
nodejs fromHex(blob) 762.05 us/op 809.38 us/op 0.94
nodejs fromHexInto(blob) 662.12 us/op 668.08 us/op 0.99
nodejs block root to RootHex using the deprecated toHexString 478.29 ns/op 486.38 ns/op 0.98
nodejs byteArrayEquals 32 bytes (block root) 25.662 ns/op 25.866 ns/op 0.99
nodejs byteArrayEquals 48 bytes (pubkey) 37.027 ns/op 37.414 ns/op 0.99
nodejs byteArrayEquals 96 bytes (signature) 40.265 ns/op 41.037 ns/op 0.98
nodejs byteArrayEquals 1024 bytes 41.886 ns/op 43.658 ns/op 0.96
nodejs byteArrayEquals 131072 bytes (blob) 1.7422 us/op 1.7615 us/op 0.99
browser block root to RootHex using toHex 145.35 ns/op 147.46 ns/op 0.99
browser block root to RootHex using toRootHex 130.15 ns/op 135.79 ns/op 0.96
browser fromHex(blob) 1.5498 ms/op 1.5818 ms/op 0.98
browser fromHexInto(blob) 647.42 us/op 670.45 us/op 0.97
browser block root to RootHex using the deprecated toHexString 323.92 ns/op 346.46 ns/op 0.93
browser byteArrayEquals 32 bytes (block root) 27.332 ns/op 27.966 ns/op 0.98
browser byteArrayEquals 48 bytes (pubkey) 38.521 ns/op 39.443 ns/op 0.98
browser byteArrayEquals 96 bytes (signature) 71.902 ns/op 73.660 ns/op 0.98
browser byteArrayEquals 1024 bytes 735.38 ns/op 751.59 ns/op 0.98
browser byteArrayEquals 131072 bytes (blob) 92.349 us/op 94.753 us/op 0.97

by benchmarkbot/action

@nflaig
nflaig marked this pull request as ready for review August 2, 2026 15:52
@nflaig
nflaig requested a review from a team as a code owner August 2, 2026 15:52
const count = Math.min(MAX_REQUEST_LIGHT_CLIENT_UPDATES, requestBody.count);
if (!Number.isSafeInteger(requestBody.startPeriod)) {
throw new ResponseError(RespStatus.INVALID_REQUEST, "startPeriod out of range");
}

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

we could probably also just make it bigint but this fix works and I have tested it e2e already

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants