Skip to content

fix: return 400 for gossip validation errors - #9699

Merged
nflaig merged 2 commits into
unstablefrom
nflaig/gossip-validation-http-400
Jul 24, 2026
Merged

fix: return 400 for gossip validation errors#9699
nflaig merged 2 commits into
unstablefrom
nflaig/gossip-validation-http-400

Conversation

@nflaig

@nflaig nflaig commented Jul 23, 2026

Copy link
Copy Markdown
Member

Map GossipActionError to 400 at the REST boundary. Both IGNORE and REJECT mean the submitted object did not pass gossip validation; unexpected errors continue to return 500.

This fixes publishExecutionPayloadBid returning 500 when proposer preferences are missing and covers other Beacon API publish endpoints using the same gossip validation errors.

see https://github.com/ethereum/beacon-APIs/blob/master/apis/beacon/execution_payload/bid.yaml

Checks:

  • pnpm lint
  • pnpm check-types

This PR was written primarily by Codex.

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

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Performance Report

鉁旓笍 no performance regression detected

Full benchmark results
Benchmark suite Current: 0255669 Previous: d16fa2b Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 896.11 us/op 879.50 us/op 1.02
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 39.354 us/op 37.426 us/op 1.05
BLS verify - blst 680.94 us/op 760.80 us/op 0.90
BLS verifyMultipleSignatures 3 - blst 1.3171 ms/op 1.3673 ms/op 0.96
BLS verifyMultipleSignatures 8 - blst 2.0552 ms/op 2.1594 ms/op 0.95
BLS verifyMultipleSignatures 32 - blst 6.5727 ms/op 6.8778 ms/op 0.96
BLS verifyMultipleSignatures 64 - blst 12.590 ms/op 13.103 ms/op 0.96
BLS verifyMultipleSignatures 128 - blst 24.225 ms/op 25.786 ms/op 0.94
BLS deserializing 10000 signatures 614.87 ms/op 623.27 ms/op 0.99
BLS deserializing 100000 signatures 6.4537 s/op 6.4625 s/op 1.00
BLS verifyMultipleSignatures - same message - 3 - blst 695.36 us/op 813.12 us/op 0.86
BLS verifyMultipleSignatures - same message - 8 - blst 911.02 us/op 980.90 us/op 0.93
BLS verifyMultipleSignatures - same message - 32 - blst 1.4923 ms/op 1.6260 ms/op 0.92
BLS verifyMultipleSignatures - same message - 64 - blst 2.3031 ms/op 2.4886 ms/op 0.93
BLS verifyMultipleSignatures - same message - 128 - blst 3.9239 ms/op 4.2456 ms/op 0.92
BLS aggregatePubkeys 32 - blst 17.201 us/op 18.305 us/op 0.94
BLS aggregatePubkeys 128 - blst 61.394 us/op 65.206 us/op 0.94
getSlashingsAndExits - default max 53.838 us/op 50.784 us/op 1.06
getSlashingsAndExits - 2k 388.29 us/op 362.11 us/op 1.07
proposeBlockBody type=full, size=empty 669.00 us/op 608.87 us/op 1.10
isKnown best case - 1 super set check 169.00 ns/op 165.00 ns/op 1.02
isKnown normal case - 2 super set checks 170.00 ns/op 167.00 ns/op 1.02
isKnown worse case - 16 super set checks 164.00 ns/op 169.00 ns/op 0.97
validate api signedAggregateAndProof - struct 1.5188 ms/op 1.5763 ms/op 0.96
validate gossip signedAggregateAndProof - struct 1.4914 ms/op 1.5710 ms/op 0.95
batch validate gossip attestation - vc 640000 - chunk 32 106.54 us/op 112.78 us/op 0.94
batch validate gossip attestation - vc 640000 - chunk 64 103.18 us/op 99.585 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 128 91.719 us/op 93.002 us/op 0.99
batch validate gossip attestation - vc 640000 - chunk 256 91.795 us/op 89.437 us/op 1.03
bytes32 toHexString 286.00 ns/op 294.00 ns/op 0.97
bytes32 Buffer.toString(hex) 169.00 ns/op 163.00 ns/op 1.04
bytes32 Buffer.toString(hex) from Uint8Array 242.00 ns/op 241.00 ns/op 1.00
bytes32 Buffer.toString(hex) + 0x 173.00 ns/op 166.00 ns/op 1.04
Return object 10000 times 0.21410 ns/op 0.21950 ns/op 0.98
Throw Error 10000 times 3.5570 us/op 3.4292 us/op 1.04
toHex 94.688 ns/op 98.201 ns/op 0.96
Buffer.from 87.469 ns/op 91.479 ns/op 0.96
shared Buffer 57.902 ns/op 61.829 ns/op 0.94
fastMsgIdFn sha256 / 200 bytes 1.4950 us/op 1.5100 us/op 0.99
fastMsgIdFn h32 xxhash / 200 bytes 155.00 ns/op 155.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 200 bytes 200.00 ns/op 200.00 ns/op 1.00
fastMsgIdFn sha256 / 1000 bytes 4.7020 us/op 4.8900 us/op 0.96
fastMsgIdFn h32 xxhash / 1000 bytes 244.00 ns/op 248.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 1000 bytes 255.00 ns/op 254.00 ns/op 1.00
fastMsgIdFn sha256 / 10000 bytes 41.736 us/op 43.277 us/op 0.96
fastMsgIdFn h32 xxhash / 10000 bytes 1.2710 us/op 1.3170 us/op 0.97
fastMsgIdFn h64 xxhash / 10000 bytes 829.00 ns/op 853.00 ns/op 0.97
send data - 1000 256B messages 4.6553 ms/op 4.4865 ms/op 1.04
send data - 1000 512B messages 6.3212 ms/op 5.0310 ms/op 1.26
send data - 1000 1024B messages 6.2780 ms/op 6.0003 ms/op 1.05
send data - 1000 1200B messages 7.2086 ms/op 6.4023 ms/op 1.13
send data - 1000 2048B messages 19.234 ms/op 12.055 ms/op 1.60
send data - 1000 4096B messages 32.856 ms/op 86.159 ms/op 0.38
send data - 1000 16384B messages 241.85 ms/op 382.08 ms/op 0.63
send data - 1000 65536B messages 1.1531 s/op 1.4968 s/op 0.77
enrSubnets - fastDeserialize 64 bits 752.00 ns/op 774.00 ns/op 0.97
enrSubnets - ssz BitVector 64 bits 265.00 ns/op 257.00 ns/op 1.03
enrSubnets - fastDeserialize 4 bits 102.00 ns/op 97.000 ns/op 1.05
enrSubnets - ssz BitVector 4 bits 263.00 ns/op 254.00 ns/op 1.04
prioritizePeers score -10:0 att 32-0.1 sync 2-0 206.19 us/op 197.80 us/op 1.04
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 233.41 us/op 218.52 us/op 1.07
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 341.44 us/op 331.14 us/op 1.03
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 595.53 us/op 582.10 us/op 1.02
prioritizePeers score 0:0 att 64-1 sync 4-1 696.59 us/op 678.87 us/op 1.03
array of 16000 items push then shift 1.2707 us/op 1.2910 us/op 0.98
LinkedList of 16000 items push then shift 7.7590 ns/op 6.9440 ns/op 1.12
array of 16000 items push then pop 85.769 ns/op 64.880 ns/op 1.32
LinkedList of 16000 items push then pop 6.2570 ns/op 5.9410 ns/op 1.05
array of 24000 items push then shift 1.8744 us/op 1.9006 us/op 0.99
LinkedList of 24000 items push then shift 7.0720 ns/op 6.4990 ns/op 1.09
array of 24000 items push then pop 121.28 ns/op 90.776 ns/op 1.34
LinkedList of 24000 items push then pop 6.2370 ns/op 5.9470 ns/op 1.05
intersect bitArray bitLen 8 4.6720 ns/op 4.7840 ns/op 0.98
intersect array and set length 8 28.852 ns/op 29.557 ns/op 0.98
intersect bitArray bitLen 128 23.589 ns/op 24.123 ns/op 0.98
intersect array and set length 128 494.63 ns/op 512.23 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 911.00 ns/op 907.00 ns/op 1.00
bitArray.getTrueBitIndexes() bitLen 248 1.6820 us/op 1.6380 us/op 1.03
bitArray.getTrueBitIndexes() bitLen 512 3.5780 us/op 3.4060 us/op 1.05
Full columns - reconstruct all 6 blobs 141.07 us/op 104.39 us/op 1.35
Full columns - reconstruct half of the blobs out of 6 88.018 us/op 64.703 us/op 1.36
Full columns - reconstruct single blob out of 6 35.517 us/op 32.127 us/op 1.11
Half columns - reconstruct all 6 blobs 395.24 ms/op 384.41 ms/op 1.03
Half columns - reconstruct half of the blobs out of 6 199.70 ms/op 191.46 ms/op 1.04
Half columns - reconstruct single blob out of 6 69.316 ms/op 68.268 ms/op 1.02
Set add up to 64 items then delete first 2.0930 us/op 1.5270 us/op 1.37
OrderedSet add up to 64 items then delete first 3.3393 us/op 2.3804 us/op 1.40
Set add up to 64 items then delete last 2.3484 us/op 1.7615 us/op 1.33
OrderedSet add up to 64 items then delete last 3.6418 us/op 2.7996 us/op 1.30
Set add up to 64 items then delete middle 2.2681 us/op 1.8921 us/op 1.20
OrderedSet add up to 64 items then delete middle 6.1716 us/op 4.2673 us/op 1.45
Set add up to 128 items then delete first 4.7209 us/op 3.7696 us/op 1.25
OrderedSet add up to 128 items then delete first 6.4530 us/op 5.8078 us/op 1.11
Set add up to 128 items then delete last 4.6386 us/op 3.6738 us/op 1.26
OrderedSet add up to 128 items then delete last 6.3185 us/op 5.4024 us/op 1.17
Set add up to 128 items then delete middle 4.5159 us/op 3.6450 us/op 1.24
OrderedSet add up to 128 items then delete middle 12.804 us/op 10.753 us/op 1.19
Set add up to 256 items then delete first 9.9809 us/op 7.1089 us/op 1.40
OrderedSet add up to 256 items then delete first 17.643 us/op 11.189 us/op 1.58
Set add up to 256 items then delete last 8.5247 us/op 6.7707 us/op 1.26
OrderedSet add up to 256 items then delete last 13.717 us/op 10.630 us/op 1.29
Set add up to 256 items then delete middle 9.0266 us/op 6.8529 us/op 1.32
OrderedSet add up to 256 items then delete middle 39.527 us/op 32.936 us/op 1.20
runFastConfirmationRules vc:100000 bc:96 eq:0 5.8620 ms/op 4.2283 ms/op 1.39
runFastConfirmationRules vc:600000 bc:96 eq:0 38.872 ms/op 33.389 ms/op 1.16
runFastConfirmationRules vc:1000000 bc:96 eq:0 60.760 ms/op 54.638 ms/op 1.11
runFastConfirmationRules vc:600000 bc:320 eq:0 36.838 ms/op 33.271 ms/op 1.11
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.1254 s/op 1.0479 s/op 1.07
pass gossip attestations to forkchoice per slot 2.6259 ms/op 2.5840 ms/op 1.02
forkChoice updateHead vc 100000 bc 64 eq 0 404.85 us/op 423.55 us/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 0 2.4210 ms/op 2.5761 ms/op 0.94
forkChoice updateHead vc 1000000 bc 64 eq 0 4.1054 ms/op 4.2651 ms/op 0.96
forkChoice updateHead vc 600000 bc 320 eq 0 2.4621 ms/op 2.6098 ms/op 0.94
forkChoice updateHead vc 600000 bc 1200 eq 0 2.4570 ms/op 2.5832 ms/op 0.95
forkChoice updateHead vc 600000 bc 7200 eq 0 3.4119 ms/op 2.9399 ms/op 1.16
forkChoice updateHead vc 600000 bc 64 eq 1000 2.3762 ms/op 2.3400 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 10000 2.4498 ms/op 2.4424 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 300000 6.8167 ms/op 6.9825 ms/op 0.98
computeDeltas 1400000 validators 0% inactive 11.793 ms/op 11.532 ms/op 1.02
computeDeltas 1400000 validators 10% inactive 11.115 ms/op 10.885 ms/op 1.02
computeDeltas 1400000 validators 20% inactive 10.508 ms/op 10.379 ms/op 1.01
computeDeltas 1400000 validators 50% inactive 8.9506 ms/op 8.4444 ms/op 1.06
computeDeltas 2100000 validators 0% inactive 17.627 ms/op 17.283 ms/op 1.02
computeDeltas 2100000 validators 10% inactive 16.683 ms/op 16.481 ms/op 1.01
computeDeltas 2100000 validators 20% inactive 15.797 ms/op 15.355 ms/op 1.03
computeDeltas 2100000 validators 50% inactive 10.371 ms/op 10.158 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei normalcase 2.3152 ms/op 1.6857 ms/op 1.37
altair processAttestation - 250000 vs - 7PWei worstcase 3.0864 ms/op 2.4996 ms/op 1.23
altair processAttestation - setStatus - 1/6 committees join 96.028 us/op 106.28 us/op 0.90
altair processAttestation - setStatus - 1/3 committees join 189.62 us/op 194.76 us/op 0.97
altair processAttestation - setStatus - 1/2 committees join 273.62 us/op 284.75 us/op 0.96
altair processAttestation - setStatus - 2/3 committees join 356.52 us/op 375.34 us/op 0.95
altair processAttestation - setStatus - 4/5 committees join 516.20 us/op 502.62 us/op 1.03
altair processAttestation - setStatus - 100% committees join 605.40 us/op 598.21 us/op 1.01
altair processBlock - 250000 vs - 7PWei normalcase 4.2736 ms/op 3.1501 ms/op 1.36
altair processBlock - 250000 vs - 7PWei normalcase hashState 15.102 ms/op 16.906 ms/op 0.89
altair processBlock - 250000 vs - 7PWei worstcase 20.500 ms/op 20.100 ms/op 1.02
altair processBlock - 250000 vs - 7PWei worstcase hashState 40.806 ms/op 38.699 ms/op 1.05
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2941 ms/op 1.4428 ms/op 0.90
phase0 processBlock - 250000 vs - 7PWei worstcase 16.675 ms/op 16.738 ms/op 1.00
altair processEth1Data - 250000 vs - 7PWei normalcase 277.15 us/op 283.06 us/op 0.98
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.6210 us/op 3.2690 us/op 1.11
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 21.618 us/op 21.708 us/op 1.00
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.9810 us/op 5.8990 us/op 1.01
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.6690 us/op 3.4770 us/op 1.06
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 92.352 us/op 96.985 us/op 0.95
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4189 ms/op 1.3586 ms/op 1.04
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.8322 ms/op 1.7933 ms/op 1.02
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8424 ms/op 1.8122 ms/op 1.02
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.6504 ms/op 3.6681 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0497 ms/op 2.0403 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.8220 ms/op 3.9844 ms/op 0.96
Tree 40 250000 create 324.95 ms/op 355.87 ms/op 0.91
Tree 40 250000 get(125000) 88.597 ns/op 90.689 ns/op 0.98
Tree 40 250000 set(125000) 935.68 ns/op 972.40 ns/op 0.96
Tree 40 250000 toArray() 15.953 ms/op 15.840 ms/op 1.01
Tree 40 250000 iterate all - toArray() + loop 16.187 ms/op 16.004 ms/op 1.01
Tree 40 250000 iterate all - get(i) 39.139 ms/op 38.234 ms/op 1.02
Array 250000 create 2.4547 ms/op 2.0884 ms/op 1.18
Array 250000 clone - spread 662.74 us/op 642.27 us/op 1.03
Array 250000 get(125000) 0.28300 ns/op 0.28600 ns/op 0.99
Array 250000 set(125000) 0.28100 ns/op 0.29300 ns/op 0.96
Array 250000 iterate all - loop 55.062 us/op 56.119 us/op 0.98
phase0 afterProcessEpoch - 250000 vs - 7PWei 38.288 ms/op 51.001 ms/op 0.75
Array.fill - length 1000000 2.1505 ms/op 2.1067 ms/op 1.02
Array push - length 1000000 9.4524 ms/op 8.7343 ms/op 1.08
Array.get 0.19815 ns/op 0.19886 ns/op 1.00
Uint8Array.get 0.23693 ns/op 0.24208 ns/op 0.98
phase0 beforeProcessEpoch - 250000 vs - 7PWei 19.227 ms/op 18.999 ms/op 1.01
altair processEpoch - mainnet_e81889 258.99 ms/op 334.05 ms/op 0.78
mainnet_e81889 - altair beforeProcessEpoch 14.710 ms/op 19.704 ms/op 0.75
mainnet_e81889 - altair processJustificationAndFinalization 5.7370 us/op 6.4660 us/op 0.89
mainnet_e81889 - altair processInactivityUpdates 3.4259 ms/op 3.4645 ms/op 0.99
mainnet_e81889 - altair processRewardsAndPenalties 19.036 ms/op 19.323 ms/op 0.99
mainnet_e81889 - altair processRegistryUpdates 517.00 ns/op 531.00 ns/op 0.97
mainnet_e81889 - altair processSlashings 124.00 ns/op 136.00 ns/op 0.91
mainnet_e81889 - altair processEth1DataReset 120.00 ns/op 142.00 ns/op 0.85
mainnet_e81889 - altair processEffectiveBalanceUpdates 3.1314 ms/op 3.6018 ms/op 0.87
mainnet_e81889 - altair processSlashingsReset 719.00 ns/op 674.00 ns/op 1.07
mainnet_e81889 - altair processRandaoMixesReset 1.2820 us/op 1.3840 us/op 0.93
mainnet_e81889 - altair processHistoricalRootsUpdate 124.00 ns/op 131.00 ns/op 0.95
mainnet_e81889 - altair processParticipationFlagUpdates 473.00 ns/op 426.00 ns/op 1.11
mainnet_e81889 - altair processSyncCommitteeUpdates 101.00 ns/op 107.00 ns/op 0.94
mainnet_e81889 - altair afterProcessEpoch 40.455 ms/op 41.292 ms/op 0.98
capella processEpoch - mainnet_e217614 828.57 ms/op 988.56 ms/op 0.84
mainnet_e217614 - capella beforeProcessEpoch 58.079 ms/op 56.440 ms/op 1.03
mainnet_e217614 - capella processJustificationAndFinalization 6.2430 us/op 8.0110 us/op 0.78
mainnet_e217614 - capella processInactivityUpdates 15.479 ms/op 10.980 ms/op 1.41
mainnet_e217614 - capella processRewardsAndPenalties 91.938 ms/op 105.01 ms/op 0.88
mainnet_e217614 - capella processRegistryUpdates 4.3850 us/op 4.5490 us/op 0.96
mainnet_e217614 - capella processSlashings 128.00 ns/op 134.00 ns/op 0.96
mainnet_e217614 - capella processEth1DataReset 122.00 ns/op 127.00 ns/op 0.96
mainnet_e217614 - capella processEffectiveBalanceUpdates 17.069 ms/op 5.5332 ms/op 3.08
mainnet_e217614 - capella processSlashingsReset 668.00 ns/op 679.00 ns/op 0.98
mainnet_e217614 - capella processRandaoMixesReset 1.2890 us/op 1.3270 us/op 0.97
mainnet_e217614 - capella processHistoricalRootsUpdate 123.00 ns/op 130.00 ns/op 0.95
mainnet_e217614 - capella processParticipationFlagUpdates 418.00 ns/op 426.00 ns/op 0.98
mainnet_e217614 - capella afterProcessEpoch 105.58 ms/op 110.00 ms/op 0.96
phase0 processEpoch - mainnet_e58758 352.58 ms/op 310.88 ms/op 1.13
mainnet_e58758 - phase0 beforeProcessEpoch 92.146 ms/op 63.984 ms/op 1.44
mainnet_e58758 - phase0 processJustificationAndFinalization 6.8560 us/op 5.9160 us/op 1.16
mainnet_e58758 - phase0 processRewardsAndPenalties 17.394 ms/op 15.455 ms/op 1.13
mainnet_e58758 - phase0 processRegistryUpdates 2.2480 us/op 2.2400 us/op 1.00
mainnet_e58758 - phase0 processSlashings 131.00 ns/op 134.00 ns/op 0.98
mainnet_e58758 - phase0 processEth1DataReset 124.00 ns/op 131.00 ns/op 0.95
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 822.64 us/op 832.59 us/op 0.99
mainnet_e58758 - phase0 processSlashingsReset 921.00 ns/op 933.00 ns/op 0.99
mainnet_e58758 - phase0 processRandaoMixesReset 1.3480 us/op 1.4890 us/op 0.91
mainnet_e58758 - phase0 processHistoricalRootsUpdate 143.00 ns/op 139.00 ns/op 1.03
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.2490 us/op 1.2420 us/op 1.01
mainnet_e58758 - phase0 afterProcessEpoch 33.738 ms/op 32.930 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0129 ms/op 1.0719 ms/op 0.94
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6103 ms/op 1.2024 ms/op 1.34
altair processInactivityUpdates - 250000 normalcase 15.850 ms/op 11.959 ms/op 1.33
altair processInactivityUpdates - 250000 worstcase 16.328 ms/op 13.015 ms/op 1.25
phase0 processRegistryUpdates - 250000 normalcase 4.1250 us/op 2.2280 us/op 1.85
phase0 processRegistryUpdates - 250000 badcase_full_deposits 149.19 us/op 147.20 us/op 1.01
phase0 processRegistryUpdates - 250000 worstcase 0.5 68.922 ms/op 75.991 ms/op 0.91
altair processRewardsAndPenalties - 250000 normalcase 17.085 ms/op 13.267 ms/op 1.29
altair processRewardsAndPenalties - 250000 worstcase 17.176 ms/op 12.924 ms/op 1.33
phase0 getAttestationDeltas - 250000 normalcase 5.8830 ms/op 5.4135 ms/op 1.09
phase0 getAttestationDeltas - 250000 worstcase 5.7655 ms/op 5.5036 ms/op 1.05
phase0 processSlashings - 250000 worstcase 66.172 us/op 59.929 us/op 1.10
altair processSyncCommitteeUpdates - 250000 10.899 ms/op 10.172 ms/op 1.07
BeaconState.hashTreeRoot - No change 231.00 ns/op 176.00 ns/op 1.31
BeaconState.hashTreeRoot - 1 full validator 86.029 us/op 74.673 us/op 1.15
BeaconState.hashTreeRoot - 32 full validator 1.2283 ms/op 859.50 us/op 1.43
BeaconState.hashTreeRoot - 512 full validator 9.8530 ms/op 6.2519 ms/op 1.58
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 117.91 us/op 84.407 us/op 1.40
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.4300 ms/op 1.1494 ms/op 1.24
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 21.810 ms/op 21.191 ms/op 1.03
BeaconState.hashTreeRoot - 1 balances 87.717 us/op 77.926 us/op 1.13
BeaconState.hashTreeRoot - 32 balances 689.50 us/op 724.71 us/op 0.95
BeaconState.hashTreeRoot - 512 balances 6.4927 ms/op 6.3702 ms/op 1.02
BeaconState.hashTreeRoot - 250000 balances 141.11 ms/op 158.92 ms/op 0.89
aggregationBits - 2048 els - zipIndexesInBitList 20.982 us/op 19.203 us/op 1.09
regular array get 100000 times 23.106 us/op 22.459 us/op 1.03
wrappedArray get 100000 times 23.012 us/op 22.363 us/op 1.03
arrayWithProxy get 100000 times 10.087 ms/op 9.7161 ms/op 1.04
ssz.Root.equals 21.496 ns/op 20.847 ns/op 1.03
byteArrayEquals 21.307 ns/op 20.841 ns/op 1.02
Buffer.compare 8.8030 ns/op 8.5820 ns/op 1.03
processSlot - 1 slots 10.516 us/op 9.4430 us/op 1.11
processSlot - 32 slots 2.0437 ms/op 2.3350 ms/op 0.88
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 5.8158 ms/op 7.5089 ms/op 0.77
getCommitteeAssignments - req 1 vs - 250000 vc 1.6620 ms/op 1.6978 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 3.4307 ms/op 3.4683 ms/op 0.99
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6864 ms/op 3.7234 ms/op 0.99
findModifiedValidators - 10000 modified validators 938.43 ms/op 749.51 ms/op 1.25
findModifiedValidators - 1000 modified validators 652.27 ms/op 450.34 ms/op 1.45
findModifiedValidators - 100 modified validators 369.77 ms/op 296.16 ms/op 1.25
findModifiedValidators - 10 modified validators 323.86 ms/op 190.69 ms/op 1.70
findModifiedValidators - 1 modified validators 232.44 ms/op 152.16 ms/op 1.53
findModifiedValidators - no difference 242.47 ms/op 148.42 ms/op 1.63
migrate state 1500000 validators, 3400 modified, 2000 new 3.3499 s/op 3.4185 s/op 0.98
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6600 ns/op 3.6500 ns/op 1.00
state getBlockRootAtSlot - 250000 vs - 7PWei 413.46 ns/op 451.67 ns/op 0.92
computeProposerIndex 100000 validators 1.3795 ms/op 1.3191 ms/op 1.05
getNextSyncCommitteeIndices 1000 validators 2.9102 ms/op 2.8066 ms/op 1.04
getNextSyncCommitteeIndices 10000 validators 25.997 ms/op 24.680 ms/op 1.05
getNextSyncCommitteeIndices 100000 validators 92.633 ms/op 84.662 ms/op 1.09
computeProposers - vc 250000 553.62 us/op 535.71 us/op 1.03
computeEpochShuffling - vc 250000 39.952 ms/op 38.133 ms/op 1.05
getNextSyncCommittee - vc 250000 10.053 ms/op 9.3689 ms/op 1.07
nodejs block root to RootHex using toHex 96.166 ns/op 90.842 ns/op 1.06
nodejs block root to RootHex using toRootHex 65.664 ns/op 59.099 ns/op 1.11
nodejs fromHex(blob) 844.56 us/op 815.74 us/op 1.04
nodejs fromHexInto(blob) 621.05 us/op 601.65 us/op 1.03
nodejs block root to RootHex using the deprecated toHexString 483.04 ns/op 449.88 ns/op 1.07
nodejs byteArrayEquals 32 bytes (block root) 25.667 ns/op 25.053 ns/op 1.02
nodejs byteArrayEquals 48 bytes (pubkey) 37.252 ns/op 36.044 ns/op 1.03
nodejs byteArrayEquals 96 bytes (signature) 33.626 ns/op 33.627 ns/op 1.00
nodejs byteArrayEquals 1024 bytes 42.936 ns/op 39.331 ns/op 1.09
nodejs byteArrayEquals 131072 bytes (blob) 1.7448 us/op 1.7147 us/op 1.02
browser block root to RootHex using toHex 142.17 ns/op 139.04 ns/op 1.02
browser block root to RootHex using toRootHex 129.19 ns/op 126.34 ns/op 1.02
browser fromHex(blob) 1.7114 ms/op 1.6720 ms/op 1.02
browser fromHexInto(blob) 612.15 us/op 604.24 us/op 1.01
browser block root to RootHex using the deprecated toHexString 333.80 ns/op 318.00 ns/op 1.05
browser byteArrayEquals 32 bytes (block root) 27.369 ns/op 27.271 ns/op 1.00
browser byteArrayEquals 48 bytes (pubkey) 38.636 ns/op 38.499 ns/op 1.00
browser byteArrayEquals 96 bytes (signature) 72.130 ns/op 71.490 ns/op 1.01
browser byteArrayEquals 1024 bytes 733.56 ns/op 728.10 ns/op 1.01
browser byteArrayEquals 131072 bytes (blob) 92.658 us/op 92.057 us/op 1.01

by benchmarkbot/action

@nflaig
nflaig merged commit 8455854 into unstable Jul 24, 2026
20 of 22 checks passed
@nflaig
nflaig deleted the nflaig/gossip-validation-http-400 branch July 24, 2026 04:32
@wemeetagain

Copy link
Copy Markdown
Member

馃帀 This PR is included in v1.46.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.

2 participants