Skip to content

Conversation

@nflaig
Copy link
Member

@nflaig nflaig commented Jun 11, 2025

Motivation

Description

Add GET /eth/v1/beacon/states/{state_id}/proposer_lookahead endpoint to retrieve proposer lookahead from state

@nflaig nflaig requested a review from a team as a code owner June 11, 2025 08:13
@codecov
Copy link

codecov bot commented Jun 11, 2025

Codecov Report

Attention: Patch coverage is 52.17391% with 11 lines in your changes missing coverage. Please review.

Project coverage is 55.74%. Comparing base (6fa9960) to head (76b1bc8).
Report is 3 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #7949      +/-   ##
============================================
- Coverage     55.75%   55.74%   -0.01%     
============================================
  Files           833      833              
  Lines         59356    59377      +21     
  Branches       4581     4580       -1     
============================================
+ Hits          33095    33102       +7     
- Misses        26194    26208      +14     
  Partials         67       67              
🚀 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.

@github-actions
Copy link
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: ab17787 Previous: b2b1a6d Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.0918 ms/op 1.1413 ms/op 0.96
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 41.767 us/op 41.109 us/op 1.02
BLS verify - blst 943.72 us/op 887.48 us/op 1.06
BLS verifyMultipleSignatures 3 - blst 1.5157 ms/op 1.3319 ms/op 1.14
BLS verifyMultipleSignatures 8 - blst 1.7583 ms/op 1.7830 ms/op 0.99
BLS verifyMultipleSignatures 32 - blst 5.4927 ms/op 5.2600 ms/op 1.04
BLS verifyMultipleSignatures 64 - blst 10.404 ms/op 9.6292 ms/op 1.08
BLS verifyMultipleSignatures 128 - blst 19.617 ms/op 17.987 ms/op 1.09
BLS deserializing 10000 signatures 748.95 ms/op 715.97 ms/op 1.05
BLS deserializing 100000 signatures 7.3155 s/op 7.0539 s/op 1.04
BLS verifyMultipleSignatures - same message - 3 - blst 925.04 us/op 887.80 us/op 1.04
BLS verifyMultipleSignatures - same message - 8 - blst 1.1470 ms/op 1.0486 ms/op 1.09
BLS verifyMultipleSignatures - same message - 32 - blst 1.8228 ms/op 1.7307 ms/op 1.05
BLS verifyMultipleSignatures - same message - 64 - blst 2.6752 ms/op 2.6600 ms/op 1.01
BLS verifyMultipleSignatures - same message - 128 - blst 4.5886 ms/op 4.5467 ms/op 1.01
BLS aggregatePubkeys 32 - blst 20.631 us/op 19.778 us/op 1.04
BLS aggregatePubkeys 128 - blst 73.971 us/op 71.440 us/op 1.04
notSeenSlots=1 numMissedVotes=1 numBadVotes=10 56.643 ms/op 48.070 ms/op 1.18
notSeenSlots=1 numMissedVotes=0 numBadVotes=4 53.984 ms/op 48.056 ms/op 1.12
notSeenSlots=2 numMissedVotes=1 numBadVotes=10 39.093 ms/op 35.900 ms/op 1.09
getSlashingsAndExits - default max 77.968 us/op 78.799 us/op 0.99
getSlashingsAndExits - 2k 341.54 us/op 293.25 us/op 1.16
proposeBlockBody type=full, size=empty 6.7342 ms/op 6.3638 ms/op 1.06
isKnown best case - 1 super set check 215.00 ns/op 221.00 ns/op 0.97
isKnown normal case - 2 super set checks 212.00 ns/op 222.00 ns/op 0.95
isKnown worse case - 16 super set checks 214.00 ns/op 224.00 ns/op 0.96
InMemoryCheckpointStateCache - add get delete 2.4760 us/op 2.4120 us/op 1.03
validate api signedAggregateAndProof - struct 1.4122 ms/op 1.3924 ms/op 1.01
validate gossip signedAggregateAndProof - struct 1.4841 ms/op 1.4055 ms/op 1.06
batch validate gossip attestation - vc 640000 - chunk 32 120.94 us/op 116.27 us/op 1.04
batch validate gossip attestation - vc 640000 - chunk 64 110.23 us/op 102.50 us/op 1.08
batch validate gossip attestation - vc 640000 - chunk 128 102.76 us/op 95.530 us/op 1.08
batch validate gossip attestation - vc 640000 - chunk 256 110.40 us/op 95.459 us/op 1.16
pickEth1Vote - no votes 1.0167 ms/op 975.51 us/op 1.04
pickEth1Vote - max votes 7.6234 ms/op 7.4104 ms/op 1.03
pickEth1Vote - Eth1Data hashTreeRoot value x2048 13.750 ms/op 10.797 ms/op 1.27
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 16.941 ms/op 14.665 ms/op 1.16
pickEth1Vote - Eth1Data fastSerialize value x2048 471.43 us/op 461.75 us/op 1.02
pickEth1Vote - Eth1Data fastSerialize tree x2048 2.2850 ms/op 2.0903 ms/op 1.09
bytes32 toHexString 389.00 ns/op 367.00 ns/op 1.06
bytes32 Buffer.toString(hex) 255.00 ns/op 235.00 ns/op 1.09
bytes32 Buffer.toString(hex) from Uint8Array 358.00 ns/op 322.00 ns/op 1.11
bytes32 Buffer.toString(hex) + 0x 262.00 ns/op 238.00 ns/op 1.10
Object access 1 prop 0.12500 ns/op 0.12400 ns/op 1.01
Map access 1 prop 0.13200 ns/op 0.12800 ns/op 1.03
Object get x1000 5.9840 ns/op 6.0210 ns/op 0.99
Map get x1000 6.8520 ns/op 6.5930 ns/op 1.04
Object set x1000 33.235 ns/op 28.326 ns/op 1.17
Map set x1000 26.901 ns/op 19.632 ns/op 1.37
Return object 10000 times 0.29920 ns/op 0.28800 ns/op 1.04
Throw Error 10000 times 4.4775 us/op 4.3302 us/op 1.03
toHex 146.54 ns/op 132.45 ns/op 1.11
Buffer.from 126.53 ns/op 129.50 ns/op 0.98
shared Buffer 83.469 ns/op 79.293 ns/op 1.05
fastMsgIdFn sha256 / 200 bytes 2.2730 us/op 2.1820 us/op 1.04
fastMsgIdFn h32 xxhash / 200 bytes 219.00 ns/op 206.00 ns/op 1.06
fastMsgIdFn h64 xxhash / 200 bytes 278.00 ns/op 270.00 ns/op 1.03
fastMsgIdFn sha256 / 1000 bytes 7.4860 us/op 7.3560 us/op 1.02
fastMsgIdFn h32 xxhash / 1000 bytes 351.00 ns/op 346.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 1000 bytes 355.00 ns/op 344.00 ns/op 1.03
fastMsgIdFn sha256 / 10000 bytes 68.344 us/op 65.993 us/op 1.04
fastMsgIdFn h32 xxhash / 10000 bytes 1.9320 us/op 1.8340 us/op 1.05
fastMsgIdFn h64 xxhash / 10000 bytes 1.2800 us/op 1.2290 us/op 1.04
send data - 1000 256B messages 17.428 ms/op 11.171 ms/op 1.56
send data - 1000 512B messages 19.373 ms/op 16.135 ms/op 1.20
send data - 1000 1024B messages 28.447 ms/op 25.434 ms/op 1.12
send data - 1000 1200B messages 22.748 ms/op 19.266 ms/op 1.18
send data - 1000 2048B messages 25.844 ms/op 21.685 ms/op 1.19
send data - 1000 4096B messages 29.341 ms/op 24.742 ms/op 1.19
send data - 1000 16384B messages 69.711 ms/op 66.590 ms/op 1.05
send data - 1000 65536B messages 208.48 ms/op 189.73 ms/op 1.10
enrSubnets - fastDeserialize 64 bits 940.00 ns/op 890.00 ns/op 1.06
enrSubnets - ssz BitVector 64 bits 353.00 ns/op 327.00 ns/op 1.08
enrSubnets - fastDeserialize 4 bits 144.00 ns/op 136.00 ns/op 1.06
enrSubnets - ssz BitVector 4 bits 365.00 ns/op 325.00 ns/op 1.12
prioritizePeers score -10:0 att 32-0.1 sync 2-0 130.10 us/op 118.01 us/op 1.10
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 150.13 us/op 139.00 us/op 1.08
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 213.91 us/op 198.78 us/op 1.08
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 519.91 us/op 375.46 us/op 1.38
prioritizePeers score 0:0 att 64-1 sync 4-1 514.91 us/op 454.74 us/op 1.13
array of 16000 items push then shift 1.7608 us/op 1.6088 us/op 1.09
LinkedList of 16000 items push then shift 8.9310 ns/op 6.9880 ns/op 1.28
array of 16000 items push then pop 91.326 ns/op 74.797 ns/op 1.22
LinkedList of 16000 items push then pop 8.4620 ns/op 6.8900 ns/op 1.23
array of 24000 items push then shift 2.4979 us/op 2.4480 us/op 1.02
LinkedList of 24000 items push then shift 8.0560 ns/op 7.1030 ns/op 1.13
array of 24000 items push then pop 121.09 ns/op 104.00 ns/op 1.16
LinkedList of 24000 items push then pop 8.1330 ns/op 6.8300 ns/op 1.19
intersect bitArray bitLen 8 6.8070 ns/op 6.2860 ns/op 1.08
intersect array and set length 8 39.950 ns/op 40.213 ns/op 0.99
intersect bitArray bitLen 128 31.645 ns/op 30.697 ns/op 1.03
intersect array and set length 128 665.98 ns/op 648.23 ns/op 1.03
bitArray.getTrueBitIndexes() bitLen 128 1.1480 us/op 1.0360 us/op 1.11
bitArray.getTrueBitIndexes() bitLen 248 1.9330 us/op 1.8160 us/op 1.06
bitArray.getTrueBitIndexes() bitLen 512 4.2860 us/op 3.6890 us/op 1.16
Buffer.concat 32 items 645.00 ns/op 619.00 ns/op 1.04
Uint8Array.set 32 items 1.7080 us/op 950.00 ns/op 1.80
Buffer.copy 2.8520 us/op 2.6080 us/op 1.09
Uint8Array.set - with subarray 3.0350 us/op 1.7390 us/op 1.75
Uint8Array.set - without subarray 1.7920 us/op 887.00 ns/op 2.02
getUint32 - dataview 218.00 ns/op 213.00 ns/op 1.02
getUint32 - manual 134.00 ns/op 133.00 ns/op 1.01
Set add up to 64 items then delete first 3.0101 us/op 2.1914 us/op 1.37
OrderedSet add up to 64 items then delete first 4.6245 us/op 3.2290 us/op 1.43
Set add up to 64 items then delete last 2.4883 us/op 2.4693 us/op 1.01
OrderedSet add up to 64 items then delete last 4.7528 us/op 3.5734 us/op 1.33
Set add up to 64 items then delete middle 3.3349 us/op 2.5079 us/op 1.33
OrderedSet add up to 64 items then delete middle 6.7776 us/op 5.1898 us/op 1.31
Set add up to 128 items then delete first 6.6733 us/op 5.0340 us/op 1.33
OrderedSet add up to 128 items then delete first 10.309 us/op 7.8998 us/op 1.30
Set add up to 128 items then delete last 6.6019 us/op 4.9747 us/op 1.33
OrderedSet add up to 128 items then delete last 10.618 us/op 7.3635 us/op 1.44
Set add up to 128 items then delete middle 6.8013 us/op 6.0597 us/op 1.12
OrderedSet add up to 128 items then delete middle 18.626 us/op 13.790 us/op 1.35
Set add up to 256 items then delete first 13.717 us/op 10.316 us/op 1.33
OrderedSet add up to 256 items then delete first 22.007 us/op 16.050 us/op 1.37
Set add up to 256 items then delete last 13.290 us/op 9.9493 us/op 1.34
OrderedSet add up to 256 items then delete last 19.433 us/op 14.629 us/op 1.33
Set add up to 256 items then delete middle 13.136 us/op 9.6809 us/op 1.36
OrderedSet add up to 256 items then delete middle 48.047 us/op 41.386 us/op 1.16
transfer serialized Status (84 B) 2.5530 us/op 2.2420 us/op 1.14
copy serialized Status (84 B) 1.4340 us/op 1.1910 us/op 1.20
transfer serialized SignedVoluntaryExit (112 B) 2.9330 us/op 2.2480 us/op 1.30
copy serialized SignedVoluntaryExit (112 B) 1.7510 us/op 1.2210 us/op 1.43
transfer serialized ProposerSlashing (416 B) 4.1650 us/op 2.3090 us/op 1.80
copy serialized ProposerSlashing (416 B) 2.4760 us/op 1.2760 us/op 1.94
transfer serialized Attestation (485 B) 3.2740 us/op 2.3440 us/op 1.40
copy serialized Attestation (485 B) 2.4840 us/op 1.2690 us/op 1.96
transfer serialized AttesterSlashing (33232 B) 3.2130 us/op 2.4020 us/op 1.34
copy serialized AttesterSlashing (33232 B) 6.0650 us/op 3.4600 us/op 1.75
transfer serialized Small SignedBeaconBlock (128000 B) 3.7250 us/op 3.0010 us/op 1.24
copy serialized Small SignedBeaconBlock (128000 B) 13.611 us/op 9.0630 us/op 1.50
transfer serialized Avg SignedBeaconBlock (200000 B) 4.3750 us/op 3.6070 us/op 1.21
copy serialized Avg SignedBeaconBlock (200000 B) 23.854 us/op 16.390 us/op 1.46
transfer serialized BlobsSidecar (524380 B) 5.3910 us/op 3.6240 us/op 1.49
copy serialized BlobsSidecar (524380 B) 103.06 us/op 59.979 us/op 1.72
transfer serialized Big SignedBeaconBlock (1000000 B) 5.6180 us/op 3.5820 us/op 1.57
copy serialized Big SignedBeaconBlock (1000000 B) 149.28 us/op 117.80 us/op 1.27
pass gossip attestations to forkchoice per slot 3.0190 ms/op 2.9375 ms/op 1.03
forkChoice updateHead vc 100000 bc 64 eq 0 506.26 us/op 475.73 us/op 1.06
forkChoice updateHead vc 600000 bc 64 eq 0 3.1828 ms/op 3.0554 ms/op 1.04
forkChoice updateHead vc 1000000 bc 64 eq 0 5.5264 ms/op 4.8271 ms/op 1.14
forkChoice updateHead vc 600000 bc 320 eq 0 3.7352 ms/op 2.9622 ms/op 1.26
forkChoice updateHead vc 600000 bc 1200 eq 0 3.1741 ms/op 3.7308 ms/op 0.85
forkChoice updateHead vc 600000 bc 7200 eq 0 4.2721 ms/op 3.4530 ms/op 1.24
forkChoice updateHead vc 600000 bc 64 eq 1000 11.581 ms/op 10.633 ms/op 1.09
forkChoice updateHead vc 600000 bc 64 eq 10000 10.859 ms/op 10.584 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 300000 28.110 ms/op 13.873 ms/op 2.03
computeDeltas 500000 validators 300 proto nodes 4.4018 ms/op 4.0012 ms/op 1.10
computeDeltas 500000 validators 1200 proto nodes 4.2884 ms/op 3.9799 ms/op 1.08
computeDeltas 500000 validators 7200 proto nodes 4.2777 ms/op 3.9983 ms/op 1.07
computeDeltas 750000 validators 300 proto nodes 6.6989 ms/op 5.8407 ms/op 1.15
computeDeltas 750000 validators 1200 proto nodes 7.0492 ms/op 5.9881 ms/op 1.18
computeDeltas 750000 validators 7200 proto nodes 7.0067 ms/op 5.8400 ms/op 1.20
computeDeltas 1400000 validators 300 proto nodes 13.326 ms/op 11.057 ms/op 1.21
computeDeltas 1400000 validators 1200 proto nodes 11.279 ms/op 11.091 ms/op 1.02
computeDeltas 1400000 validators 7200 proto nodes 11.112 ms/op 11.294 ms/op 0.98
computeDeltas 2100000 validators 300 proto nodes 16.704 ms/op 16.757 ms/op 1.00
computeDeltas 2100000 validators 1200 proto nodes 16.555 ms/op 16.901 ms/op 0.98
computeDeltas 2100000 validators 7200 proto nodes 16.540 ms/op 17.343 ms/op 0.95
altair processAttestation - 250000 vs - 7PWei normalcase 2.0250 ms/op 2.0773 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei worstcase 3.0146 ms/op 3.1168 ms/op 0.97
altair processAttestation - setStatus - 1/6 committees join 130.50 us/op 137.54 us/op 0.95
altair processAttestation - setStatus - 1/3 committees join 251.18 us/op 248.88 us/op 1.01
altair processAttestation - setStatus - 1/2 committees join 353.58 us/op 345.60 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 457.05 us/op 452.27 us/op 1.01
altair processAttestation - setStatus - 4/5 committees join 666.58 us/op 603.93 us/op 1.10
altair processAttestation - setStatus - 100% committees join 731.54 us/op 741.84 us/op 0.99
altair processBlock - 250000 vs - 7PWei normalcase 4.6521 ms/op 4.7924 ms/op 0.97
altair processBlock - 250000 vs - 7PWei normalcase hashState 32.167 ms/op 29.107 ms/op 1.11
altair processBlock - 250000 vs - 7PWei worstcase 35.453 ms/op 36.422 ms/op 0.97
altair processBlock - 250000 vs - 7PWei worstcase hashState 86.300 ms/op 80.084 ms/op 1.08
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6846 ms/op 1.6615 ms/op 1.01
phase0 processBlock - 250000 vs - 7PWei worstcase 22.277 ms/op 23.327 ms/op 0.95
altair processEth1Data - 250000 vs - 7PWei normalcase 340.55 us/op 350.11 us/op 0.97
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 5.7230 us/op 6.0790 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 39.475 us/op 42.167 us/op 0.94
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 10.709 us/op 12.535 us/op 0.85
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 6.9700 us/op 7.2980 us/op 0.96
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 153.81 us/op 219.49 us/op 0.70
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 1.8207 ms/op 1.9371 ms/op 0.94
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 2.3513 ms/op 2.4274 ms/op 0.97
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.3196 ms/op 2.4323 ms/op 0.95
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.5236 ms/op 4.8925 ms/op 0.92
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.3604 ms/op 2.5104 ms/op 0.94
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.5393 ms/op 5.0029 ms/op 0.91
Tree 40 250000 create 419.60 ms/op 479.67 ms/op 0.87
Tree 40 250000 get(125000) 145.10 ns/op 147.31 ns/op 0.99
Tree 40 250000 set(125000) 1.4357 us/op 1.6296 us/op 0.88
Tree 40 250000 toArray() 15.601 ms/op 20.906 ms/op 0.75
Tree 40 250000 iterate all - toArray() + loop 16.241 ms/op 19.715 ms/op 0.82
Tree 40 250000 iterate all - get(i) 53.724 ms/op 62.964 ms/op 0.85
Array 250000 create 2.3903 ms/op 2.6799 ms/op 0.89
Array 250000 clone - spread 812.15 us/op 853.47 us/op 0.95
Array 250000 get(125000) 0.41300 ns/op 0.41400 ns/op 1.00
Array 250000 set(125000) 0.44000 ns/op 0.43600 ns/op 1.01
Array 250000 iterate all - loop 82.777 us/op 112.04 us/op 0.74
phase0 afterProcessEpoch - 250000 vs - 7PWei 42.789 ms/op 43.980 ms/op 0.97
Array.fill - length 1000000 3.4317 ms/op 4.5031 ms/op 0.76
Array push - length 1000000 12.530 ms/op 17.366 ms/op 0.72
Array.get 0.27681 ns/op 0.28987 ns/op 0.95
Uint8Array.get 0.44440 ns/op 0.47821 ns/op 0.93
phase0 beforeProcessEpoch - 250000 vs - 7PWei 15.986 ms/op 20.110 ms/op 0.79
altair processEpoch - mainnet_e81889 238.42 ms/op 279.71 ms/op 0.85
mainnet_e81889 - altair beforeProcessEpoch 18.112 ms/op 20.906 ms/op 0.87
mainnet_e81889 - altair processJustificationAndFinalization 5.6560 us/op 5.7750 us/op 0.98
mainnet_e81889 - altair processInactivityUpdates 4.1562 ms/op 5.1075 ms/op 0.81
mainnet_e81889 - altair processRewardsAndPenalties 35.527 ms/op 39.911 ms/op 0.89
mainnet_e81889 - altair processRegistryUpdates 722.00 ns/op 751.00 ns/op 0.96
mainnet_e81889 - altair processSlashings 188.00 ns/op 194.00 ns/op 0.97
mainnet_e81889 - altair processEth1DataReset 184.00 ns/op 184.00 ns/op 1.00
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.2699 ms/op 1.2630 ms/op 1.01
mainnet_e81889 - altair processSlashingsReset 861.00 ns/op 920.00 ns/op 0.94
mainnet_e81889 - altair processRandaoMixesReset 1.1210 us/op 1.2190 us/op 0.92
mainnet_e81889 - altair processHistoricalRootsUpdate 183.00 ns/op 190.00 ns/op 0.96
mainnet_e81889 - altair processParticipationFlagUpdates 521.00 ns/op 552.00 ns/op 0.94
mainnet_e81889 - altair processSyncCommitteeUpdates 146.00 ns/op 163.00 ns/op 0.90
mainnet_e81889 - altair afterProcessEpoch 45.451 ms/op 46.832 ms/op 0.97
capella processEpoch - mainnet_e217614 828.53 ms/op 874.37 ms/op 0.95
mainnet_e217614 - capella beforeProcessEpoch 63.789 ms/op 62.584 ms/op 1.02
mainnet_e217614 - capella processJustificationAndFinalization 5.2800 us/op 5.4570 us/op 0.97
mainnet_e217614 - capella processInactivityUpdates 14.457 ms/op 15.354 ms/op 0.94
mainnet_e217614 - capella processRewardsAndPenalties 175.67 ms/op 182.47 ms/op 0.96
mainnet_e217614 - capella processRegistryUpdates 6.5490 us/op 6.6830 us/op 0.98
mainnet_e217614 - capella processSlashings 185.00 ns/op 185.00 ns/op 1.00
mainnet_e217614 - capella processEth1DataReset 185.00 ns/op 189.00 ns/op 0.98
mainnet_e217614 - capella processEffectiveBalanceUpdates 4.2240 ms/op 11.918 ms/op 0.35
mainnet_e217614 - capella processSlashingsReset 875.00 ns/op 903.00 ns/op 0.97
mainnet_e217614 - capella processRandaoMixesReset 1.1540 us/op 1.2340 us/op 0.94
mainnet_e217614 - capella processHistoricalRootsUpdate 186.00 ns/op 192.00 ns/op 0.97
mainnet_e217614 - capella processParticipationFlagUpdates 531.00 ns/op 547.00 ns/op 0.97
mainnet_e217614 - capella afterProcessEpoch 119.39 ms/op 118.00 ms/op 1.01
phase0 processEpoch - mainnet_e58758 267.41 ms/op 293.13 ms/op 0.91
mainnet_e58758 - phase0 beforeProcessEpoch 68.121 ms/op 75.649 ms/op 0.90
mainnet_e58758 - phase0 processJustificationAndFinalization 5.7000 us/op 5.7820 us/op 0.99
mainnet_e58758 - phase0 processRewardsAndPenalties 36.838 ms/op 37.219 ms/op 0.99
mainnet_e58758 - phase0 processRegistryUpdates 3.1480 us/op 3.2400 us/op 0.97
mainnet_e58758 - phase0 processSlashings 185.00 ns/op 186.00 ns/op 0.99
mainnet_e58758 - phase0 processEth1DataReset 183.00 ns/op 184.00 ns/op 0.99
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 1.2422 ms/op 1.2805 ms/op 0.97
mainnet_e58758 - phase0 processSlashingsReset 935.00 ns/op 978.00 ns/op 0.96
mainnet_e58758 - phase0 processRandaoMixesReset 1.1840 us/op 1.2270 us/op 0.96
mainnet_e58758 - phase0 processHistoricalRootsUpdate 184.00 ns/op 192.00 ns/op 0.96
mainnet_e58758 - phase0 processParticipationRecordUpdates 902.00 ns/op 917.00 ns/op 0.98
mainnet_e58758 - phase0 afterProcessEpoch 36.230 ms/op 36.612 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.3509 ms/op 1.3937 ms/op 0.97
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.9610 ms/op 2.2169 ms/op 0.88
altair processInactivityUpdates - 250000 normalcase 16.418 ms/op 18.003 ms/op 0.91
altair processInactivityUpdates - 250000 worstcase 16.528 ms/op 17.611 ms/op 0.94
phase0 processRegistryUpdates - 250000 normalcase 5.3390 us/op 7.8370 us/op 0.68
phase0 processRegistryUpdates - 250000 badcase_full_deposits 265.19 us/op 281.31 us/op 0.94
phase0 processRegistryUpdates - 250000 worstcase 0.5 102.06 ms/op 101.80 ms/op 1.00
altair processRewardsAndPenalties - 250000 normalcase 27.574 ms/op 25.894 ms/op 1.06
altair processRewardsAndPenalties - 250000 worstcase 26.369 ms/op 27.477 ms/op 0.96
phase0 getAttestationDeltas - 250000 normalcase 6.1798 ms/op 9.2617 ms/op 0.67
phase0 getAttestationDeltas - 250000 worstcase 6.4447 ms/op 6.3366 ms/op 1.02
phase0 processSlashings - 250000 worstcase 100.40 us/op 107.83 us/op 0.93
altair processSyncCommitteeUpdates - 250000 12.793 ms/op 10.980 ms/op 1.17
BeaconState.hashTreeRoot - No change 228.00 ns/op 231.00 ns/op 0.99
BeaconState.hashTreeRoot - 1 full validator 88.572 us/op 79.713 us/op 1.11
BeaconState.hashTreeRoot - 32 full validator 914.26 us/op 838.00 us/op 1.09
BeaconState.hashTreeRoot - 512 full validator 9.9868 ms/op 10.735 ms/op 0.93
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 102.55 us/op 97.844 us/op 1.05
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.5522 ms/op 2.0977 ms/op 0.74
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 20.804 ms/op 28.499 ms/op 0.73
BeaconState.hashTreeRoot - 1 balances 78.056 us/op 73.483 us/op 1.06
BeaconState.hashTreeRoot - 32 balances 675.42 us/op 713.69 us/op 0.95
BeaconState.hashTreeRoot - 512 balances 6.9824 ms/op 8.5501 ms/op 0.82
BeaconState.hashTreeRoot - 250000 balances 143.94 ms/op 167.34 ms/op 0.86
aggregationBits - 2048 els - zipIndexesInBitList 22.046 us/op 21.988 us/op 1.00
byteArrayEquals 32 54.381 ns/op 54.669 ns/op 0.99
Buffer.compare 32 17.378 ns/op 17.550 ns/op 0.99
byteArrayEquals 1024 1.6077 us/op 1.6362 us/op 0.98
Buffer.compare 1024 24.990 ns/op 27.271 ns/op 0.92
byteArrayEquals 16384 25.646 us/op 25.730 us/op 1.00
Buffer.compare 16384 206.19 ns/op 182.98 ns/op 1.13
byteArrayEquals 123687377 196.41 ms/op 196.59 ms/op 1.00
Buffer.compare 123687377 8.7119 ms/op 8.9596 ms/op 0.97
byteArrayEquals 32 - diff last byte 55.590 ns/op 54.082 ns/op 1.03
Buffer.compare 32 - diff last byte 18.069 ns/op 17.577 ns/op 1.03
byteArrayEquals 1024 - diff last byte 1.6809 us/op 1.6956 us/op 0.99
Buffer.compare 1024 - diff last byte 27.579 ns/op 26.321 ns/op 1.05
byteArrayEquals 16384 - diff last byte 26.446 us/op 26.367 us/op 1.00
Buffer.compare 16384 - diff last byte 182.81 ns/op 193.13 ns/op 0.95
byteArrayEquals 123687377 - diff last byte 198.67 ms/op 201.50 ms/op 0.99
Buffer.compare 123687377 - diff last byte 8.3793 ms/op 9.5561 ms/op 0.88
byteArrayEquals 32 - random bytes 5.2910 ns/op 5.2340 ns/op 1.01
Buffer.compare 32 - random bytes 17.938 ns/op 17.659 ns/op 1.02
byteArrayEquals 1024 - random bytes 5.2920 ns/op 5.2770 ns/op 1.00
Buffer.compare 1024 - random bytes 17.986 ns/op 17.635 ns/op 1.02
byteArrayEquals 16384 - random bytes 5.4070 ns/op 5.2900 ns/op 1.02
Buffer.compare 16384 - random bytes 17.870 ns/op 17.968 ns/op 0.99
byteArrayEquals 123687377 - random bytes 6.8000 ns/op 6.7600 ns/op 1.01
Buffer.compare 123687377 - random bytes 19.940 ns/op 19.410 ns/op 1.03
regular array get 100000 times 37.840 us/op 35.290 us/op 1.07
wrappedArray get 100000 times 38.248 us/op 34.979 us/op 1.09
arrayWithProxy get 100000 times 14.515 ms/op 14.167 ms/op 1.02
ssz.Root.equals 52.330 ns/op 49.405 ns/op 1.06
byteArrayEquals 49.127 ns/op 47.880 ns/op 1.03
Buffer.compare 11.144 ns/op 10.974 ns/op 1.02
processSlot - 1 slots 10.775 us/op 12.315 us/op 0.87
processSlot - 32 slots 2.5032 ms/op 2.1696 ms/op 1.15
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 3.9884 ms/op 3.6214 ms/op 1.10
getCommitteeAssignments - req 1 vs - 250000 vc 2.2593 ms/op 2.7136 ms/op 0.83
getCommitteeAssignments - req 100 vs - 250000 vc 4.3306 ms/op 4.2916 ms/op 1.01
getCommitteeAssignments - req 1000 vs - 250000 vc 4.6323 ms/op 4.6190 ms/op 1.00
findModifiedValidators - 10000 modified validators 763.45 ms/op 824.44 ms/op 0.93
findModifiedValidators - 1000 modified validators 774.41 ms/op 794.27 ms/op 0.97
findModifiedValidators - 100 modified validators 278.96 ms/op 233.63 ms/op 1.19
findModifiedValidators - 10 modified validators 177.15 ms/op 220.77 ms/op 0.80
findModifiedValidators - 1 modified validators 223.92 ms/op 276.93 ms/op 0.81
findModifiedValidators - no difference 192.03 ms/op 183.11 ms/op 1.05
compare ViewDUs 6.6050 s/op 7.2018 s/op 0.92
compare each validator Uint8Array 1.5454 s/op 1.6189 s/op 0.95
compare ViewDU to Uint8Array 1.3056 s/op 1.0637 s/op 1.23
migrate state 1000000 validators, 24 modified, 0 new 1.0250 s/op 846.79 ms/op 1.21
migrate state 1000000 validators, 1700 modified, 1000 new 1.4146 s/op 1.0751 s/op 1.32
migrate state 1000000 validators, 3400 modified, 2000 new 1.5022 s/op 1.6644 s/op 0.90
migrate state 1500000 validators, 24 modified, 0 new 857.37 ms/op 846.88 ms/op 1.01
migrate state 1500000 validators, 1700 modified, 1000 new 1.2017 s/op 1.0511 s/op 1.14
migrate state 1500000 validators, 3400 modified, 2000 new 1.6110 s/op 1.4206 s/op 1.13
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 4.6600 ns/op 4.9900 ns/op 0.93
state getBlockRootAtSlot - 250000 vs - 7PWei 629.55 ns/op 639.51 ns/op 0.98
naive computeProposerIndex 100000 validators 67.630 ms/op 56.982 ms/op 1.19
computeProposerIndex 100000 validators 1.6184 ms/op 1.6585 ms/op 0.98
naiveGetNextSyncCommitteeIndices 1000 validators 9.6514 s/op 7.9219 s/op 1.22
getNextSyncCommitteeIndices 1000 validators 132.60 ms/op 118.65 ms/op 1.12
naiveGetNextSyncCommitteeIndices 10000 validators 10.845 s/op 7.8954 s/op 1.37
getNextSyncCommitteeIndices 10000 validators 133.94 ms/op 130.01 ms/op 1.03
naiveGetNextSyncCommitteeIndices 100000 validators 9.1016 s/op 9.0227 s/op 1.01
getNextSyncCommitteeIndices 100000 validators 119.92 ms/op 122.34 ms/op 0.98
naive computeShuffledIndex 100000 validators 27.550 s/op 25.490 s/op 1.08
cached computeShuffledIndex 100000 validators 572.18 ms/op 600.19 ms/op 0.95
naive computeShuffledIndex 2000000 validators 563.01 s/op 513.94 s/op 1.10
cached computeShuffledIndex 2000000 validators 53.252 s/op 41.629 s/op 1.28
computeProposers - vc 250000 634.77 us/op 699.85 us/op 0.91
computeEpochShuffling - vc 250000 44.971 ms/op 45.901 ms/op 0.98
getNextSyncCommittee - vc 250000 11.234 ms/op 11.222 ms/op 1.00
computeSigningRoot for AttestationData 26.356 us/op 20.849 us/op 1.26
hash AttestationData serialized data then Buffer.toString(base64) 1.7815 us/op 1.6813 us/op 1.06
toHexString serialized data 1.4986 us/op 1.3009 us/op 1.15
Buffer.toString(base64) 154.38 ns/op 167.36 ns/op 0.92
nodejs block root to RootHex using toHex 167.30 ns/op 167.47 ns/op 1.00
nodejs block root to RootHex using toRootHex 101.39 ns/op 95.066 ns/op 1.07
browser block root to RootHex using the deprecated toHexString 244.65 ns/op 402.42 ns/op 0.61
browser block root to RootHex using toHex 192.41 ns/op 296.05 ns/op 0.65
browser block root to RootHex using toRootHex 170.64 ns/op 172.31 ns/op 0.99

by benchmarkbot/action

@nflaig nflaig merged commit 335a428 into unstable Jun 12, 2025
21 checks passed
@nflaig nflaig deleted the nflaig/proposer-lookahead-api branch June 12, 2025 09:48
KatyaRyazantseva pushed a commit to KatyaRyazantseva/lodestar that referenced this pull request Jun 19, 2025
…fe#7949)

**Motivation**

- ethereum/beacon-APIs#539

**Description**

Add `GET /eth/v1/beacon/states/{state_id}/proposer_lookahead` endpoint
to retrieve proposer lookahead from state
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.32.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.

5 participants