Skip to content

fix: do not compare proposer index in proposer boost#9653

Open
ensi321 wants to merge 1 commit into
unstablefrom
nc/proposer-boost-index-cleanup
Open

fix: do not compare proposer index in proposer boost#9653
ensi321 wants to merge 1 commit into
unstablefrom
nc/proposer-boost-index-cleanup

Conversation

@ensi321

@ensi321 ensi321 commented Jul 14, 2026

Copy link
Copy Markdown
Member

Previously in #9565 we added dependent root check, but didn't remove the proposer index check.

@ensi321 ensi321 requested a review from a team as a code owner July 14, 2026 02:47

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

Copy link
Copy Markdown
Contributor

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 removes the expectedProposerIndex parameter from the forkChoice.onBlock method, simplifying the proposer boost logic by removing the check that matched the block's proposer index with the expected proposer index. Consequently, the unused getBeaconProposerOrNull helper method and its caching mechanism have been removed from the state view classes and interfaces, and associated tests have been updated. I have no feedback to provide as there are no review comments.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@github-actions

Copy link
Copy Markdown
Contributor

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: c2eaad1 Previous: 242f99e Ratio
send data - 1000 4096B messages 25.146 ms/op 101.56 ms/op 0.25
Full benchmark results
Benchmark suite Current: c2eaad1 Previous: 242f99e Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.3365 ms/op 849.75 us/op 1.57
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 41.955 us/op 40.335 us/op 1.04
BLS verify - blst 668.58 us/op 774.62 us/op 0.86
BLS verifyMultipleSignatures 3 - blst 1.3598 ms/op 1.3995 ms/op 0.97
BLS verifyMultipleSignatures 8 - blst 2.1845 ms/op 2.2066 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst 6.9064 ms/op 6.8880 ms/op 1.00
BLS verifyMultipleSignatures 64 - blst 13.390 ms/op 13.358 ms/op 1.00
BLS verifyMultipleSignatures 128 - blst 25.494 ms/op 25.886 ms/op 0.98
BLS deserializing 10000 signatures 639.46 ms/op 642.21 ms/op 1.00
BLS deserializing 100000 signatures 6.3768 s/op 6.3907 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 707.71 us/op 823.40 us/op 0.86
BLS verifyMultipleSignatures - same message - 8 - blst 903.25 us/op 960.64 us/op 0.94
BLS verifyMultipleSignatures - same message - 32 - blst 1.4289 ms/op 1.6328 ms/op 0.88
BLS verifyMultipleSignatures - same message - 64 - blst 2.2762 ms/op 2.3814 ms/op 0.96
BLS verifyMultipleSignatures - same message - 128 - blst 4.0404 ms/op 4.1683 ms/op 0.97
BLS aggregatePubkeys 32 - blst 17.690 us/op 17.647 us/op 1.00
BLS aggregatePubkeys 128 - blst 62.009 us/op 64.377 us/op 0.96
getSlashingsAndExits - default max 53.374 us/op 48.178 us/op 1.11
getSlashingsAndExits - 2k 375.87 us/op 327.53 us/op 1.15
proposeBlockBody type=full, size=empty 611.25 us/op 889.08 us/op 0.69
isKnown best case - 1 super set check 402.00 ns/op 160.00 ns/op 2.51
isKnown normal case - 2 super set checks 441.00 ns/op 163.00 ns/op 2.71
isKnown worse case - 16 super set checks 396.00 ns/op 159.00 ns/op 2.49
validate api signedAggregateAndProof - struct 1.4807 ms/op 1.5611 ms/op 0.95
validate gossip signedAggregateAndProof - struct 1.4708 ms/op 1.5537 ms/op 0.95
batch validate gossip attestation - vc 640000 - chunk 32 107.07 us/op 109.46 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 64 94.397 us/op 94.226 us/op 1.00
batch validate gossip attestation - vc 640000 - chunk 128 89.317 us/op 87.893 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 256 92.082 us/op 84.951 us/op 1.08
bytes32 toHexString 475.00 ns/op 299.00 ns/op 1.59
bytes32 Buffer.toString(hex) 372.00 ns/op 158.00 ns/op 2.35
bytes32 Buffer.toString(hex) from Uint8Array 444.00 ns/op 218.00 ns/op 2.04
bytes32 Buffer.toString(hex) + 0x 377.00 ns/op 158.00 ns/op 2.39
Return object 10000 times 0.22680 ns/op 0.21170 ns/op 1.07
Throw Error 10000 times 3.2598 us/op 3.3242 us/op 0.98
toHex 98.876 ns/op 99.550 ns/op 0.99
Buffer.from 84.105 ns/op 88.863 ns/op 0.95
shared Buffer 56.462 ns/op 60.890 ns/op 0.93
fastMsgIdFn sha256 / 200 bytes 1.6550 us/op 1.4880 us/op 1.11
fastMsgIdFn h32 xxhash / 200 bytes 356.00 ns/op 155.00 ns/op 2.30
fastMsgIdFn h64 xxhash / 200 bytes 402.00 ns/op 196.00 ns/op 2.05
fastMsgIdFn sha256 / 1000 bytes 4.8210 us/op 4.8110 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 433.00 ns/op 245.00 ns/op 1.77
fastMsgIdFn h64 xxhash / 1000 bytes 444.00 ns/op 248.00 ns/op 1.79
fastMsgIdFn sha256 / 10000 bytes 40.793 us/op 42.939 us/op 0.95
fastMsgIdFn h32 xxhash / 10000 bytes 1.4280 us/op 1.2550 us/op 1.14
fastMsgIdFn h64 xxhash / 10000 bytes 991.00 ns/op 813.00 ns/op 1.22
send data - 1000 256B messages 4.5400 ms/op 3.9462 ms/op 1.15
send data - 1000 512B messages 5.8158 ms/op 4.8017 ms/op 1.21
send data - 1000 1024B messages 6.0170 ms/op 5.2959 ms/op 1.14
send data - 1000 1200B messages 7.1455 ms/op 6.0873 ms/op 1.17
send data - 1000 2048B messages 27.425 ms/op 17.904 ms/op 1.53
send data - 1000 4096B messages 25.146 ms/op 101.56 ms/op 0.25
send data - 1000 16384B messages 206.07 ms/op 299.08 ms/op 0.69
send data - 1000 65536B messages 756.12 ms/op 1.3788 s/op 0.55
enrSubnets - fastDeserialize 64 bits 985.00 ns/op 768.00 ns/op 1.28
enrSubnets - ssz BitVector 64 bits 497.00 ns/op 256.00 ns/op 1.94
enrSubnets - fastDeserialize 4 bits 307.00 ns/op 103.00 ns/op 2.98
enrSubnets - ssz BitVector 4 bits 499.00 ns/op 264.00 ns/op 1.89
prioritizePeers score -10:0 att 32-0.1 sync 2-0 199.92 us/op 210.45 us/op 0.95
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 227.56 us/op 239.43 us/op 0.95
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 331.93 us/op 347.13 us/op 0.96
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 589.32 us/op 625.55 us/op 0.94
prioritizePeers score 0:0 att 64-1 sync 4-1 685.33 us/op 718.79 us/op 0.95
array of 16000 items push then shift 1.2226 us/op 1.3033 us/op 0.94
LinkedList of 16000 items push then shift 7.7270 ns/op 6.9030 ns/op 1.12
array of 16000 items push then pop 65.785 ns/op 66.728 ns/op 0.99
LinkedList of 16000 items push then pop 6.2140 ns/op 5.9840 ns/op 1.04
array of 24000 items push then shift 1.8085 us/op 1.9184 us/op 0.94
LinkedList of 24000 items push then shift 7.4760 ns/op 6.5110 ns/op 1.15
array of 24000 items push then pop 96.374 ns/op 93.364 ns/op 1.03
LinkedList of 24000 items push then pop 6.3260 ns/op 6.0900 ns/op 1.04
intersect bitArray bitLen 8 4.8410 ns/op 4.7540 ns/op 1.02
intersect array and set length 8 28.912 ns/op 31.272 ns/op 0.92
intersect bitArray bitLen 128 23.610 ns/op 23.986 ns/op 0.98
intersect array and set length 128 489.33 ns/op 506.21 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 1.1830 us/op 1.0790 us/op 1.10
bitArray.getTrueBitIndexes() bitLen 248 1.9500 us/op 1.7720 us/op 1.10
bitArray.getTrueBitIndexes() bitLen 512 3.7840 us/op 3.5980 us/op 1.05
Full columns - reconstruct all 6 blobs 164.06 us/op 112.48 us/op 1.46
Full columns - reconstruct half of the blobs out of 6 102.89 us/op 126.12 us/op 0.82
Full columns - reconstruct single blob out of 6 42.609 us/op 32.456 us/op 1.31
Half columns - reconstruct all 6 blobs 378.80 ms/op 391.21 ms/op 0.97
Half columns - reconstruct half of the blobs out of 6 191.41 ms/op 198.02 ms/op 0.97
Half columns - reconstruct single blob out of 6 67.789 ms/op 68.949 ms/op 0.98
Set add up to 64 items then delete first 1.5843 us/op 1.6908 us/op 0.94
OrderedSet add up to 64 items then delete first 2.4540 us/op 2.5632 us/op 0.96
Set add up to 64 items then delete last 1.8279 us/op 2.0332 us/op 0.90
OrderedSet add up to 64 items then delete last 2.7001 us/op 2.8726 us/op 0.94
Set add up to 64 items then delete middle 1.8114 us/op 1.9459 us/op 0.93
OrderedSet add up to 64 items then delete middle 4.1805 us/op 4.3348 us/op 0.96
Set add up to 128 items then delete first 3.6523 us/op 3.9569 us/op 0.92
OrderedSet add up to 128 items then delete first 5.6364 us/op 5.8860 us/op 0.96
Set add up to 128 items then delete last 3.5952 us/op 3.9394 us/op 0.91
OrderedSet add up to 128 items then delete last 5.4838 us/op 5.8259 us/op 0.94
Set add up to 128 items then delete middle 3.5260 us/op 3.7874 us/op 0.93
OrderedSet add up to 128 items then delete middle 10.919 us/op 11.390 us/op 0.96
Set add up to 256 items then delete first 7.1938 us/op 7.8167 us/op 0.92
OrderedSet add up to 256 items then delete first 11.887 us/op 12.139 us/op 0.98
Set add up to 256 items then delete last 6.9406 us/op 7.9914 us/op 0.87
OrderedSet add up to 256 items then delete last 11.450 us/op 11.449 us/op 1.00
Set add up to 256 items then delete middle 6.9767 us/op 7.5067 us/op 0.93
OrderedSet add up to 256 items then delete middle 34.448 us/op 34.879 us/op 0.99
runFastConfirmationRules vc:100000 bc:96 eq:0 4.4360 ms/op 5.2062 ms/op 0.85
runFastConfirmationRules vc:600000 bc:96 eq:0 35.461 ms/op 34.913 ms/op 1.02
runFastConfirmationRules vc:1000000 bc:96 eq:0 58.161 ms/op 58.268 ms/op 1.00
runFastConfirmationRules vc:600000 bc:320 eq:0 36.779 ms/op 34.264 ms/op 1.07
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.0750 s/op 1.0972 s/op 0.98
pass gossip attestations to forkchoice per slot 2.5752 ms/op 2.5620 ms/op 1.01
forkChoice updateHead vc 100000 bc 64 eq 0 398.29 us/op 469.25 us/op 0.85
forkChoice updateHead vc 600000 bc 64 eq 0 2.3910 ms/op 2.6961 ms/op 0.89
forkChoice updateHead vc 1000000 bc 64 eq 0 4.1240 ms/op 4.5438 ms/op 0.91
forkChoice updateHead vc 600000 bc 320 eq 0 2.9906 ms/op 2.7730 ms/op 1.08
forkChoice updateHead vc 600000 bc 1200 eq 0 2.4479 ms/op 2.7414 ms/op 0.89
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3542 ms/op 3.0956 ms/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 1000 2.4083 ms/op 2.8101 ms/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 10000 2.4560 ms/op 2.8573 ms/op 0.86
forkChoice updateHead vc 600000 bc 64 eq 300000 6.2092 ms/op 6.9766 ms/op 0.89
computeDeltas 1400000 validators 0% inactive 11.747 ms/op 13.643 ms/op 0.86
computeDeltas 1400000 validators 10% inactive 11.333 ms/op 12.650 ms/op 0.90
computeDeltas 1400000 validators 20% inactive 10.666 ms/op 11.926 ms/op 0.89
computeDeltas 1400000 validators 50% inactive 8.5857 ms/op 9.6828 ms/op 0.89
computeDeltas 2100000 validators 0% inactive 17.644 ms/op 19.912 ms/op 0.89
computeDeltas 2100000 validators 10% inactive 16.818 ms/op 18.535 ms/op 0.91
computeDeltas 2100000 validators 20% inactive 15.854 ms/op 17.921 ms/op 0.88
computeDeltas 2100000 validators 50% inactive 10.563 ms/op 14.587 ms/op 0.72
altair processAttestation - 250000 vs - 7PWei normalcase 2.4925 ms/op 1.6992 ms/op 1.47
altair processAttestation - 250000 vs - 7PWei worstcase 3.2809 ms/op 2.4287 ms/op 1.35
altair processAttestation - setStatus - 1/6 committees join 95.589 us/op 100.00 us/op 0.96
altair processAttestation - setStatus - 1/3 committees join 198.43 us/op 201.11 us/op 0.99
altair processAttestation - setStatus - 1/2 committees join 276.47 us/op 287.20 us/op 0.96
altair processAttestation - setStatus - 2/3 committees join 361.29 us/op 377.70 us/op 0.96
altair processAttestation - setStatus - 4/5 committees join 509.47 us/op 526.53 us/op 0.97
altair processAttestation - setStatus - 100% committees join 599.59 us/op 627.51 us/op 0.96
altair processBlock - 250000 vs - 7PWei normalcase 4.5978 ms/op 3.0758 ms/op 1.49
altair processBlock - 250000 vs - 7PWei normalcase hashState 16.046 ms/op 11.982 ms/op 1.34
altair processBlock - 250000 vs - 7PWei worstcase 22.860 ms/op 20.063 ms/op 1.14
altair processBlock - 250000 vs - 7PWei worstcase hashState 42.146 ms/op 40.500 ms/op 1.04
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5477 ms/op 1.2782 ms/op 1.21
phase0 processBlock - 250000 vs - 7PWei worstcase 16.813 ms/op 17.330 ms/op 0.97
altair processEth1Data - 250000 vs - 7PWei normalcase 291.58 us/op 302.30 us/op 0.96
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.4420 us/op 7.9130 us/op 0.43
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 19.327 us/op 21.598 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.5610 us/op 6.9170 us/op 0.80
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.5480 us/op 3.7450 us/op 0.95
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 89.003 us/op 97.795 us/op 0.91
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3335 ms/op 1.4110 ms/op 0.95
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7650 ms/op 1.8415 ms/op 0.96
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7523 ms/op 1.8406 ms/op 0.95
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6009 ms/op 3.6775 ms/op 0.98
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0045 ms/op 2.0596 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.8896 ms/op 4.1019 ms/op 1.19
Tree 40 250000 create 343.43 ms/op 323.94 ms/op 1.06
Tree 40 250000 get(125000) 88.478 ns/op 103.30 ns/op 0.86
Tree 40 250000 set(125000) 970.65 ns/op 1.1147 us/op 0.87
Tree 40 250000 toArray() 16.410 ms/op 9.9179 ms/op 1.65
Tree 40 250000 iterate all - toArray() + loop 16.331 ms/op 9.7793 ms/op 1.67
Tree 40 250000 iterate all - get(i) 38.530 ms/op 39.048 ms/op 0.99
Array 250000 create 2.1967 ms/op 2.1598 ms/op 1.02
Array 250000 clone - spread 667.70 us/op 666.17 us/op 1.00
Array 250000 get(125000) 0.47900 ns/op 0.29600 ns/op 1.62
Array 250000 set(125000) 0.48500 ns/op 0.29600 ns/op 1.64
Array 250000 iterate all - loop 56.014 us/op 56.803 us/op 0.99
phase0 afterProcessEpoch - 250000 vs - 7PWei 38.902 ms/op 52.527 ms/op 0.74
Array.fill - length 1000000 2.6763 ms/op 2.2633 ms/op 1.18
Array push - length 1000000 9.5523 ms/op 7.8570 ms/op 1.22
Array.get 0.20323 ns/op 0.20569 ns/op 0.99
Uint8Array.get 0.23445 ns/op 0.25173 ns/op 0.93
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.150 ms/op 14.411 ms/op 1.05
altair processEpoch - mainnet_e81889 266.09 ms/op 261.00 ms/op 1.02
mainnet_e81889 - altair beforeProcessEpoch 16.171 ms/op 14.689 ms/op 1.10
mainnet_e81889 - altair processJustificationAndFinalization 6.9330 us/op 5.4560 us/op 1.27
mainnet_e81889 - altair processInactivityUpdates 6.8656 ms/op 3.7063 ms/op 1.85
mainnet_e81889 - altair processRewardsAndPenalties 21.295 ms/op 19.795 ms/op 1.08
mainnet_e81889 - altair processRegistryUpdates 813.00 ns/op 565.00 ns/op 1.44
mainnet_e81889 - altair processSlashings 372.00 ns/op 137.00 ns/op 2.72
mainnet_e81889 - altair processEth1DataReset 369.00 ns/op 128.00 ns/op 2.88
mainnet_e81889 - altair processEffectiveBalanceUpdates 5.7968 ms/op 1.7601 ms/op 3.29
mainnet_e81889 - altair processSlashingsReset 964.00 ns/op 694.00 ns/op 1.39
mainnet_e81889 - altair processRandaoMixesReset 1.7440 us/op 1.1210 us/op 1.56
mainnet_e81889 - altair processHistoricalRootsUpdate 375.00 ns/op 133.00 ns/op 2.82
mainnet_e81889 - altair processParticipationFlagUpdates 677.00 ns/op 433.00 ns/op 1.56
mainnet_e81889 - altair processSyncCommitteeUpdates 345.00 ns/op 117.00 ns/op 2.95
mainnet_e81889 - altair afterProcessEpoch 42.432 ms/op 43.501 ms/op 0.98
capella processEpoch - mainnet_e217614 905.73 ms/op 780.16 ms/op 1.16
mainnet_e217614 - capella beforeProcessEpoch 61.716 ms/op 57.543 ms/op 1.07
mainnet_e217614 - capella processJustificationAndFinalization 7.6540 us/op 5.4830 us/op 1.40
mainnet_e217614 - capella processInactivityUpdates 16.480 ms/op 11.423 ms/op 1.44
mainnet_e217614 - capella processRewardsAndPenalties 95.592 ms/op 91.911 ms/op 1.04
mainnet_e217614 - capella processRegistryUpdates 4.7410 us/op 4.6530 us/op 1.02
mainnet_e217614 - capella processSlashings 376.00 ns/op 131.00 ns/op 2.87
mainnet_e217614 - capella processEth1DataReset 370.00 ns/op 126.00 ns/op 2.94
mainnet_e217614 - capella processEffectiveBalanceUpdates 16.345 ms/op 8.4449 ms/op 1.94
mainnet_e217614 - capella processSlashingsReset 946.00 ns/op 674.00 ns/op 1.40
mainnet_e217614 - capella processRandaoMixesReset 1.8410 us/op 1.0410 us/op 1.77
mainnet_e217614 - capella processHistoricalRootsUpdate 377.00 ns/op 126.00 ns/op 2.99
mainnet_e217614 - capella processParticipationFlagUpdates 689.00 ns/op 419.00 ns/op 1.64
mainnet_e217614 - capella afterProcessEpoch 110.09 ms/op 110.85 ms/op 0.99
phase0 processEpoch - mainnet_e58758 376.63 ms/op 274.52 ms/op 1.37
mainnet_e58758 - phase0 beforeProcessEpoch 82.506 ms/op 56.788 ms/op 1.45
mainnet_e58758 - phase0 processJustificationAndFinalization 6.4880 us/op 5.5860 us/op 1.16
mainnet_e58758 - phase0 processRewardsAndPenalties 17.096 ms/op 15.674 ms/op 1.09
mainnet_e58758 - phase0 processRegistryUpdates 2.5150 us/op 2.2610 us/op 1.11
mainnet_e58758 - phase0 processSlashings 378.00 ns/op 256.00 ns/op 1.48
mainnet_e58758 - phase0 processEth1DataReset 373.00 ns/op 131.00 ns/op 2.85
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 4.4513 ms/op 863.10 us/op 5.16
mainnet_e58758 - phase0 processSlashingsReset 1.2000 us/op 852.00 ns/op 1.41
mainnet_e58758 - phase0 processRandaoMixesReset 1.4340 us/op 1.0990 us/op 1.30
mainnet_e58758 - phase0 processHistoricalRootsUpdate 378.00 ns/op 132.00 ns/op 2.86
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.3560 us/op 960.00 ns/op 1.41
mainnet_e58758 - phase0 afterProcessEpoch 35.027 ms/op 33.471 ms/op 1.05
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0090 ms/op 1.0212 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.2864 ms/op 1.6336 ms/op 2.01
altair processInactivityUpdates - 250000 normalcase 12.844 ms/op 10.583 ms/op 1.21
altair processInactivityUpdates - 250000 worstcase 12.916 ms/op 10.613 ms/op 1.22
phase0 processRegistryUpdates - 250000 normalcase 2.4540 us/op 2.2770 us/op 1.08
phase0 processRegistryUpdates - 250000 badcase_full_deposits 140.85 us/op 147.14 us/op 0.96
phase0 processRegistryUpdates - 250000 worstcase 0.5 71.479 ms/op 59.306 ms/op 1.21
altair processRewardsAndPenalties - 250000 normalcase 16.362 ms/op 13.827 ms/op 1.18
altair processRewardsAndPenalties - 250000 worstcase 16.022 ms/op 13.516 ms/op 1.19
phase0 getAttestationDeltas - 250000 normalcase 5.3231 ms/op 5.3247 ms/op 1.00
phase0 getAttestationDeltas - 250000 worstcase 5.5308 ms/op 5.3756 ms/op 1.03
phase0 processSlashings - 250000 worstcase 59.570 us/op 60.273 us/op 0.99
altair processSyncCommitteeUpdates - 250000 13.323 ms/op 9.9461 ms/op 1.34
BeaconState.hashTreeRoot - No change 416.00 ns/op 173.00 ns/op 2.40
BeaconState.hashTreeRoot - 1 full validator 81.881 us/op 56.923 us/op 1.44
BeaconState.hashTreeRoot - 32 full validator 820.97 us/op 665.08 us/op 1.23
BeaconState.hashTreeRoot - 512 full validator 9.5048 ms/op 5.8858 ms/op 1.61
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 111.41 us/op 68.798 us/op 1.62
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3966 ms/op 1.0610 ms/op 1.32
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 22.693 ms/op 11.897 ms/op 1.91
BeaconState.hashTreeRoot - 1 balances 85.940 us/op 71.137 us/op 1.21
BeaconState.hashTreeRoot - 32 balances 727.03 us/op 562.37 us/op 1.29
BeaconState.hashTreeRoot - 512 balances 7.6327 ms/op 4.6270 ms/op 1.65
BeaconState.hashTreeRoot - 250000 balances 128.02 ms/op 106.70 ms/op 1.20
aggregationBits - 2048 els - zipIndexesInBitList 20.498 us/op 19.844 us/op 1.03
regular array get 100000 times 22.728 us/op 22.863 us/op 0.99
wrappedArray get 100000 times 22.631 us/op 22.756 us/op 0.99
arrayWithProxy get 100000 times 14.209 ms/op 17.410 ms/op 0.82
ssz.Root.equals 21.624 ns/op 21.518 ns/op 1.00
byteArrayEquals 21.237 ns/op 21.170 ns/op 1.00
Buffer.compare 8.9750 ns/op 9.3030 ns/op 0.96
processSlot - 1 slots 11.653 us/op 7.9370 us/op 1.47
processSlot - 32 slots 2.0441 ms/op 1.5649 ms/op 1.31
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 5.6337 ms/op 1.9117 ms/op 2.95
getCommitteeAssignments - req 1 vs - 250000 vc 1.6660 ms/op 1.6804 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.4614 ms/op 3.3894 ms/op 1.02
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6999 ms/op 3.6354 ms/op 1.02
findModifiedValidators - 10000 modified validators 802.71 ms/op 650.38 ms/op 1.23
findModifiedValidators - 1000 modified validators 499.63 ms/op 674.03 ms/op 0.74
findModifiedValidators - 100 modified validators 355.78 ms/op 383.39 ms/op 0.93
findModifiedValidators - 10 modified validators 241.45 ms/op 146.11 ms/op 1.65
findModifiedValidators - 1 modified validators 156.11 ms/op 157.95 ms/op 0.99
findModifiedValidators - no difference 149.52 ms/op 160.99 ms/op 0.93
migrate state 1500000 validators, 3400 modified, 2000 new 3.1603 s/op 2.6809 s/op 1.18
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.6600 ns/op 3.7000 ns/op 1.53
state getBlockRootAtSlot - 250000 vs - 7PWei 397.80 ns/op 270.43 ns/op 1.47
computeProposerIndex 100000 validators 1.3333 ms/op 1.3293 ms/op 1.00
getNextSyncCommitteeIndices 1000 validators 2.8394 ms/op 2.8647 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 24.665 ms/op 25.300 ms/op 0.97
getNextSyncCommitteeIndices 100000 validators 89.131 ms/op 87.516 ms/op 1.02
computeProposers - vc 250000 546.02 us/op 548.54 us/op 1.00
computeEpochShuffling - vc 250000 39.480 ms/op 39.375 ms/op 1.00
getNextSyncCommittee - vc 250000 9.8918 ms/op 9.5858 ms/op 1.03
nodejs block root to RootHex using toHex 98.062 ns/op 103.12 ns/op 0.95
nodejs block root to RootHex using toRootHex 60.941 ns/op 67.877 ns/op 0.90
nodejs fromHex(blob) 732.13 us/op 792.46 us/op 0.92
nodejs fromHexInto(blob) 619.16 us/op 649.46 us/op 0.95
nodejs block root to RootHex using the deprecated toHexString 481.48 ns/op 491.75 ns/op 0.98
nodejs byteArrayEquals 32 bytes (block root) 25.784 ns/op 26.350 ns/op 0.98
nodejs byteArrayEquals 48 bytes (pubkey) 37.121 ns/op 38.259 ns/op 0.97
nodejs byteArrayEquals 96 bytes (signature) 33.304 ns/op 36.405 ns/op 0.91
nodejs byteArrayEquals 1024 bytes 41.952 ns/op 43.771 ns/op 0.96
nodejs byteArrayEquals 131072 bytes (blob) 1.7542 us/op 1.7840 us/op 0.98
browser block root to RootHex using toHex 144.30 ns/op 147.11 ns/op 0.98
browser block root to RootHex using toRootHex 129.76 ns/op 132.43 ns/op 0.98
browser fromHex(blob) 1.5577 ms/op 1.6748 ms/op 0.93
browser fromHexInto(blob) 619.97 us/op 654.91 us/op 0.95
browser block root to RootHex using the deprecated toHexString 338.18 ns/op 345.30 ns/op 0.98
browser byteArrayEquals 32 bytes (block root) 27.475 ns/op 28.109 ns/op 0.98
browser byteArrayEquals 48 bytes (pubkey) 38.753 ns/op 39.616 ns/op 0.98
browser byteArrayEquals 96 bytes (signature) 72.409 ns/op 74.107 ns/op 0.98
browser byteArrayEquals 1024 bytes 736.58 ns/op 755.51 ns/op 0.97
browser byteArrayEquals 131072 bytes (blob) 93.390 us/op 95.201 us/op 0.98

by benchmarkbot/action

@twoeths twoeths left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lgtm, the proposer index check was removed in the spec here

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.

3 participants