Skip to content

fix: validate execution payload bids against parent branch state#9409

Open
nflaig wants to merge 3 commits into
unstablefrom
nflaig/bid-validation
Open

fix: validate execution payload bids against parent branch state#9409
nflaig wants to merge 3 commits into
unstablefrom
nflaig/bid-validation

Conversation

@nflaig
Copy link
Copy Markdown
Member

@nflaig nflaig commented May 26, 2026

Builder bid validation is branch specific as builder state can differ across branches due to exits and balance changes. This means using the head state to validate isActiveBuilder / canBuilderCoverBid is incorrect, we always need to load the state of the parent block as referenced in the bid via parentBlockRoot.

@nflaig nflaig requested a review from a team as a code owner May 26, 2026 20:37
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 refactors execution payload bid validation by deferring state retrieval until after parent block checks, using the bid's parent branch state for builder checks. It also wraps the builder retrieval in a try-catch block to reject the bid with an appropriate error if the builder is not found. The review feedback suggests rejecting the bid immediately if the bid slot is less than or equal to the parent block slot to prevent DoS vectors, and logging the error when state regeneration fails.

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

github-actions Bot commented May 26, 2026

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 718e786 Previous: 54f7b9d Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 968.17 us/op 1.3721 ms/op 0.71
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 40.612 us/op 40.377 us/op 1.01
BLS verify - blst 741.90 us/op 731.41 us/op 1.01
BLS verifyMultipleSignatures 3 - blst 1.3702 ms/op 1.3432 ms/op 1.02
BLS verifyMultipleSignatures 8 - blst 2.1903 ms/op 2.1260 ms/op 1.03
BLS verifyMultipleSignatures 32 - blst 6.9422 ms/op 6.6369 ms/op 1.05
BLS verifyMultipleSignatures 64 - blst 13.581 ms/op 12.913 ms/op 1.05
BLS verifyMultipleSignatures 128 - blst 25.913 ms/op 26.716 ms/op 0.97
BLS deserializing 10000 signatures 637.45 ms/op 626.93 ms/op 1.02
BLS deserializing 100000 signatures 6.3882 s/op 6.2453 s/op 1.02
BLS verifyMultipleSignatures - same message - 3 - blst 771.38 us/op 746.64 us/op 1.03
BLS verifyMultipleSignatures - same message - 8 - blst 947.86 us/op 880.46 us/op 1.08
BLS verifyMultipleSignatures - same message - 32 - blst 1.5705 ms/op 1.5069 ms/op 1.04
BLS verifyMultipleSignatures - same message - 64 - blst 2.4730 ms/op 2.3955 ms/op 1.03
BLS verifyMultipleSignatures - same message - 128 - blst 4.1068 ms/op 3.9648 ms/op 1.04
BLS aggregatePubkeys 32 - blst 17.746 us/op 18.132 us/op 0.98
BLS aggregatePubkeys 128 - blst 63.596 us/op 63.768 us/op 1.00
getSlashingsAndExits - default max 48.312 us/op 54.744 us/op 0.88
getSlashingsAndExits - 2k 330.64 us/op 444.90 us/op 0.74
proposeBlockBody type=full, size=empty 931.09 us/op 800.31 us/op 1.16
isKnown best case - 1 super set check 181.00 ns/op 391.00 ns/op 0.46
isKnown normal case - 2 super set checks 161.00 ns/op 381.00 ns/op 0.42
isKnown worse case - 16 super set checks 162.00 ns/op 379.00 ns/op 0.43
validate api signedAggregateAndProof - struct 1.5270 ms/op 1.4880 ms/op 1.03
validate gossip signedAggregateAndProof - struct 1.5135 ms/op 1.4917 ms/op 1.01
batch validate gossip attestation - vc 640000 - chunk 32 105.34 us/op 108.27 us/op 0.97
batch validate gossip attestation - vc 640000 - chunk 64 91.851 us/op 96.169 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 128 86.347 us/op 90.135 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 82.493 us/op 88.526 us/op 0.93
bytes32 toHexString 291.00 ns/op 476.00 ns/op 0.61
bytes32 Buffer.toString(hex) 166.00 ns/op 372.00 ns/op 0.45
bytes32 Buffer.toString(hex) from Uint8Array 223.00 ns/op 446.00 ns/op 0.50
bytes32 Buffer.toString(hex) + 0x 164.00 ns/op 367.00 ns/op 0.45
Return object 10000 times 0.21060 ns/op 0.22740 ns/op 0.93
Throw Error 10000 times 3.2659 us/op 3.3345 us/op 0.98
toHex 94.320 ns/op 86.669 ns/op 1.09
Buffer.from 85.309 ns/op 77.633 ns/op 1.10
shared Buffer 55.610 ns/op 50.362 ns/op 1.10
fastMsgIdFn sha256 / 200 bytes 1.4690 us/op 1.6530 us/op 0.89
fastMsgIdFn h32 xxhash / 200 bytes 155.00 ns/op 354.00 ns/op 0.44
fastMsgIdFn h64 xxhash / 200 bytes 196.00 ns/op 411.00 ns/op 0.48
fastMsgIdFn sha256 / 1000 bytes 4.7450 us/op 4.8370 us/op 0.98
fastMsgIdFn h32 xxhash / 1000 bytes 242.00 ns/op 437.00 ns/op 0.55
fastMsgIdFn h64 xxhash / 1000 bytes 245.00 ns/op 457.00 ns/op 0.54
fastMsgIdFn sha256 / 10000 bytes 42.089 us/op 40.542 us/op 1.04
fastMsgIdFn h32 xxhash / 10000 bytes 1.2890 us/op 1.4290 us/op 0.90
fastMsgIdFn h64 xxhash / 10000 bytes 823.00 ns/op 1.0060 us/op 0.82
send data - 1000 256B messages 3.9481 ms/op 7.2419 ms/op 0.55
send data - 1000 512B messages 4.0162 ms/op 6.1496 ms/op 0.65
send data - 1000 1024B messages 4.1829 ms/op 5.5101 ms/op 0.76
send data - 1000 1200B messages 4.4164 ms/op 5.8555 ms/op 0.75
send data - 1000 2048B messages 4.5985 ms/op 7.0867 ms/op 0.65
send data - 1000 4096B messages 5.5404 ms/op 7.3960 ms/op 0.75
send data - 1000 16384B messages 12.256 ms/op 24.452 ms/op 0.50
send data - 1000 65536B messages 249.04 ms/op 171.34 ms/op 1.45
enrSubnets - fastDeserialize 64 bits 731.00 ns/op 1.0020 us/op 0.73
enrSubnets - ssz BitVector 64 bits 281.00 ns/op 478.00 ns/op 0.59
enrSubnets - fastDeserialize 4 bits 104.00 ns/op 304.00 ns/op 0.34
enrSubnets - ssz BitVector 4 bits 275.00 ns/op 480.00 ns/op 0.57
prioritizePeers score -10:0 att 32-0.1 sync 2-0 207.15 us/op 221.27 us/op 0.94
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 234.67 us/op 246.06 us/op 0.95
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 346.90 us/op 355.70 us/op 0.98
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 614.52 us/op 615.60 us/op 1.00
prioritizePeers score 0:0 att 64-1 sync 4-1 701.66 us/op 708.28 us/op 0.99
array of 16000 items push then shift 1.3339 us/op 1.2176 us/op 1.10
LinkedList of 16000 items push then shift 7.0530 ns/op 7.8310 ns/op 0.90
array of 16000 items push then pop 73.136 ns/op 65.046 ns/op 1.12
LinkedList of 16000 items push then pop 6.0320 ns/op 6.1100 ns/op 0.99
array of 24000 items push then shift 1.9636 us/op 1.7996 us/op 1.09
LinkedList of 24000 items push then shift 6.5860 ns/op 7.6670 ns/op 0.86
array of 24000 items push then pop 109.27 ns/op 90.929 ns/op 1.20
LinkedList of 24000 items push then pop 6.1800 ns/op 6.1720 ns/op 1.00
intersect bitArray bitLen 8 4.8440 ns/op 4.7910 ns/op 1.01
intersect array and set length 8 29.938 ns/op 28.251 ns/op 1.06
intersect bitArray bitLen 128 24.689 ns/op 23.283 ns/op 1.06
intersect array and set length 128 508.85 ns/op 479.50 ns/op 1.06
bitArray.getTrueBitIndexes() bitLen 128 1.0850 us/op 1.2250 us/op 0.89
bitArray.getTrueBitIndexes() bitLen 248 1.8400 us/op 1.8990 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 512 3.6880 us/op 3.6850 us/op 1.00
Full columns - reconstruct all 6 blobs 189.76 us/op 174.53 us/op 1.09
Full columns - reconstruct half of the blobs out of 6 80.605 us/op 131.96 us/op 0.61
Full columns - reconstruct single blob out of 6 32.491 us/op 46.511 us/op 0.70
Half columns - reconstruct all 6 blobs 402.21 ms/op 375.67 ms/op 1.07
Half columns - reconstruct half of the blobs out of 6 201.05 ms/op 187.02 ms/op 1.08
Half columns - reconstruct single blob out of 6 71.801 ms/op 67.854 ms/op 1.06
Full columns - reconstruct all 10 blobs 196.39 us/op 389.78 us/op 0.50
Full columns - reconstruct half of the blobs out of 10 94.293 us/op 167.40 us/op 0.56
Full columns - reconstruct single blob out of 10 36.244 us/op 34.755 us/op 1.04
Half columns - reconstruct all 10 blobs 639.17 ms/op 615.52 ms/op 1.04
Half columns - reconstruct half of the blobs out of 10 320.39 ms/op 312.30 ms/op 1.03
Half columns - reconstruct single blob out of 10 67.490 ms/op 66.631 ms/op 1.01
Full columns - reconstruct all 20 blobs 1.5827 ms/op 893.58 us/op 1.77
Full columns - reconstruct half of the blobs out of 20 274.53 us/op 226.56 us/op 1.21
Full columns - reconstruct single blob out of 20 32.250 us/op 45.458 us/op 0.71
Half columns - reconstruct all 20 blobs 1.2775 s/op 1.2434 s/op 1.03
Half columns - reconstruct half of the blobs out of 20 648.42 ms/op 631.95 ms/op 1.03
Half columns - reconstruct single blob out of 20 71.451 ms/op 67.785 ms/op 1.05
Set add up to 64 items then delete first 2.6074 us/op 2.6204 us/op 1.00
OrderedSet add up to 64 items then delete first 3.4339 us/op 3.4752 us/op 0.99
Set add up to 64 items then delete last 2.4099 us/op 2.3547 us/op 1.02
OrderedSet add up to 64 items then delete last 3.3092 us/op 3.2421 us/op 1.02
Set add up to 64 items then delete middle 2.1732 us/op 2.0921 us/op 1.04
OrderedSet add up to 64 items then delete middle 4.8684 us/op 4.6466 us/op 1.05
Set add up to 128 items then delete first 4.3443 us/op 4.2595 us/op 1.02
OrderedSet add up to 128 items then delete first 6.7267 us/op 6.8805 us/op 0.98
Set add up to 128 items then delete last 4.1336 us/op 4.3043 us/op 0.96
OrderedSet add up to 128 items then delete last 5.8898 us/op 6.6788 us/op 0.88
Set add up to 128 items then delete middle 3.9352 us/op 3.7343 us/op 1.05
OrderedSet add up to 128 items then delete middle 11.845 us/op 11.508 us/op 1.03
Set add up to 256 items then delete first 8.0045 us/op 7.7578 us/op 1.03
OrderedSet add up to 256 items then delete first 12.288 us/op 12.209 us/op 1.01
Set add up to 256 items then delete last 7.8257 us/op 7.4806 us/op 1.05
OrderedSet add up to 256 items then delete last 11.699 us/op 11.405 us/op 1.03
Set add up to 256 items then delete middle 7.7734 us/op 7.4366 us/op 1.05
OrderedSet add up to 256 items then delete middle 35.323 us/op 33.712 us/op 1.05
pass gossip attestations to forkchoice per slot 2.5867 ms/op 2.4853 ms/op 1.04
forkChoice updateHead vc 100000 bc 64 eq 0 430.18 us/op 376.74 us/op 1.14
forkChoice updateHead vc 600000 bc 64 eq 0 2.5764 ms/op 2.2477 ms/op 1.15
forkChoice updateHead vc 1000000 bc 64 eq 0 4.2615 ms/op 3.7765 ms/op 1.13
forkChoice updateHead vc 600000 bc 320 eq 0 2.5656 ms/op 2.2607 ms/op 1.13
forkChoice updateHead vc 600000 bc 1200 eq 0 2.6113 ms/op 2.2745 ms/op 1.15
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9197 ms/op 2.5592 ms/op 1.14
forkChoice updateHead vc 600000 bc 64 eq 1000 3.0801 ms/op 2.7902 ms/op 1.10
forkChoice updateHead vc 600000 bc 64 eq 10000 3.1853 ms/op 2.9198 ms/op 1.09
forkChoice updateHead vc 600000 bc 64 eq 300000 7.2475 ms/op 6.5095 ms/op 1.11
computeDeltas 1400000 validators 0% inactive 12.964 ms/op 11.937 ms/op 1.09
computeDeltas 1400000 validators 10% inactive 12.290 ms/op 11.286 ms/op 1.09
computeDeltas 1400000 validators 20% inactive 11.195 ms/op 10.195 ms/op 1.10
computeDeltas 1400000 validators 50% inactive 8.4865 ms/op 7.8819 ms/op 1.08
computeDeltas 2100000 validators 0% inactive 19.531 ms/op 18.127 ms/op 1.08
computeDeltas 2100000 validators 10% inactive 18.330 ms/op 16.842 ms/op 1.09
computeDeltas 2100000 validators 20% inactive 17.714 ms/op 15.557 ms/op 1.14
computeDeltas 2100000 validators 50% inactive 10.385 ms/op 8.9685 ms/op 1.16
altair processAttestation - 250000 vs - 7PWei normalcase 1.6711 ms/op 2.2080 ms/op 0.76
altair processAttestation - 250000 vs - 7PWei worstcase 2.4404 ms/op 3.0085 ms/op 0.81
altair processAttestation - setStatus - 1/6 committees join 103.28 us/op 95.410 us/op 1.08
altair processAttestation - setStatus - 1/3 committees join 201.97 us/op 195.50 us/op 1.03
altair processAttestation - setStatus - 1/2 committees join 288.31 us/op 279.95 us/op 1.03
altair processAttestation - setStatus - 2/3 committees join 376.63 us/op 353.88 us/op 1.06
altair processAttestation - setStatus - 4/5 committees join 512.06 us/op 483.71 us/op 1.06
altair processAttestation - setStatus - 100% committees join 596.33 us/op 594.57 us/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase 2.9997 ms/op 4.4815 ms/op 0.67
altair processBlock - 250000 vs - 7PWei normalcase hashState 12.066 ms/op 14.142 ms/op 0.85
altair processBlock - 250000 vs - 7PWei worstcase 20.428 ms/op 21.221 ms/op 0.96
altair processBlock - 250000 vs - 7PWei worstcase hashState 40.907 ms/op 41.697 ms/op 0.98
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3137 ms/op 1.8075 ms/op 0.73
phase0 processBlock - 250000 vs - 7PWei worstcase 17.038 ms/op 18.798 ms/op 0.91
altair processEth1Data - 250000 vs - 7PWei normalcase 302.38 us/op 287.33 us/op 1.05
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.2600 us/op 4.1960 us/op 0.78
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.629 us/op 20.827 us/op 1.04
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.7540 us/op 7.3120 us/op 0.79
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 4.4100 us/op 4.0480 us/op 1.09
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 95.866 us/op 93.527 us/op 1.03
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3908 ms/op 1.3555 ms/op 1.03
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8223 ms/op 1.7763 ms/op 1.03
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8141 ms/op 1.7268 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6274 ms/op 3.3713 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0661 ms/op 1.9828 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.0407 ms/op 3.7729 ms/op 1.07
Tree 40 250000 create 307.41 ms/op 345.32 ms/op 0.89
Tree 40 250000 get(125000) 98.834 ns/op 88.791 ns/op 1.11
Tree 40 250000 set(125000) 1.0534 us/op 948.91 ns/op 1.11
Tree 40 250000 toArray() 9.1307 ms/op 13.758 ms/op 0.66
Tree 40 250000 iterate all - toArray() + loop 9.2413 ms/op 16.813 ms/op 0.55
Tree 40 250000 iterate all - get(i) 34.228 ms/op 40.702 ms/op 0.84
Array 250000 create 2.0439 ms/op 2.2534 ms/op 0.91
Array 250000 clone - spread 656.87 us/op 719.95 us/op 0.91
Array 250000 get(125000) 0.30100 ns/op 0.48400 ns/op 0.62
Array 250000 set(125000) 0.30500 ns/op 0.49900 ns/op 0.61
Array 250000 iterate all - loop 57.251 us/op 56.724 us/op 1.01
phase0 afterProcessEpoch - 250000 vs - 7PWei 40.466 ms/op 47.930 ms/op 0.84
Array.fill - length 1000000 2.0395 ms/op 2.4934 ms/op 0.82
Array push - length 1000000 7.9023 ms/op 10.316 ms/op 0.77
Array.get 0.21089 ns/op 0.20446 ns/op 1.03
Uint8Array.get 0.25577 ns/op 0.23979 ns/op 1.07
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.694 ms/op 15.392 ms/op 1.02
altair processEpoch - mainnet_e81889 258.33 ms/op 290.26 ms/op 0.89
mainnet_e81889 - altair beforeProcessEpoch 41.344 ms/op 15.352 ms/op 2.69
mainnet_e81889 - altair processJustificationAndFinalization 5.9800 us/op 6.6240 us/op 0.90
mainnet_e81889 - altair processInactivityUpdates 3.6506 ms/op 3.4344 ms/op 1.06
mainnet_e81889 - altair processRewardsAndPenalties 19.976 ms/op 20.653 ms/op 0.97
mainnet_e81889 - altair processRegistryUpdates 549.00 ns/op 752.00 ns/op 0.73
mainnet_e81889 - altair processSlashings 132.00 ns/op 343.00 ns/op 0.38
mainnet_e81889 - altair processEth1DataReset 127.00 ns/op 341.00 ns/op 0.37
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6978 ms/op 1.6623 ms/op 1.02
mainnet_e81889 - altair processSlashingsReset 694.00 ns/op 936.00 ns/op 0.74
mainnet_e81889 - altair processRandaoMixesReset 1.0500 us/op 1.5910 us/op 0.66
mainnet_e81889 - altair processHistoricalRootsUpdate 126.00 ns/op 347.00 ns/op 0.36
mainnet_e81889 - altair processParticipationFlagUpdates 429.00 ns/op 669.00 ns/op 0.64
mainnet_e81889 - altair processSyncCommitteeUpdates 103.00 ns/op 322.00 ns/op 0.32
mainnet_e81889 - altair afterProcessEpoch 41.517 ms/op 40.600 ms/op 1.02
capella processEpoch - mainnet_e217614 752.66 ms/op 843.32 ms/op 0.89
mainnet_e217614 - capella beforeProcessEpoch 61.837 ms/op 56.246 ms/op 1.10
mainnet_e217614 - capella processJustificationAndFinalization 5.3450 us/op 6.8470 us/op 0.78
mainnet_e217614 - capella processInactivityUpdates 12.087 ms/op 13.829 ms/op 0.87
mainnet_e217614 - capella processRewardsAndPenalties 89.254 ms/op 99.173 ms/op 0.90
mainnet_e217614 - capella processRegistryUpdates 4.3950 us/op 4.6840 us/op 0.94
mainnet_e217614 - capella processSlashings 125.00 ns/op 350.00 ns/op 0.36
mainnet_e217614 - capella processEth1DataReset 123.00 ns/op 354.00 ns/op 0.35
mainnet_e217614 - capella processEffectiveBalanceUpdates 5.3493 ms/op 15.884 ms/op 0.34
mainnet_e217614 - capella processSlashingsReset 686.00 ns/op 917.00 ns/op 0.75
mainnet_e217614 - capella processRandaoMixesReset 1.0840 us/op 1.6030 us/op 0.68
mainnet_e217614 - capella processHistoricalRootsUpdate 127.00 ns/op 349.00 ns/op 0.36
mainnet_e217614 - capella processParticipationFlagUpdates 410.00 ns/op 672.00 ns/op 0.61
mainnet_e217614 - capella afterProcessEpoch 109.73 ms/op 107.54 ms/op 1.02
phase0 processEpoch - mainnet_e58758 246.91 ms/op 338.86 ms/op 0.73
mainnet_e58758 - phase0 beforeProcessEpoch 47.058 ms/op 68.298 ms/op 0.69
mainnet_e58758 - phase0 processJustificationAndFinalization 4.8570 us/op 6.7310 us/op 0.72
mainnet_e58758 - phase0 processRewardsAndPenalties 15.757 ms/op 16.054 ms/op 0.98
mainnet_e58758 - phase0 processRegistryUpdates 2.2310 us/op 2.4950 us/op 0.89
mainnet_e58758 - phase0 processSlashings 131.00 ns/op 347.00 ns/op 0.38
mainnet_e58758 - phase0 processEth1DataReset 126.00 ns/op 347.00 ns/op 0.36
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 863.61 us/op 1.6865 ms/op 0.51
mainnet_e58758 - phase0 processSlashingsReset 791.00 ns/op 1.5120 us/op 0.52
mainnet_e58758 - phase0 processRandaoMixesReset 1.0570 us/op 1.6380 us/op 0.65
mainnet_e58758 - phase0 processHistoricalRootsUpdate 130.00 ns/op 361.00 ns/op 0.36
mainnet_e58758 - phase0 processParticipationRecordUpdates 933.00 ns/op 1.5220 us/op 0.61
mainnet_e58758 - phase0 afterProcessEpoch 32.482 ms/op 33.871 ms/op 0.96
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0051 ms/op 1.0279 ms/op 0.98
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5752 ms/op 1.5684 ms/op 1.00
altair processInactivityUpdates - 250000 normalcase 10.361 ms/op 11.652 ms/op 0.89
altair processInactivityUpdates - 250000 worstcase 10.374 ms/op 11.928 ms/op 0.87
phase0 processRegistryUpdates - 250000 normalcase 2.1810 us/op 3.9550 us/op 0.55
phase0 processRegistryUpdates - 250000 badcase_full_deposits 147.79 us/op 144.26 us/op 1.02
phase0 processRegistryUpdates - 250000 worstcase 0.5 51.138 ms/op 76.337 ms/op 0.67
altair processRewardsAndPenalties - 250000 normalcase 13.772 ms/op 19.859 ms/op 0.69
altair processRewardsAndPenalties - 250000 worstcase 13.363 ms/op 19.243 ms/op 0.69
phase0 getAttestationDeltas - 250000 normalcase 5.2578 ms/op 5.4943 ms/op 0.96
phase0 getAttestationDeltas - 250000 worstcase 5.7673 ms/op 5.5324 ms/op 1.04
phase0 processSlashings - 250000 worstcase 61.404 us/op 60.452 us/op 1.02
altair processSyncCommitteeUpdates - 250000 9.9027 ms/op 10.837 ms/op 0.91
BeaconState.hashTreeRoot - No change 159.00 ns/op 388.00 ns/op 0.41
BeaconState.hashTreeRoot - 1 full validator 57.322 us/op 83.428 us/op 0.69
BeaconState.hashTreeRoot - 32 full validator 634.39 us/op 883.68 us/op 0.72
BeaconState.hashTreeRoot - 512 full validator 6.0069 ms/op 8.5241 ms/op 0.70
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 69.413 us/op 108.14 us/op 0.64
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0194 ms/op 1.4315 ms/op 0.71
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 12.679 ms/op 20.169 ms/op 0.63
BeaconState.hashTreeRoot - 1 balances 56.267 us/op 79.248 us/op 0.71
BeaconState.hashTreeRoot - 32 balances 536.12 us/op 788.62 us/op 0.68
BeaconState.hashTreeRoot - 512 balances 4.6242 ms/op 6.4182 ms/op 0.72
BeaconState.hashTreeRoot - 250000 balances 90.615 ms/op 137.58 ms/op 0.66
aggregationBits - 2048 els - zipIndexesInBitList 19.830 us/op 19.911 us/op 1.00
regular array get 100000 times 22.772 us/op 22.988 us/op 0.99
wrappedArray get 100000 times 22.736 us/op 23.039 us/op 0.99
arrayWithProxy get 100000 times 10.070 ms/op 9.7421 ms/op 1.03
ssz.Root.equals 21.371 ns/op 21.584 ns/op 0.99
byteArrayEquals 21.186 ns/op 21.261 ns/op 1.00
Buffer.compare 9.2760 ns/op 8.8610 ns/op 1.05
processSlot - 1 slots 7.9030 us/op 10.584 us/op 0.75
processSlot - 32 slots 1.5032 ms/op 2.0852 ms/op 0.72
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.1066 ms/op 3.8784 ms/op 0.80
getCommitteeAssignments - req 1 vs - 250000 vc 1.6634 ms/op 1.6589 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 3.3670 ms/op 3.4095 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6110 ms/op 3.7132 ms/op 0.97
findModifiedValidators - 10000 modified validators 733.46 ms/op 690.87 ms/op 1.06
findModifiedValidators - 1000 modified validators 636.54 ms/op 434.13 ms/op 1.47
findModifiedValidators - 100 modified validators 259.78 ms/op 316.12 ms/op 0.82
findModifiedValidators - 10 modified validators 203.16 ms/op 228.21 ms/op 0.89
findModifiedValidators - 1 modified validators 164.41 ms/op 141.38 ms/op 1.16
findModifiedValidators - no difference 141.36 ms/op 161.63 ms/op 0.87
migrate state 1500000 validators, 3400 modified, 2000 new 2.5782 s/op 3.4445 s/op 0.75
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.4200 ns/op 5.6700 ns/op 0.60
state getBlockRootAtSlot - 250000 vs - 7PWei 284.31 ns/op 418.82 ns/op 0.68
computeProposerIndex 100000 validators 1.2825 ms/op 1.3543 ms/op 0.95
getNextSyncCommitteeIndices 1000 validators 2.8095 ms/op 2.8649 ms/op 0.98
getNextSyncCommitteeIndices 10000 validators 24.873 ms/op 25.184 ms/op 0.99
getNextSyncCommitteeIndices 100000 validators 81.817 ms/op 87.944 ms/op 0.93
computeProposers - vc 250000 537.24 us/op 581.02 us/op 0.92
computeEpochShuffling - vc 250000 38.718 ms/op 39.819 ms/op 0.97
getNextSyncCommittee - vc 250000 9.2403 ms/op 9.6863 ms/op 0.95
nodejs block root to RootHex using toHex 94.234 ns/op 86.444 ns/op 1.09
nodejs block root to RootHex using toRootHex 59.481 ns/op 50.734 ns/op 1.17
nodejs fromHex(blob) 738.25 us/op 772.55 us/op 0.96
nodejs fromHexInto(blob) 656.81 us/op 628.04 us/op 1.05
nodejs block root to RootHex using the deprecated toHexString 509.32 ns/op 521.43 ns/op 0.98
nodejs byteArrayEquals 32 bytes (block root) 25.452 ns/op 26.128 ns/op 0.97
nodejs byteArrayEquals 48 bytes (pubkey) 36.880 ns/op 37.633 ns/op 0.98
nodejs byteArrayEquals 96 bytes (signature) 39.992 ns/op 33.571 ns/op 1.19
nodejs byteArrayEquals 1024 bytes 43.783 ns/op 39.917 ns/op 1.10
nodejs byteArrayEquals 131072 bytes (blob) 1.7507 us/op 1.7801 us/op 0.98
browser block root to RootHex using toHex 144.88 ns/op 146.31 ns/op 0.99
browser block root to RootHex using toRootHex 129.62 ns/op 130.54 ns/op 0.99
browser fromHex(blob) 1.5476 ms/op 1.5497 ms/op 1.00
browser fromHexInto(blob) 654.27 us/op 599.90 us/op 1.09
browser block root to RootHex using the deprecated toHexString 349.41 ns/op 344.84 ns/op 1.01
browser byteArrayEquals 32 bytes (block root) 27.434 ns/op 27.510 ns/op 1.00
browser byteArrayEquals 48 bytes (pubkey) 38.654 ns/op 38.745 ns/op 1.00
browser byteArrayEquals 96 bytes (signature) 72.878 ns/op 72.441 ns/op 1.01
browser byteArrayEquals 1024 bytes 735.71 ns/op 751.44 ns/op 0.98
browser byteArrayEquals 131072 bytes (blob) 93.104 us/op 94.728 us/op 0.98

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