Skip to content

fix: use payload request limit for envelope byPeer range quota - #9710

Open
ensi321 wants to merge 2 commits into
unstablefrom
nc/envelope-range-quota
Open

fix: use payload request limit for envelope byPeer range quota#9710
ensi321 wants to merge 2 commits into
unstablefrom
nc/envelope-range-quota

Conversation

@ensi321

@ensi321 ensi321 commented Jul 25, 2026

Copy link
Copy Markdown
Member

Motivation

Port of an outstanding fix from the glamsterdam-devnet-7 branch (#9587) that never landed on unstable.

#9050 added the ExecutionPayloadEnvelopesByRange req/resp method with a byPeer quota of MAX_REQUEST_BLOCKS_DENEB (128), while the spec caps envelope range requests at MAX_REQUEST_PAYLOADS per https://github.com/ethereum/consensus-specs/blob/v1.7.0-alpha.12/specs/gloas/p2p-interface.md#executionpayloadenvelopesbyrange-v1. The getRequestCount side already uses MAX_REQUEST_PAYLOADS; the byPeer quota was left inconsistent.

Description

  • Use config.MAX_REQUEST_PAYLOADS for the ExecutionPayloadEnvelopesByRange byPeer quota
  • Add a unit test asserting the quota matches MAX_REQUEST_PAYLOADS

Cherry-picked from glamsterdam-devnet-7 (88b8052, original author @nflaig); applied without conflicts.

AI Assistance Disclosure

Cherry-pick selection and verification done with AI assistance (Claude Code); original commit authored by @nflaig on the devnet-7 branch.

🤖 Generated with Claude Code

@ensi321
ensi321 requested a review from a team as a code owner July 25, 2026 02:15

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c422cccc36

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".


describe("network / reqresp / rateLimitQuotas", () => {
it("uses MAX_REQUEST_PAYLOADS for ExecutionPayloadEnvelopesByRange", () => {
const config = createBeaconConfig(getConfig(ForkName.gloas), ZERO_HASH);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make the regression test distinguish the two limits

With this setup, getConfig(ForkName.gloas) retains defaults where MAX_REQUEST_PAYLOADS and MAX_REQUEST_BLOCKS_DENEB are both 128, so this test also passes against the parent implementation that uses the wrong block limit. Override one limit with a distinct value when creating the config so the test actually fails before the fix and protects against this regression.

AGENTS.md reference: AGENTS.md:L377-L382

Useful? React with 👍 / 👎.

@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 8cd5bdd Previous: 4001398 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 878.72 us/op 892.51 us/op 0.98
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 36.518 us/op 39.707 us/op 0.92
BLS verify - blst 694.92 us/op 712.85 us/op 0.97
BLS verifyMultipleSignatures 3 - blst 1.2936 ms/op 1.3668 ms/op 0.95
BLS verifyMultipleSignatures 8 - blst 2.0763 ms/op 2.1764 ms/op 0.95
BLS verifyMultipleSignatures 32 - blst 6.4369 ms/op 6.8732 ms/op 0.94
BLS verifyMultipleSignatures 64 - blst 12.497 ms/op 13.605 ms/op 0.92
BLS verifyMultipleSignatures 128 - blst 25.008 ms/op 25.973 ms/op 0.96
BLS deserializing 10000 signatures 619.48 ms/op 645.65 ms/op 0.96
BLS deserializing 100000 signatures 6.2219 s/op 6.6012 s/op 0.94
BLS verifyMultipleSignatures - same message - 3 - blst 785.46 us/op 789.92 us/op 0.99
BLS verifyMultipleSignatures - same message - 8 - blst 882.50 us/op 948.19 us/op 0.93
BLS verifyMultipleSignatures - same message - 32 - blst 1.4619 ms/op 1.5389 ms/op 0.95
BLS verifyMultipleSignatures - same message - 64 - blst 2.3501 ms/op 2.4690 ms/op 0.95
BLS verifyMultipleSignatures - same message - 128 - blst 3.9601 ms/op 4.1134 ms/op 0.96
BLS aggregatePubkeys 32 - blst 17.007 us/op 17.859 us/op 0.95
BLS aggregatePubkeys 128 - blst 60.753 us/op 63.461 us/op 0.96
getSlashingsAndExits - default max 47.315 us/op 46.159 us/op 1.03
getSlashingsAndExits - 2k 344.44 us/op 330.92 us/op 1.04
proposeBlockBody type=full, size=empty 660.03 us/op 659.29 us/op 1.00
isKnown best case - 1 super set check 194.00 ns/op 182.00 ns/op 1.07
isKnown normal case - 2 super set checks 167.00 ns/op 166.00 ns/op 1.01
isKnown worse case - 16 super set checks 164.00 ns/op 184.00 ns/op 0.89
validate api signedAggregateAndProof - struct 1.4567 ms/op 1.5395 ms/op 0.95
validate gossip signedAggregateAndProof - struct 1.4583 ms/op 1.5358 ms/op 0.95
batch validate gossip attestation - vc 640000 - chunk 32 106.31 us/op 111.93 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 64 93.456 us/op 97.778 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 128 87.267 us/op 91.163 us/op 0.96
batch validate gossip attestation - vc 640000 - chunk 256 84.330 us/op 87.106 us/op 0.97
bytes32 toHexString 277.00 ns/op 294.00 ns/op 0.94
bytes32 Buffer.toString(hex) 170.00 ns/op 179.00 ns/op 0.95
bytes32 Buffer.toString(hex) from Uint8Array 235.00 ns/op 246.00 ns/op 0.96
bytes32 Buffer.toString(hex) + 0x 165.00 ns/op 181.00 ns/op 0.91
Return object 10000 times 0.20960 ns/op 0.21660 ns/op 0.97
Throw Error 10000 times 3.2777 us/op 3.4863 us/op 0.94
toHex 91.124 ns/op 101.27 ns/op 0.90
Buffer.from 86.213 ns/op 95.288 ns/op 0.90
shared Buffer 59.505 ns/op 60.527 ns/op 0.98
fastMsgIdFn sha256 / 200 bytes 1.4570 us/op 1.5070 us/op 0.97
fastMsgIdFn h32 xxhash / 200 bytes 151.00 ns/op 162.00 ns/op 0.93
fastMsgIdFn h64 xxhash / 200 bytes 199.00 ns/op 218.00 ns/op 0.91
fastMsgIdFn sha256 / 1000 bytes 4.6760 us/op 4.8890 us/op 0.96
fastMsgIdFn h32 xxhash / 1000 bytes 241.00 ns/op 244.00 ns/op 0.99
fastMsgIdFn h64 xxhash / 1000 bytes 251.00 ns/op 265.00 ns/op 0.95
fastMsgIdFn sha256 / 10000 bytes 41.246 us/op 43.176 us/op 0.96
fastMsgIdFn h32 xxhash / 10000 bytes 1.2430 us/op 1.2870 us/op 0.97
fastMsgIdFn h64 xxhash / 10000 bytes 808.00 ns/op 834.00 ns/op 0.97
send data - 1000 256B messages 4.4156 ms/op 5.1457 ms/op 0.86
send data - 1000 512B messages 5.4752 ms/op 5.9728 ms/op 0.92
send data - 1000 1024B messages 5.4716 ms/op 6.2512 ms/op 0.88
send data - 1000 1200B messages 6.6812 ms/op 8.5089 ms/op 0.79
send data - 1000 2048B messages 13.178 ms/op 17.122 ms/op 0.77
send data - 1000 4096B messages 45.922 ms/op 112.62 ms/op 0.41
send data - 1000 16384B messages 260.99 ms/op 375.64 ms/op 0.69
send data - 1000 65536B messages 911.83 ms/op 1.7644 s/op 0.52
enrSubnets - fastDeserialize 64 bits 698.00 ns/op 786.00 ns/op 0.89
enrSubnets - ssz BitVector 64 bits 252.00 ns/op 272.00 ns/op 0.93
enrSubnets - fastDeserialize 4 bits 101.00 ns/op 105.00 ns/op 0.96
enrSubnets - ssz BitVector 4 bits 254.00 ns/op 274.00 ns/op 0.93
prioritizePeers score -10:0 att 32-0.1 sync 2-0 193.21 us/op 213.18 us/op 0.91
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 221.91 us/op 241.41 us/op 0.92
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 322.84 us/op 355.15 us/op 0.91
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 582.85 us/op 638.56 us/op 0.91
prioritizePeers score 0:0 att 64-1 sync 4-1 670.64 us/op 721.89 us/op 0.93
array of 16000 items push then shift 1.2338 us/op 1.3181 us/op 0.94
LinkedList of 16000 items push then shift 7.3670 ns/op 7.6070 ns/op 0.97
array of 16000 items push then pop 74.195 ns/op 76.460 ns/op 0.97
LinkedList of 16000 items push then pop 5.8770 ns/op 6.2120 ns/op 0.95
array of 24000 items push then shift 1.8474 us/op 1.9740 us/op 0.94
LinkedList of 24000 items push then shift 7.0470 ns/op 7.2490 ns/op 0.97
array of 24000 items push then pop 107.75 ns/op 111.78 ns/op 0.96
LinkedList of 24000 items push then pop 6.1890 ns/op 6.2740 ns/op 0.99
intersect bitArray bitLen 8 3.8700 ns/op 4.0250 ns/op 0.96
intersect array and set length 8 29.699 ns/op 30.477 ns/op 0.97
intersect bitArray bitLen 128 23.410 ns/op 24.098 ns/op 0.97
intersect array and set length 128 489.52 ns/op 513.07 ns/op 0.95
bitArray.getTrueBitIndexes() bitLen 128 950.00 ns/op 967.00 ns/op 0.98
bitArray.getTrueBitIndexes() bitLen 248 1.7190 us/op 1.7410 us/op 0.99
bitArray.getTrueBitIndexes() bitLen 512 3.6100 us/op 3.6740 us/op 0.98
Full columns - reconstruct all 6 blobs 183.80 us/op 156.33 us/op 1.18
Full columns - reconstruct half of the blobs out of 6 126.39 us/op 85.463 us/op 1.48
Full columns - reconstruct single blob out of 6 33.076 us/op 35.587 us/op 0.93
Half columns - reconstruct all 6 blobs 375.24 ms/op 408.72 ms/op 0.92
Half columns - reconstruct half of the blobs out of 6 188.94 ms/op 203.88 ms/op 0.93
Half columns - reconstruct single blob out of 6 66.863 ms/op 71.196 ms/op 0.94
Set add up to 64 items then delete first 1.5743 us/op 1.7187 us/op 0.92
OrderedSet add up to 64 items then delete first 2.4259 us/op 2.6213 us/op 0.93
Set add up to 64 items then delete last 1.7723 us/op 1.9439 us/op 0.91
OrderedSet add up to 64 items then delete last 2.8070 us/op 2.8931 us/op 0.97
Set add up to 64 items then delete middle 1.8151 us/op 1.9262 us/op 0.94
OrderedSet add up to 64 items then delete middle 4.2641 us/op 4.3902 us/op 0.97
Set add up to 128 items then delete first 3.4554 us/op 3.8600 us/op 0.90
OrderedSet add up to 128 items then delete first 5.1943 us/op 5.9104 us/op 0.88
Set add up to 128 items then delete last 3.4806 us/op 3.7490 us/op 0.93
OrderedSet add up to 128 items then delete last 5.4001 us/op 5.6032 us/op 0.96
Set add up to 128 items then delete middle 3.4630 us/op 3.7668 us/op 0.92
OrderedSet add up to 128 items then delete middle 11.184 us/op 11.597 us/op 0.96
Set add up to 256 items then delete first 6.9001 us/op 7.6673 us/op 0.90
OrderedSet add up to 256 items then delete first 11.425 us/op 12.095 us/op 0.94
Set add up to 256 items then delete last 6.8434 us/op 7.2314 us/op 0.95
OrderedSet add up to 256 items then delete last 11.338 us/op 11.588 us/op 0.98
Set add up to 256 items then delete middle 6.8219 us/op 7.2067 us/op 0.95
OrderedSet add up to 256 items then delete middle 34.329 us/op 35.470 us/op 0.97
runFastConfirmationRules vc:100000 bc:96 eq:0 4.2702 ms/op 4.5352 ms/op 0.94
runFastConfirmationRules vc:600000 bc:96 eq:0 34.107 ms/op 34.787 ms/op 0.98
runFastConfirmationRules vc:1000000 bc:96 eq:0 55.570 ms/op 57.986 ms/op 0.96
runFastConfirmationRules vc:600000 bc:320 eq:0 35.169 ms/op 35.322 ms/op 1.00
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.0912 s/op 1.1136 s/op 0.98
pass gossip attestations to forkchoice per slot 2.4804 ms/op 2.6281 ms/op 0.94
forkChoice updateHead vc 100000 bc 64 eq 0 390.19 us/op 412.66 us/op 0.95
forkChoice updateHead vc 600000 bc 64 eq 0 2.3631 ms/op 2.4515 ms/op 0.96
forkChoice updateHead vc 1000000 bc 64 eq 0 3.9400 ms/op 4.0830 ms/op 0.96
forkChoice updateHead vc 600000 bc 320 eq 0 2.3696 ms/op 2.4786 ms/op 0.96
forkChoice updateHead vc 600000 bc 1200 eq 0 2.4024 ms/op 2.6070 ms/op 0.92
forkChoice updateHead vc 600000 bc 7200 eq 0 2.6285 ms/op 2.8684 ms/op 0.92
forkChoice updateHead vc 600000 bc 64 eq 1000 2.3525 ms/op 2.4628 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 10000 2.4172 ms/op 2.5672 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 300000 6.2552 ms/op 6.5621 ms/op 0.95
computeDeltas 1400000 validators 0% inactive 11.571 ms/op 12.303 ms/op 0.94
computeDeltas 1400000 validators 10% inactive 10.939 ms/op 11.626 ms/op 0.94
computeDeltas 1400000 validators 20% inactive 10.354 ms/op 10.963 ms/op 0.94
computeDeltas 1400000 validators 50% inactive 8.5253 ms/op 8.9129 ms/op 0.96
computeDeltas 2100000 validators 0% inactive 17.554 ms/op 18.412 ms/op 0.95
computeDeltas 2100000 validators 10% inactive 16.686 ms/op 17.531 ms/op 0.95
computeDeltas 2100000 validators 20% inactive 15.629 ms/op 16.351 ms/op 0.96
computeDeltas 2100000 validators 50% inactive 10.395 ms/op 10.910 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei normalcase 1.8523 ms/op 1.8797 ms/op 0.99
altair processAttestation - 250000 vs - 7PWei worstcase 2.6803 ms/op 2.4435 ms/op 1.10
altair processAttestation - setStatus - 1/6 committees join 101.56 us/op 102.05 us/op 1.00
altair processAttestation - setStatus - 1/3 committees join 198.88 us/op 209.59 us/op 0.95
altair processAttestation - setStatus - 1/2 committees join 266.74 us/op 291.33 us/op 0.92
altair processAttestation - setStatus - 2/3 committees join 355.24 us/op 380.88 us/op 0.93
altair processAttestation - setStatus - 4/5 committees join 534.16 us/op 536.85 us/op 0.99
altair processAttestation - setStatus - 100% committees join 605.54 us/op 625.88 us/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase 4.2408 ms/op 3.5830 ms/op 1.18
altair processBlock - 250000 vs - 7PWei normalcase hashState 15.976 ms/op 15.421 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase 20.518 ms/op 20.872 ms/op 0.98
altair processBlock - 250000 vs - 7PWei worstcase hashState 39.535 ms/op 41.282 ms/op 0.96
phase0 processBlock - 250000 vs - 7PWei normalcase 1.3830 ms/op 1.3561 ms/op 1.02
phase0 processBlock - 250000 vs - 7PWei worstcase 16.215 ms/op 16.414 ms/op 0.99
altair processEth1Data - 250000 vs - 7PWei normalcase 272.97 us/op 316.43 us/op 0.86
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.5020 us/op 3.4460 us/op 1.02
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 19.976 us/op 21.942 us/op 0.91
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.3230 us/op 5.9890 us/op 0.89
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 4.3090 us/op 4.8150 us/op 0.89
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 87.394 us/op 90.481 us/op 0.97
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3326 ms/op 1.4215 ms/op 0.94
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7511 ms/op 1.8590 ms/op 0.94
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7671 ms/op 1.8706 ms/op 0.94
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.5227 ms/op 3.7336 ms/op 0.94
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.0546 ms/op 2.1087 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.8867 ms/op 4.2521 ms/op 0.91
Tree 40 250000 create 311.42 ms/op 312.19 ms/op 1.00
Tree 40 250000 get(125000) 89.600 ns/op 95.075 ns/op 0.94
Tree 40 250000 set(125000) 965.23 ns/op 1.0274 us/op 0.94
Tree 40 250000 toArray() 12.655 ms/op 10.225 ms/op 1.24
Tree 40 250000 iterate all - toArray() + loop 14.268 ms/op 10.086 ms/op 1.41
Tree 40 250000 iterate all - get(i) 36.992 ms/op 39.272 ms/op 0.94
Array 250000 create 2.3125 ms/op 2.4119 ms/op 0.96
Array 250000 clone - spread 716.27 us/op 760.03 us/op 0.94
Array 250000 get(125000) 0.28800 ns/op 0.29700 ns/op 0.97
Array 250000 set(125000) 0.29300 ns/op 0.30200 ns/op 0.97
Array 250000 iterate all - loop 56.424 us/op 58.595 us/op 0.96
phase0 afterProcessEpoch - 250000 vs - 7PWei 48.689 ms/op 62.389 ms/op 0.78
Array.fill - length 1000000 2.1374 ms/op 2.2139 ms/op 0.97
Array push - length 1000000 8.9986 ms/op 8.4684 ms/op 1.06
Array.get 0.20164 ns/op 0.20966 ns/op 0.96
Uint8Array.get 0.23083 ns/op 0.24103 ns/op 0.96
phase0 beforeProcessEpoch - 250000 vs - 7PWei 14.849 ms/op 13.246 ms/op 1.12
altair processEpoch - mainnet_e81889 285.98 ms/op 268.93 ms/op 1.06
mainnet_e81889 - altair beforeProcessEpoch 37.705 ms/op 37.041 ms/op 1.02
mainnet_e81889 - altair processJustificationAndFinalization 6.6480 us/op 5.3900 us/op 1.23
mainnet_e81889 - altair processInactivityUpdates 3.6039 ms/op 3.6947 ms/op 0.98
mainnet_e81889 - altair processRewardsAndPenalties 19.255 ms/op 17.392 ms/op 1.11
mainnet_e81889 - altair processRegistryUpdates 554.00 ns/op 583.00 ns/op 0.95
mainnet_e81889 - altair processSlashings 138.00 ns/op 147.00 ns/op 0.94
mainnet_e81889 - altair processEth1DataReset 134.00 ns/op 147.00 ns/op 0.91
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.8097 ms/op 1.3027 ms/op 2.16
mainnet_e81889 - altair processSlashingsReset 676.00 ns/op 713.00 ns/op 0.95
mainnet_e81889 - altair processRandaoMixesReset 1.1500 us/op 1.0840 us/op 1.06
mainnet_e81889 - altair processHistoricalRootsUpdate 138.00 ns/op 143.00 ns/op 0.97
mainnet_e81889 - altair processParticipationFlagUpdates 443.00 ns/op 459.00 ns/op 0.97
mainnet_e81889 - altair processSyncCommitteeUpdates 107.00 ns/op 122.00 ns/op 0.88
mainnet_e81889 - altair afterProcessEpoch 40.977 ms/op 41.501 ms/op 0.99
capella processEpoch - mainnet_e217614 792.10 ms/op 761.08 ms/op 1.04
mainnet_e217614 - capella beforeProcessEpoch 61.077 ms/op 56.640 ms/op 1.08
mainnet_e217614 - capella processJustificationAndFinalization 5.7480 us/op 5.5380 us/op 1.04
mainnet_e217614 - capella processInactivityUpdates 15.458 ms/op 13.196 ms/op 1.17
mainnet_e217614 - capella processRewardsAndPenalties 84.555 ms/op 90.285 ms/op 0.94
mainnet_e217614 - capella processRegistryUpdates 4.4420 us/op 4.5780 us/op 0.97
mainnet_e217614 - capella processSlashings 139.00 ns/op 140.00 ns/op 0.99
mainnet_e217614 - capella processEth1DataReset 139.00 ns/op 136.00 ns/op 1.02
mainnet_e217614 - capella processEffectiveBalanceUpdates 12.515 ms/op 12.265 ms/op 1.02
mainnet_e217614 - capella processSlashingsReset 646.00 ns/op 692.00 ns/op 0.93
mainnet_e217614 - capella processRandaoMixesReset 1.2510 us/op 1.1920 us/op 1.05
mainnet_e217614 - capella processHistoricalRootsUpdate 135.00 ns/op 139.00 ns/op 0.97
mainnet_e217614 - capella processParticipationFlagUpdates 430.00 ns/op 460.00 ns/op 0.93
mainnet_e217614 - capella afterProcessEpoch 102.56 ms/op 109.82 ms/op 0.93
phase0 processEpoch - mainnet_e58758 289.38 ms/op 292.29 ms/op 0.99
mainnet_e58758 - phase0 beforeProcessEpoch 67.326 ms/op 61.189 ms/op 1.10
mainnet_e58758 - phase0 processJustificationAndFinalization 5.8540 us/op 5.9150 us/op 0.99
mainnet_e58758 - phase0 processRewardsAndPenalties 15.351 ms/op 15.279 ms/op 1.00
mainnet_e58758 - phase0 processRegistryUpdates 2.1210 us/op 2.2790 us/op 0.93
mainnet_e58758 - phase0 processSlashings 154.00 ns/op 155.00 ns/op 0.99
mainnet_e58758 - phase0 processEth1DataReset 137.00 ns/op 140.00 ns/op 0.98
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 914.38 us/op 826.91 us/op 1.11
mainnet_e58758 - phase0 processSlashingsReset 836.00 ns/op 839.00 ns/op 1.00
mainnet_e58758 - phase0 processRandaoMixesReset 1.2610 us/op 1.6210 us/op 0.78
mainnet_e58758 - phase0 processHistoricalRootsUpdate 139.00 ns/op 142.00 ns/op 0.98
mainnet_e58758 - phase0 processParticipationRecordUpdates 989.00 ns/op 1.0550 us/op 0.94
mainnet_e58758 - phase0 afterProcessEpoch 32.458 ms/op 33.903 ms/op 0.96
phase0 processEffectiveBalanceUpdates - 250000 normalcase 945.05 us/op 1.0199 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5362 ms/op 1.2445 ms/op 1.23
altair processInactivityUpdates - 250000 normalcase 10.837 ms/op 10.738 ms/op 1.01
altair processInactivityUpdates - 250000 worstcase 10.423 ms/op 10.763 ms/op 0.97
phase0 processRegistryUpdates - 250000 normalcase 2.1070 us/op 3.4130 us/op 0.62
phase0 processRegistryUpdates - 250000 badcase_full_deposits 136.14 us/op 145.05 us/op 0.94
phase0 processRegistryUpdates - 250000 worstcase 0.5 58.096 ms/op 61.481 ms/op 0.94
altair processRewardsAndPenalties - 250000 normalcase 14.609 ms/op 13.971 ms/op 1.05
altair processRewardsAndPenalties - 250000 worstcase 14.368 ms/op 14.063 ms/op 1.02
phase0 getAttestationDeltas - 250000 normalcase 5.3112 ms/op 5.6743 ms/op 0.94
phase0 getAttestationDeltas - 250000 worstcase 5.2540 ms/op 5.7361 ms/op 0.92
phase0 processSlashings - 250000 worstcase 56.536 us/op 62.054 us/op 0.91
altair processSyncCommitteeUpdates - 250000 9.6386 ms/op 10.186 ms/op 0.95
BeaconState.hashTreeRoot - No change 167.00 ns/op 193.00 ns/op 0.87
BeaconState.hashTreeRoot - 1 full validator 64.171 us/op 59.750 us/op 1.07
BeaconState.hashTreeRoot - 32 full validator 726.89 us/op 655.24 us/op 1.11
BeaconState.hashTreeRoot - 512 full validator 5.8928 ms/op 5.8810 ms/op 1.00
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 83.336 us/op 78.784 us/op 1.06
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.2658 ms/op 1.2407 ms/op 1.02
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 13.687 ms/op 14.032 ms/op 0.98
BeaconState.hashTreeRoot - 1 balances 64.149 us/op 59.438 us/op 1.08
BeaconState.hashTreeRoot - 32 balances 666.50 us/op 576.20 us/op 1.16
BeaconState.hashTreeRoot - 512 balances 4.6028 ms/op 4.5820 ms/op 1.00
BeaconState.hashTreeRoot - 250000 balances 118.79 ms/op 105.28 ms/op 1.13
aggregationBits - 2048 els - zipIndexesInBitList 18.744 us/op 19.585 us/op 0.96
regular array get 100000 times 22.494 us/op 23.167 us/op 0.97
wrappedArray get 100000 times 22.295 us/op 23.137 us/op 0.96
arrayWithProxy get 100000 times 10.492 ms/op 10.379 ms/op 1.01
ssz.Root.equals 20.980 ns/op 21.742 ns/op 0.96
byteArrayEquals 20.655 ns/op 21.541 ns/op 0.96
Buffer.compare 8.6450 ns/op 8.9510 ns/op 0.97
processSlot - 1 slots 8.0000 us/op 9.3890 us/op 0.85
processSlot - 32 slots 1.9050 ms/op 1.9757 ms/op 0.96
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 4.0391 ms/op 2.1699 ms/op 1.86
getCommitteeAssignments - req 1 vs - 250000 vc 1.6451 ms/op 1.7141 ms/op 0.96
getCommitteeAssignments - req 100 vs - 250000 vc 3.3836 ms/op 3.4900 ms/op 0.97
getCommitteeAssignments - req 1000 vs - 250000 vc 3.6424 ms/op 3.7213 ms/op 0.98
findModifiedValidators - 10000 modified validators 737.30 ms/op 788.58 ms/op 0.93
findModifiedValidators - 1000 modified validators 402.34 ms/op 518.42 ms/op 0.78
findModifiedValidators - 100 modified validators 266.60 ms/op 301.30 ms/op 0.88
findModifiedValidators - 10 modified validators 134.91 ms/op 260.45 ms/op 0.52
findModifiedValidators - 1 modified validators 126.36 ms/op 145.37 ms/op 0.87
findModifiedValidators - no difference 132.97 ms/op 146.62 ms/op 0.91
migrate state 1500000 validators, 3400 modified, 2000 new 2.8474 s/op 2.5361 s/op 1.12
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.9800 ns/op 3.7700 ns/op 1.06
state getBlockRootAtSlot - 250000 vs - 7PWei 433.45 ns/op 280.53 ns/op 1.55
computeProposerIndex 100000 validators 1.3250 ms/op 1.3457 ms/op 0.98
getNextSyncCommitteeIndices 1000 validators 2.8608 ms/op 2.8965 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 25.266 ms/op 25.473 ms/op 0.99
getNextSyncCommitteeIndices 100000 validators 84.301 ms/op 87.952 ms/op 0.96
computeProposers - vc 250000 579.69 us/op 553.08 us/op 1.05
computeEpochShuffling - vc 250000 38.588 ms/op 39.342 ms/op 0.98
getNextSyncCommittee - vc 250000 9.1777 ms/op 9.4688 ms/op 0.97
nodejs block root to RootHex using toHex 92.132 ns/op 97.077 ns/op 0.95
nodejs block root to RootHex using toRootHex 62.837 ns/op 62.602 ns/op 1.00
nodejs fromHex(blob) 723.01 us/op 729.84 us/op 0.99
nodejs fromHexInto(blob) 615.17 us/op 633.81 us/op 0.97
nodejs block root to RootHex using the deprecated toHexString 444.18 ns/op 378.50 ns/op 1.17
nodejs byteArrayEquals 32 bytes (block root) 25.451 ns/op 26.053 ns/op 0.98
nodejs byteArrayEquals 48 bytes (pubkey) 36.946 ns/op 37.733 ns/op 0.98
nodejs byteArrayEquals 96 bytes (signature) 33.409 ns/op 35.905 ns/op 0.93
nodejs byteArrayEquals 1024 bytes 40.803 ns/op 43.048 ns/op 0.95
nodejs byteArrayEquals 131072 bytes (blob) 1.7284 us/op 1.7574 us/op 0.98
browser block root to RootHex using toHex 140.77 ns/op 145.43 ns/op 0.97
browser block root to RootHex using toRootHex 128.02 ns/op 129.97 ns/op 0.98
browser fromHex(blob) 1.5015 ms/op 1.6342 ms/op 0.92
browser fromHexInto(blob) 607.89 us/op 634.64 us/op 0.96
browser block root to RootHex using the deprecated toHexString 315.57 ns/op 482.15 ns/op 0.65
browser byteArrayEquals 32 bytes (block root) 27.060 ns/op 28.082 ns/op 0.96
browser byteArrayEquals 48 bytes (pubkey) 38.432 ns/op 39.625 ns/op 0.97
browser byteArrayEquals 96 bytes (signature) 72.209 ns/op 74.525 ns/op 0.97
browser byteArrayEquals 1024 bytes 729.83 ns/op 758.09 ns/op 0.96
browser byteArrayEquals 131072 bytes (blob) 92.613 us/op 95.555 us/op 0.97

by benchmarkbot/action

…the two limits

MAX_REQUEST_PAYLOADS and MAX_REQUEST_BLOCKS_DENEB both default to 128, so
the test also passed against the previous implementation using the block
limit. Verified the test now fails when the quota reads
MAX_REQUEST_BLOCKS_DENEB and passes with the fix.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
it("uses MAX_REQUEST_PAYLOADS for ExecutionPayloadEnvelopesByRange", () => {
// Override MAX_REQUEST_PAYLOADS to differ from MAX_REQUEST_BLOCKS_DENEB (both default to 128),
// otherwise this test cannot distinguish the two limits
const config = createBeaconConfig({...getConfig(ForkName.gloas), MAX_REQUEST_PAYLOADS: 64}, ZERO_HASH);

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we really need this test? it's a bit strange and trivial

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

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants