Skip to content

feat: implement EIP-8045 exclude slashed validators from proposing#9422

Open
nflaig wants to merge 2 commits into
unstablefrom
nflaig/eip-8045
Open

feat: implement EIP-8045 exclude slashed validators from proposing#9422
nflaig wants to merge 2 commits into
unstablefrom
nflaig/eip-8045

Conversation

@nflaig
Copy link
Copy Markdown
Member

@nflaig nflaig commented May 29, 2026

@nflaig nflaig requested a review from a team as a code owner May 29, 2026 14:23
Copy link
Copy Markdown
Contributor

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

Choose a reason for hiding this comment

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

Code Review

This pull request updates the processProposerLookahead function to exclude slashed validators from proposing under EIP-8045, specifically when the fork is greater than or equal to ForkSeq.gloas. It filters shuffling.activeIndices using the FLAG_UNSLASHED flag before passing them to computeProposerIndices. There are no review comments, so I have no feedback to provide.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 29, 2026

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 13856c5 Previous: edb7c53 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.3055 ms/op 894.42 us/op 1.46
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 41.173 us/op 42.097 us/op 0.98
BLS verify - blst 754.19 us/op 732.37 us/op 1.03
BLS verifyMultipleSignatures 3 - blst 1.3831 ms/op 1.3405 ms/op 1.03
BLS verifyMultipleSignatures 8 - blst 2.2486 ms/op 2.1105 ms/op 1.07
BLS verifyMultipleSignatures 32 - blst 7.0015 ms/op 6.4824 ms/op 1.08
BLS verifyMultipleSignatures 64 - blst 13.516 ms/op 12.690 ms/op 1.07
BLS verifyMultipleSignatures 128 - blst 26.459 ms/op 24.879 ms/op 1.06
BLS deserializing 10000 signatures 652.91 ms/op 619.28 ms/op 1.05
BLS deserializing 100000 signatures 6.5148 s/op 6.2975 s/op 1.03
BLS verifyMultipleSignatures - same message - 3 - blst 716.18 us/op 761.59 us/op 0.94
BLS verifyMultipleSignatures - same message - 8 - blst 952.74 us/op 888.08 us/op 1.07
BLS verifyMultipleSignatures - same message - 32 - blst 1.5347 ms/op 1.4773 ms/op 1.04
BLS verifyMultipleSignatures - same message - 64 - blst 2.4340 ms/op 2.4246 ms/op 1.00
BLS verifyMultipleSignatures - same message - 128 - blst 4.1478 ms/op 4.0663 ms/op 1.02
BLS aggregatePubkeys 32 - blst 18.136 us/op 17.597 us/op 1.03
BLS aggregatePubkeys 128 - blst 64.273 us/op 63.931 us/op 1.01
getSlashingsAndExits - default max 53.517 us/op 47.540 us/op 1.13
getSlashingsAndExits - 2k 392.19 us/op 354.47 us/op 1.11
proposeBlockBody type=full, size=empty 778.15 us/op 842.19 us/op 0.92
isKnown best case - 1 super set check 164.00 ns/op 174.00 ns/op 0.94
isKnown normal case - 2 super set checks 168.00 ns/op 166.00 ns/op 1.01
isKnown worse case - 16 super set checks 167.00 ns/op 167.00 ns/op 1.00
validate api signedAggregateAndProof - struct 1.5401 ms/op 1.4982 ms/op 1.03
validate gossip signedAggregateAndProof - struct 1.5280 ms/op 1.5075 ms/op 1.01
batch validate gossip attestation - vc 640000 - chunk 32 108.32 us/op 107.29 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 64 94.497 us/op 96.029 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 128 88.241 us/op 89.847 us/op 0.98
batch validate gossip attestation - vc 640000 - chunk 256 84.645 us/op 87.323 us/op 0.97
bytes32 toHexString 296.00 ns/op 293.00 ns/op 1.01
bytes32 Buffer.toString(hex) 164.00 ns/op 166.00 ns/op 0.99
bytes32 Buffer.toString(hex) from Uint8Array 231.00 ns/op 223.00 ns/op 1.04
bytes32 Buffer.toString(hex) + 0x 164.00 ns/op 169.00 ns/op 0.97
Return object 10000 times 0.21620 ns/op 0.21490 ns/op 1.01
Throw Error 10000 times 3.4398 us/op 3.2943 us/op 1.04
toHex 92.541 ns/op 96.687 ns/op 0.96
Buffer.from 85.396 ns/op 79.377 ns/op 1.08
shared Buffer 58.741 ns/op 51.895 ns/op 1.13
fastMsgIdFn sha256 / 200 bytes 1.4740 us/op 1.4400 us/op 1.02
fastMsgIdFn h32 xxhash / 200 bytes 153.00 ns/op 162.00 ns/op 0.94
fastMsgIdFn h64 xxhash / 200 bytes 206.00 ns/op 207.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 4.7720 us/op 4.7150 us/op 1.01
fastMsgIdFn h32 xxhash / 1000 bytes 244.00 ns/op 243.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 1000 bytes 256.00 ns/op 249.00 ns/op 1.03
fastMsgIdFn sha256 / 10000 bytes 42.324 us/op 41.076 us/op 1.03
fastMsgIdFn h32 xxhash / 10000 bytes 1.2760 us/op 1.2680 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 831.00 ns/op 813.00 ns/op 1.02
send data - 1000 256B messages 4.1540 ms/op 4.4352 ms/op 0.94
send data - 1000 512B messages 4.2659 ms/op 4.4465 ms/op 0.96
send data - 1000 1024B messages 4.3968 ms/op 4.8800 ms/op 0.90
send data - 1000 1200B messages 4.9189 ms/op 5.1464 ms/op 0.96
send data - 1000 2048B messages 4.8302 ms/op 5.0768 ms/op 0.95
send data - 1000 4096B messages 5.6867 ms/op 5.9326 ms/op 0.96
send data - 1000 16384B messages 18.709 ms/op 15.717 ms/op 1.19
send data - 1000 65536B messages 157.75 ms/op 155.98 ms/op 1.01
enrSubnets - fastDeserialize 64 bits 788.00 ns/op 717.00 ns/op 1.10
enrSubnets - ssz BitVector 64 bits 268.00 ns/op 272.00 ns/op 0.99
enrSubnets - fastDeserialize 4 bits 102.00 ns/op 103.00 ns/op 0.99
enrSubnets - ssz BitVector 4 bits 273.00 ns/op 272.00 ns/op 1.00
prioritizePeers score -10:0 att 32-0.1 sync 2-0 207.64 us/op 199.81 us/op 1.04
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 236.76 us/op 234.17 us/op 1.01
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 341.33 us/op 342.89 us/op 1.00
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 605.90 us/op 607.35 us/op 1.00
prioritizePeers score 0:0 att 64-1 sync 4-1 712.10 us/op 700.36 us/op 1.02
array of 16000 items push then shift 1.3129 us/op 1.2488 us/op 1.05
LinkedList of 16000 items push then shift 6.8470 ns/op 7.6340 ns/op 0.90
array of 16000 items push then pop 72.777 ns/op 67.742 ns/op 1.07
LinkedList of 16000 items push then pop 6.1200 ns/op 5.9710 ns/op 1.02
array of 24000 items push then shift 1.9394 us/op 1.8704 us/op 1.04
LinkedList of 24000 items push then shift 6.6290 ns/op 7.5130 ns/op 0.88
array of 24000 items push then pop 104.53 ns/op 96.469 ns/op 1.08
LinkedList of 24000 items push then pop 6.0410 ns/op 6.0450 ns/op 1.00
intersect bitArray bitLen 8 4.7930 ns/op 4.6920 ns/op 1.02
intersect array and set length 8 30.432 ns/op 29.246 ns/op 1.04
intersect bitArray bitLen 128 24.198 ns/op 23.763 ns/op 1.02
intersect array and set length 128 509.00 ns/op 489.17 ns/op 1.04
bitArray.getTrueBitIndexes() bitLen 128 1.0850 us/op 1.0130 us/op 1.07
bitArray.getTrueBitIndexes() bitLen 248 1.8440 us/op 1.7190 us/op 1.07
bitArray.getTrueBitIndexes() bitLen 512 3.6720 us/op 3.5520 us/op 1.03
Full columns - reconstruct all 6 blobs 256.59 us/op 165.50 us/op 1.55
Full columns - reconstruct half of the blobs out of 6 84.439 us/op 99.107 us/op 0.85
Full columns - reconstruct single blob out of 6 35.387 us/op 34.561 us/op 1.02
Half columns - reconstruct all 6 blobs 387.74 ms/op 392.55 ms/op 0.99
Half columns - reconstruct half of the blobs out of 6 196.67 ms/op 199.38 ms/op 0.99
Half columns - reconstruct single blob out of 6 68.316 ms/op 71.126 ms/op 0.96
Full columns - reconstruct all 10 blobs 183.15 us/op 385.66 us/op 0.47
Full columns - reconstruct half of the blobs out of 10 110.58 us/op 140.68 us/op 0.79
Full columns - reconstruct single blob out of 10 32.362 us/op 32.596 us/op 0.99
Half columns - reconstruct all 10 blobs 641.77 ms/op 644.07 ms/op 1.00
Half columns - reconstruct half of the blobs out of 10 320.54 ms/op 324.28 ms/op 0.99
Half columns - reconstruct single blob out of 10 67.973 ms/op 68.655 ms/op 0.99
Full columns - reconstruct all 20 blobs 552.68 us/op 606.80 us/op 0.91
Full columns - reconstruct half of the blobs out of 20 237.50 us/op 178.16 us/op 1.33
Full columns - reconstruct single blob out of 20 32.717 us/op 31.842 us/op 1.03
Half columns - reconstruct all 20 blobs 1.2634 s/op 1.2656 s/op 1.00
Half columns - reconstruct half of the blobs out of 20 636.12 ms/op 646.71 ms/op 0.98
Half columns - reconstruct single blob out of 20 69.455 ms/op 69.815 ms/op 0.99
Set add up to 64 items then delete first 2.7899 us/op 2.5586 us/op 1.09
OrderedSet add up to 64 items then delete first 3.6025 us/op 3.3893 us/op 1.06
Set add up to 64 items then delete last 2.5336 us/op 2.3127 us/op 1.10
OrderedSet add up to 64 items then delete last 3.4392 us/op 3.3728 us/op 1.02
Set add up to 64 items then delete middle 2.2395 us/op 2.1438 us/op 1.04
OrderedSet add up to 64 items then delete middle 4.8193 us/op 4.8676 us/op 0.99
Set add up to 128 items then delete first 4.4634 us/op 4.1208 us/op 1.08
OrderedSet add up to 128 items then delete first 6.8773 us/op 6.1748 us/op 1.11
Set add up to 128 items then delete last 4.3096 us/op 4.0368 us/op 1.07
OrderedSet add up to 128 items then delete last 6.0713 us/op 6.1378 us/op 0.99
Set add up to 128 items then delete middle 4.0414 us/op 3.9196 us/op 1.03
OrderedSet add up to 128 items then delete middle 11.818 us/op 11.887 us/op 0.99
Set add up to 256 items then delete first 8.2543 us/op 7.6890 us/op 1.07
OrderedSet add up to 256 items then delete first 12.514 us/op 12.571 us/op 1.00
Set add up to 256 items then delete last 7.9777 us/op 7.7562 us/op 1.03
OrderedSet add up to 256 items then delete last 11.784 us/op 12.058 us/op 0.98
Set add up to 256 items then delete middle 7.8153 us/op 7.8362 us/op 1.00
OrderedSet add up to 256 items then delete middle 35.633 us/op 37.246 us/op 0.96
pass gossip attestations to forkchoice per slot 2.5350 ms/op 2.5930 ms/op 0.98
forkChoice updateHead vc 100000 bc 64 eq 0 480.64 us/op 383.90 us/op 1.25
forkChoice updateHead vc 600000 bc 64 eq 0 2.8660 ms/op 2.3367 ms/op 1.23
forkChoice updateHead vc 1000000 bc 64 eq 0 4.7767 ms/op 3.8811 ms/op 1.23
forkChoice updateHead vc 600000 bc 320 eq 0 2.8666 ms/op 2.3296 ms/op 1.23
forkChoice updateHead vc 600000 bc 1200 eq 0 2.9196 ms/op 2.5218 ms/op 1.16
forkChoice updateHead vc 600000 bc 7200 eq 0 3.2662 ms/op 2.9193 ms/op 1.12
forkChoice updateHead vc 600000 bc 64 eq 1000 3.4676 ms/op 2.9003 ms/op 1.20
forkChoice updateHead vc 600000 bc 64 eq 10000 3.4075 ms/op 3.0362 ms/op 1.12
forkChoice updateHead vc 600000 bc 64 eq 300000 7.3045 ms/op 6.8176 ms/op 1.07
computeDeltas 1400000 validators 0% inactive 14.190 ms/op 12.634 ms/op 1.12
computeDeltas 1400000 validators 10% inactive 13.493 ms/op 11.639 ms/op 1.16
computeDeltas 1400000 validators 20% inactive 11.961 ms/op 10.703 ms/op 1.12
computeDeltas 1400000 validators 50% inactive 9.0827 ms/op 8.2531 ms/op 1.10
computeDeltas 2100000 validators 0% inactive 20.787 ms/op 18.795 ms/op 1.11
computeDeltas 2100000 validators 10% inactive 19.645 ms/op 17.556 ms/op 1.12
computeDeltas 2100000 validators 20% inactive 18.182 ms/op 15.908 ms/op 1.14
computeDeltas 2100000 validators 50% inactive 14.372 ms/op 10.471 ms/op 1.37
altair processAttestation - 250000 vs - 7PWei normalcase 1.7458 ms/op 1.8715 ms/op 0.93
altair processAttestation - 250000 vs - 7PWei worstcase 2.5402 ms/op 3.3651 ms/op 0.75
altair processAttestation - setStatus - 1/6 committees join 103.78 us/op 99.779 us/op 1.04
altair processAttestation - setStatus - 1/3 committees join 214.01 us/op 193.70 us/op 1.10
altair processAttestation - setStatus - 1/2 committees join 290.57 us/op 279.29 us/op 1.04
altair processAttestation - setStatus - 2/3 committees join 375.51 us/op 362.48 us/op 1.04
altair processAttestation - setStatus - 4/5 committees join 523.50 us/op 511.44 us/op 1.02
altair processAttestation - setStatus - 100% committees join 619.30 us/op 589.04 us/op 1.05
altair processBlock - 250000 vs - 7PWei normalcase 3.3662 ms/op 3.9334 ms/op 0.86
altair processBlock - 250000 vs - 7PWei normalcase hashState 12.350 ms/op 16.403 ms/op 0.75
altair processBlock - 250000 vs - 7PWei worstcase 20.186 ms/op 23.045 ms/op 0.88
altair processBlock - 250000 vs - 7PWei worstcase hashState 40.514 ms/op 44.877 ms/op 0.90
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2958 ms/op 1.4197 ms/op 0.91
phase0 processBlock - 250000 vs - 7PWei worstcase 18.075 ms/op 17.236 ms/op 1.05
altair processEth1Data - 250000 vs - 7PWei normalcase 307.93 us/op 284.42 us/op 1.08
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 4.9550 us/op 3.1440 us/op 1.58
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.440 us/op 19.702 us/op 1.09
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.7850 us/op 5.2930 us/op 1.09
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.7450 us/op 3.2490 us/op 1.15
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 92.369 us/op 86.216 us/op 1.07
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4157 ms/op 1.3519 ms/op 1.05
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8673 ms/op 1.7968 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8662 ms/op 1.7991 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6894 ms/op 3.2912 ms/op 1.12
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.1224 ms/op 2.0286 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9997 ms/op 3.5296 ms/op 1.13
Tree 40 250000 create 317.28 ms/op 323.69 ms/op 0.98
Tree 40 250000 get(125000) 100.81 ns/op 91.931 ns/op 1.10
Tree 40 250000 set(125000) 1.0565 us/op 990.77 ns/op 1.07
Tree 40 250000 toArray() 9.3068 ms/op 13.797 ms/op 0.67
Tree 40 250000 iterate all - toArray() + loop 9.4791 ms/op 12.603 ms/op 0.75
Tree 40 250000 iterate all - get(i) 43.356 ms/op 38.924 ms/op 1.11
Array 250000 create 2.1697 ms/op 2.0966 ms/op 1.03
Array 250000 clone - spread 656.80 us/op 655.25 us/op 1.00
Array 250000 get(125000) 0.29400 ns/op 0.29500 ns/op 1.00
Array 250000 set(125000) 0.30200 ns/op 0.29500 ns/op 1.02
Array 250000 iterate all - loop 58.054 us/op 56.011 us/op 1.04
phase0 afterProcessEpoch - 250000 vs - 7PWei 39.115 ms/op 52.705 ms/op 0.74
Array.fill - length 1000000 2.5014 ms/op 2.1009 ms/op 1.19
Array push - length 1000000 8.4032 ms/op 9.4443 ms/op 0.89
Array.get 0.20956 ns/op 0.21014 ns/op 1.00
Uint8Array.get 0.25730 ns/op 0.24479 ns/op 1.05
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.103 ms/op 15.930 ms/op 1.01
altair processEpoch - mainnet_e81889 294.07 ms/op 273.09 ms/op 1.08
mainnet_e81889 - altair beforeProcessEpoch 44.288 ms/op 15.130 ms/op 2.93
mainnet_e81889 - altair processJustificationAndFinalization 6.5620 us/op 6.3760 us/op 1.03
mainnet_e81889 - altair processInactivityUpdates 3.7522 ms/op 6.5698 ms/op 0.57
mainnet_e81889 - altair processRewardsAndPenalties 17.964 ms/op 20.227 ms/op 0.89
mainnet_e81889 - altair processRegistryUpdates 537.00 ns/op 533.00 ns/op 1.01
mainnet_e81889 - altair processSlashings 137.00 ns/op 135.00 ns/op 1.01
mainnet_e81889 - altair processEth1DataReset 136.00 ns/op 131.00 ns/op 1.04
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7388 ms/op 3.5240 ms/op 0.49
mainnet_e81889 - altair processSlashingsReset 736.00 ns/op 712.00 ns/op 1.03
mainnet_e81889 - altair processRandaoMixesReset 1.1340 us/op 1.3320 us/op 0.85
mainnet_e81889 - altair processHistoricalRootsUpdate 135.00 ns/op 130.00 ns/op 1.04
mainnet_e81889 - altair processParticipationFlagUpdates 443.00 ns/op 441.00 ns/op 1.00
mainnet_e81889 - altair processSyncCommitteeUpdates 104.00 ns/op 106.00 ns/op 0.98
mainnet_e81889 - altair afterProcessEpoch 42.519 ms/op 43.869 ms/op 0.97
capella processEpoch - mainnet_e217614 807.82 ms/op 850.45 ms/op 0.95
mainnet_e217614 - capella beforeProcessEpoch 56.564 ms/op 57.411 ms/op 0.99
mainnet_e217614 - capella processJustificationAndFinalization 5.7860 us/op 6.8000 us/op 0.85
mainnet_e217614 - capella processInactivityUpdates 12.992 ms/op 15.535 ms/op 0.84
mainnet_e217614 - capella processRewardsAndPenalties 95.125 ms/op 95.929 ms/op 0.99
mainnet_e217614 - capella processRegistryUpdates 4.6000 us/op 4.6190 us/op 1.00
mainnet_e217614 - capella processSlashings 142.00 ns/op 137.00 ns/op 1.04
mainnet_e217614 - capella processEth1DataReset 135.00 ns/op 131.00 ns/op 1.03
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.7907 ms/op 16.378 ms/op 0.35
mainnet_e217614 - capella processSlashingsReset 711.00 ns/op 689.00 ns/op 1.03
mainnet_e217614 - capella processRandaoMixesReset 1.2050 us/op 1.3100 us/op 0.92
mainnet_e217614 - capella processHistoricalRootsUpdate 135.00 ns/op 131.00 ns/op 1.03
mainnet_e217614 - capella processParticipationFlagUpdates 442.00 ns/op 427.00 ns/op 1.04
mainnet_e217614 - capella afterProcessEpoch 114.76 ms/op 112.33 ms/op 1.02
phase0 processEpoch - mainnet_e58758 300.11 ms/op 320.64 ms/op 0.94
mainnet_e58758 - phase0 beforeProcessEpoch 60.921 ms/op 60.775 ms/op 1.00
mainnet_e58758 - phase0 processJustificationAndFinalization 6.1370 us/op 6.2660 us/op 0.98
mainnet_e58758 - phase0 processRewardsAndPenalties 15.972 ms/op 16.094 ms/op 0.99
mainnet_e58758 - phase0 processRegistryUpdates 2.3300 us/op 2.2740 us/op 1.02
mainnet_e58758 - phase0 processSlashings 141.00 ns/op 135.00 ns/op 1.04
mainnet_e58758 - phase0 processEth1DataReset 265.00 ns/op 128.00 ns/op 2.07
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 842.35 us/op 829.88 us/op 1.02
mainnet_e58758 - phase0 processSlashingsReset 913.00 ns/op 867.00 ns/op 1.05
mainnet_e58758 - phase0 processRandaoMixesReset 1.2320 us/op 1.8640 us/op 0.66
mainnet_e58758 - phase0 processHistoricalRootsUpdate 142.00 ns/op 134.00 ns/op 1.06
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1300 us/op 1.0260 us/op 1.10
mainnet_e58758 - phase0 afterProcessEpoch 35.570 ms/op 34.739 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.1240 ms/op 1.0025 ms/op 1.12
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6106 ms/op 2.3454 ms/op 0.69
altair processInactivityUpdates - 250000 normalcase 10.891 ms/op 10.744 ms/op 1.01
altair processInactivityUpdates - 250000 worstcase 10.898 ms/op 10.854 ms/op 1.00
phase0 processRegistryUpdates - 250000 normalcase 2.2660 us/op 2.3060 us/op 0.98
phase0 processRegistryUpdates - 250000 badcase_full_deposits 148.76 us/op 142.36 us/op 1.04
phase0 processRegistryUpdates - 250000 worstcase 0.5 51.265 ms/op 58.617 ms/op 0.87
altair processRewardsAndPenalties - 250000 normalcase 13.432 ms/op 15.152 ms/op 0.89
altair processRewardsAndPenalties - 250000 worstcase 13.002 ms/op 14.602 ms/op 0.89
phase0 getAttestationDeltas - 250000 normalcase 5.5518 ms/op 5.2137 ms/op 1.06
phase0 getAttestationDeltas - 250000 worstcase 5.5137 ms/op 5.5073 ms/op 1.00
phase0 processSlashings - 250000 worstcase 62.834 us/op 57.819 us/op 1.09
altair processSyncCommitteeUpdates - 250000 10.278 ms/op 9.8940 ms/op 1.04
BeaconState.hashTreeRoot - No change 172.00 ns/op 166.00 ns/op 1.04
BeaconState.hashTreeRoot - 1 full validator 75.107 us/op 79.465 us/op 0.95
BeaconState.hashTreeRoot - 32 full validator 855.81 us/op 866.14 us/op 0.99
BeaconState.hashTreeRoot - 512 full validator 7.6669 ms/op 8.0182 ms/op 0.96
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 80.765 us/op 98.058 us/op 0.82
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5490 ms/op 1.4901 ms/op 1.04
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.144 ms/op 16.363 ms/op 1.05
BeaconState.hashTreeRoot - 1 balances 81.036 us/op 75.852 us/op 1.07
BeaconState.hashTreeRoot - 32 balances 831.39 us/op 758.69 us/op 1.10
BeaconState.hashTreeRoot - 512 balances 6.9378 ms/op 6.2516 ms/op 1.11
BeaconState.hashTreeRoot - 250000 balances 134.68 ms/op 130.00 ms/op 1.04
aggregationBits - 2048 els - zipIndexesInBitList 19.729 us/op 18.985 us/op 1.04
regular array get 100000 times 23.266 us/op 22.445 us/op 1.04
wrappedArray get 100000 times 23.259 us/op 22.625 us/op 1.03
arrayWithProxy get 100000 times 12.773 ms/op 10.241 ms/op 1.25
ssz.Root.equals 21.778 ns/op 21.024 ns/op 1.04
byteArrayEquals 21.595 ns/op 20.815 ns/op 1.04
Buffer.compare 8.9980 ns/op 8.6490 ns/op 1.04
processSlot - 1 slots 9.3360 us/op 10.899 us/op 0.86
processSlot - 32 slots 1.6053 ms/op 2.0637 ms/op 0.78
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.7490 ms/op 3.5655 ms/op 1.05
getCommitteeAssignments - req 1 vs - 250000 vc 1.6952 ms/op 1.6808 ms/op 1.01
getCommitteeAssignments - req 100 vs - 250000 vc 3.4527 ms/op 3.4125 ms/op 1.01
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7142 ms/op 3.6726 ms/op 1.01
findModifiedValidators - 10000 modified validators 798.28 ms/op 689.94 ms/op 1.16
findModifiedValidators - 1000 modified validators 455.44 ms/op 426.30 ms/op 1.07
findModifiedValidators - 100 modified validators 317.65 ms/op 306.99 ms/op 1.03
findModifiedValidators - 10 modified validators 251.09 ms/op 241.70 ms/op 1.04
findModifiedValidators - 1 modified validators 168.53 ms/op 169.00 ms/op 1.00
findModifiedValidators - no difference 211.89 ms/op 155.20 ms/op 1.37
migrate state 1500000 validators, 3400 modified, 2000 new 3.1107 s/op 3.1282 s/op 0.99
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.7900 ns/op 3.6900 ns/op 1.03
state getBlockRootAtSlot - 250000 vs - 7PWei 363.13 ns/op 366.94 ns/op 0.99
computeProposerIndex 100000 validators 1.3736 ms/op 1.3538 ms/op 1.01
getNextSyncCommitteeIndices 1000 validators 2.9199 ms/op 3.2535 ms/op 0.90
getNextSyncCommitteeIndices 10000 validators 25.934 ms/op 28.569 ms/op 0.91
getNextSyncCommitteeIndices 100000 validators 91.391 ms/op 94.905 ms/op 0.96
computeProposers - vc 250000 565.86 us/op 546.57 us/op 1.04
computeEpochShuffling - vc 250000 41.233 ms/op 40.120 ms/op 1.03
getNextSyncCommittee - vc 250000 9.7536 ms/op 9.4899 ms/op 1.03
nodejs block root to RootHex using toHex 95.932 ns/op 88.410 ns/op 1.09
nodejs block root to RootHex using toRootHex 58.885 ns/op 53.902 ns/op 1.09
nodejs fromHex(blob) 774.21 us/op 794.99 us/op 0.97
nodejs fromHexInto(blob) 663.63 us/op 635.13 us/op 1.04
nodejs block root to RootHex using the deprecated toHexString 551.81 ns/op 465.29 ns/op 1.19
nodejs byteArrayEquals 32 bytes (block root) 26.431 ns/op 25.950 ns/op 1.02
nodejs byteArrayEquals 48 bytes (pubkey) 38.293 ns/op 37.486 ns/op 1.02
nodejs byteArrayEquals 96 bytes (signature) 39.363 ns/op 33.625 ns/op 1.17
nodejs byteArrayEquals 1024 bytes 45.360 ns/op 40.955 ns/op 1.11
nodejs byteArrayEquals 131072 bytes (blob) 1.7799 us/op 1.7697 us/op 1.01
browser block root to RootHex using toHex 147.55 ns/op 145.85 ns/op 1.01
browser block root to RootHex using toRootHex 133.31 ns/op 132.03 ns/op 1.01
browser fromHex(blob) 1.5692 ms/op 1.6923 ms/op 0.93
browser fromHexInto(blob) 669.16 us/op 640.37 us/op 1.04
browser block root to RootHex using the deprecated toHexString 388.96 ns/op 470.99 ns/op 0.83
browser byteArrayEquals 32 bytes (block root) 27.964 ns/op 27.901 ns/op 1.00
browser byteArrayEquals 48 bytes (pubkey) 39.491 ns/op 39.620 ns/op 1.00
browser byteArrayEquals 96 bytes (signature) 73.812 ns/op 73.607 ns/op 1.00
browser byteArrayEquals 1024 bytes 751.15 ns/op 758.03 ns/op 0.99
browser byteArrayEquals 131072 bytes (blob) 94.845 us/op 93.872 us/op 1.01

by benchmarkbot/action

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.

1 participant