Skip to content

fix: reject bids with invalid prev_randao during gossip validation - #9533

Merged
nflaig merged 2 commits into
unstablefrom
nflaig/reject-bids-invalid-prev-randao
Jun 22, 2026
Merged

fix: reject bids with invalid prev_randao during gossip validation#9533
nflaig merged 2 commits into
unstablefrom
nflaig/reject-bids-invalid-prev-randao

Conversation

@nflaig

@nflaig nflaig commented Jun 19, 2026

Copy link
Copy Markdown
Member

@nflaig
nflaig requested a review from a team as a code owner June 19, 2026 20:04

@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 introduces validation for the prev_randao field in execution payload bids, adding a new INVALID_PREV_RANDAO error code and type to handle failures. However, the implementation calls state.getRandaoMix(...) directly, which will result in a runtime TypeError because IBeaconStateView does not expose this method. It is recommended to use the getRandaoMix helper function from @lodestar/state-transition instead.

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.

Comment thread packages/beacon-node/src/chain/validation/executionPayloadBid.ts
@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 3a8baf7 Previous: ec43878 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 829.15 us/op 1.1251 ms/op 0.74
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.348 us/op 38.009 us/op 1.01
BLS verify - blst 747.26 us/op 714.64 us/op 1.05
BLS verifyMultipleSignatures 3 - blst 1.3720 ms/op 1.2957 ms/op 1.06
BLS verifyMultipleSignatures 8 - blst 2.1932 ms/op 2.0482 ms/op 1.07
BLS verifyMultipleSignatures 32 - blst 6.7945 ms/op 6.5241 ms/op 1.04
BLS verifyMultipleSignatures 64 - blst 13.718 ms/op 12.536 ms/op 1.09
BLS verifyMultipleSignatures 128 - blst 25.540 ms/op 24.274 ms/op 1.05
BLS deserializing 10000 signatures 628.77 ms/op 615.04 ms/op 1.02
BLS deserializing 100000 signatures 6.2604 s/op 6.2313 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 705.63 us/op 760.44 us/op 0.93
BLS verifyMultipleSignatures - same message - 8 - blst 832.87 us/op 797.14 us/op 1.04
BLS verifyMultipleSignatures - same message - 32 - blst 1.5844 ms/op 1.4308 ms/op 1.11
BLS verifyMultipleSignatures - same message - 64 - blst 2.3840 ms/op 2.2266 ms/op 1.07
BLS verifyMultipleSignatures - same message - 128 - blst 4.0299 ms/op 3.8332 ms/op 1.05
BLS aggregatePubkeys 32 - blst 17.694 us/op 16.857 us/op 1.05
BLS aggregatePubkeys 128 - blst 63.457 us/op 60.604 us/op 1.05
getSlashingsAndExits - default max 45.420 us/op 52.937 us/op 0.86
getSlashingsAndExits - 2k 318.73 us/op 401.99 us/op 0.79
proposeBlockBody type=full, size=empty 808.84 us/op 1.0577 ms/op 0.76
isKnown best case - 1 super set check 164.00 ns/op 183.00 ns/op 0.90
isKnown normal case - 2 super set checks 162.00 ns/op 168.00 ns/op 0.96
isKnown worse case - 16 super set checks 159.00 ns/op 168.00 ns/op 0.95
validate api signedAggregateAndProof - struct 1.5367 ms/op 1.4416 ms/op 1.07
validate gossip signedAggregateAndProof - struct 1.5334 ms/op 1.4320 ms/op 1.07
batch validate gossip attestation - vc 640000 - chunk 32 104.34 us/op 103.01 us/op 1.01
batch validate gossip attestation - vc 640000 - chunk 64 92.562 us/op 90.582 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 128 85.519 us/op 86.425 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 256 83.378 us/op 82.045 us/op 1.02
bytes32 toHexString 315.00 ns/op 268.00 ns/op 1.18
bytes32 Buffer.toString(hex) 168.00 ns/op 154.00 ns/op 1.09
bytes32 Buffer.toString(hex) from Uint8Array 224.00 ns/op 219.00 ns/op 1.02
bytes32 Buffer.toString(hex) + 0x 166.00 ns/op 157.00 ns/op 1.06
Return object 10000 times 0.20960 ns/op 0.20650 ns/op 1.02
Throw Error 10000 times 3.4401 us/op 3.1878 us/op 1.08
toHex 93.953 ns/op 85.223 ns/op 1.10
Buffer.from 84.928 ns/op 77.166 ns/op 1.10
shared Buffer 56.534 ns/op 50.175 ns/op 1.13
fastMsgIdFn sha256 / 200 bytes 1.5170 us/op 1.4160 us/op 1.07
fastMsgIdFn h32 xxhash / 200 bytes 151.00 ns/op 155.00 ns/op 0.97
fastMsgIdFn h64 xxhash / 200 bytes 199.00 ns/op 196.00 ns/op 1.02
fastMsgIdFn sha256 / 1000 bytes 5.0070 us/op 4.5440 us/op 1.10
fastMsgIdFn h32 xxhash / 1000 bytes 242.00 ns/op 239.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 1000 bytes 253.00 ns/op 243.00 ns/op 1.04
fastMsgIdFn sha256 / 10000 bytes 43.953 us/op 40.260 us/op 1.09
fastMsgIdFn h32 xxhash / 10000 bytes 1.2830 us/op 1.2430 us/op 1.03
fastMsgIdFn h64 xxhash / 10000 bytes 829.00 ns/op 801.00 ns/op 1.03
send data - 1000 256B messages 3.7979 ms/op 4.1869 ms/op 0.91
send data - 1000 512B messages 5.2197 ms/op 5.1000 ms/op 1.02
send data - 1000 1024B messages 5.0236 ms/op 5.3450 ms/op 0.94
send data - 1000 1200B messages 5.6811 ms/op 5.8489 ms/op 0.97
send data - 1000 2048B messages 8.7176 ms/op 13.336 ms/op 0.65
send data - 1000 4096B messages 38.932 ms/op 62.123 ms/op 0.63
send data - 1000 16384B messages 229.41 ms/op 262.19 ms/op 0.87
send data - 1000 65536B messages 872.38 ms/op 981.41 ms/op 0.89
enrSubnets - fastDeserialize 64 bits 744.00 ns/op 725.00 ns/op 1.03
enrSubnets - ssz BitVector 64 bits 262.00 ns/op 263.00 ns/op 1.00
enrSubnets - fastDeserialize 4 bits 103.00 ns/op 98.000 ns/op 1.05
enrSubnets - ssz BitVector 4 bits 263.00 ns/op 271.00 ns/op 0.97
prioritizePeers score -10:0 att 32-0.1 sync 2-0 204.65 us/op 199.26 us/op 1.03
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 232.33 us/op 241.86 us/op 0.96
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 335.35 us/op 339.23 us/op 0.99
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 600.39 us/op 585.72 us/op 1.03
prioritizePeers score 0:0 att 64-1 sync 4-1 707.64 us/op 702.01 us/op 1.01
array of 16000 items push then shift 1.2846 us/op 1.2514 us/op 1.03
LinkedList of 16000 items push then shift 6.5860 ns/op 7.4490 ns/op 0.88
array of 16000 items push then pop 65.308 ns/op 66.852 ns/op 0.98
LinkedList of 16000 items push then pop 5.9150 ns/op 5.8890 ns/op 1.00
array of 24000 items push then shift 1.8981 us/op 1.8326 us/op 1.04
LinkedList of 24000 items push then shift 6.2620 ns/op 6.9370 ns/op 0.90
array of 24000 items push then pop 92.057 ns/op 92.712 ns/op 0.99
LinkedList of 24000 items push then pop 5.9140 ns/op 5.9340 ns/op 1.00
intersect bitArray bitLen 8 4.7000 ns/op 4.7100 ns/op 1.00
intersect array and set length 8 31.610 ns/op 28.811 ns/op 1.10
intersect bitArray bitLen 128 24.987 ns/op 23.378 ns/op 1.07
intersect array and set length 128 506.99 ns/op 481.33 ns/op 1.05
bitArray.getTrueBitIndexes() bitLen 128 1.0550 us/op 1.0190 us/op 1.04
bitArray.getTrueBitIndexes() bitLen 248 1.7250 us/op 1.7700 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 512 3.5510 us/op 3.5520 us/op 1.00
Full columns - reconstruct all 6 blobs 113.49 us/op 164.54 us/op 0.69
Full columns - reconstruct half of the blobs out of 6 67.116 us/op 83.044 us/op 0.81
Full columns - reconstruct single blob out of 6 33.312 us/op 30.963 us/op 1.08
Half columns - reconstruct all 6 blobs 378.18 ms/op 372.37 ms/op 1.02
Half columns - reconstruct half of the blobs out of 6 188.93 ms/op 189.65 ms/op 1.00
Half columns - reconstruct single blob out of 6 66.812 ms/op 67.556 ms/op 0.99
Full columns - reconstruct all 10 blobs 299.02 us/op 282.88 us/op 1.06
Full columns - reconstruct half of the blobs out of 10 183.55 us/op 106.31 us/op 1.73
Full columns - reconstruct single blob out of 10 33.796 us/op 88.580 us/op 0.38
Half columns - reconstruct all 10 blobs 625.35 ms/op 639.69 ms/op 0.98
Half columns - reconstruct half of the blobs out of 10 315.14 ms/op 316.52 ms/op 1.00
Half columns - reconstruct single blob out of 10 66.591 ms/op 68.420 ms/op 0.97
Full columns - reconstruct all 20 blobs 1.3744 ms/op 522.50 us/op 2.63
Full columns - reconstruct half of the blobs out of 20 459.25 us/op 179.68 us/op 2.56
Full columns - reconstruct single blob out of 20 30.703 us/op 35.722 us/op 0.86
Half columns - reconstruct all 20 blobs 1.2494 s/op 1.2399 s/op 1.01
Half columns - reconstruct half of the blobs out of 20 626.66 ms/op 619.90 ms/op 1.01
Half columns - reconstruct single blob out of 20 66.580 ms/op 67.772 ms/op 0.98
Set add up to 64 items then delete first 2.1929 us/op 2.0488 us/op 1.07
OrderedSet add up to 64 items then delete first 3.4764 us/op 3.2760 us/op 1.06
Set add up to 64 items then delete last 2.2352 us/op 2.0362 us/op 1.10
OrderedSet add up to 64 items then delete last 3.4011 us/op 3.2666 us/op 1.04
Set add up to 64 items then delete middle 2.2241 us/op 2.0614 us/op 1.08
OrderedSet add up to 64 items then delete middle 4.8662 us/op 4.7077 us/op 1.03
Set add up to 128 items then delete first 4.5296 us/op 3.9456 us/op 1.15
OrderedSet add up to 128 items then delete first 6.8091 us/op 5.8210 us/op 1.17
Set add up to 128 items then delete last 4.1469 us/op 3.7374 us/op 1.11
OrderedSet add up to 128 items then delete last 6.0650 us/op 5.7836 us/op 1.05
Set add up to 128 items then delete middle 4.1438 us/op 3.7719 us/op 1.10
OrderedSet add up to 128 items then delete middle 11.834 us/op 11.788 us/op 1.00
Set add up to 256 items then delete first 8.3895 us/op 7.4857 us/op 1.12
OrderedSet add up to 256 items then delete first 12.746 us/op 11.263 us/op 1.13
Set add up to 256 items then delete last 8.0753 us/op 7.5387 us/op 1.07
OrderedSet add up to 256 items then delete last 12.051 us/op 11.707 us/op 1.03
Set add up to 256 items then delete middle 8.0425 us/op 7.4261 us/op 1.08
OrderedSet add up to 256 items then delete middle 35.330 us/op 33.770 us/op 1.05
runFastConfirmationRules vc:100000 bc:96 eq:0 2.4940 us/op 2.0660 us/op 1.21
runFastConfirmationRules vc:600000 bc:96 eq:0 2.5210 us/op 2.1290 us/op 1.18
runFastConfirmationRules vc:1000000 bc:96 eq:0 2.4660 us/op 1.9730 us/op 1.25
runFastConfirmationRules vc:600000 bc:320 eq:0 4.9550 us/op 4.7770 us/op 1.04
runFastConfirmationRules vc:600000 bc:1200 eq:0 19.243 us/op 17.072 us/op 1.13
runFastConfirmationRules vc:600000 bc:96 eq:1000 2.3780 us/op 1.8430 us/op 1.29
runFastConfirmationRules vc:600000 bc:96 eq:10000 2.2790 us/op 1.8800 us/op 1.21
runFastConfirmationRules vc:600000 bc:96 eq:300000 2.4440 us/op 2.1030 us/op 1.16
pass gossip attestations to forkchoice per slot 2.4840 ms/op 2.4173 ms/op 1.03
forkChoice updateHead vc 100000 bc 64 eq 0 496.36 us/op 386.75 us/op 1.28
forkChoice updateHead vc 600000 bc 64 eq 0 2.9657 ms/op 2.2992 ms/op 1.29
forkChoice updateHead vc 1000000 bc 64 eq 0 4.9590 ms/op 3.8148 ms/op 1.30
forkChoice updateHead vc 600000 bc 320 eq 0 2.9746 ms/op 2.3186 ms/op 1.28
forkChoice updateHead vc 600000 bc 1200 eq 0 3.0038 ms/op 2.3213 ms/op 1.29
forkChoice updateHead vc 600000 bc 7200 eq 0 3.3415 ms/op 2.6206 ms/op 1.28
forkChoice updateHead vc 600000 bc 64 eq 1000 2.9960 ms/op 2.3303 ms/op 1.29
forkChoice updateHead vc 600000 bc 64 eq 10000 3.1145 ms/op 2.4020 ms/op 1.30
forkChoice updateHead vc 600000 bc 64 eq 300000 7.6199 ms/op 6.4717 ms/op 1.18
computeDeltas 1400000 validators 0% inactive 13.761 ms/op 11.879 ms/op 1.16
computeDeltas 1400000 validators 10% inactive 12.828 ms/op 11.113 ms/op 1.15
computeDeltas 1400000 validators 20% inactive 11.917 ms/op 10.132 ms/op 1.18
computeDeltas 1400000 validators 50% inactive 9.2985 ms/op 7.8060 ms/op 1.19
computeDeltas 2100000 validators 0% inactive 20.418 ms/op 17.767 ms/op 1.15
computeDeltas 2100000 validators 10% inactive 19.248 ms/op 16.650 ms/op 1.16
computeDeltas 2100000 validators 20% inactive 17.891 ms/op 15.230 ms/op 1.17
computeDeltas 2100000 validators 50% inactive 13.941 ms/op 8.8329 ms/op 1.58
altair processAttestation - 250000 vs - 7PWei normalcase 1.7238 ms/op 2.4132 ms/op 0.71
altair processAttestation - 250000 vs - 7PWei worstcase 2.4270 ms/op 2.5567 ms/op 0.95
altair processAttestation - setStatus - 1/6 committees join 104.39 us/op 91.285 us/op 1.14
altair processAttestation - setStatus - 1/3 committees join 204.19 us/op 187.17 us/op 1.09
altair processAttestation - setStatus - 1/2 committees join 290.90 us/op 260.88 us/op 1.12
altair processAttestation - setStatus - 2/3 committees join 379.20 us/op 336.59 us/op 1.13
altair processAttestation - setStatus - 4/5 committees join 513.35 us/op 477.11 us/op 1.08
altair processAttestation - setStatus - 100% committees join 604.34 us/op 569.14 us/op 1.06
altair processBlock - 250000 vs - 7PWei normalcase 2.9004 ms/op 3.9915 ms/op 0.73
altair processBlock - 250000 vs - 7PWei normalcase hashState 14.356 ms/op 17.008 ms/op 0.84
altair processBlock - 250000 vs - 7PWei worstcase 18.676 ms/op 20.172 ms/op 0.93
altair processBlock - 250000 vs - 7PWei worstcase hashState 38.165 ms/op 38.099 ms/op 1.00
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2984 ms/op 1.3425 ms/op 0.97
phase0 processBlock - 250000 vs - 7PWei worstcase 17.196 ms/op 18.124 ms/op 0.95
altair processEth1Data - 250000 vs - 7PWei normalcase 309.84 us/op 273.38 us/op 1.13
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.4480 us/op 4.7590 us/op 0.72
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 22.793 us/op 20.046 us/op 1.14
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.1270 us/op 5.3040 us/op 1.16
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.9010 us/op 3.4430 us/op 1.13
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 104.95 us/op 84.447 us/op 1.24
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3970 ms/op 1.3559 ms/op 1.03
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8645 ms/op 1.7406 ms/op 1.07
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8434 ms/op 1.7599 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6608 ms/op 3.6330 ms/op 1.01
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0899 ms/op 1.9883 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.9166 ms/op 5.7404 ms/op 0.68
Tree 40 250000 create 313.98 ms/op 340.26 ms/op 0.92
Tree 40 250000 get(125000) 98.808 ns/op 90.708 ns/op 1.09
Tree 40 250000 set(125000) 1.0685 us/op 998.75 ns/op 1.07
Tree 40 250000 toArray() 9.3236 ms/op 14.058 ms/op 0.66
Tree 40 250000 iterate all - toArray() + loop 9.4345 ms/op 17.067 ms/op 0.55
Tree 40 250000 iterate all - get(i) 34.068 ms/op 39.354 ms/op 0.87
Array 250000 create 1.9710 ms/op 2.1683 ms/op 0.91
Array 250000 clone - spread 619.51 us/op 665.22 us/op 0.93
Array 250000 get(125000) 0.29300 ns/op 0.28700 ns/op 1.02
Array 250000 set(125000) 0.29600 ns/op 0.28700 ns/op 1.03
Array 250000 iterate all - loop 55.621 us/op 55.581 us/op 1.00
phase0 afterProcessEpoch - 250000 vs - 7PWei 38.114 ms/op 39.889 ms/op 0.96
Array.fill - length 1000000 1.8384 ms/op 2.0528 ms/op 0.90
Array push - length 1000000 7.5562 ms/op 8.7227 ms/op 0.87
Array.get 0.20233 ns/op 0.20042 ns/op 1.01
Uint8Array.get 0.24747 ns/op 0.22607 ns/op 1.09
phase0 beforeProcessEpoch - 250000 vs - 7PWei 12.056 ms/op 16.782 ms/op 0.72
altair processEpoch - mainnet_e81889 227.72 ms/op 253.02 ms/op 0.90
mainnet_e81889 - altair beforeProcessEpoch 13.961 ms/op 13.662 ms/op 1.02
mainnet_e81889 - altair processJustificationAndFinalization 4.7400 us/op 5.5160 us/op 0.86
mainnet_e81889 - altair processInactivityUpdates 3.6246 ms/op 3.2894 ms/op 1.10
mainnet_e81889 - altair processRewardsAndPenalties 17.173 ms/op 18.686 ms/op 0.92
mainnet_e81889 - altair processRegistryUpdates 509.00 ns/op 523.00 ns/op 0.97
mainnet_e81889 - altair processSlashings 132.00 ns/op 123.00 ns/op 1.07
mainnet_e81889 - altair processEth1DataReset 127.00 ns/op 122.00 ns/op 1.04
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6372 ms/op 2.6216 ms/op 0.62
mainnet_e81889 - altair processSlashingsReset 692.00 ns/op 670.00 ns/op 1.03
mainnet_e81889 - altair processRandaoMixesReset 983.00 ns/op 1.0850 us/op 0.91
mainnet_e81889 - altair processHistoricalRootsUpdate 127.00 ns/op 124.00 ns/op 1.02
mainnet_e81889 - altair processParticipationFlagUpdates 412.00 ns/op 425.00 ns/op 0.97
mainnet_e81889 - altair processSyncCommitteeUpdates 101.00 ns/op 101.00 ns/op 1.00
mainnet_e81889 - altair afterProcessEpoch 40.880 ms/op 39.839 ms/op 1.03
capella processEpoch - mainnet_e217614 743.48 ms/op 812.38 ms/op 0.92
mainnet_e217614 - capella beforeProcessEpoch 56.557 ms/op 59.118 ms/op 0.96
mainnet_e217614 - capella processJustificationAndFinalization 5.5070 us/op 6.6170 us/op 0.83
mainnet_e217614 - capella processInactivityUpdates 11.745 ms/op 15.011 ms/op 0.78
mainnet_e217614 - capella processRewardsAndPenalties 90.154 ms/op 87.563 ms/op 1.03
mainnet_e217614 - capella processRegistryUpdates 4.5800 us/op 4.4270 us/op 1.03
mainnet_e217614 - capella processSlashings 134.00 ns/op 131.00 ns/op 1.02
mainnet_e217614 - capella processEth1DataReset 135.00 ns/op 126.00 ns/op 1.07
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.4817 ms/op 16.389 ms/op 0.33
mainnet_e217614 - capella processSlashingsReset 689.00 ns/op 687.00 ns/op 1.00
mainnet_e217614 - capella processRandaoMixesReset 1.0920 us/op 1.3250 us/op 0.82
mainnet_e217614 - capella processHistoricalRootsUpdate 147.00 ns/op 125.00 ns/op 1.18
mainnet_e217614 - capella processParticipationFlagUpdates 413.00 ns/op 432.00 ns/op 0.96
mainnet_e217614 - capella afterProcessEpoch 104.73 ms/op 106.06 ms/op 0.99
phase0 processEpoch - mainnet_e58758 247.60 ms/op 303.35 ms/op 0.82
mainnet_e58758 - phase0 beforeProcessEpoch 50.692 ms/op 65.854 ms/op 0.77
mainnet_e58758 - phase0 processJustificationAndFinalization 5.5490 us/op 6.4330 us/op 0.86
mainnet_e58758 - phase0 processRewardsAndPenalties 15.751 ms/op 15.579 ms/op 1.01
mainnet_e58758 - phase0 processRegistryUpdates 2.2610 us/op 2.2270 us/op 1.02
mainnet_e58758 - phase0 processSlashings 129.00 ns/op 126.00 ns/op 1.02
mainnet_e58758 - phase0 processEth1DataReset 131.00 ns/op 125.00 ns/op 1.05
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1064 ms/op 804.01 us/op 1.38
mainnet_e58758 - phase0 processSlashingsReset 799.00 ns/op 886.00 ns/op 0.90
mainnet_e58758 - phase0 processRandaoMixesReset 1.1640 us/op 1.2860 us/op 0.91
mainnet_e58758 - phase0 processHistoricalRootsUpdate 129.00 ns/op 128.00 ns/op 1.01
mainnet_e58758 - phase0 processParticipationRecordUpdates 985.00 ns/op 1.2150 us/op 0.81
mainnet_e58758 - phase0 afterProcessEpoch 32.398 ms/op 33.081 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.1045 ms/op 1.0000 ms/op 1.10
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6218 ms/op 1.5139 ms/op 1.07
altair processInactivityUpdates - 250000 normalcase 10.544 ms/op 11.330 ms/op 0.93
altair processInactivityUpdates - 250000 worstcase 10.570 ms/op 10.528 ms/op 1.00
phase0 processRegistryUpdates - 250000 normalcase 2.2260 us/op 2.1960 us/op 1.01
phase0 processRegistryUpdates - 250000 badcase_full_deposits 155.11 us/op 141.09 us/op 1.10
phase0 processRegistryUpdates - 250000 worstcase 0.5 49.644 ms/op 65.151 ms/op 0.76
altair processRewardsAndPenalties - 250000 normalcase 13.560 ms/op 15.687 ms/op 0.86
altair processRewardsAndPenalties - 250000 worstcase 13.238 ms/op 15.451 ms/op 0.86
phase0 getAttestationDeltas - 250000 normalcase 5.2371 ms/op 5.1360 ms/op 1.02
phase0 getAttestationDeltas - 250000 worstcase 5.2767 ms/op 5.2624 ms/op 1.00
phase0 processSlashings - 250000 worstcase 65.738 us/op 58.627 us/op 1.12
altair processSyncCommitteeUpdates - 250000 9.9676 ms/op 10.495 ms/op 0.95
BeaconState.hashTreeRoot - No change 165.00 ns/op 160.00 ns/op 1.03
BeaconState.hashTreeRoot - 1 full validator 57.595 us/op 71.734 us/op 0.80
BeaconState.hashTreeRoot - 32 full validator 642.87 us/op 799.54 us/op 0.80
BeaconState.hashTreeRoot - 512 full validator 5.9349 ms/op 6.8472 ms/op 0.87
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 69.716 us/op 85.474 us/op 0.82
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0483 ms/op 1.4534 ms/op 0.72
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.238 ms/op 15.887 ms/op 0.77
BeaconState.hashTreeRoot - 1 balances 56.558 us/op 69.520 us/op 0.81
BeaconState.hashTreeRoot - 32 balances 546.10 us/op 694.91 us/op 0.79
BeaconState.hashTreeRoot - 512 balances 4.6076 ms/op 5.5884 ms/op 0.82
BeaconState.hashTreeRoot - 250000 balances 99.655 ms/op 118.01 ms/op 0.84
aggregationBits - 2048 els - zipIndexesInBitList 21.173 us/op 18.883 us/op 1.12
regular array get 100000 times 22.304 us/op 22.456 us/op 0.99
wrappedArray get 100000 times 22.303 us/op 22.500 us/op 0.99
arrayWithProxy get 100000 times 10.144 ms/op 17.597 ms/op 0.58
ssz.Root.equals 21.037 ns/op 20.914 ns/op 1.01
byteArrayEquals 20.860 ns/op 20.700 ns/op 1.01
Buffer.compare 9.9620 ns/op 8.5810 ns/op 1.16
processSlot - 1 slots 8.0450 us/op 8.1800 us/op 0.98
processSlot - 32 slots 1.4970 ms/op 2.0721 ms/op 0.72
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.4117 ms/op 3.9994 ms/op 0.60
getCommitteeAssignments - req 1 vs - 250000 vc 1.7063 ms/op 1.6062 ms/op 1.06
getCommitteeAssignments - req 100 vs - 250000 vc 3.3914 ms/op 3.2735 ms/op 1.04
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6239 ms/op 3.5243 ms/op 1.03
findModifiedValidators - 10000 modified validators 703.66 ms/op 730.03 ms/op 0.96
findModifiedValidators - 1000 modified validators 391.48 ms/op 588.25 ms/op 0.67
findModifiedValidators - 100 modified validators 286.46 ms/op 295.77 ms/op 0.97
findModifiedValidators - 10 modified validators 207.68 ms/op 230.03 ms/op 0.90
findModifiedValidators - 1 modified validators 159.08 ms/op 176.67 ms/op 0.90
findModifiedValidators - no difference 161.87 ms/op 169.46 ms/op 0.96
migrate state 1500000 validators, 3400 modified, 2000 new 2.5980 s/op 2.9727 s/op 0.87
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6400 ns/op 3.5600 ns/op 1.02
state getBlockRootAtSlot - 250000 vs - 7PWei 279.68 ns/op 345.95 ns/op 0.81
computeProposerIndex 100000 validators 1.3013 ms/op 1.3199 ms/op 0.99
getNextSyncCommitteeIndices 1000 validators 2.7928 ms/op 2.8043 ms/op 1.00
getNextSyncCommitteeIndices 10000 validators 24.766 ms/op 24.922 ms/op 0.99
getNextSyncCommitteeIndices 100000 validators 85.478 ms/op 85.439 ms/op 1.00
computeProposers - vc 250000 543.03 us/op 536.45 us/op 1.01
computeEpochShuffling - vc 250000 38.471 ms/op 39.412 ms/op 0.98
getNextSyncCommittee - vc 250000 9.2281 ms/op 9.4043 ms/op 0.98
nodejs block root to RootHex using toHex 103.86 ns/op 88.065 ns/op 1.18
nodejs block root to RootHex using toRootHex 61.816 ns/op 56.373 ns/op 1.10
nodejs fromHex(blob) 730.28 us/op 772.62 us/op 0.95
nodejs fromHexInto(blob) 659.36 us/op 604.11 us/op 1.09
nodejs block root to RootHex using the deprecated toHexString 499.16 ns/op 484.02 ns/op 1.03
nodejs byteArrayEquals 32 bytes (block root) 25.600 ns/op 25.265 ns/op 1.01
nodejs byteArrayEquals 48 bytes (pubkey) 36.994 ns/op 38.305 ns/op 0.97
nodejs byteArrayEquals 96 bytes (signature) 40.183 ns/op 33.963 ns/op 1.18
nodejs byteArrayEquals 1024 bytes 42.739 ns/op 41.554 ns/op 1.03
nodejs byteArrayEquals 131072 bytes (blob) 1.7388 us/op 1.7408 us/op 1.00
browser block root to RootHex using toHex 146.21 ns/op 141.16 ns/op 1.04
browser block root to RootHex using toRootHex 130.60 ns/op 128.61 ns/op 1.02
browser fromHex(blob) 1.5135 ms/op 1.4854 ms/op 1.02
browser fromHexInto(blob) 657.44 us/op 612.88 us/op 1.07
browser block root to RootHex using the deprecated toHexString 348.95 ns/op 327.61 ns/op 1.07
browser byteArrayEquals 32 bytes (block root) 27.564 ns/op 27.025 ns/op 1.02
browser byteArrayEquals 48 bytes (pubkey) 38.827 ns/op 38.512 ns/op 1.01
browser byteArrayEquals 96 bytes (signature) 72.846 ns/op 71.956 ns/op 1.01
browser byteArrayEquals 1024 bytes 739.30 ns/op 727.30 ns/op 1.02
browser byteArrayEquals 131072 bytes (blob) 93.352 us/op 92.560 us/op 1.01

by benchmarkbot/action

@nflaig
nflaig merged commit 8265ad2 into unstable Jun 22, 2026
19 of 23 checks passed
@nflaig
nflaig deleted the nflaig/reject-bids-invalid-prev-randao branch June 22, 2026 09:21
@wemeetagain

Copy link
Copy Markdown
Member

🎉 This PR is included in v1.44.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.

4 participants