Skip to content

refactor: align bid filtering with consensus spec - #9182

Merged
nflaig merged 3 commits into
unstablefrom
nflaig/bid-filtering-key-comment
Apr 6, 2026
Merged

refactor: align bid filtering with consensus spec#9182
nflaig merged 3 commits into
unstablefrom
nflaig/bid-filtering-key-comment

Conversation

@nflaig

@nflaig nflaig commented Apr 5, 2026

Copy link
Copy Markdown
Member

Update to match ethereum/consensus-specs#5001 wording. The underlying implementation already keys bids by the (slot, parent_block_root, parent_block_hash) tuple.

Update to match consensus-specs#5001 wording. The underlying
implementation already keys bids by the (slot, parent_block_root,
parent_block_hash) tuple.
@nflaig
nflaig requested a review from a team as a code owner April 5, 2026 09:58

@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 updates the documentation comment in executionPayloadBid.ts to clarify that bids are evaluated based on a tuple of slot, parent block hash, and parent block root. A review comment identifies an inconsistency in the field ordering within the comment compared to the actual implementation and provides a suggestion to align them.

Comment thread packages/beacon-node/src/chain/validation/executionPayloadBid.ts Outdated
Comment thread packages/beacon-node/src/chain/validation/executionPayloadBid.ts Outdated
@nflaig nflaig changed the title docs: align bid filtering key comment with spec refactor: align bid filtering more with consensus spec Apr 5, 2026
@github-actions

github-actions Bot commented Apr 5, 2026

Copy link
Copy Markdown
Contributor

Performance Report

🚀🚀 Significant benchmark improvement detected

Benchmark suite Current: 6e2d4de Previous: f866249 Ratio
Full columns - reconstruct all 20 blobs 504.30 us/op 1.8523 ms/op 0.27
Array.fill - length 1000000 2.0700 ms/op 6.6628 ms/op 0.31
Full benchmark results
Benchmark suite Current: 6e2d4de Previous: f866249 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 879.92 us/op 893.05 us/op 0.99
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.615 us/op 38.415 us/op 0.98
BLS verify - blst 679.97 us/op 693.57 us/op 0.98
BLS verifyMultipleSignatures 3 - blst 1.2993 ms/op 1.3078 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst 2.0483 ms/op 2.0628 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst 6.3787 ms/op 6.8791 ms/op 0.93
BLS verifyMultipleSignatures 64 - blst 12.374 ms/op 12.540 ms/op 0.99
BLS verifyMultipleSignatures 128 - blst 24.735 ms/op 24.404 ms/op 1.01
BLS deserializing 10000 signatures 614.75 ms/op 624.69 ms/op 0.98
BLS deserializing 100000 signatures 6.1439 s/op 6.2284 s/op 0.99
BLS verifyMultipleSignatures - same message - 3 - blst 683.45 us/op 783.37 us/op 0.87
BLS verifyMultipleSignatures - same message - 8 - blst 853.74 us/op 809.42 us/op 1.05
BLS verifyMultipleSignatures - same message - 32 - blst 1.4966 ms/op 1.4841 ms/op 1.01
BLS verifyMultipleSignatures - same message - 64 - blst 2.2898 ms/op 2.2910 ms/op 1.00
BLS verifyMultipleSignatures - same message - 128 - blst 3.9430 ms/op 3.8881 ms/op 1.01
BLS aggregatePubkeys 32 - blst 17.249 us/op 17.248 us/op 1.00
BLS aggregatePubkeys 128 - blst 62.221 us/op 61.787 us/op 1.01
getSlashingsAndExits - default max 43.598 us/op 46.194 us/op 0.94
getSlashingsAndExits - 2k 334.72 us/op 341.61 us/op 0.98
proposeBlockBody type=full, size=empty 660.09 us/op 592.10 us/op 1.11
isKnown best case - 1 super set check 163.00 ns/op 183.00 ns/op 0.89
isKnown normal case - 2 super set checks 159.00 ns/op 191.00 ns/op 0.83
isKnown worse case - 16 super set checks 163.00 ns/op 184.00 ns/op 0.89
validate api signedAggregateAndProof - struct 1.4554 ms/op 1.4921 ms/op 0.98
validate gossip signedAggregateAndProof - struct 1.4706 ms/op 1.4835 ms/op 0.99
batch validate gossip attestation - vc 640000 - chunk 32 105.29 us/op 104.41 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 64 92.189 us/op 93.355 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 128 84.779 us/op 88.363 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 84.963 us/op 86.583 us/op 0.98
bytes32 toHexString 284.00 ns/op 302.00 ns/op 0.94
bytes32 Buffer.toString(hex) 176.00 ns/op 191.00 ns/op 0.92
bytes32 Buffer.toString(hex) from Uint8Array 260.00 ns/op 271.00 ns/op 0.96
bytes32 Buffer.toString(hex) + 0x 172.00 ns/op 193.00 ns/op 0.89
Return object 10000 times 0.21080 ns/op 0.21640 ns/op 0.97
Throw Error 10000 times 3.2791 us/op 3.3296 us/op 0.98
toHex 102.52 ns/op 107.60 ns/op 0.95
Buffer.from 89.396 ns/op 87.879 ns/op 1.02
shared Buffer 57.881 ns/op 59.493 ns/op 0.97
fastMsgIdFn sha256 / 200 bytes 1.4350 us/op 1.5030 us/op 0.95
fastMsgIdFn h32 xxhash / 200 bytes 154.00 ns/op 173.00 ns/op 0.89
fastMsgIdFn h64 xxhash / 200 bytes 201.00 ns/op 226.00 ns/op 0.89
fastMsgIdFn sha256 / 1000 bytes 4.6280 us/op 4.6950 us/op 0.99
fastMsgIdFn h32 xxhash / 1000 bytes 244.00 ns/op 261.00 ns/op 0.93
fastMsgIdFn h64 xxhash / 1000 bytes 250.00 ns/op 266.00 ns/op 0.94
fastMsgIdFn sha256 / 10000 bytes 41.040 us/op 41.541 us/op 0.99
fastMsgIdFn h32 xxhash / 10000 bytes 1.2640 us/op 1.2570 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 811.00 ns/op 816.00 ns/op 0.99
send data - 1000 256B messages 4.2980 ms/op 4.2544 ms/op 1.01
send data - 1000 512B messages 4.3405 ms/op 4.4394 ms/op 0.98
send data - 1000 1024B messages 4.6129 ms/op 4.4547 ms/op 1.04
send data - 1000 1200B messages 4.7272 ms/op 5.0626 ms/op 0.93
send data - 1000 2048B messages 4.8110 ms/op 5.0141 ms/op 0.96
send data - 1000 4096B messages 5.5799 ms/op 5.7487 ms/op 0.97
send data - 1000 16384B messages 16.109 ms/op 25.322 ms/op 0.64
send data - 1000 65536B messages 126.50 ms/op 152.49 ms/op 0.83
enrSubnets - fastDeserialize 64 bits 714.00 ns/op 769.00 ns/op 0.93
enrSubnets - ssz BitVector 64 bits 261.00 ns/op 280.00 ns/op 0.93
enrSubnets - fastDeserialize 4 bits 104.00 ns/op 125.00 ns/op 0.83
enrSubnets - ssz BitVector 4 bits 262.00 ns/op 272.00 ns/op 0.96
prioritizePeers score -10:0 att 32-0.1 sync 2-0 200.73 us/op 203.27 us/op 0.99
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 227.80 us/op 235.94 us/op 0.97
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 330.67 us/op 337.67 us/op 0.98
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 592.69 us/op 607.70 us/op 0.98
prioritizePeers score 0:0 att 64-1 sync 4-1 688.92 us/op 693.53 us/op 0.99
array of 16000 items push then shift 1.2289 us/op 1.2611 us/op 0.97
LinkedList of 16000 items push then shift 7.4490 ns/op 7.2710 ns/op 1.02
array of 16000 items push then pop 66.526 ns/op 65.184 ns/op 1.02
LinkedList of 16000 items push then pop 5.9040 ns/op 5.7710 ns/op 1.02
array of 24000 items push then shift 1.8165 us/op 1.8202 us/op 1.00
LinkedList of 24000 items push then shift 7.0050 ns/op 6.7620 ns/op 1.04
array of 24000 items push then pop 93.281 ns/op 90.037 ns/op 1.04
LinkedList of 24000 items push then pop 5.9510 ns/op 5.7900 ns/op 1.03
intersect bitArray bitLen 8 4.6900 ns/op 4.5920 ns/op 1.02
intersect array and set length 8 28.638 ns/op 28.541 ns/op 1.00
intersect bitArray bitLen 128 23.516 ns/op 23.189 ns/op 1.01
intersect array and set length 128 488.04 ns/op 475.06 ns/op 1.03
bitArray.getTrueBitIndexes() bitLen 128 956.00 ns/op 1.0540 us/op 0.91
bitArray.getTrueBitIndexes() bitLen 248 1.7050 us/op 1.7290 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 512 3.5490 us/op 3.4340 us/op 1.03
Full columns - reconstruct all 6 blobs 166.91 us/op 190.66 us/op 0.88
Full columns - reconstruct half of the blobs out of 6 162.96 us/op 73.470 us/op 2.22
Full columns - reconstruct single blob out of 6 30.981 us/op 31.208 us/op 0.99
Half columns - reconstruct all 6 blobs 379.74 ms/op 379.75 ms/op 1.00
Half columns - reconstruct half of the blobs out of 6 190.55 ms/op 191.08 ms/op 1.00
Half columns - reconstruct single blob out of 6 67.623 ms/op 68.134 ms/op 0.99
Full columns - reconstruct all 10 blobs 275.47 us/op 320.45 us/op 0.86
Full columns - reconstruct half of the blobs out of 10 226.83 us/op 133.19 us/op 1.70
Full columns - reconstruct single blob out of 10 30.106 us/op 31.830 us/op 0.95
Half columns - reconstruct all 10 blobs 628.71 ms/op 631.97 ms/op 0.99
Half columns - reconstruct half of the blobs out of 10 317.31 ms/op 318.45 ms/op 1.00
Half columns - reconstruct single blob out of 10 68.049 ms/op 70.081 ms/op 0.97
Full columns - reconstruct all 20 blobs 504.30 us/op 1.8523 ms/op 0.27
Full columns - reconstruct half of the blobs out of 20 166.73 us/op 228.53 us/op 0.73
Full columns - reconstruct single blob out of 20 29.789 us/op 29.403 us/op 1.01
Half columns - reconstruct all 20 blobs 1.2586 s/op 1.2149 s/op 1.04
Half columns - reconstruct half of the blobs out of 20 636.34 ms/op 610.80 ms/op 1.04
Half columns - reconstruct single blob out of 20 70.770 ms/op 66.591 ms/op 1.06
Set add up to 64 items then delete first 2.1262 us/op 1.9609 us/op 1.08
OrderedSet add up to 64 items then delete first 3.3053 us/op 3.1491 us/op 1.05
Set add up to 64 items then delete last 2.0983 us/op 2.1073 us/op 1.00
OrderedSet add up to 64 items then delete last 3.3150 us/op 3.1741 us/op 1.04
Set add up to 64 items then delete middle 2.1456 us/op 2.0189 us/op 1.06
OrderedSet add up to 64 items then delete middle 5.0500 us/op 4.4835 us/op 1.13
Set add up to 128 items then delete first 4.2514 us/op 4.0364 us/op 1.05
OrderedSet add up to 128 items then delete first 6.4720 us/op 6.0489 us/op 1.07
Set add up to 128 items then delete last 3.8315 us/op 3.7659 us/op 1.02
OrderedSet add up to 128 items then delete last 5.7730 us/op 5.5836 us/op 1.03
Set add up to 128 items then delete middle 3.8865 us/op 3.6755 us/op 1.06
OrderedSet add up to 128 items then delete middle 11.962 us/op 11.131 us/op 1.07
Set add up to 256 items then delete first 7.8707 us/op 7.5028 us/op 1.05
OrderedSet add up to 256 items then delete first 12.327 us/op 11.523 us/op 1.07
Set add up to 256 items then delete last 7.6005 us/op 7.4708 us/op 1.02
OrderedSet add up to 256 items then delete last 11.846 us/op 10.997 us/op 1.08
Set add up to 256 items then delete middle 7.7368 us/op 7.2479 us/op 1.07
OrderedSet add up to 256 items then delete middle 35.941 us/op 33.049 us/op 1.09
pass gossip attestations to forkchoice per slot 2.5467 ms/op 2.4734 ms/op 1.03
forkChoice updateHead vc 100000 bc 64 eq 0 380.25 us/op 369.65 us/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 0 2.2644 ms/op 2.2074 ms/op 1.03
forkChoice updateHead vc 1000000 bc 64 eq 0 3.7895 ms/op 3.6922 ms/op 1.03
forkChoice updateHead vc 600000 bc 320 eq 0 2.2833 ms/op 2.2071 ms/op 1.03
forkChoice updateHead vc 600000 bc 1200 eq 0 2.3130 ms/op 2.2758 ms/op 1.02
forkChoice updateHead vc 600000 bc 7200 eq 0 2.5591 ms/op 2.5051 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8148 ms/op 2.7538 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9174 ms/op 2.9527 ms/op 0.99
forkChoice updateHead vc 600000 bc 64 eq 300000 6.6519 ms/op 7.1601 ms/op 0.93
computeDeltas 1400000 validators 0% inactive 12.354 ms/op 11.794 ms/op 1.05
computeDeltas 1400000 validators 10% inactive 11.545 ms/op 11.117 ms/op 1.04
computeDeltas 1400000 validators 20% inactive 10.532 ms/op 10.129 ms/op 1.04
computeDeltas 1400000 validators 50% inactive 8.1003 ms/op 7.8241 ms/op 1.04
computeDeltas 2100000 validators 0% inactive 18.571 ms/op 17.657 ms/op 1.05
computeDeltas 2100000 validators 10% inactive 17.287 ms/op 16.790 ms/op 1.03
computeDeltas 2100000 validators 20% inactive 15.753 ms/op 15.057 ms/op 1.05
computeDeltas 2100000 validators 50% inactive 9.1475 ms/op 11.705 ms/op 0.78
altair processAttestation - 250000 vs - 7PWei normalcase 1.9455 ms/op 1.8455 ms/op 1.05
altair processAttestation - 250000 vs - 7PWei worstcase 2.7538 ms/op 2.5884 ms/op 1.06
altair processAttestation - setStatus - 1/6 committees join 102.61 us/op 93.820 us/op 1.09
altair processAttestation - setStatus - 1/3 committees join 197.53 us/op 191.04 us/op 1.03
altair processAttestation - setStatus - 1/2 committees join 275.04 us/op 270.37 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 353.06 us/op 351.93 us/op 1.00
altair processAttestation - setStatus - 4/5 committees join 496.60 us/op 481.77 us/op 1.03
altair processAttestation - setStatus - 100% committees join 577.74 us/op 572.82 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 4.1878 ms/op 3.7840 ms/op 1.11
altair processBlock - 250000 vs - 7PWei normalcase hashState 13.493 ms/op 14.451 ms/op 0.93
altair processBlock - 250000 vs - 7PWei worstcase 21.217 ms/op 20.824 ms/op 1.02
altair processBlock - 250000 vs - 7PWei worstcase hashState 41.649 ms/op 40.204 ms/op 1.04
phase0 processBlock - 250000 vs - 7PWei normalcase 1.4164 ms/op 1.5243 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei worstcase 16.836 ms/op 18.888 ms/op 0.89
altair processEth1Data - 250000 vs - 7PWei normalcase 274.08 us/op 284.17 us/op 0.96
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.4170 us/op 4.0810 us/op 0.84
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.669 us/op 20.656 us/op 1.05
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.6570 us/op 8.0080 us/op 0.71
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.7090 us/op 3.9420 us/op 0.94
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 89.423 us/op 103.48 us/op 0.86
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3598 ms/op 1.4054 ms/op 0.97
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8009 ms/op 1.7933 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7795 ms/op 1.7805 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6251 ms/op 4.8461 ms/op 0.75
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0381 ms/op 2.3810 ms/op 0.86
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.0025 ms/op 4.3870 ms/op 0.91
Tree 40 250000 create 309.63 ms/op 420.49 ms/op 0.74
Tree 40 250000 get(125000) 88.430 ns/op 92.734 ns/op 0.95
Tree 40 250000 set(125000) 949.37 ns/op 1.1302 us/op 0.84
Tree 40 250000 toArray() 11.977 ms/op 22.570 ms/op 0.53
Tree 40 250000 iterate all - toArray() + loop 11.916 ms/op 25.351 ms/op 0.47
Tree 40 250000 iterate all - get(i) 36.493 ms/op 43.767 ms/op 0.83
Array 250000 create 2.0665 ms/op 2.5750 ms/op 0.80
Array 250000 clone - spread 636.72 us/op 841.12 us/op 0.76
Array 250000 get(125000) 0.29600 ns/op 0.29500 ns/op 1.00
Array 250000 set(125000) 0.29400 ns/op 0.29800 ns/op 0.99
Array 250000 iterate all - loop 56.019 us/op 58.260 us/op 0.96
phase0 afterProcessEpoch - 250000 vs - 7PWei 50.543 ms/op 42.281 ms/op 1.20
Array.fill - length 1000000 2.0700 ms/op 6.6628 ms/op 0.31
Array push - length 1000000 8.4870 ms/op 13.797 ms/op 0.62
Array.get 0.20095 ns/op 0.20772 ns/op 0.97
Uint8Array.get 0.23581 ns/op 0.23314 ns/op 1.01
phase0 beforeProcessEpoch - 250000 vs - 7PWei 13.736 ms/op 22.844 ms/op 0.60
altair processEpoch - mainnet_e81889 257.91 ms/op 297.57 ms/op 0.87
mainnet_e81889 - altair beforeProcessEpoch 14.822 ms/op 21.744 ms/op 0.68
mainnet_e81889 - altair processJustificationAndFinalization 5.4720 us/op 6.7930 us/op 0.81
mainnet_e81889 - altair processInactivityUpdates 3.4028 ms/op 5.3338 ms/op 0.64
mainnet_e81889 - altair processRewardsAndPenalties 18.550 ms/op 20.125 ms/op 0.92
mainnet_e81889 - altair processRegistryUpdates 516.00 ns/op 574.00 ns/op 0.90
mainnet_e81889 - altair processSlashings 136.00 ns/op 155.00 ns/op 0.88
mainnet_e81889 - altair processEth1DataReset 128.00 ns/op 156.00 ns/op 0.82
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.7106 ms/op 5.4794 ms/op 0.31
mainnet_e81889 - altair processSlashingsReset 668.00 ns/op 725.00 ns/op 0.92
mainnet_e81889 - altair processRandaoMixesReset 1.0780 us/op 1.4590 us/op 0.74
mainnet_e81889 - altair processHistoricalRootsUpdate 139.00 ns/op 160.00 ns/op 0.87
mainnet_e81889 - altair processParticipationFlagUpdates 411.00 ns/op 498.00 ns/op 0.83
mainnet_e81889 - altair processSyncCommitteeUpdates 104.00 ns/op 127.00 ns/op 0.82
mainnet_e81889 - altair afterProcessEpoch 39.974 ms/op 41.846 ms/op 0.96
capella processEpoch - mainnet_e217614 771.06 ms/op 854.81 ms/op 0.90
mainnet_e217614 - capella beforeProcessEpoch 63.352 ms/op 64.235 ms/op 0.99
mainnet_e217614 - capella processJustificationAndFinalization 6.3090 us/op 6.6550 us/op 0.95
mainnet_e217614 - capella processInactivityUpdates 13.773 ms/op 17.545 ms/op 0.79
mainnet_e217614 - capella processRewardsAndPenalties 84.125 ms/op 97.715 ms/op 0.86
mainnet_e217614 - capella processRegistryUpdates 4.3090 us/op 4.4960 us/op 0.96
mainnet_e217614 - capella processSlashings 152.00 ns/op 154.00 ns/op 0.99
mainnet_e217614 - capella processEth1DataReset 129.00 ns/op 153.00 ns/op 0.84
mainnet_e217614 - capella processEffectiveBalanceUpdates 13.215 ms/op 19.076 ms/op 0.69
mainnet_e217614 - capella processSlashingsReset 643.00 ns/op 706.00 ns/op 0.91
mainnet_e217614 - capella processRandaoMixesReset 1.1580 us/op 1.4400 us/op 0.80
mainnet_e217614 - capella processHistoricalRootsUpdate 132.00 ns/op 151.00 ns/op 0.87
mainnet_e217614 - capella processParticipationFlagUpdates 409.00 ns/op 470.00 ns/op 0.87
mainnet_e217614 - capella afterProcessEpoch 105.69 ms/op 107.26 ms/op 0.99
phase0 processEpoch - mainnet_e58758 294.29 ms/op 327.55 ms/op 0.90
mainnet_e58758 - phase0 beforeProcessEpoch 65.812 ms/op 71.564 ms/op 0.92
mainnet_e58758 - phase0 processJustificationAndFinalization 5.7720 us/op 6.6420 us/op 0.87
mainnet_e58758 - phase0 processRewardsAndPenalties 15.738 ms/op 16.608 ms/op 0.95
mainnet_e58758 - phase0 processRegistryUpdates 2.2420 us/op 2.2460 us/op 1.00
mainnet_e58758 - phase0 processSlashings 132.00 ns/op 219.00 ns/op 0.60
mainnet_e58758 - phase0 processEth1DataReset 142.00 ns/op 150.00 ns/op 0.95
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 793.05 us/op 821.01 us/op 0.97
mainnet_e58758 - phase0 processSlashingsReset 823.00 ns/op 918.00 ns/op 0.90
mainnet_e58758 - phase0 processRandaoMixesReset 1.1660 us/op 1.3440 us/op 0.87
mainnet_e58758 - phase0 processHistoricalRootsUpdate 134.00 ns/op 154.00 ns/op 0.87
mainnet_e58758 - phase0 processParticipationRecordUpdates 940.00 ns/op 1.2020 us/op 0.78
mainnet_e58758 - phase0 afterProcessEpoch 32.882 ms/op 32.482 ms/op 1.01
phase0 processEffectiveBalanceUpdates - 250000 normalcase 949.82 us/op 1.5169 ms/op 0.63
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.4799 ms/op 1.8855 ms/op 0.78
altair processInactivityUpdates - 250000 normalcase 10.117 ms/op 11.266 ms/op 0.90
altair processInactivityUpdates - 250000 worstcase 10.279 ms/op 11.214 ms/op 0.92
phase0 processRegistryUpdates - 250000 normalcase 2.0140 us/op 2.4640 us/op 0.82
phase0 processRegistryUpdates - 250000 badcase_full_deposits 130.56 us/op 138.70 us/op 0.94
phase0 processRegistryUpdates - 250000 worstcase 0.5 55.352 ms/op 58.342 ms/op 0.95
altair processRewardsAndPenalties - 250000 normalcase 15.530 ms/op 15.721 ms/op 0.99
altair processRewardsAndPenalties - 250000 worstcase 14.714 ms/op 15.370 ms/op 0.96
phase0 getAttestationDeltas - 250000 normalcase 5.0300 ms/op 5.1237 ms/op 0.98
phase0 getAttestationDeltas - 250000 worstcase 5.0837 ms/op 5.3249 ms/op 0.95
phase0 processSlashings - 250000 worstcase 56.342 us/op 59.488 us/op 0.95
altair processSyncCommitteeUpdates - 250000 14.746 ms/op 10.173 ms/op 1.45
BeaconState.hashTreeRoot - No change 161.00 ns/op 186.00 ns/op 0.87
BeaconState.hashTreeRoot - 1 full validator 75.197 us/op 76.174 us/op 0.99
BeaconState.hashTreeRoot - 32 full validator 827.63 us/op 847.60 us/op 0.98
BeaconState.hashTreeRoot - 512 full validator 7.9411 ms/op 7.4864 ms/op 1.06
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 92.287 us/op 96.901 us/op 0.95
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.3436 ms/op 1.4030 ms/op 0.96
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 17.236 ms/op 15.659 ms/op 1.10
BeaconState.hashTreeRoot - 1 balances 71.355 us/op 75.997 us/op 0.94
BeaconState.hashTreeRoot - 32 balances 705.55 us/op 701.90 us/op 1.01
BeaconState.hashTreeRoot - 512 balances 5.7375 ms/op 5.7724 ms/op 0.99
BeaconState.hashTreeRoot - 250000 balances 126.44 ms/op 136.43 ms/op 0.93
aggregationBits - 2048 els - zipIndexesInBitList 18.393 us/op 19.528 us/op 0.94
regular array get 100000 times 22.005 us/op 22.288 us/op 0.99
wrappedArray get 100000 times 21.968 us/op 22.208 us/op 0.99
arrayWithProxy get 100000 times 9.3635 ms/op 9.3311 ms/op 1.00
ssz.Root.equals 20.519 ns/op 20.653 ns/op 0.99
byteArrayEquals 20.343 ns/op 20.420 ns/op 1.00
Buffer.compare 8.4030 ns/op 8.4650 ns/op 0.99
processSlot - 1 slots 7.9170 us/op 8.6080 us/op 0.92
processSlot - 32 slots 1.7969 ms/op 1.7962 ms/op 1.00
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.9454 ms/op 5.6614 ms/op 0.70
getCommitteeAssignments - req 1 vs - 250000 vc 1.5962 ms/op 1.6177 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.3025 ms/op 3.3229 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 3.5831 ms/op 3.5965 ms/op 1.00
findModifiedValidators - 10000 modified validators 647.95 ms/op 627.39 ms/op 1.03
findModifiedValidators - 1000 modified validators 419.85 ms/op 447.92 ms/op 0.94
findModifiedValidators - 100 modified validators 300.48 ms/op 295.70 ms/op 1.02
findModifiedValidators - 10 modified validators 155.69 ms/op 221.11 ms/op 0.70
findModifiedValidators - 1 modified validators 141.86 ms/op 158.10 ms/op 0.90
findModifiedValidators - no difference 154.83 ms/op 154.94 ms/op 1.00
migrate state 1500000 validators, 3400 modified, 2000 new 2.7715 s/op 2.9887 s/op 0.93
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6500 ns/op 3.5600 ns/op 1.03
state getBlockRootAtSlot - 250000 vs - 7PWei 302.03 ns/op 361.19 ns/op 0.84
computeProposerIndex 100000 validators 1.2987 ms/op 1.2896 ms/op 1.01
getNextSyncCommitteeIndices 1000 validators 2.7847 ms/op 2.7291 ms/op 1.02
getNextSyncCommitteeIndices 10000 validators 24.596 ms/op 24.165 ms/op 1.02
getNextSyncCommitteeIndices 100000 validators 84.795 ms/op 83.871 ms/op 1.01
computeProposers - vc 250000 536.38 us/op 527.49 us/op 1.02
computeEpochShuffling - vc 250000 37.593 ms/op 38.289 ms/op 0.98
getNextSyncCommittee - vc 250000 9.2075 ms/op 9.4313 ms/op 0.98
nodejs block root to RootHex using toHex 108.84 ns/op 104.18 ns/op 1.04
nodejs block root to RootHex using toRootHex 65.581 ns/op 65.775 ns/op 1.00
nodejs fromHex(blob) 716.77 us/op 700.82 us/op 1.02
nodejs fromHexInto(blob) 616.46 us/op 600.69 us/op 1.03
nodejs block root to RootHex using the deprecated toHexString 349.00 ns/op 443.78 ns/op 0.79
nodejs byteArrayEquals 32 bytes (block root) 25.340 ns/op 24.682 ns/op 1.03
nodejs byteArrayEquals 48 bytes (pubkey) 36.784 ns/op 35.757 ns/op 1.03
nodejs byteArrayEquals 96 bytes (signature) 31.556 ns/op 31.083 ns/op 1.02
nodejs byteArrayEquals 1024 bytes 39.391 ns/op 36.856 ns/op 1.07
nodejs byteArrayEquals 131072 bytes (blob) 1.7202 us/op 1.6818 us/op 1.02
browser block root to RootHex using toHex 141.35 ns/op 136.91 ns/op 1.03
browser block root to RootHex using toRootHex 128.65 ns/op 124.08 ns/op 1.04
browser fromHex(blob) 1.4668 ms/op 1.4550 ms/op 1.01
browser fromHexInto(blob) 600.75 us/op 598.68 us/op 1.00
browser block root to RootHex using the deprecated toHexString 455.55 ns/op 440.68 ns/op 1.03
browser byteArrayEquals 32 bytes (block root) 26.872 ns/op 26.756 ns/op 1.00
browser byteArrayEquals 48 bytes (pubkey) 37.976 ns/op 37.511 ns/op 1.01
browser byteArrayEquals 96 bytes (signature) 70.893 ns/op 70.408 ns/op 1.01
browser byteArrayEquals 1024 bytes 725.12 ns/op 724.13 ns/op 1.00
browser byteArrayEquals 131072 bytes (blob) 91.318 us/op 91.694 us/op 1.00

by benchmarkbot/action

@nflaig nflaig changed the title refactor: align bid filtering more with consensus spec refactor: align bid filtering with consensus spec Apr 5, 2026

@matthewkeil matthewkeil 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 🎸

@nflaig
nflaig merged commit d59b461 into unstable Apr 6, 2026
20 checks passed
@nflaig
nflaig deleted the nflaig/bid-filtering-key-comment branch April 6, 2026 08:38
@codecov

codecov Bot commented Apr 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.53%. Comparing base (f866249) to head (71c3460).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #9182   +/-   ##
=========================================
  Coverage     52.53%   52.53%           
=========================================
  Files           848      848           
  Lines         61429    61429           
  Branches       4528     4528           
=========================================
  Hits          32270    32270           
  Misses        29094    29094           
  Partials         65       65           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@wemeetagain

Copy link
Copy Markdown
Member

🎉 This PR is included in v1.43.0 🎉

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants