Skip to content

chore: address block validation and equivocation follow-ups - #9795

Merged
twoeths merged 1 commit into
unstablefrom
nflaig/follow-ups
Aug 11, 2026
Merged

chore: address block validation and equivocation follow-ups#9795
twoeths merged 1 commit into
unstablefrom
nflaig/follow-ups

Conversation

@nflaig

@nflaig nflaig commented Aug 10, 2026

Copy link
Copy Markdown
Member

Follow-up to #9757 and #9787 based on @twoeths' comments

  • remove skipVerifyBlockSignatures and always verify block signatures
  • reuse the block input root when recording observed proposals
  • defer proposer slashing production to the next event loop
  • log both conflicting block header roots
  • clarify the equivocation root-count constant name

/** Used to specify to skip execution payload validation */
skipVerifyExecutionPayload?: boolean;
/** Used to specify to skip block signatures validation */
skipVerifyBlockSignatures?: boolean;

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.

per #9757 (comment), we should just remove it

@github-actions

Copy link
Copy Markdown
Contributor

Performance Report

鉁旓笍 no performance regression detected

Full benchmark results
Benchmark suite Current: dae0654 Previous: de5f89e Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.2903 ms/op 836.62 us/op 1.54
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.107 us/op 39.187 us/op 0.97
BLS verify - blst 733.24 us/op 641.83 us/op 1.14
BLS verifyMultipleSignatures 3 - blst 1.3156 ms/op 1.3627 ms/op 0.97
BLS verifyMultipleSignatures 8 - blst 2.0795 ms/op 2.1629 ms/op 0.96
BLS verifyMultipleSignatures 32 - blst 6.6945 ms/op 6.9541 ms/op 0.96
BLS verifyMultipleSignatures 64 - blst 12.836 ms/op 13.398 ms/op 0.96
BLS verifyMultipleSignatures 128 - blst 24.808 ms/op 25.436 ms/op 0.98
BLS deserializing 10000 signatures 632.01 ms/op 629.83 ms/op 1.00
BLS deserializing 100000 signatures 6.3548 s/op 6.3196 s/op 1.01
BLS verifyMultipleSignatures - same message - 3 - blst 778.68 us/op 799.72 us/op 0.97
BLS verifyMultipleSignatures - same message - 8 - blst 893.22 us/op 939.08 us/op 0.95
BLS verifyMultipleSignatures - same message - 32 - blst 1.5168 ms/op 1.5581 ms/op 0.97
BLS verifyMultipleSignatures - same message - 64 - blst 2.3265 ms/op 2.3823 ms/op 0.98
BLS verifyMultipleSignatures - same message - 128 - blst 4.1372 ms/op 4.0610 ms/op 1.02
BLS aggregatePubkeys 32 - blst 17.621 us/op 17.543 us/op 1.00
BLS aggregatePubkeys 128 - blst 62.173 us/op 62.665 us/op 0.99
getSlashingsAndExits - default max 91.900 us/op 50.951 us/op 1.80
getSlashingsAndExits - 2k 499.42 us/op 402.73 us/op 1.24
proposeBlockBody type=full, size=empty 608.56 us/op 660.73 us/op 0.92
isKnown best case - 1 super set check 167.00 ns/op 161.00 ns/op 1.04
isKnown normal case - 2 super set checks 163.00 ns/op 156.00 ns/op 1.04
isKnown worse case - 16 super set checks 165.00 ns/op 157.00 ns/op 1.05
validate api signedAggregateAndProof - struct 1.5132 ms/op 1.5177 ms/op 1.00
validate gossip signedAggregateAndProof - struct 1.5174 ms/op 1.5120 ms/op 1.00
batch validate gossip attestation - vc 640000 - chunk 32 113.59 us/op 108.01 us/op 1.05
batch validate gossip attestation - vc 640000 - chunk 64 101.84 us/op 93.534 us/op 1.09
batch validate gossip attestation - vc 640000 - chunk 128 94.090 us/op 86.773 us/op 1.08
batch validate gossip attestation - vc 640000 - chunk 256 89.524 us/op 82.744 us/op 1.08
bytes32 toHexString 279.00 ns/op 282.00 ns/op 0.99
bytes32 Buffer.toString(hex) 175.00 ns/op 164.00 ns/op 1.07
bytes32 Buffer.toString(hex) from Uint8Array 235.00 ns/op 233.00 ns/op 1.01
bytes32 Buffer.toString(hex) + 0x 176.00 ns/op 167.00 ns/op 1.05
Return object 10000 times 0.21570 ns/op 0.21190 ns/op 1.02
Throw Error 10000 times 3.3784 us/op 3.2921 us/op 1.03
toHex 100.35 ns/op 96.926 ns/op 1.04
Buffer.from 92.490 ns/op 88.275 ns/op 1.05
shared Buffer 57.700 ns/op 61.849 ns/op 0.93
fastMsgIdFn sha256 / 200 bytes 1.4810 us/op 1.4690 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 154.00 ns/op 150.00 ns/op 1.03
fastMsgIdFn h64 xxhash / 200 bytes 202.00 ns/op 204.00 ns/op 0.99
fastMsgIdFn sha256 / 1000 bytes 4.7640 us/op 4.7310 us/op 1.01
fastMsgIdFn h32 xxhash / 1000 bytes 246.00 ns/op 241.00 ns/op 1.02
fastMsgIdFn h64 xxhash / 1000 bytes 254.00 ns/op 254.00 ns/op 1.00
fastMsgIdFn sha256 / 10000 bytes 42.007 us/op 41.757 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.2670 us/op 1.2830 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 812.00 ns/op 836.00 ns/op 0.97
send data - 1000 256B messages 4.8823 ms/op 4.2612 ms/op 1.15
send data - 1000 512B messages 5.5765 ms/op 5.0634 ms/op 1.10
send data - 1000 1024B messages 6.3889 ms/op 5.3563 ms/op 1.19
send data - 1000 1200B messages 7.3494 ms/op 5.9433 ms/op 1.24
send data - 1000 2048B messages 11.123 ms/op 9.0019 ms/op 1.24
send data - 1000 4096B messages 44.683 ms/op 87.008 ms/op 0.51
send data - 1000 16384B messages 438.55 ms/op 284.83 ms/op 1.54
send data - 1000 65536B messages 1.7430 s/op 1.2427 s/op 1.40
enrSubnets - fastDeserialize 64 bits 766.00 ns/op 792.00 ns/op 0.97
enrSubnets - ssz BitVector 64 bits 276.00 ns/op 293.00 ns/op 0.94
enrSubnets - fastDeserialize 4 bits 104.00 ns/op 102.00 ns/op 1.02
enrSubnets - ssz BitVector 4 bits 277.00 ns/op 290.00 ns/op 0.96
prioritizePeers score -10:0 att 32-0.1 sync 2-0 211.95 us/op 202.51 us/op 1.05
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 242.71 us/op 230.93 us/op 1.05
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 351.53 us/op 334.19 us/op 1.05
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 627.23 us/op 590.64 us/op 1.06
prioritizePeers score 0:0 att 64-1 sync 4-1 734.38 us/op 689.74 us/op 1.06
array of 16000 items push then shift 1.3036 us/op 1.2957 us/op 1.01
LinkedList of 16000 items push then shift 8.1960 ns/op 6.9240 ns/op 1.18
array of 16000 items push then pop 77.588 ns/op 67.525 ns/op 1.15
LinkedList of 16000 items push then pop 6.5430 ns/op 5.9920 ns/op 1.09
array of 24000 items push then shift 1.9079 us/op 1.9146 us/op 1.00
LinkedList of 24000 items push then shift 8.7050 ns/op 6.4270 ns/op 1.35
array of 24000 items push then pop 115.29 ns/op 101.19 ns/op 1.14
LinkedList of 24000 items push then pop 6.6960 ns/op 6.0000 ns/op 1.12
intersect bitArray bitLen 8 3.9080 ns/op 3.9850 ns/op 0.98
intersect array and set length 8 30.193 ns/op 30.314 ns/op 1.00
intersect bitArray bitLen 128 23.412 ns/op 23.385 ns/op 1.00
intersect array and set length 128 507.81 ns/op 501.52 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 128 970.00 ns/op 916.00 ns/op 1.06
bitArray.getTrueBitIndexes() bitLen 248 1.7330 us/op 1.6530 us/op 1.05
bitArray.getTrueBitIndexes() bitLen 512 3.6850 us/op 3.4370 us/op 1.07
Full columns - reconstruct all 6 blobs 196.80 us/op 204.74 us/op 0.96
Full columns - reconstruct half of the blobs out of 6 119.98 us/op 68.763 us/op 1.74
Full columns - reconstruct single blob out of 6 39.076 us/op 31.105 us/op 1.26
Half columns - reconstruct all 6 blobs 399.63 ms/op 395.96 ms/op 1.01
Half columns - reconstruct half of the blobs out of 6 199.14 ms/op 197.05 ms/op 1.01
Half columns - reconstruct single blob out of 6 70.614 ms/op 66.549 ms/op 1.06
Set add up to 64 items then delete first 1.6435 us/op 1.6549 us/op 0.99
OrderedSet add up to 64 items then delete first 2.5176 us/op 2.5030 us/op 1.01
Set add up to 64 items then delete last 1.8521 us/op 1.8736 us/op 0.99
OrderedSet add up to 64 items then delete last 2.8050 us/op 2.7538 us/op 1.02
Set add up to 64 items then delete middle 1.9981 us/op 1.8727 us/op 1.07
OrderedSet add up to 64 items then delete middle 4.5002 us/op 4.2096 us/op 1.07
Set add up to 128 items then delete first 3.7765 us/op 3.7071 us/op 1.02
OrderedSet add up to 128 items then delete first 6.3419 us/op 5.6644 us/op 1.12
Set add up to 128 items then delete last 3.6238 us/op 3.5694 us/op 1.02
OrderedSet add up to 128 items then delete last 5.4323 us/op 5.3098 us/op 1.02
Set add up to 128 items then delete middle 3.6046 us/op 3.7325 us/op 0.97
OrderedSet add up to 128 items then delete middle 11.333 us/op 11.408 us/op 0.99
Set add up to 256 items then delete first 8.0947 us/op 7.2593 us/op 1.12
OrderedSet add up to 256 items then delete first 12.748 us/op 12.096 us/op 1.05
Set add up to 256 items then delete last 7.1594 us/op 6.9856 us/op 1.02
OrderedSet add up to 256 items then delete last 12.387 us/op 11.065 us/op 1.12
Set add up to 256 items then delete middle 7.1031 us/op 7.0234 us/op 1.01
OrderedSet add up to 256 items then delete middle 36.273 us/op 34.499 us/op 1.05
runFastConfirmationRules vc:100000 bc:96 eq:0 4.6934 ms/op 4.6283 ms/op 1.01
runFastConfirmationRules vc:600000 bc:96 eq:0 38.933 ms/op 35.516 ms/op 1.10
runFastConfirmationRules vc:1000000 bc:96 eq:0 63.931 ms/op 56.505 ms/op 1.13
runFastConfirmationRules vc:600000 bc:320 eq:0 38.604 ms/op 33.927 ms/op 1.14
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.3200 s/op 1.3122 s/op 1.01
pass gossip attestations to forkchoice per slot 2.5877 ms/op 2.5764 ms/op 1.00
forkChoice updateHead vc 100000 bc 64 eq 0 404.20 us/op 440.58 us/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 0 2.4194 ms/op 2.4923 ms/op 0.97
forkChoice updateHead vc 1000000 bc 64 eq 0 4.1167 ms/op 4.3349 ms/op 0.95
forkChoice updateHead vc 600000 bc 320 eq 0 2.4656 ms/op 2.6410 ms/op 0.93
forkChoice updateHead vc 600000 bc 1200 eq 0 2.5567 ms/op 2.6848 ms/op 0.95
forkChoice updateHead vc 600000 bc 7200 eq 0 3.2899 ms/op 3.0425 ms/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 1000 2.3692 ms/op 2.6816 ms/op 0.88
forkChoice updateHead vc 600000 bc 64 eq 10000 2.4468 ms/op 2.7551 ms/op 0.89
forkChoice updateHead vc 600000 bc 64 eq 300000 6.5330 ms/op 6.7169 ms/op 0.97
computeDeltas 1400000 validators 0% inactive 12.084 ms/op 13.101 ms/op 0.92
computeDeltas 1400000 validators 10% inactive 11.436 ms/op 12.623 ms/op 0.91
computeDeltas 1400000 validators 20% inactive 10.551 ms/op 11.813 ms/op 0.89
computeDeltas 1400000 validators 50% inactive 8.6935 ms/op 9.5150 ms/op 0.91
computeDeltas 2100000 validators 0% inactive 17.859 ms/op 19.618 ms/op 0.91
computeDeltas 2100000 validators 10% inactive 17.053 ms/op 18.990 ms/op 0.90
computeDeltas 2100000 validators 20% inactive 15.852 ms/op 18.049 ms/op 0.88
computeDeltas 2100000 validators 50% inactive 10.966 ms/op 14.344 ms/op 0.76
altair processAttestation - 250000 vs - 7PWei normalcase 3.3150 ms/op 1.6681 ms/op 1.99
altair processAttestation - 250000 vs - 7PWei worstcase 4.4675 ms/op 2.4355 ms/op 1.83
altair processAttestation - setStatus - 1/6 committees join 118.80 us/op 98.990 us/op 1.20
altair processAttestation - setStatus - 1/3 committees join 211.65 us/op 194.79 us/op 1.09
altair processAttestation - setStatus - 1/2 committees join 282.63 us/op 274.50 us/op 1.03
altair processAttestation - setStatus - 2/3 committees join 349.38 us/op 373.84 us/op 0.93
altair processAttestation - setStatus - 4/5 committees join 499.83 us/op 512.13 us/op 0.98
altair processAttestation - setStatus - 100% committees join 585.19 us/op 597.91 us/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 4.7700 ms/op 3.1148 ms/op 1.53
altair processBlock - 250000 vs - 7PWei normalcase hashState 18.041 ms/op 13.877 ms/op 1.30
altair processBlock - 250000 vs - 7PWei worstcase 22.552 ms/op 21.922 ms/op 1.03
altair processBlock - 250000 vs - 7PWei worstcase hashState 42.518 ms/op 40.926 ms/op 1.04
phase0 processBlock - 250000 vs - 7PWei normalcase 1.4544 ms/op 1.3009 ms/op 1.12
phase0 processBlock - 250000 vs - 7PWei worstcase 15.591 ms/op 16.021 ms/op 0.97
altair processEth1Data - 250000 vs - 7PWei normalcase 268.96 us/op 294.95 us/op 0.91
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 5.5670 us/op 3.2200 us/op 1.73
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 20.197 us/op 22.594 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.6480 us/op 5.9940 us/op 1.11
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.7850 us/op 3.9640 us/op 0.95
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 88.133 us/op 96.247 us/op 0.92
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3281 ms/op 1.3919 ms/op 0.95
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7328 ms/op 1.8527 ms/op 0.94
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7122 ms/op 1.8429 ms/op 0.93
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.4981 ms/op 3.6709 ms/op 0.95
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0077 ms/op 2.1789 ms/op 0.92
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.8203 ms/op 3.9853 ms/op 0.96
Tree 40 250000 create 309.70 ms/op 339.59 ms/op 0.91
Tree 40 250000 get(125000) 90.659 ns/op 100.02 ns/op 0.91
Tree 40 250000 set(125000) 959.38 ns/op 1.0243 us/op 0.94
Tree 40 250000 toArray() 12.800 ms/op 18.460 ms/op 0.69
Tree 40 250000 iterate all - toArray() + loop 12.938 ms/op 16.536 ms/op 0.78
Tree 40 250000 iterate all - get(i) 35.702 ms/op 38.086 ms/op 0.94
Array 250000 create 2.2403 ms/op 2.2881 ms/op 0.98
Array 250000 clone - spread 687.88 us/op 691.31 us/op 1.00
Array 250000 get(125000) 0.28700 ns/op 0.29400 ns/op 0.98
Array 250000 set(125000) 0.28700 ns/op 0.29400 ns/op 0.98
Array 250000 iterate all - loop 56.374 us/op 56.902 us/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 49.153 ms/op 48.353 ms/op 1.02
Array.fill - length 1000000 2.2209 ms/op 2.2771 ms/op 0.98
Array push - length 1000000 9.4495 ms/op 7.7597 ms/op 1.22
Array.get 0.20157 ns/op 0.20352 ns/op 0.99
Uint8Array.get 0.22820 ns/op 0.24689 ns/op 0.92
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.198 ms/op 11.621 ms/op 1.22
altair processEpoch - mainnet_e81889 316.60 ms/op 240.57 ms/op 1.32
mainnet_e81889 - altair beforeProcessEpoch 37.721 ms/op 18.834 ms/op 2.00
mainnet_e81889 - altair processJustificationAndFinalization 6.8370 us/op 5.0840 us/op 1.34
mainnet_e81889 - altair processInactivityUpdates 7.0481 ms/op 3.7210 ms/op 1.89
mainnet_e81889 - altair processRewardsAndPenalties 20.261 ms/op 17.087 ms/op 1.19
mainnet_e81889 - altair processRegistryUpdates 559.00 ns/op 556.00 ns/op 1.01
mainnet_e81889 - altair processSlashings 138.00 ns/op 137.00 ns/op 1.01
mainnet_e81889 - altair processEth1DataReset 135.00 ns/op 137.00 ns/op 0.99
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.4171 ms/op 1.1684 ms/op 1.21
mainnet_e81889 - altair processSlashingsReset 691.00 ns/op 693.00 ns/op 1.00
mainnet_e81889 - altair processRandaoMixesReset 1.3560 us/op 1.3420 us/op 1.01
mainnet_e81889 - altair processHistoricalRootsUpdate 138.00 ns/op 141.00 ns/op 0.98
mainnet_e81889 - altair processParticipationFlagUpdates 443.00 ns/op 447.00 ns/op 0.99
mainnet_e81889 - altair processSyncCommitteeUpdates 130.00 ns/op 118.00 ns/op 1.10
mainnet_e81889 - altair afterProcessEpoch 39.460 ms/op 42.228 ms/op 0.93
capella processEpoch - mainnet_e217614 825.75 ms/op 716.08 ms/op 1.15
mainnet_e217614 - capella beforeProcessEpoch 58.679 ms/op 56.941 ms/op 1.03
mainnet_e217614 - capella processJustificationAndFinalization 6.7540 us/op 5.1850 us/op 1.30
mainnet_e217614 - capella processInactivityUpdates 16.495 ms/op 11.762 ms/op 1.40
mainnet_e217614 - capella processRewardsAndPenalties 92.232 ms/op 93.083 ms/op 0.99
mainnet_e217614 - capella processRegistryUpdates 4.3960 us/op 4.5220 us/op 0.97
mainnet_e217614 - capella processSlashings 141.00 ns/op 141.00 ns/op 1.00
mainnet_e217614 - capella processEth1DataReset 138.00 ns/op 135.00 ns/op 1.02
mainnet_e217614 - capella processEffectiveBalanceUpdates 15.383 ms/op 5.2193 ms/op 2.95
mainnet_e217614 - capella processSlashingsReset 680.00 ns/op 677.00 ns/op 1.00
mainnet_e217614 - capella processRandaoMixesReset 1.2170 us/op 1.0840 us/op 1.12
mainnet_e217614 - capella processHistoricalRootsUpdate 139.00 ns/op 136.00 ns/op 1.02
mainnet_e217614 - capella processParticipationFlagUpdates 437.00 ns/op 445.00 ns/op 0.98
mainnet_e217614 - capella afterProcessEpoch 113.21 ms/op 109.14 ms/op 1.04
phase0 processEpoch - mainnet_e58758 331.09 ms/op 251.76 ms/op 1.32
mainnet_e58758 - phase0 beforeProcessEpoch 73.785 ms/op 45.365 ms/op 1.63
mainnet_e58758 - phase0 processJustificationAndFinalization 6.2780 us/op 4.7920 us/op 1.31
mainnet_e58758 - phase0 processRewardsAndPenalties 15.978 ms/op 15.323 ms/op 1.04
mainnet_e58758 - phase0 processRegistryUpdates 2.2160 us/op 2.2450 us/op 0.99
mainnet_e58758 - phase0 processSlashings 136.00 ns/op 136.00 ns/op 1.00
mainnet_e58758 - phase0 processEth1DataReset 134.00 ns/op 135.00 ns/op 0.99
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1163 ms/op 1.0109 ms/op 1.10
mainnet_e58758 - phase0 processSlashingsReset 881.00 ns/op 807.00 ns/op 1.09
mainnet_e58758 - phase0 processRandaoMixesReset 1.3060 us/op 1.0070 us/op 1.30
mainnet_e58758 - phase0 processHistoricalRootsUpdate 140.00 ns/op 136.00 ns/op 1.03
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1690 us/op 974.00 ns/op 1.20
mainnet_e58758 - phase0 afterProcessEpoch 32.704 ms/op 32.956 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 957.52 us/op 1.0056 ms/op 0.95
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.1600 ms/op 1.6175 ms/op 0.72
altair processInactivityUpdates - 250000 normalcase 13.959 ms/op 10.363 ms/op 1.35
altair processInactivityUpdates - 250000 worstcase 12.527 ms/op 10.327 ms/op 1.21
phase0 processRegistryUpdates - 250000 normalcase 2.3270 us/op 2.3800 us/op 0.98
phase0 processRegistryUpdates - 250000 badcase_full_deposits 135.43 us/op 146.84 us/op 0.92
phase0 processRegistryUpdates - 250000 worstcase 0.5 57.772 ms/op 58.651 ms/op 0.99
altair processRewardsAndPenalties - 250000 normalcase 16.448 ms/op 14.345 ms/op 1.15
altair processRewardsAndPenalties - 250000 worstcase 15.053 ms/op 14.060 ms/op 1.07
phase0 getAttestationDeltas - 250000 normalcase 5.2980 ms/op 5.4425 ms/op 0.97
phase0 getAttestationDeltas - 250000 worstcase 5.5974 ms/op 5.4401 ms/op 1.03
phase0 processSlashings - 250000 worstcase 58.218 us/op 62.018 us/op 0.94
altair processSyncCommitteeUpdates - 250000 9.8199 ms/op 9.9483 ms/op 0.99
BeaconState.hashTreeRoot - No change 166.00 ns/op 168.00 ns/op 0.99
BeaconState.hashTreeRoot - 1 full validator 73.170 us/op 59.262 us/op 1.23
BeaconState.hashTreeRoot - 32 full validator 892.01 us/op 668.50 us/op 1.33
BeaconState.hashTreeRoot - 512 full validator 6.3824 ms/op 6.4278 ms/op 0.99
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 84.407 us/op 73.867 us/op 1.14
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3447 ms/op 1.0805 ms/op 1.24
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.558 ms/op 13.309 ms/op 1.09
BeaconState.hashTreeRoot - 1 balances 71.524 us/op 59.609 us/op 1.20
BeaconState.hashTreeRoot - 32 balances 683.68 us/op 572.60 us/op 1.19
BeaconState.hashTreeRoot - 512 balances 5.0416 ms/op 4.9639 ms/op 1.02
BeaconState.hashTreeRoot - 250000 balances 128.46 ms/op 115.59 ms/op 1.11
aggregationBits - 2048 els - zipIndexesInBitList 19.066 us/op 19.925 us/op 0.96
regular array get 100000 times 22.050 us/op 22.919 us/op 0.96
wrappedArray get 100000 times 22.157 us/op 22.812 us/op 0.97
arrayWithProxy get 100000 times 9.2869 ms/op 10.801 ms/op 0.86
ssz.Root.equals 20.418 ns/op 21.462 ns/op 0.95
byteArrayEquals 20.335 ns/op 21.268 ns/op 0.96
Buffer.compare 8.4460 ns/op 8.8890 ns/op 0.95
processSlot - 1 slots 9.0110 us/op 7.9580 us/op 1.13
processSlot - 32 slots 2.0481 ms/op 1.5512 ms/op 1.32
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 5.2848 ms/op 2.7305 ms/op 1.94
getCommitteeAssignments - req 1 vs - 250000 vc 1.6191 ms/op 1.6610 ms/op 0.97
getCommitteeAssignments - req 100 vs - 250000 vc 3.3082 ms/op 3.3854 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6411 ms/op 3.6297 ms/op 1.00
findModifiedValidators - 10000 modified validators 646.84 ms/op 755.06 ms/op 0.86
findModifiedValidators - 1000 modified validators 520.96 ms/op 534.45 ms/op 0.97
findModifiedValidators - 100 modified validators 365.90 ms/op 273.28 ms/op 1.34
findModifiedValidators - 10 modified validators 276.32 ms/op 249.96 ms/op 1.11
findModifiedValidators - 1 modified validators 185.78 ms/op 172.70 ms/op 1.08
findModifiedValidators - no difference 192.84 ms/op 146.58 ms/op 1.32
migrate state 1500000 validators, 3400 modified, 2000 new 2.7379 s/op 2.6970 s/op 1.02
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.5600 ns/op 3.7400 ns/op 0.95
state getBlockRootAtSlot - 250000 vs - 7PWei 349.58 ns/op 281.27 ns/op 1.24
computeProposerIndex 100000 validators 1.2985 ms/op 1.3382 ms/op 0.97
getNextSyncCommitteeIndices 1000 validators 2.7898 ms/op 2.8411 ms/op 0.98
getNextSyncCommitteeIndices 10000 validators 24.489 ms/op 25.280 ms/op 0.97
getNextSyncCommitteeIndices 100000 validators 83.587 ms/op 84.642 ms/op 0.99
computeProposers - vc 250000 541.27 us/op 552.15 us/op 0.98
computeEpochShuffling - vc 250000 37.752 ms/op 40.934 ms/op 0.92
getNextSyncCommittee - vc 250000 9.0950 ms/op 9.4627 ms/op 0.96
nodejs block root to RootHex using toHex 99.639 ns/op 99.706 ns/op 1.00
nodejs block root to RootHex using toRootHex 59.224 ns/op 65.398 ns/op 0.91
nodejs fromHex(blob) 679.66 us/op 729.74 us/op 0.93
nodejs fromHexInto(blob) 605.87 us/op 655.74 us/op 0.92
nodejs block root to RootHex using the deprecated toHexString 543.38 ns/op 486.80 ns/op 1.12
nodejs byteArrayEquals 32 bytes (block root) 25.187 ns/op 25.861 ns/op 0.97
nodejs byteArrayEquals 48 bytes (pubkey) 36.551 ns/op 37.351 ns/op 0.98
nodejs byteArrayEquals 96 bytes (signature) 33.704 ns/op 39.596 ns/op 0.85
nodejs byteArrayEquals 1024 bytes 41.664 ns/op 43.597 ns/op 0.96
nodejs byteArrayEquals 131072 bytes (blob) 1.7088 us/op 1.7686 us/op 0.97
browser block root to RootHex using toHex 139.10 ns/op 145.00 ns/op 0.96
browser block root to RootHex using toRootHex 126.34 ns/op 130.83 ns/op 0.97
browser fromHex(blob) 1.4444 ms/op 1.5697 ms/op 0.92
browser fromHexInto(blob) 601.38 us/op 661.21 us/op 0.91
browser block root to RootHex using the deprecated toHexString 539.41 ns/op 347.84 ns/op 1.55
browser byteArrayEquals 32 bytes (block root) 26.819 ns/op 27.653 ns/op 0.97
browser byteArrayEquals 48 bytes (pubkey) 38.097 ns/op 39.042 ns/op 0.98
browser byteArrayEquals 96 bytes (signature) 70.957 ns/op 72.868 ns/op 0.97
browser byteArrayEquals 1024 bytes 721.68 ns/op 745.96 ns/op 0.97
browser byteArrayEquals 131072 bytes (blob) 91.331 us/op 93.823 us/op 0.97

by benchmarkbot/action

@twoeths
twoeths merged commit 31cbd91 into unstable Aug 11, 2026
19 checks passed
@twoeths
twoeths deleted the nflaig/follow-ups branch August 11, 2026 04:21
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Lodestar Team Coordination Aug 11, 2026
@wemeetagain

Copy link
Copy Markdown
Member

馃帀 This PR is included in v1.47.0 馃帀

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

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants