Skip to content

fix: move beacon_block_root from path to query in getExecutionPayloadEnvelope#9402

Closed
ensi321 wants to merge 1 commit into
unstablefrom
nc/envelope-get-block-root-query
Closed

fix: move beacon_block_root from path to query in getExecutionPayloadEnvelope#9402
ensi321 wants to merge 1 commit into
unstablefrom
nc/envelope-get-block-root-query

Conversation

@ensi321
Copy link
Copy Markdown
Contributor

@ensi321 ensi321 commented May 23, 2026

Align with ethereum/beacon-APIs#580 which specifies beacon_block_root as a required query parameter, not a path segment, on
GET /eth/v1/validator/execution_payload_envelope/{slot}.

…yloadEnvelope

Align with beacon-APIs PR #580 which specifies beacon_block_root as a
required query parameter, not a path segment, on
GET /eth/v1/validator/execution_payload_envelope/{slot}.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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 modifies the getExecutionPayloadEnvelope endpoint within the validator API, transitioning the beacon_block_root from a path parameter to a query parameter. The changes include updates to the URL path, request serialization and deserialization logic, and the associated validation schema. I have no feedback to provide.

@github-actions
Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: cd38dc9 Previous: 055b83c Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 866.28 us/op 1.2316 ms/op 0.70
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 37.583 us/op 39.964 us/op 0.94
BLS verify - blst 672.04 us/op 631.51 us/op 1.06
BLS verifyMultipleSignatures 3 - blst 1.2883 ms/op 1.3022 ms/op 0.99
BLS verifyMultipleSignatures 8 - blst 2.0482 ms/op 2.0754 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst 6.3443 ms/op 6.4593 ms/op 0.98
BLS verifyMultipleSignatures 64 - blst 12.501 ms/op 12.760 ms/op 0.98
BLS verifyMultipleSignatures 128 - blst 24.124 ms/op 25.005 ms/op 0.96
BLS deserializing 10000 signatures 613.73 ms/op 622.44 ms/op 0.99
BLS deserializing 100000 signatures 6.1479 s/op 6.2463 s/op 0.98
BLS verifyMultipleSignatures - same message - 3 - blst 761.22 us/op 769.41 us/op 0.99
BLS verifyMultipleSignatures - same message - 8 - blst 894.85 us/op 817.55 us/op 1.09
BLS verifyMultipleSignatures - same message - 32 - blst 1.4030 ms/op 1.4765 ms/op 0.95
BLS verifyMultipleSignatures - same message - 64 - blst 2.2726 ms/op 2.2342 ms/op 1.02
BLS verifyMultipleSignatures - same message - 128 - blst 3.8965 ms/op 3.9335 ms/op 0.99
BLS aggregatePubkeys 32 - blst 17.145 us/op 17.595 us/op 0.97
BLS aggregatePubkeys 128 - blst 61.540 us/op 62.686 us/op 0.98
getSlashingsAndExits - default max 42.807 us/op 50.722 us/op 0.84
getSlashingsAndExits - 2k 346.93 us/op 413.55 us/op 0.84
proposeBlockBody type=full, size=empty 583.84 us/op 1.3840 ms/op 0.42
isKnown best case - 1 super set check 164.00 ns/op 183.00 ns/op 0.90
isKnown normal case - 2 super set checks 175.00 ns/op 176.00 ns/op 0.99
isKnown worse case - 16 super set checks 163.00 ns/op 181.00 ns/op 0.90
validate api signedAggregateAndProof - struct 1.4712 ms/op 1.4431 ms/op 1.02
validate gossip signedAggregateAndProof - struct 1.4713 ms/op 1.4392 ms/op 1.02
batch validate gossip attestation - vc 640000 - chunk 32 104.02 us/op 102.42 us/op 1.02
batch validate gossip attestation - vc 640000 - chunk 64 93.223 us/op 90.380 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 128 87.477 us/op 84.996 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 256 86.009 us/op 81.971 us/op 1.05
bytes32 toHexString 279.00 ns/op 293.00 ns/op 0.95
bytes32 Buffer.toString(hex) 156.00 ns/op 182.00 ns/op 0.86
bytes32 Buffer.toString(hex) from Uint8Array 221.00 ns/op 242.00 ns/op 0.91
bytes32 Buffer.toString(hex) + 0x 159.00 ns/op 186.00 ns/op 0.85
Return object 10000 times 0.20900 ns/op 0.21120 ns/op 0.99
Throw Error 10000 times 3.2572 us/op 3.1587 us/op 1.03
toHex 85.643 ns/op 85.446 ns/op 1.00
Buffer.from 79.875 ns/op 78.804 ns/op 1.01
shared Buffer 50.934 ns/op 49.846 ns/op 1.02
fastMsgIdFn sha256 / 200 bytes 1.4260 us/op 1.4250 us/op 1.00
fastMsgIdFn h32 xxhash / 200 bytes 152.00 ns/op 172.00 ns/op 0.88
fastMsgIdFn h64 xxhash / 200 bytes 199.00 ns/op 213.00 ns/op 0.93
fastMsgIdFn sha256 / 1000 bytes 4.5780 us/op 4.5640 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 246.00 ns/op 257.00 ns/op 0.96
fastMsgIdFn h64 xxhash / 1000 bytes 257.00 ns/op 258.00 ns/op 1.00
fastMsgIdFn sha256 / 10000 bytes 40.703 us/op 40.351 us/op 1.01
fastMsgIdFn h32 xxhash / 10000 bytes 1.2480 us/op 1.2580 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 807.00 ns/op 813.00 ns/op 0.99
send data - 1000 256B messages 4.0871 ms/op 4.2977 ms/op 0.95
send data - 1000 512B messages 4.3308 ms/op 4.5096 ms/op 0.96
send data - 1000 1024B messages 4.4173 ms/op 4.5447 ms/op 0.97
send data - 1000 1200B messages 4.8202 ms/op 4.9802 ms/op 0.97
send data - 1000 2048B messages 4.8219 ms/op 5.0919 ms/op 0.95
send data - 1000 4096B messages 5.2668 ms/op 6.2954 ms/op 0.84
send data - 1000 16384B messages 29.180 ms/op 36.593 ms/op 0.80
send data - 1000 65536B messages 104.80 ms/op 133.56 ms/op 0.78
enrSubnets - fastDeserialize 64 bits 771.00 ns/op 722.00 ns/op 1.07
enrSubnets - ssz BitVector 64 bits 248.00 ns/op 280.00 ns/op 0.89
enrSubnets - fastDeserialize 4 bits 103.00 ns/op 125.00 ns/op 0.82
enrSubnets - ssz BitVector 4 bits 255.00 ns/op 277.00 ns/op 0.92
prioritizePeers score -10:0 att 32-0.1 sync 2-0 198.39 us/op 199.66 us/op 0.99
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 226.25 us/op 239.16 us/op 0.95
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 331.30 us/op 338.31 us/op 0.98
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 599.76 us/op 592.93 us/op 1.01
prioritizePeers score 0:0 att 64-1 sync 4-1 687.78 us/op 688.19 us/op 1.00
array of 16000 items push then shift 1.2300 us/op 1.2257 us/op 1.00
LinkedList of 16000 items push then shift 7.4790 ns/op 7.2080 ns/op 1.04
array of 16000 items push then pop 68.039 ns/op 67.899 ns/op 1.00
LinkedList of 16000 items push then pop 5.9480 ns/op 5.7240 ns/op 1.04
array of 24000 items push then shift 1.8211 us/op 1.7490 us/op 1.04
LinkedList of 24000 items push then shift 7.1130 ns/op 7.0570 ns/op 1.01
array of 24000 items push then pop 96.416 ns/op 92.525 ns/op 1.04
LinkedList of 24000 items push then pop 6.0240 ns/op 5.7870 ns/op 1.04
intersect bitArray bitLen 8 4.6350 ns/op 4.5530 ns/op 1.02
intersect array and set length 8 28.624 ns/op 27.913 ns/op 1.03
intersect bitArray bitLen 128 23.725 ns/op 22.821 ns/op 1.04
intersect array and set length 128 491.36 ns/op 468.07 ns/op 1.05
bitArray.getTrueBitIndexes() bitLen 128 1.0970 us/op 950.00 ns/op 1.15
bitArray.getTrueBitIndexes() bitLen 248 1.7820 us/op 1.7010 us/op 1.05
bitArray.getTrueBitIndexes() bitLen 512 3.5960 us/op 3.4940 us/op 1.03
Full columns - reconstruct all 6 blobs 121.93 us/op 153.75 us/op 0.79
Full columns - reconstruct half of the blobs out of 6 89.918 us/op 92.647 us/op 0.97
Full columns - reconstruct single blob out of 6 31.108 us/op 45.862 us/op 0.68
Half columns - reconstruct all 6 blobs 373.12 ms/op 374.10 ms/op 1.00
Half columns - reconstruct half of the blobs out of 6 185.94 ms/op 186.64 ms/op 1.00
Half columns - reconstruct single blob out of 6 66.145 ms/op 67.360 ms/op 0.98
Full columns - reconstruct all 10 blobs 910.18 us/op 413.21 us/op 2.20
Full columns - reconstruct half of the blobs out of 10 140.21 us/op 145.45 us/op 0.96
Full columns - reconstruct single blob out of 10 30.691 us/op 44.638 us/op 0.69
Half columns - reconstruct all 10 blobs 609.98 ms/op 611.04 ms/op 1.00
Half columns - reconstruct half of the blobs out of 10 307.88 ms/op 308.57 ms/op 1.00
Half columns - reconstruct single blob out of 10 66.211 ms/op 65.880 ms/op 1.01
Full columns - reconstruct all 20 blobs 567.34 us/op 1.2830 ms/op 0.44
Full columns - reconstruct half of the blobs out of 20 290.18 us/op 399.63 us/op 0.73
Full columns - reconstruct single blob out of 20 27.511 us/op 46.565 us/op 0.59
Half columns - reconstruct all 20 blobs 1.2213 s/op 1.2174 s/op 1.00
Half columns - reconstruct half of the blobs out of 20 615.98 ms/op 620.07 ms/op 0.99
Half columns - reconstruct single blob out of 20 65.963 ms/op 67.167 ms/op 0.98
Set add up to 64 items then delete first 2.4054 us/op 2.0953 us/op 1.15
OrderedSet add up to 64 items then delete first 3.1582 us/op 3.3650 us/op 0.94
Set add up to 64 items then delete last 2.2357 us/op 2.0812 us/op 1.07
OrderedSet add up to 64 items then delete last 3.1382 us/op 3.2339 us/op 0.97
Set add up to 64 items then delete middle 2.0185 us/op 2.0834 us/op 0.97
OrderedSet add up to 64 items then delete middle 4.5398 us/op 4.6924 us/op 0.97
Set add up to 128 items then delete first 4.0692 us/op 4.1235 us/op 0.99
OrderedSet add up to 128 items then delete first 6.2363 us/op 6.2335 us/op 1.00
Set add up to 128 items then delete last 3.6793 us/op 3.7311 us/op 0.99
OrderedSet add up to 128 items then delete last 5.5409 us/op 5.7445 us/op 0.96
Set add up to 128 items then delete middle 3.6999 us/op 3.7094 us/op 1.00
OrderedSet add up to 128 items then delete middle 11.192 us/op 11.264 us/op 0.99
Set add up to 256 items then delete first 7.5409 us/op 7.7145 us/op 0.98
OrderedSet add up to 256 items then delete first 11.743 us/op 12.072 us/op 0.97
Set add up to 256 items then delete last 7.2936 us/op 7.5534 us/op 0.97
OrderedSet add up to 256 items then delete last 11.102 us/op 11.639 us/op 0.95
Set add up to 256 items then delete middle 7.2528 us/op 7.5265 us/op 0.96
OrderedSet add up to 256 items then delete middle 33.596 us/op 35.472 us/op 0.95
pass gossip attestations to forkchoice per slot 2.4710 ms/op 2.5360 ms/op 0.97
forkChoice updateHead vc 100000 bc 64 eq 0 375.93 us/op 381.97 us/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 0 2.2556 ms/op 2.3104 ms/op 0.98
forkChoice updateHead vc 1000000 bc 64 eq 0 3.7944 ms/op 3.8110 ms/op 1.00
forkChoice updateHead vc 600000 bc 320 eq 0 2.2616 ms/op 2.3005 ms/op 0.98
forkChoice updateHead vc 600000 bc 1200 eq 0 2.2930 ms/op 2.3596 ms/op 0.97
forkChoice updateHead vc 600000 bc 7200 eq 0 2.5851 ms/op 3.0623 ms/op 0.84
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8749 ms/op 2.8193 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9655 ms/op 2.9238 ms/op 1.01
forkChoice updateHead vc 600000 bc 64 eq 300000 6.5525 ms/op 7.0660 ms/op 0.93
computeDeltas 1400000 validators 0% inactive 12.084 ms/op 12.144 ms/op 1.00
computeDeltas 1400000 validators 10% inactive 11.323 ms/op 11.500 ms/op 0.98
computeDeltas 1400000 validators 20% inactive 10.329 ms/op 10.374 ms/op 1.00
computeDeltas 1400000 validators 50% inactive 7.9646 ms/op 8.0421 ms/op 0.99
computeDeltas 2100000 validators 0% inactive 18.196 ms/op 18.344 ms/op 0.99
computeDeltas 2100000 validators 10% inactive 17.015 ms/op 17.380 ms/op 0.98
computeDeltas 2100000 validators 20% inactive 15.506 ms/op 15.741 ms/op 0.99
computeDeltas 2100000 validators 50% inactive 9.0850 ms/op 12.084 ms/op 0.75
altair processAttestation - 250000 vs - 7PWei normalcase 1.9194 ms/op 2.4130 ms/op 0.80
altair processAttestation - 250000 vs - 7PWei worstcase 2.6551 ms/op 3.1243 ms/op 0.85
altair processAttestation - setStatus - 1/6 committees join 96.304 us/op 102.60 us/op 0.94
altair processAttestation - setStatus - 1/3 committees join 194.66 us/op 194.05 us/op 1.00
altair processAttestation - setStatus - 1/2 committees join 275.33 us/op 283.11 us/op 0.97
altair processAttestation - setStatus - 2/3 committees join 350.50 us/op 372.26 us/op 0.94
altair processAttestation - setStatus - 4/5 committees join 480.15 us/op 518.13 us/op 0.93
altair processAttestation - setStatus - 100% committees join 567.97 us/op 608.20 us/op 0.93
altair processBlock - 250000 vs - 7PWei normalcase 4.3569 ms/op 4.6656 ms/op 0.93
altair processBlock - 250000 vs - 7PWei normalcase hashState 15.688 ms/op 17.304 ms/op 0.91
altair processBlock - 250000 vs - 7PWei worstcase 20.737 ms/op 23.217 ms/op 0.89
altair processBlock - 250000 vs - 7PWei worstcase hashState 41.704 ms/op 44.666 ms/op 0.93
phase0 processBlock - 250000 vs - 7PWei normalcase 1.2900 ms/op 1.4480 ms/op 0.89
phase0 processBlock - 250000 vs - 7PWei worstcase 16.589 ms/op 18.563 ms/op 0.89
altair processEth1Data - 250000 vs - 7PWei normalcase 279.93 us/op 295.68 us/op 0.95
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 2.9560 us/op 4.8060 us/op 0.62
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 18.653 us/op 22.411 us/op 0.83
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.3610 us/op 6.5290 us/op 0.82
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.5780 us/op 3.5970 us/op 0.99
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 87.745 us/op 95.605 us/op 0.92
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.3271 ms/op 1.3912 ms/op 0.95
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.7688 ms/op 1.8882 ms/op 0.94
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.7589 ms/op 2.0611 ms/op 0.85
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.5166 ms/op 4.6547 ms/op 0.76
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.9966 ms/op 2.4420 ms/op 0.82
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 3.8061 ms/op 5.5234 ms/op 0.69
Tree 40 250000 create 312.06 ms/op 373.08 ms/op 0.84
Tree 40 250000 get(125000) 91.214 ns/op 93.936 ns/op 0.97
Tree 40 250000 set(125000) 969.17 ns/op 1.2366 us/op 0.78
Tree 40 250000 toArray() 12.435 ms/op 22.739 ms/op 0.55
Tree 40 250000 iterate all - toArray() + loop 12.733 ms/op 21.597 ms/op 0.59
Tree 40 250000 iterate all - get(i) 38.146 ms/op 43.778 ms/op 0.87
Array 250000 create 2.0334 ms/op 2.3962 ms/op 0.85
Array 250000 clone - spread 634.74 us/op 748.31 us/op 0.85
Array 250000 get(125000) 0.28700 ns/op 0.30300 ns/op 0.95
Array 250000 set(125000) 0.28700 ns/op 0.30300 ns/op 0.95
Array 250000 iterate all - loop 56.524 us/op 58.726 us/op 0.96
phase0 afterProcessEpoch - 250000 vs - 7PWei 39.166 ms/op 39.730 ms/op 0.99
Array.fill - length 1000000 2.0959 ms/op 2.2044 ms/op 0.95
Array push - length 1000000 8.5117 ms/op 10.594 ms/op 0.80
Array.get 0.19989 ns/op 0.21668 ns/op 0.92
Uint8Array.get 0.24378 ns/op 0.24626 ns/op 0.99
phase0 beforeProcessEpoch - 250000 vs - 7PWei 16.321 ms/op 22.677 ms/op 0.72
altair processEpoch - mainnet_e81889 255.25 ms/op 326.33 ms/op 0.78
mainnet_e81889 - altair beforeProcessEpoch 14.233 ms/op 46.306 ms/op 0.31
mainnet_e81889 - altair processJustificationAndFinalization 5.9810 us/op 7.4960 us/op 0.80
mainnet_e81889 - altair processInactivityUpdates 3.3682 ms/op 8.0634 ms/op 0.42
mainnet_e81889 - altair processRewardsAndPenalties 18.610 ms/op 22.556 ms/op 0.83
mainnet_e81889 - altair processRegistryUpdates 505.00 ns/op 609.00 ns/op 0.83
mainnet_e81889 - altair processSlashings 125.00 ns/op 137.00 ns/op 0.91
mainnet_e81889 - altair processEth1DataReset 117.00 ns/op 138.00 ns/op 0.85
mainnet_e81889 - altair processEffectiveBalanceUpdates 3.2319 ms/op 7.6145 ms/op 0.42
mainnet_e81889 - altair processSlashingsReset 666.00 ns/op 769.00 ns/op 0.87
mainnet_e81889 - altair processRandaoMixesReset 1.0620 us/op 1.6310 us/op 0.65
mainnet_e81889 - altair processHistoricalRootsUpdate 116.00 ns/op 139.00 ns/op 0.83
mainnet_e81889 - altair processParticipationFlagUpdates 411.00 ns/op 522.00 ns/op 0.79
mainnet_e81889 - altair processSyncCommitteeUpdates 97.000 ns/op 114.00 ns/op 0.85
mainnet_e81889 - altair afterProcessEpoch 39.373 ms/op 42.930 ms/op 0.92
capella processEpoch - mainnet_e217614 772.61 ms/op 883.70 ms/op 0.87
mainnet_e217614 - capella beforeProcessEpoch 60.871 ms/op 62.156 ms/op 0.98
mainnet_e217614 - capella processJustificationAndFinalization 5.6130 us/op 6.7050 us/op 0.84
mainnet_e217614 - capella processInactivityUpdates 14.837 ms/op 15.007 ms/op 0.99
mainnet_e217614 - capella processRewardsAndPenalties 83.260 ms/op 92.188 ms/op 0.90
mainnet_e217614 - capella processRegistryUpdates 4.3590 us/op 4.6520 us/op 0.94
mainnet_e217614 - capella processSlashings 122.00 ns/op 134.00 ns/op 0.91
mainnet_e217614 - capella processEth1DataReset 122.00 ns/op 133.00 ns/op 0.92
mainnet_e217614 - capella processEffectiveBalanceUpdates 12.122 ms/op 19.639 ms/op 0.62
mainnet_e217614 - capella processSlashingsReset 657.00 ns/op 707.00 ns/op 0.93
mainnet_e217614 - capella processRandaoMixesReset 1.1410 us/op 1.4100 us/op 0.81
mainnet_e217614 - capella processHistoricalRootsUpdate 122.00 ns/op 137.00 ns/op 0.89
mainnet_e217614 - capella processParticipationFlagUpdates 411.00 ns/op 450.00 ns/op 0.91
mainnet_e217614 - capella afterProcessEpoch 102.79 ms/op 111.52 ms/op 0.92
phase0 processEpoch - mainnet_e58758 288.74 ms/op 333.50 ms/op 0.87
mainnet_e58758 - phase0 beforeProcessEpoch 55.927 ms/op 90.479 ms/op 0.62
mainnet_e58758 - phase0 processJustificationAndFinalization 5.7380 us/op 7.0690 us/op 0.81
mainnet_e58758 - phase0 processRewardsAndPenalties 15.822 ms/op 17.449 ms/op 0.91
mainnet_e58758 - phase0 processRegistryUpdates 2.1950 us/op 2.3870 us/op 0.92
mainnet_e58758 - phase0 processSlashings 310.00 ns/op 135.00 ns/op 2.30
mainnet_e58758 - phase0 processEth1DataReset 120.00 ns/op 132.00 ns/op 0.91
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 789.61 us/op 1.1528 ms/op 0.68
mainnet_e58758 - phase0 processSlashingsReset 855.00 ns/op 983.00 ns/op 0.87
mainnet_e58758 - phase0 processRandaoMixesReset 1.1420 us/op 1.4670 us/op 0.78
mainnet_e58758 - phase0 processHistoricalRootsUpdate 122.00 ns/op 136.00 ns/op 0.90
mainnet_e58758 - phase0 processParticipationRecordUpdates 995.00 ns/op 1.3610 us/op 0.73
mainnet_e58758 - phase0 afterProcessEpoch 31.706 ms/op 34.387 ms/op 0.92
phase0 processEffectiveBalanceUpdates - 250000 normalcase 957.24 us/op 1.0286 ms/op 0.93
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.5006 ms/op 1.5968 ms/op 0.94
altair processInactivityUpdates - 250000 normalcase 10.348 ms/op 13.512 ms/op 0.77
altair processInactivityUpdates - 250000 worstcase 10.332 ms/op 13.022 ms/op 0.79
phase0 processRegistryUpdates - 250000 normalcase 2.0900 us/op 2.5010 us/op 0.84
phase0 processRegistryUpdates - 250000 badcase_full_deposits 138.25 us/op 146.24 us/op 0.95
phase0 processRegistryUpdates - 250000 worstcase 0.5 58.868 ms/op 76.903 ms/op 0.77
altair processRewardsAndPenalties - 250000 normalcase 14.713 ms/op 16.425 ms/op 0.90
altair processRewardsAndPenalties - 250000 worstcase 14.115 ms/op 15.571 ms/op 0.91
phase0 getAttestationDeltas - 250000 normalcase 5.0531 ms/op 5.5228 ms/op 0.91
phase0 getAttestationDeltas - 250000 worstcase 7.2359 ms/op 5.7200 ms/op 1.27
phase0 processSlashings - 250000 worstcase 57.659 us/op 66.197 us/op 0.87
altair processSyncCommitteeUpdates - 250000 10.051 ms/op 12.932 ms/op 0.78
BeaconState.hashTreeRoot - No change 165.00 ns/op 173.00 ns/op 0.95
BeaconState.hashTreeRoot - 1 full validator 87.677 us/op 85.562 us/op 1.02
BeaconState.hashTreeRoot - 32 full validator 936.08 us/op 1.0037 ms/op 0.93
BeaconState.hashTreeRoot - 512 full validator 8.4612 ms/op 9.5720 ms/op 0.88
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 104.46 us/op 118.92 us/op 0.88
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5154 ms/op 1.6583 ms/op 0.91
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 19.591 ms/op 23.333 ms/op 0.84
BeaconState.hashTreeRoot - 1 balances 85.891 us/op 91.758 us/op 0.94
BeaconState.hashTreeRoot - 32 balances 789.47 us/op 819.91 us/op 0.96
BeaconState.hashTreeRoot - 512 balances 6.6017 ms/op 6.7511 ms/op 0.98
BeaconState.hashTreeRoot - 250000 balances 132.52 ms/op 150.60 ms/op 0.88
aggregationBits - 2048 els - zipIndexesInBitList 19.227 us/op 21.243 us/op 0.91
regular array get 100000 times 22.602 us/op 22.619 us/op 1.00
wrappedArray get 100000 times 22.605 us/op 22.987 us/op 0.98
arrayWithProxy get 100000 times 14.345 ms/op 9.7791 ms/op 1.47
ssz.Root.equals 20.972 ns/op 21.420 ns/op 0.98
byteArrayEquals 20.771 ns/op 21.603 ns/op 0.96
Buffer.compare 8.5910 ns/op 9.0280 ns/op 0.95
processSlot - 1 slots 10.114 us/op 11.127 us/op 0.91
processSlot - 32 slots 2.1555 ms/op 2.3437 ms/op 0.92
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 5.6919 ms/op 4.4363 ms/op 1.28
getCommitteeAssignments - req 1 vs - 250000 vc 1.6336 ms/op 1.7161 ms/op 0.95
getCommitteeAssignments - req 100 vs - 250000 vc 3.3732 ms/op 3.4914 ms/op 0.97
getCommitteeAssignments - req 1000 vs - 250000 vc 3.5646 ms/op 3.7370 ms/op 0.95
findModifiedValidators - 10000 modified validators 603.30 ms/op 748.86 ms/op 0.81
findModifiedValidators - 1000 modified validators 421.71 ms/op 478.97 ms/op 0.88
findModifiedValidators - 100 modified validators 297.98 ms/op 303.68 ms/op 0.98
findModifiedValidators - 10 modified validators 166.25 ms/op 248.91 ms/op 0.67
findModifiedValidators - 1 modified validators 156.05 ms/op 183.92 ms/op 0.85
findModifiedValidators - no difference 158.31 ms/op 195.00 ms/op 0.81
migrate state 1500000 validators, 3400 modified, 2000 new 2.8195 s/op 3.0888 s/op 0.91
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.6000 ns/op 3.7700 ns/op 0.95
state getBlockRootAtSlot - 250000 vs - 7PWei 334.94 ns/op 419.79 ns/op 0.80
computeProposerIndex 100000 validators 1.2792 ms/op 1.3722 ms/op 0.93
getNextSyncCommitteeIndices 1000 validators 2.8054 ms/op 2.9130 ms/op 0.96
getNextSyncCommitteeIndices 10000 validators 24.419 ms/op 25.668 ms/op 0.95
getNextSyncCommitteeIndices 100000 validators 80.921 ms/op 85.798 ms/op 0.94
computeProposers - vc 250000 542.97 us/op 564.89 us/op 0.96
computeEpochShuffling - vc 250000 37.862 ms/op 39.305 ms/op 0.96
getNextSyncCommittee - vc 250000 9.1243 ms/op 9.7199 ms/op 0.94
nodejs block root to RootHex using toHex 89.659 ns/op 93.099 ns/op 0.96
nodejs block root to RootHex using toRootHex 49.899 ns/op 51.670 ns/op 0.97
nodejs fromHex(blob) 697.37 us/op 746.07 us/op 0.93
nodejs fromHexInto(blob) 634.10 us/op 620.50 us/op 1.02
nodejs block root to RootHex using the deprecated toHexString 461.07 ns/op 561.70 ns/op 0.82
nodejs byteArrayEquals 32 bytes (block root) 25.106 ns/op 26.084 ns/op 0.96
nodejs byteArrayEquals 48 bytes (pubkey) 36.639 ns/op 37.520 ns/op 0.98
nodejs byteArrayEquals 96 bytes (signature) 33.168 ns/op 34.023 ns/op 0.97
nodejs byteArrayEquals 1024 bytes 40.352 ns/op 41.083 ns/op 0.98
nodejs byteArrayEquals 131072 bytes (blob) 1.7074 us/op 1.7400 us/op 0.98
browser block root to RootHex using toHex 139.52 ns/op 142.55 ns/op 0.98
browser block root to RootHex using toRootHex 127.11 ns/op 130.72 ns/op 0.97
browser fromHex(blob) 1.4013 ms/op 1.5133 ms/op 0.93
browser fromHexInto(blob) 627.43 us/op 619.50 us/op 1.01
browser block root to RootHex using the deprecated toHexString 459.74 ns/op 363.12 ns/op 1.27
browser byteArrayEquals 32 bytes (block root) 27.126 ns/op 27.304 ns/op 0.99
browser byteArrayEquals 48 bytes (pubkey) 37.942 ns/op 38.586 ns/op 0.98
browser byteArrayEquals 96 bytes (signature) 71.357 ns/op 72.406 ns/op 0.99
browser byteArrayEquals 1024 bytes 723.62 ns/op 738.88 ns/op 0.98
browser byteArrayEquals 131072 bytes (blob) 91.544 us/op 92.051 us/op 0.99

by benchmarkbot/action

@ensi321 ensi321 marked this pull request as ready for review May 26, 2026 02:25
@ensi321 ensi321 requested a review from a team as a code owner May 26, 2026 02:25
@codecov
Copy link
Copy Markdown

codecov Bot commented May 26, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.56%. Comparing base (fc6798b) to head (27752af).
⚠️ Report is 161 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #9402      +/-   ##
============================================
+ Coverage     52.46%   52.56%   +0.09%     
============================================
  Files           848      848              
  Lines         62953    60937    -2016     
  Branches       4658     4485     -173     
============================================
- Hits          33030    32031     -999     
+ Misses        29855    28844    -1011     
+ Partials         68       62       -6     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

beaconBlockRoot: Root;
},
{params: {slot: Slot; beacon_block_root: string}},
{params: {slot: Slot}; query: {beacon_block_root: string}},
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.

I think this should be changed in the spec, left a comment there ethereum/beacon-APIs#580 (comment)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

can wait til the spec settles

@ensi321
Copy link
Copy Markdown
Contributor Author

ensi321 commented May 28, 2026

No longer relevant as the spec has changed

@ensi321 ensi321 closed this May 28, 2026
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