Skip to content

fix: ensure bids are for a higher slot than their parent - #9414

Merged
nflaig merged 2 commits into
unstablefrom
nflaig/bid-parent-slot-check
May 28, 2026
Merged

fix: ensure bids are for a higher slot than their parent#9414
nflaig merged 2 commits into
unstablefrom
nflaig/bid-parent-slot-check

Conversation

@nflaig

@nflaig nflaig commented May 27, 2026

Copy link
Copy Markdown
Member

@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 to ensure that an execution payload bid's slot is strictly greater than its parent block's slot. It adds the NOT_LATER_THAN_PARENT error code to ExecutionPayloadBidErrorCode and implements the validation check in validateExecutionPayloadBid, throwing an error if the condition is not met. There are no review comments, so no additional feedback is provided.

@nflaig
nflaig marked this pull request as ready for review May 27, 2026 19:27
@nflaig
nflaig requested a review from a team as a code owner May 27, 2026 19:27
@github-actions

github-actions Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

Performance Report

鉁旓笍 no performance regression detected

Full benchmark results
Benchmark suite Current: 1f57750 Previous: 055b83c Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0509 ms/op 1.2316 ms/op 0.85
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 39.631 us/op 39.964 us/op 0.99
BLS verify - blst 747.67 us/op 631.51 us/op 1.18
BLS verifyMultipleSignatures 3 - blst 1.3647 ms/op 1.3022 ms/op 1.05
BLS verifyMultipleSignatures 8 - blst 2.1851 ms/op 2.0754 ms/op 1.05
BLS verifyMultipleSignatures 32 - blst 7.0027 ms/op 6.4593 ms/op 1.08
BLS verifyMultipleSignatures 64 - blst 13.229 ms/op 12.760 ms/op 1.04
BLS verifyMultipleSignatures 128 - blst 25.775 ms/op 25.005 ms/op 1.03
BLS deserializing 10000 signatures 637.46 ms/op 622.44 ms/op 1.02
BLS deserializing 100000 signatures 6.4799 s/op 6.2463 s/op 1.04
BLS verifyMultipleSignatures - same message - 3 - blst 806.63 us/op 769.41 us/op 1.05
BLS verifyMultipleSignatures - same message - 8 - blst 959.65 us/op 817.55 us/op 1.17
BLS verifyMultipleSignatures - same message - 32 - blst 1.5775 ms/op 1.4765 ms/op 1.07
BLS verifyMultipleSignatures - same message - 64 - blst 2.4067 ms/op 2.2342 ms/op 1.08
BLS verifyMultipleSignatures - same message - 128 - blst 4.0736 ms/op 3.9335 ms/op 1.04
BLS aggregatePubkeys 32 - blst 18.085 us/op 17.595 us/op 1.03
BLS aggregatePubkeys 128 - blst 64.157 us/op 62.686 us/op 1.02
getSlashingsAndExits - default max 54.851 us/op 50.722 us/op 1.08
getSlashingsAndExits - 2k 367.17 us/op 413.55 us/op 0.89
proposeBlockBody type=full, size=empty 1.0914 ms/op 1.3840 ms/op 0.79
isKnown best case - 1 super set check 183.00 ns/op 183.00 ns/op 1.00
isKnown normal case - 2 super set checks 195.00 ns/op 176.00 ns/op 1.11
isKnown worse case - 16 super set checks 185.00 ns/op 181.00 ns/op 1.02
validate api signedAggregateAndProof - struct 1.5269 ms/op 1.4431 ms/op 1.06
validate gossip signedAggregateAndProof - struct 1.5320 ms/op 1.4392 ms/op 1.06
batch validate gossip attestation - vc 640000 - chunk 32 109.53 us/op 102.42 us/op 1.07
batch validate gossip attestation - vc 640000 - chunk 64 95.168 us/op 90.380 us/op 1.05
batch validate gossip attestation - vc 640000 - chunk 128 87.706 us/op 84.996 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 256 84.201 us/op 81.971 us/op 1.03
bytes32 toHexString 303.00 ns/op 293.00 ns/op 1.03
bytes32 Buffer.toString(hex) 176.00 ns/op 182.00 ns/op 0.97
bytes32 Buffer.toString(hex) from Uint8Array 235.00 ns/op 242.00 ns/op 0.97
bytes32 Buffer.toString(hex) + 0x 183.00 ns/op 186.00 ns/op 0.98
Return object 10000 times 0.21640 ns/op 0.21120 ns/op 1.02
Throw Error 10000 times 3.3483 us/op 3.1587 us/op 1.06
toHex 90.269 ns/op 85.446 ns/op 1.06
Buffer.from 84.055 ns/op 78.804 ns/op 1.07
shared Buffer 55.749 ns/op 49.846 ns/op 1.12
fastMsgIdFn sha256 / 200 bytes 1.5010 us/op 1.4250 us/op 1.05
fastMsgIdFn h32 xxhash / 200 bytes 161.00 ns/op 172.00 ns/op 0.94
fastMsgIdFn h64 xxhash / 200 bytes 215.00 ns/op 213.00 ns/op 1.01
fastMsgIdFn sha256 / 1000 bytes 4.8110 us/op 4.5640 us/op 1.05
fastMsgIdFn h32 xxhash / 1000 bytes 248.00 ns/op 257.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 1000 bytes 269.00 ns/op 258.00 ns/op 1.04
fastMsgIdFn sha256 / 10000 bytes 42.458 us/op 40.351 us/op 1.05
fastMsgIdFn h32 xxhash / 10000 bytes 1.2690 us/op 1.2580 us/op 1.01
fastMsgIdFn h64 xxhash / 10000 bytes 832.00 ns/op 813.00 ns/op 1.02
send data - 1000 256B messages 4.2066 ms/op 4.2977 ms/op 0.98
send data - 1000 512B messages 4.3521 ms/op 4.5096 ms/op 0.97
send data - 1000 1024B messages 4.5576 ms/op 4.5447 ms/op 1.00
send data - 1000 1200B messages 4.7781 ms/op 4.9802 ms/op 0.96
send data - 1000 2048B messages 5.3273 ms/op 5.0919 ms/op 1.05
send data - 1000 4096B messages 5.7785 ms/op 6.2954 ms/op 0.92
send data - 1000 16384B messages 28.688 ms/op 36.593 ms/op 0.78
send data - 1000 65536B messages 217.42 ms/op 133.56 ms/op 1.63
enrSubnets - fastDeserialize 64 bits 753.00 ns/op 722.00 ns/op 1.04
enrSubnets - ssz BitVector 64 bits 269.00 ns/op 280.00 ns/op 0.96
enrSubnets - fastDeserialize 4 bits 112.00 ns/op 125.00 ns/op 0.90
enrSubnets - ssz BitVector 4 bits 269.00 ns/op 277.00 ns/op 0.97
prioritizePeers score -10:0 att 32-0.1 sync 2-0 204.24 us/op 199.66 us/op 1.02
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 235.44 us/op 239.16 us/op 0.98
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 340.17 us/op 338.31 us/op 1.01
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 612.94 us/op 592.93 us/op 1.03
prioritizePeers score 0:0 att 64-1 sync 4-1 699.93 us/op 688.19 us/op 1.02
array of 16000 items push then shift 1.3186 us/op 1.2257 us/op 1.08
LinkedList of 16000 items push then shift 7.2250 ns/op 7.2080 ns/op 1.00
array of 16000 items push then pop 71.046 ns/op 67.899 ns/op 1.05
LinkedList of 16000 items push then pop 6.0710 ns/op 5.7240 ns/op 1.06
array of 24000 items push then shift 1.9613 us/op 1.7490 us/op 1.12
LinkedList of 24000 items push then shift 6.9210 ns/op 7.0570 ns/op 0.98
array of 24000 items push then pop 103.10 ns/op 92.525 ns/op 1.11
LinkedList of 24000 items push then pop 6.0920 ns/op 5.7870 ns/op 1.05
intersect bitArray bitLen 8 4.8880 ns/op 4.5530 ns/op 1.07
intersect array and set length 8 30.162 ns/op 27.913 ns/op 1.08
intersect bitArray bitLen 128 24.701 ns/op 22.821 ns/op 1.08
intersect array and set length 128 507.41 ns/op 468.07 ns/op 1.08
bitArray.getTrueBitIndexes() bitLen 128 1.1080 us/op 950.00 ns/op 1.17
bitArray.getTrueBitIndexes() bitLen 248 1.7850 us/op 1.7010 us/op 1.05
bitArray.getTrueBitIndexes() bitLen 512 3.7200 us/op 3.4940 us/op 1.06
Full columns - reconstruct all 6 blobs 187.63 us/op 153.75 us/op 1.22
Full columns - reconstruct half of the blobs out of 6 100.03 us/op 92.647 us/op 1.08
Full columns - reconstruct single blob out of 6 35.205 us/op 45.862 us/op 0.77
Half columns - reconstruct all 6 blobs 399.76 ms/op 374.10 ms/op 1.07
Half columns - reconstruct half of the blobs out of 6 200.07 ms/op 186.64 ms/op 1.07
Half columns - reconstruct single blob out of 6 75.496 ms/op 67.360 ms/op 1.12
Full columns - reconstruct all 10 blobs 209.32 us/op 413.21 us/op 0.51
Full columns - reconstruct half of the blobs out of 10 145.62 us/op 145.45 us/op 1.00
Full columns - reconstruct single blob out of 10 33.864 us/op 44.638 us/op 0.76
Half columns - reconstruct all 10 blobs 660.21 ms/op 611.04 ms/op 1.08
Half columns - reconstruct half of the blobs out of 10 329.78 ms/op 308.57 ms/op 1.07
Half columns - reconstruct single blob out of 10 68.955 ms/op 65.880 ms/op 1.05
Full columns - reconstruct all 20 blobs 1.4869 ms/op 1.2830 ms/op 1.16
Full columns - reconstruct half of the blobs out of 20 250.45 us/op 399.63 us/op 0.63
Full columns - reconstruct single blob out of 20 34.573 us/op 46.565 us/op 0.74
Half columns - reconstruct all 20 blobs 1.3350 s/op 1.2174 s/op 1.10
Half columns - reconstruct half of the blobs out of 20 665.64 ms/op 620.07 ms/op 1.07
Half columns - reconstruct single blob out of 20 71.780 ms/op 67.167 ms/op 1.07
Set add up to 64 items then delete first 2.6611 us/op 2.0953 us/op 1.27
OrderedSet add up to 64 items then delete first 3.4554 us/op 3.3650 us/op 1.03
Set add up to 64 items then delete last 2.4425 us/op 2.0812 us/op 1.17
OrderedSet add up to 64 items then delete last 3.3431 us/op 3.2339 us/op 1.03
Set add up to 64 items then delete middle 2.1714 us/op 2.0834 us/op 1.04
OrderedSet add up to 64 items then delete middle 4.8319 us/op 4.6924 us/op 1.03
Set add up to 128 items then delete first 4.3095 us/op 4.1235 us/op 1.05
OrderedSet add up to 128 items then delete first 6.7336 us/op 6.2335 us/op 1.08
Set add up to 128 items then delete last 4.0831 us/op 3.7311 us/op 1.09
OrderedSet add up to 128 items then delete last 5.8872 us/op 5.7445 us/op 1.02
Set add up to 128 items then delete middle 3.9601 us/op 3.7094 us/op 1.07
OrderedSet add up to 128 items then delete middle 11.906 us/op 11.264 us/op 1.06
Set add up to 256 items then delete first 8.3151 us/op 7.7145 us/op 1.08
OrderedSet add up to 256 items then delete first 12.745 us/op 12.072 us/op 1.06
Set add up to 256 items then delete last 7.7166 us/op 7.5534 us/op 1.02
OrderedSet add up to 256 items then delete last 11.691 us/op 11.639 us/op 1.00
Set add up to 256 items then delete middle 7.7382 us/op 7.5265 us/op 1.03
OrderedSet add up to 256 items then delete middle 35.323 us/op 35.472 us/op 1.00
pass gossip attestations to forkchoice per slot 2.6092 ms/op 2.5360 ms/op 1.03
forkChoice updateHead vc 100000 bc 64 eq 0 434.12 us/op 381.97 us/op 1.14
forkChoice updateHead vc 600000 bc 64 eq 0 2.5615 ms/op 2.3104 ms/op 1.11
forkChoice updateHead vc 1000000 bc 64 eq 0 4.2764 ms/op 3.8110 ms/op 1.12
forkChoice updateHead vc 600000 bc 320 eq 0 2.5643 ms/op 2.3005 ms/op 1.11
forkChoice updateHead vc 600000 bc 1200 eq 0 2.6491 ms/op 2.3596 ms/op 1.12
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9425 ms/op 3.0623 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 1000 3.0392 ms/op 2.8193 ms/op 1.08
forkChoice updateHead vc 600000 bc 64 eq 10000 3.1130 ms/op 2.9238 ms/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 300000 7.3275 ms/op 7.0660 ms/op 1.04
computeDeltas 1400000 validators 0% inactive 12.851 ms/op 12.144 ms/op 1.06
computeDeltas 1400000 validators 10% inactive 12.060 ms/op 11.500 ms/op 1.05
computeDeltas 1400000 validators 20% inactive 10.851 ms/op 10.374 ms/op 1.05
computeDeltas 1400000 validators 50% inactive 8.4256 ms/op 8.0421 ms/op 1.05
computeDeltas 2100000 validators 0% inactive 19.353 ms/op 18.344 ms/op 1.05
computeDeltas 2100000 validators 10% inactive 18.435 ms/op 17.380 ms/op 1.06
computeDeltas 2100000 validators 20% inactive 16.557 ms/op 15.741 ms/op 1.05
computeDeltas 2100000 validators 50% inactive 10.487 ms/op 12.084 ms/op 0.87
altair processAttestation - 250000 vs - 7PWei normalcase 1.7145 ms/op 2.4130 ms/op 0.71
altair processAttestation - 250000 vs - 7PWei worstcase 2.4264 ms/op 3.1243 ms/op 0.78
altair processAttestation - setStatus - 1/6 committees join 106.25 us/op 102.60 us/op 1.04
altair processAttestation - setStatus - 1/3 committees join 208.51 us/op 194.05 us/op 1.07
altair processAttestation - setStatus - 1/2 committees join 288.75 us/op 283.11 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 373.69 us/op 372.26 us/op 1.00
altair processAttestation - setStatus - 4/5 committees join 522.62 us/op 518.13 us/op 1.01
altair processAttestation - setStatus - 100% committees join 623.68 us/op 608.20 us/op 1.03
altair processBlock - 250000 vs - 7PWei normalcase 3.2199 ms/op 4.6656 ms/op 0.69
altair processBlock - 250000 vs - 7PWei normalcase hashState 15.276 ms/op 17.304 ms/op 0.88
altair processBlock - 250000 vs - 7PWei worstcase 20.754 ms/op 23.217 ms/op 0.89
altair processBlock - 250000 vs - 7PWei worstcase hashState 48.316 ms/op 44.666 ms/op 1.08
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3110 ms/op 1.4480 ms/op 0.91
phase0 processBlock - 250000 vs - 7PWei worstcase 18.321 ms/op 18.563 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 296.40 us/op 295.68 us/op 1.00
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 7.4610 us/op 4.8060 us/op 1.55
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.048 us/op 22.411 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.1660 us/op 6.5290 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.5910 us/op 3.5970 us/op 1.00
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 92.226 us/op 95.605 us/op 0.96
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3946 ms/op 1.3912 ms/op 1.00
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8683 ms/op 1.8882 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8579 ms/op 2.0611 ms/op 0.90
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.7534 ms/op 4.6547 ms/op 0.81
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.1164 ms/op 2.4420 ms/op 0.87
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.1275 ms/op 5.5234 ms/op 0.75
Tree 40 250000 create 348.18 ms/op 373.08 ms/op 0.93
Tree 40 250000 get(125000) 98.757 ns/op 93.936 ns/op 1.05
Tree 40 250000 set(125000) 1.0366 us/op 1.2366 us/op 0.84
Tree 40 250000 toArray() 9.9990 ms/op 22.739 ms/op 0.44
Tree 40 250000 iterate all - toArray() + loop 10.563 ms/op 21.597 ms/op 0.49
Tree 40 250000 iterate all - get(i) 40.542 ms/op 43.778 ms/op 0.93
Array 250000 create 2.3869 ms/op 2.3962 ms/op 1.00
Array 250000 clone - spread 702.92 us/op 748.31 us/op 0.94
Array 250000 get(125000) 0.30300 ns/op 0.30300 ns/op 1.00
Array 250000 set(125000) 0.30800 ns/op 0.30300 ns/op 1.02
Array 250000 iterate all - loop 58.628 us/op 58.726 us/op 1.00
phase0 afterProcessEpoch - 250000 vs - 7PWei 41.954 ms/op 39.730 ms/op 1.06
Array.fill - length 1000000 2.4604 ms/op 2.2044 ms/op 1.12
Array push - length 1000000 8.3099 ms/op 10.594 ms/op 0.78
Array.get 0.21311 ns/op 0.21668 ns/op 0.98
Uint8Array.get 0.25111 ns/op 0.24626 ns/op 1.02
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.172 ms/op 22.677 ms/op 0.71
altair processEpoch - mainnet_e81889 266.72 ms/op 326.33 ms/op 0.82
mainnet_e81889 - altair beforeProcessEpoch 14.599 ms/op 46.306 ms/op 0.32
mainnet_e81889 - altair processJustificationAndFinalization 6.0390 us/op 7.4960 us/op 0.81
mainnet_e81889 - altair processInactivityUpdates 3.5164 ms/op 8.0634 ms/op 0.44
mainnet_e81889 - altair processRewardsAndPenalties 18.930 ms/op 22.556 ms/op 0.84
mainnet_e81889 - altair processRegistryUpdates 552.00 ns/op 609.00 ns/op 0.91
mainnet_e81889 - altair processSlashings 131.00 ns/op 137.00 ns/op 0.96
mainnet_e81889 - altair processEth1DataReset 131.00 ns/op 138.00 ns/op 0.95
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6556 ms/op 7.6145 ms/op 0.22
mainnet_e81889 - altair processSlashingsReset 705.00 ns/op 769.00 ns/op 0.92
mainnet_e81889 - altair processRandaoMixesReset 1.1590 us/op 1.6310 us/op 0.71
mainnet_e81889 - altair processHistoricalRootsUpdate 131.00 ns/op 139.00 ns/op 0.94
mainnet_e81889 - altair processParticipationFlagUpdates 427.00 ns/op 522.00 ns/op 0.82
mainnet_e81889 - altair processSyncCommitteeUpdates 102.00 ns/op 114.00 ns/op 0.89
mainnet_e81889 - altair afterProcessEpoch 41.856 ms/op 42.930 ms/op 0.97
capella processEpoch - mainnet_e217614 793.18 ms/op 883.70 ms/op 0.90
mainnet_e217614 - capella beforeProcessEpoch 61.427 ms/op 62.156 ms/op 0.99
mainnet_e217614 - capella processJustificationAndFinalization 5.9430 us/op 6.7050 us/op 0.89
mainnet_e217614 - capella processInactivityUpdates 12.247 ms/op 15.007 ms/op 0.82
mainnet_e217614 - capella processRewardsAndPenalties 90.411 ms/op 92.188 ms/op 0.98
mainnet_e217614 - capella processRegistryUpdates 4.6800 us/op 4.6520 us/op 1.01
mainnet_e217614 - capella processSlashings 132.00 ns/op 134.00 ns/op 0.99
mainnet_e217614 - capella processEth1DataReset 129.00 ns/op 133.00 ns/op 0.97
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.6392 ms/op 19.639 ms/op 0.29
mainnet_e217614 - capella processSlashingsReset 687.00 ns/op 707.00 ns/op 0.97
mainnet_e217614 - capella processRandaoMixesReset 1.1550 us/op 1.4100 us/op 0.82
mainnet_e217614 - capella processHistoricalRootsUpdate 128.00 ns/op 137.00 ns/op 0.93
mainnet_e217614 - capella processParticipationFlagUpdates 422.00 ns/op 450.00 ns/op 0.94
mainnet_e217614 - capella afterProcessEpoch 107.48 ms/op 111.52 ms/op 0.96
phase0 processEpoch - mainnet_e58758 291.67 ms/op 333.50 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 63.590 ms/op 90.479 ms/op 0.70
mainnet_e58758 - phase0 processJustificationAndFinalization 6.2710 us/op 7.0690 us/op 0.89
mainnet_e58758 - phase0 processRewardsAndPenalties 14.967 ms/op 17.449 ms/op 0.86
mainnet_e58758 - phase0 processRegistryUpdates 2.3090 us/op 2.3870 us/op 0.97
mainnet_e58758 - phase0 processSlashings 131.00 ns/op 135.00 ns/op 0.97
mainnet_e58758 - phase0 processEth1DataReset 127.00 ns/op 132.00 ns/op 0.96
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.1176 ms/op 1.1528 ms/op 0.97
mainnet_e58758 - phase0 processSlashingsReset 889.00 ns/op 983.00 ns/op 0.90
mainnet_e58758 - phase0 processRandaoMixesReset 1.2520 us/op 1.4670 us/op 0.85
mainnet_e58758 - phase0 processHistoricalRootsUpdate 133.00 ns/op 136.00 ns/op 0.98
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.1550 us/op 1.3610 us/op 0.85
mainnet_e58758 - phase0 afterProcessEpoch 34.412 ms/op 34.387 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.1271 ms/op 1.0286 ms/op 1.10
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6177 ms/op 1.5968 ms/op 1.01
altair processInactivityUpdates - 250000 normalcase 10.882 ms/op 13.512 ms/op 0.81
altair processInactivityUpdates - 250000 worstcase 11.033 ms/op 13.022 ms/op 0.85
phase0 processRegistryUpdates - 250000 normalcase 2.3100 us/op 2.5010 us/op 0.92
phase0 processRegistryUpdates - 250000 badcase_full_deposits 150.90 us/op 146.24 us/op 1.03
phase0 processRegistryUpdates - 250000 worstcase 0.5 61.895 ms/op 76.903 ms/op 0.80
altair processRewardsAndPenalties - 250000 normalcase 15.371 ms/op 16.425 ms/op 0.94
altair processRewardsAndPenalties - 250000 worstcase 14.660 ms/op 15.571 ms/op 0.94
phase0 getAttestationDeltas - 250000 normalcase 5.4343 ms/op 5.5228 ms/op 0.98
phase0 getAttestationDeltas - 250000 worstcase 5.5449 ms/op 5.7200 ms/op 0.97
phase0 processSlashings - 250000 worstcase 60.521 us/op 66.197 us/op 0.91
altair processSyncCommitteeUpdates - 250000 10.320 ms/op 12.932 ms/op 0.80
BeaconState.hashTreeRoot - No change 175.00 ns/op 173.00 ns/op 1.01
BeaconState.hashTreeRoot - 1 full validator 63.484 us/op 85.562 us/op 0.74
BeaconState.hashTreeRoot - 32 full validator 701.52 us/op 1.0037 ms/op 0.70
BeaconState.hashTreeRoot - 512 full validator 6.3709 ms/op 9.5720 ms/op 0.67
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 76.349 us/op 118.92 us/op 0.64
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2741 ms/op 1.6583 ms/op 0.77
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.112 ms/op 23.333 ms/op 0.60
BeaconState.hashTreeRoot - 1 balances 69.322 us/op 91.758 us/op 0.76
BeaconState.hashTreeRoot - 32 balances 711.12 us/op 819.91 us/op 0.87
BeaconState.hashTreeRoot - 512 balances 4.6646 ms/op 6.7511 ms/op 0.69
BeaconState.hashTreeRoot - 250000 balances 119.45 ms/op 150.60 ms/op 0.79
aggregationBits - 2048 els - zipIndexesInBitList 20.064 us/op 21.243 us/op 0.94
regular array get 100000 times 23.315 us/op 22.619 us/op 1.03
wrappedArray get 100000 times 23.230 us/op 22.987 us/op 1.01
arrayWithProxy get 100000 times 9.9901 ms/op 9.7791 ms/op 1.02
ssz.Root.equals 21.888 ns/op 21.420 ns/op 1.02
byteArrayEquals 21.654 ns/op 21.603 ns/op 1.00
Buffer.compare 9.0250 ns/op 9.0280 ns/op 1.00
processSlot - 1 slots 8.2890 us/op 11.127 us/op 0.74
processSlot - 32 slots 1.6171 ms/op 2.3437 ms/op 0.69
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 2.8635 ms/op 4.4363 ms/op 0.65
getCommitteeAssignments - req 1 vs - 250000 vc 1.6915 ms/op 1.7161 ms/op 0.99
getCommitteeAssignments - req 100 vs - 250000 vc 3.4392 ms/op 3.4914 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6958 ms/op 3.7370 ms/op 0.99
findModifiedValidators - 10000 modified validators 637.14 ms/op 748.86 ms/op 0.85
findModifiedValidators - 1000 modified validators 429.91 ms/op 478.97 ms/op 0.90
findModifiedValidators - 100 modified validators 285.08 ms/op 303.68 ms/op 0.94
findModifiedValidators - 10 modified validators 229.57 ms/op 248.91 ms/op 0.92
findModifiedValidators - 1 modified validators 174.64 ms/op 183.92 ms/op 0.95
findModifiedValidators - no difference 175.25 ms/op 195.00 ms/op 0.90
migrate state 1500000 validators, 3400 modified, 2000 new 2.6186 s/op 3.0888 s/op 0.85
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6900 ns/op 3.7700 ns/op 0.98
state getBlockRootAtSlot - 250000 vs - 7PWei 273.22 ns/op 419.79 ns/op 0.65
computeProposerIndex 100000 validators 1.3317 ms/op 1.3722 ms/op 0.97
getNextSyncCommitteeIndices 1000 validators 2.8374 ms/op 2.9130 ms/op 0.97
getNextSyncCommitteeIndices 10000 validators 25.335 ms/op 25.668 ms/op 0.99
getNextSyncCommitteeIndices 100000 validators 86.795 ms/op 85.798 ms/op 1.01
computeProposers - vc 250000 603.31 us/op 564.89 us/op 1.07
computeEpochShuffling - vc 250000 38.990 ms/op 39.305 ms/op 0.99
getNextSyncCommittee - vc 250000 9.4449 ms/op 9.7199 ms/op 0.97
nodejs block root to RootHex using toHex 94.103 ns/op 93.099 ns/op 1.01
nodejs block root to RootHex using toRootHex 57.878 ns/op 51.670 ns/op 1.12
nodejs fromHex(blob) 744.61 us/op 746.07 us/op 1.00
nodejs fromHexInto(blob) 635.24 us/op 620.50 us/op 1.02
nodejs block root to RootHex using the deprecated toHexString 517.86 ns/op 561.70 ns/op 0.92
nodejs byteArrayEquals 32 bytes (block root) 25.773 ns/op 26.084 ns/op 0.99
nodejs byteArrayEquals 48 bytes (pubkey) 37.310 ns/op 37.520 ns/op 0.99
nodejs byteArrayEquals 96 bytes (signature) 38.253 ns/op 34.023 ns/op 1.12
nodejs byteArrayEquals 1024 bytes 46.667 ns/op 41.083 ns/op 1.14
nodejs byteArrayEquals 131072 bytes (blob) 1.7494 us/op 1.7400 us/op 1.01
browser block root to RootHex using toHex 145.01 ns/op 142.55 ns/op 1.02
browser block root to RootHex using toRootHex 129.39 ns/op 130.72 ns/op 0.99
browser fromHex(blob) 1.5218 ms/op 1.5133 ms/op 1.01
browser fromHexInto(blob) 645.18 us/op 619.50 us/op 1.04
browser block root to RootHex using the deprecated toHexString 358.14 ns/op 363.12 ns/op 0.99
browser byteArrayEquals 32 bytes (block root) 27.961 ns/op 27.304 ns/op 1.02
browser byteArrayEquals 48 bytes (pubkey) 39.433 ns/op 38.586 ns/op 1.02
browser byteArrayEquals 96 bytes (signature) 73.756 ns/op 72.406 ns/op 1.02
browser byteArrayEquals 1024 bytes 754.13 ns/op 738.88 ns/op 1.02
browser byteArrayEquals 131072 bytes (blob) 94.818 us/op 92.051 us/op 1.03

by benchmarkbot/action

@nflaig
nflaig merged commit 847e824 into unstable May 28, 2026
25 of 26 checks passed
@nflaig
nflaig deleted the nflaig/bid-parent-slot-check branch May 28, 2026 21:52
@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.

3 participants