Skip to content

feat: wire parent execution requests in block production#9265

Merged
nflaig merged 6 commits intounstablefrom
nflaig/parent-execution-requests
Apr 23, 2026
Merged

feat: wire parent execution requests in block production#9265
nflaig merged 6 commits intounstablefrom
nflaig/parent-execution-requests

Conversation

@nflaig
Copy link
Copy Markdown
Member

@nflaig nflaig commented Apr 23, 2026

No description provided.

@nflaig nflaig requested a review from a team as a code owner April 23, 2026 21:31
@nflaig nflaig added the spec-gloas Issues targeting the Glamsterdam spec version label Apr 23, 2026
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 implements the retrieval and propagation of parent execution requests required for block production and slot preparation in the Gloas fork. Key changes include adding a getParentExecutionRequests method to the beacon chain, updating the block production pipeline to incorporate these requests, and refactoring state view methods to calculate withdrawals based on execution requests rather than the full envelope. Feedback highlights a potential crash during the Fulu-to-Gloas transition if a Fulu parent is encountered and raises performance concerns regarding the use of full state cloning when applying parent payload effects.

Comment thread packages/beacon-node/src/chain/chain.ts
Comment thread packages/state-transition/src/stateView/beaconStateView.ts
Copy link
Copy Markdown

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

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: 76bff9eff4

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

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

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: bc53b47 Previous: 921c575 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 875.16 us/op 916.21 us/op 0.96
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 38.743 us/op 45.037 us/op 0.86
BLS verify - blst 728.52 us/op 754.40 us/op 0.97
BLS verifyMultipleSignatures 3 - blst 1.3170 ms/op 1.3857 ms/op 0.95
BLS verifyMultipleSignatures 8 - blst 2.1059 ms/op 2.2780 ms/op 0.92
BLS verifyMultipleSignatures 32 - blst 6.6016 ms/op 7.1217 ms/op 0.93
BLS verifyMultipleSignatures 64 - blst 12.756 ms/op 14.001 ms/op 0.91
BLS verifyMultipleSignatures 128 - blst 25.045 ms/op 26.502 ms/op 0.95
BLS deserializing 10000 signatures 623.04 ms/op 660.51 ms/op 0.94
BLS deserializing 100000 signatures 6.2937 s/op 6.5454 s/op 0.96
BLS verifyMultipleSignatures - same message - 3 - blst 806.26 us/op 825.54 us/op 0.98
BLS verifyMultipleSignatures - same message - 8 - blst 937.47 us/op 957.32 us/op 0.98
BLS verifyMultipleSignatures - same message - 32 - blst 1.5444 ms/op 1.5991 ms/op 0.97
BLS verifyMultipleSignatures - same message - 64 - blst 2.3945 ms/op 2.4827 ms/op 0.96
BLS verifyMultipleSignatures - same message - 128 - blst 4.0644 ms/op 4.1401 ms/op 0.98
BLS aggregatePubkeys 32 - blst 17.712 us/op 17.897 us/op 0.99
BLS aggregatePubkeys 128 - blst 62.905 us/op 63.921 us/op 0.98
getSlashingsAndExits - default max 45.769 us/op 59.910 us/op 0.76
getSlashingsAndExits - 2k 346.26 us/op 391.41 us/op 0.88
proposeBlockBody type=full, size=empty 781.69 us/op 731.31 us/op 1.07
isKnown best case - 1 super set check 170.00 ns/op 173.00 ns/op 0.98
isKnown normal case - 2 super set checks 165.00 ns/op 170.00 ns/op 0.97
isKnown worse case - 16 super set checks 166.00 ns/op 174.00 ns/op 0.95
validate api signedAggregateAndProof - struct 1.4791 ms/op 1.5692 ms/op 0.94
validate gossip signedAggregateAndProof - struct 1.4908 ms/op 1.5671 ms/op 0.95
batch validate gossip attestation - vc 640000 - chunk 32 108.32 us/op 113.64 us/op 0.95
batch validate gossip attestation - vc 640000 - chunk 64 93.939 us/op 101.10 us/op 0.93
batch validate gossip attestation - vc 640000 - chunk 128 88.067 us/op 98.745 us/op 0.89
batch validate gossip attestation - vc 640000 - chunk 256 83.517 us/op 90.442 us/op 0.92
bytes32 toHexString 281.00 ns/op 296.00 ns/op 0.95
bytes32 Buffer.toString(hex) 181.00 ns/op 193.00 ns/op 0.94
bytes32 Buffer.toString(hex) from Uint8Array 257.00 ns/op 261.00 ns/op 0.98
bytes32 Buffer.toString(hex) + 0x 186.00 ns/op 187.00 ns/op 0.99
Return object 10000 times 0.21330 ns/op 0.21890 ns/op 0.97
Throw Error 10000 times 3.3611 us/op 3.4336 us/op 0.98
toHex 100.15 ns/op 98.664 ns/op 1.02
Buffer.from 83.006 ns/op 88.925 ns/op 0.93
shared Buffer 55.361 ns/op 59.771 ns/op 0.93
fastMsgIdFn sha256 / 200 bytes 1.4590 us/op 1.5270 us/op 0.96
fastMsgIdFn h32 xxhash / 200 bytes 146.00 ns/op 157.00 ns/op 0.93
fastMsgIdFn h64 xxhash / 200 bytes 206.00 ns/op 218.00 ns/op 0.94
fastMsgIdFn sha256 / 1000 bytes 4.7170 us/op 4.8950 us/op 0.96
fastMsgIdFn h32 xxhash / 1000 bytes 235.00 ns/op 250.00 ns/op 0.94
fastMsgIdFn h64 xxhash / 1000 bytes 248.00 ns/op 266.00 ns/op 0.93
fastMsgIdFn sha256 / 10000 bytes 41.940 us/op 42.842 us/op 0.98
fastMsgIdFn h32 xxhash / 10000 bytes 1.2670 us/op 1.2850 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 822.00 ns/op 839.00 ns/op 0.98
send data - 1000 256B messages 5.6104 ms/op 4.3781 ms/op 1.28
send data - 1000 512B messages 4.6293 ms/op 4.2765 ms/op 1.08
send data - 1000 1024B messages 4.9152 ms/op 4.5244 ms/op 1.09
send data - 1000 1200B messages 5.2994 ms/op 4.9361 ms/op 1.07
send data - 1000 2048B messages 4.9464 ms/op 5.0197 ms/op 0.99
send data - 1000 4096B messages 5.8785 ms/op 5.6871 ms/op 1.03
send data - 1000 16384B messages 34.936 ms/op 18.425 ms/op 1.90
send data - 1000 65536B messages 230.46 ms/op 292.45 ms/op 0.79
enrSubnets - fastDeserialize 64 bits 729.00 ns/op 838.00 ns/op 0.87
enrSubnets - ssz BitVector 64 bits 274.00 ns/op 287.00 ns/op 0.95
enrSubnets - fastDeserialize 4 bits 100.00 ns/op 106.00 ns/op 0.94
enrSubnets - ssz BitVector 4 bits 279.00 ns/op 281.00 ns/op 0.99
prioritizePeers score -10:0 att 32-0.1 sync 2-0 207.50 us/op 214.52 us/op 0.97
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 252.28 us/op 256.56 us/op 0.98
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 357.94 us/op 357.76 us/op 1.00
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 629.17 us/op 628.43 us/op 1.00
prioritizePeers score 0:0 att 64-1 sync 4-1 736.22 us/op 731.02 us/op 1.01
array of 16000 items push then shift 1.3005 us/op 1.3242 us/op 0.98
LinkedList of 16000 items push then shift 8.0930 ns/op 7.4490 ns/op 1.09
array of 16000 items push then pop 74.371 ns/op 68.750 ns/op 1.08
LinkedList of 16000 items push then pop 6.3530 ns/op 6.1610 ns/op 1.03
array of 24000 items push then shift 1.9088 us/op 1.9625 us/op 0.97
LinkedList of 24000 items push then shift 7.6990 ns/op 7.0870 ns/op 1.09
array of 24000 items push then pop 97.037 ns/op 100.37 ns/op 0.97
LinkedList of 24000 items push then pop 6.1200 ns/op 6.3310 ns/op 0.97
intersect bitArray bitLen 8 4.7810 ns/op 4.9560 ns/op 0.96
intersect array and set length 8 29.154 ns/op 30.539 ns/op 0.95
intersect bitArray bitLen 128 23.892 ns/op 25.062 ns/op 0.95
intersect array and set length 128 497.11 ns/op 514.56 ns/op 0.97
bitArray.getTrueBitIndexes() bitLen 128 1.0310 us/op 1.0610 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 248 1.7580 us/op 1.8190 us/op 0.97
bitArray.getTrueBitIndexes() bitLen 512 3.6330 us/op 3.7810 us/op 0.96
Full columns - reconstruct all 6 blobs 137.89 us/op 153.75 us/op 0.90
Full columns - reconstruct half of the blobs out of 6 68.652 us/op 73.026 us/op 0.94
Full columns - reconstruct single blob out of 6 30.480 us/op 35.951 us/op 0.85
Half columns - reconstruct all 6 blobs 388.64 ms/op 391.94 ms/op 0.99
Half columns - reconstruct half of the blobs out of 6 192.85 ms/op 198.40 ms/op 0.97
Half columns - reconstruct single blob out of 6 69.643 ms/op 67.972 ms/op 1.02
Full columns - reconstruct all 10 blobs 283.65 us/op 212.15 us/op 1.34
Full columns - reconstruct half of the blobs out of 10 107.69 us/op 100.79 us/op 1.07
Full columns - reconstruct single blob out of 10 32.632 us/op 33.597 us/op 0.97
Half columns - reconstruct all 10 blobs 639.43 ms/op 657.96 ms/op 0.97
Half columns - reconstruct half of the blobs out of 10 327.76 ms/op 331.56 ms/op 0.99
Half columns - reconstruct single blob out of 10 70.124 ms/op 72.634 ms/op 0.97
Full columns - reconstruct all 20 blobs 1.9226 ms/op 1.4387 ms/op 1.34
Full columns - reconstruct half of the blobs out of 20 200.43 us/op 175.75 us/op 1.14
Full columns - reconstruct single blob out of 20 32.607 us/op 33.409 us/op 0.98
Half columns - reconstruct all 20 blobs 1.3145 s/op 1.3083 s/op 1.00
Half columns - reconstruct half of the blobs out of 20 645.28 ms/op 660.39 ms/op 0.98
Half columns - reconstruct single blob out of 20 70.242 ms/op 69.604 ms/op 1.01
Set add up to 64 items then delete first 2.4826 us/op 2.5929 us/op 0.96
OrderedSet add up to 64 items then delete first 3.2770 us/op 3.3762 us/op 0.97
Set add up to 64 items then delete last 2.2890 us/op 2.3852 us/op 0.96
OrderedSet add up to 64 items then delete last 3.3646 us/op 3.3199 us/op 1.01
Set add up to 64 items then delete middle 2.1309 us/op 2.1471 us/op 0.99
OrderedSet add up to 64 items then delete middle 4.8415 us/op 4.8043 us/op 1.01
Set add up to 128 items then delete first 4.0236 us/op 4.2446 us/op 0.95
OrderedSet add up to 128 items then delete first 6.2661 us/op 6.5687 us/op 0.95
Set add up to 128 items then delete last 3.9599 us/op 3.9169 us/op 1.01
OrderedSet add up to 128 items then delete last 6.1140 us/op 5.8201 us/op 1.05
Set add up to 128 items then delete middle 3.9315 us/op 3.9044 us/op 1.01
OrderedSet add up to 128 items then delete middle 12.201 us/op 11.833 us/op 1.03
Set add up to 256 items then delete first 7.7331 us/op 7.9923 us/op 0.97
OrderedSet add up to 256 items then delete first 11.698 us/op 12.367 us/op 0.95
Set add up to 256 items then delete last 7.6351 us/op 7.7836 us/op 0.98
OrderedSet add up to 256 items then delete last 12.094 us/op 11.591 us/op 1.04
Set add up to 256 items then delete middle 7.6554 us/op 7.6691 us/op 1.00
OrderedSet add up to 256 items then delete middle 35.770 us/op 35.472 us/op 1.01
pass gossip attestations to forkchoice per slot 2.5639 ms/op 2.6494 ms/op 0.97
forkChoice updateHead vc 100000 bc 64 eq 0 382.13 us/op 408.96 us/op 0.93
forkChoice updateHead vc 600000 bc 64 eq 0 2.2811 ms/op 2.4427 ms/op 0.93
forkChoice updateHead vc 1000000 bc 64 eq 0 3.8257 ms/op 4.1565 ms/op 0.92
forkChoice updateHead vc 600000 bc 320 eq 0 2.2905 ms/op 2.4298 ms/op 0.94
forkChoice updateHead vc 600000 bc 1200 eq 0 2.2820 ms/op 2.4875 ms/op 0.92
forkChoice updateHead vc 600000 bc 7200 eq 0 2.9451 ms/op 2.9004 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 1000 2.9129 ms/op 3.0132 ms/op 0.97
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9998 ms/op 3.1215 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 300000 6.9406 ms/op 7.2274 ms/op 0.96
computeDeltas 1400000 validators 0% inactive 12.441 ms/op 12.788 ms/op 0.97
computeDeltas 1400000 validators 10% inactive 11.731 ms/op 11.921 ms/op 0.98
computeDeltas 1400000 validators 20% inactive 10.681 ms/op 10.873 ms/op 0.98
computeDeltas 1400000 validators 50% inactive 8.1990 ms/op 8.3820 ms/op 0.98
computeDeltas 2100000 validators 0% inactive 19.281 ms/op 19.249 ms/op 1.00
computeDeltas 2100000 validators 10% inactive 17.877 ms/op 18.080 ms/op 0.99
computeDeltas 2100000 validators 20% inactive 16.204 ms/op 16.368 ms/op 0.99
computeDeltas 2100000 validators 50% inactive 9.4645 ms/op 9.7398 ms/op 0.97
altair processAttestation - 250000 vs - 7PWei normalcase 2.2813 ms/op 1.7502 ms/op 1.30
altair processAttestation - 250000 vs - 7PWei worstcase 2.8835 ms/op 2.4263 ms/op 1.19
altair processAttestation - setStatus - 1/6 committees join 102.55 us/op 107.79 us/op 0.95
altair processAttestation - setStatus - 1/3 committees join 205.87 us/op 212.80 us/op 0.97
altair processAttestation - setStatus - 1/2 committees join 290.45 us/op 299.05 us/op 0.97
altair processAttestation - setStatus - 2/3 committees join 368.50 us/op 386.72 us/op 0.95
altair processAttestation - setStatus - 4/5 committees join 507.57 us/op 523.89 us/op 0.97
altair processAttestation - setStatus - 100% committees join 618.83 us/op 630.14 us/op 0.98
altair processBlock - 250000 vs - 7PWei normalcase 5.2563 ms/op 3.8048 ms/op 1.38
altair processBlock - 250000 vs - 7PWei normalcase hashState 21.272 ms/op 13.010 ms/op 1.63
altair processBlock - 250000 vs - 7PWei worstcase 25.578 ms/op 22.486 ms/op 1.14
altair processBlock - 250000 vs - 7PWei worstcase hashState 54.717 ms/op 43.418 ms/op 1.26
phase0 processBlock - 250000 vs - 7PWei normalcase 1.5721 ms/op 1.3177 ms/op 1.19
phase0 processBlock - 250000 vs - 7PWei worstcase 19.212 ms/op 18.529 ms/op 1.04
altair processEth1Data - 250000 vs - 7PWei normalcase 303.65 us/op 294.37 us/op 1.03
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 6.8150 us/op 5.1610 us/op 1.32
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 23.736 us/op 21.751 us/op 1.09
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 9.2770 us/op 5.9400 us/op 1.56
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 5.8310 us/op 3.8800 us/op 1.50
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 102.03 us/op 95.775 us/op 1.07
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4644 ms/op 1.4108 ms/op 1.04
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.9601 ms/op 1.8676 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 2.1111 ms/op 1.8306 ms/op 1.15
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 5.8199 ms/op 3.8964 ms/op 1.49
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.3639 ms/op 2.1256 ms/op 1.11
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 6.3944 ms/op 4.3432 ms/op 1.47
Tree 40 250000 create 377.35 ms/op 320.98 ms/op 1.18
Tree 40 250000 get(125000) 94.031 ns/op 94.003 ns/op 1.00
Tree 40 250000 set(125000) 1.0219 us/op 1.0440 us/op 0.98
Tree 40 250000 toArray() 17.863 ms/op 9.7158 ms/op 1.84
Tree 40 250000 iterate all - toArray() + loop 19.017 ms/op 9.7829 ms/op 1.94
Tree 40 250000 iterate all - get(i) 40.610 ms/op 35.902 ms/op 1.13
Array 250000 create 2.3231 ms/op 2.1316 ms/op 1.09
Array 250000 clone - spread 710.06 us/op 681.56 us/op 1.04
Array 250000 get(125000) 0.30100 ns/op 0.29900 ns/op 1.01
Array 250000 set(125000) 0.30500 ns/op 0.30400 ns/op 1.00
Array 250000 iterate all - loop 58.321 us/op 57.974 us/op 1.01
phase0 afterProcessEpoch - 250000 vs - 7PWei 51.198 ms/op 41.104 ms/op 1.25
Array.fill - length 1000000 2.5883 ms/op 2.2198 ms/op 1.17
Array push - length 1000000 10.296 ms/op 7.9275 ms/op 1.30
Array.get 0.21097 ns/op 0.20652 ns/op 1.02
Uint8Array.get 0.25527 ns/op 0.24939 ns/op 1.02
phase0 beforeProcessEpoch - 250000 vs - 7PWei 22.220 ms/op 13.176 ms/op 1.69
altair processEpoch - mainnet_e81889 317.63 ms/op 267.93 ms/op 1.19
mainnet_e81889 - altair beforeProcessEpoch 43.717 ms/op 20.559 ms/op 2.13
mainnet_e81889 - altair processJustificationAndFinalization 7.0080 us/op 5.5650 us/op 1.26
mainnet_e81889 - altair processInactivityUpdates 8.3525 ms/op 4.3948 ms/op 1.90
mainnet_e81889 - altair processRewardsAndPenalties 22.630 ms/op 19.457 ms/op 1.16
mainnet_e81889 - altair processRegistryUpdates 583.00 ns/op 556.00 ns/op 1.05
mainnet_e81889 - altair processSlashings 136.00 ns/op 137.00 ns/op 0.99
mainnet_e81889 - altair processEth1DataReset 132.00 ns/op 131.00 ns/op 1.01
mainnet_e81889 - altair processEffectiveBalanceUpdates 6.0583 ms/op 1.3674 ms/op 4.43
mainnet_e81889 - altair processSlashingsReset 735.00 ns/op 713.00 ns/op 1.03
mainnet_e81889 - altair processRandaoMixesReset 1.5010 us/op 1.1220 us/op 1.34
mainnet_e81889 - altair processHistoricalRootsUpdate 134.00 ns/op 138.00 ns/op 0.97
mainnet_e81889 - altair processParticipationFlagUpdates 438.00 ns/op 432.00 ns/op 1.01
mainnet_e81889 - altair processSyncCommitteeUpdates 105.00 ns/op 113.00 ns/op 0.93
mainnet_e81889 - altair afterProcessEpoch 42.780 ms/op 41.970 ms/op 1.02
capella processEpoch - mainnet_e217614 907.91 ms/op 861.35 ms/op 1.05
mainnet_e217614 - capella beforeProcessEpoch 68.750 ms/op 74.472 ms/op 0.92
mainnet_e217614 - capella processJustificationAndFinalization 6.5830 us/op 5.5030 us/op 1.20
mainnet_e217614 - capella processInactivityUpdates 18.492 ms/op 14.760 ms/op 1.25
mainnet_e217614 - capella processRewardsAndPenalties 100.82 ms/op 96.974 ms/op 1.04
mainnet_e217614 - capella processRegistryUpdates 4.6440 us/op 4.6760 us/op 0.99
mainnet_e217614 - capella processSlashings 135.00 ns/op 139.00 ns/op 0.97
mainnet_e217614 - capella processEth1DataReset 131.00 ns/op 135.00 ns/op 0.97
mainnet_e217614 - capella processEffectiveBalanceUpdates 15.076 ms/op 5.7415 ms/op 2.63
mainnet_e217614 - capella processSlashingsReset 714.00 ns/op 706.00 ns/op 1.01
mainnet_e217614 - capella processRandaoMixesReset 1.3280 us/op 1.1600 us/op 1.14
mainnet_e217614 - capella processHistoricalRootsUpdate 135.00 ns/op 135.00 ns/op 1.00
mainnet_e217614 - capella processParticipationFlagUpdates 444.00 ns/op 434.00 ns/op 1.02
mainnet_e217614 - capella afterProcessEpoch 112.11 ms/op 109.48 ms/op 1.02
phase0 processEpoch - mainnet_e58758 324.57 ms/op 285.03 ms/op 1.14
mainnet_e58758 - phase0 beforeProcessEpoch 73.638 ms/op 55.713 ms/op 1.32
mainnet_e58758 - phase0 processJustificationAndFinalization 6.6460 us/op 5.5230 us/op 1.20
mainnet_e58758 - phase0 processRewardsAndPenalties 17.241 ms/op 16.974 ms/op 1.02
mainnet_e58758 - phase0 processRegistryUpdates 2.2700 us/op 2.3400 us/op 0.97
mainnet_e58758 - phase0 processSlashings 131.00 ns/op 134.00 ns/op 0.98
mainnet_e58758 - phase0 processEth1DataReset 228.00 ns/op 133.00 ns/op 1.71
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 850.00 us/op 844.08 us/op 1.01
mainnet_e58758 - phase0 processSlashingsReset 965.00 ns/op 872.00 ns/op 1.11
mainnet_e58758 - phase0 processRandaoMixesReset 1.7380 us/op 1.2220 us/op 1.42
mainnet_e58758 - phase0 processHistoricalRootsUpdate 133.00 ns/op 139.00 ns/op 0.96
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.2920 us/op 1.0180 us/op 1.27
mainnet_e58758 - phase0 afterProcessEpoch 35.065 ms/op 34.331 ms/op 1.02
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0329 ms/op 1.0346 ms/op 1.00
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 3.6544 ms/op 1.2651 ms/op 2.89
altair processInactivityUpdates - 250000 normalcase 17.918 ms/op 12.809 ms/op 1.40
altair processInactivityUpdates - 250000 worstcase 19.068 ms/op 12.815 ms/op 1.49
phase0 processRegistryUpdates - 250000 normalcase 2.4210 us/op 3.1740 us/op 0.76
phase0 processRegistryUpdates - 250000 badcase_full_deposits 146.40 us/op 154.06 us/op 0.95
phase0 processRegistryUpdates - 250000 worstcase 0.5 58.632 ms/op 64.785 ms/op 0.91
altair processRewardsAndPenalties - 250000 normalcase 17.133 ms/op 17.385 ms/op 0.99
altair processRewardsAndPenalties - 250000 worstcase 16.727 ms/op 16.639 ms/op 1.01
phase0 getAttestationDeltas - 250000 normalcase 5.2707 ms/op 5.6257 ms/op 0.94
phase0 getAttestationDeltas - 250000 worstcase 5.4390 ms/op 5.6234 ms/op 0.97
phase0 processSlashings - 250000 worstcase 66.119 us/op 62.388 us/op 1.06
altair processSyncCommitteeUpdates - 250000 12.378 ms/op 11.405 ms/op 1.09
BeaconState.hashTreeRoot - No change 201.00 ns/op 208.00 ns/op 0.97
BeaconState.hashTreeRoot - 1 full validator 95.560 us/op 70.875 us/op 1.35
BeaconState.hashTreeRoot - 32 full validator 1.0248 ms/op 923.01 us/op 1.11
BeaconState.hashTreeRoot - 512 full validator 11.201 ms/op 7.7797 ms/op 1.44
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 116.15 us/op 85.741 us/op 1.35
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.7027 ms/op 1.3830 ms/op 1.23
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 23.448 ms/op 14.996 ms/op 1.56
BeaconState.hashTreeRoot - 1 balances 92.156 us/op 67.292 us/op 1.37
BeaconState.hashTreeRoot - 32 balances 819.08 us/op 610.41 us/op 1.34
BeaconState.hashTreeRoot - 512 balances 8.1280 ms/op 5.4699 ms/op 1.49
BeaconState.hashTreeRoot - 250000 balances 154.89 ms/op 122.86 ms/op 1.26
aggregationBits - 2048 els - zipIndexesInBitList 21.315 us/op 19.548 us/op 1.09
regular array get 100000 times 23.813 us/op 23.198 us/op 1.03
wrappedArray get 100000 times 23.823 us/op 23.169 us/op 1.03
arrayWithProxy get 100000 times 12.786 ms/op 9.8797 ms/op 1.29
ssz.Root.equals 22.079 ns/op 21.832 ns/op 1.01
byteArrayEquals 21.854 ns/op 21.633 ns/op 1.01
Buffer.compare 9.8350 ns/op 8.9780 ns/op 1.10
processSlot - 1 slots 12.442 us/op 8.6080 us/op 1.45
processSlot - 32 slots 2.4285 ms/op 1.9263 ms/op 1.26
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 5.7823 ms/op 2.7683 ms/op 2.09
getCommitteeAssignments - req 1 vs - 250000 vc 1.6996 ms/op 1.6809 ms/op 1.01
getCommitteeAssignments - req 100 vs - 250000 vc 3.4592 ms/op 3.4678 ms/op 1.00
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7215 ms/op 3.7321 ms/op 1.00
findModifiedValidators - 10000 modified validators 805.12 ms/op 620.65 ms/op 1.30
findModifiedValidators - 1000 modified validators 450.08 ms/op 503.63 ms/op 0.89
findModifiedValidators - 100 modified validators 331.79 ms/op 300.14 ms/op 1.11
findModifiedValidators - 10 modified validators 240.38 ms/op 302.82 ms/op 0.79
findModifiedValidators - 1 modified validators 186.85 ms/op 190.65 ms/op 0.98
findModifiedValidators - no difference 192.84 ms/op 198.10 ms/op 0.97
migrate state 1500000 validators, 3400 modified, 2000 new 3.4040 s/op 3.3658 s/op 1.01
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.7600 ns/op 3.9000 ns/op 0.96
state getBlockRootAtSlot - 250000 vs - 7PWei 430.60 ns/op 278.25 ns/op 1.55
computeProposerIndex 100000 validators 1.3722 ms/op 1.4011 ms/op 0.98
getNextSyncCommitteeIndices 1000 validators 2.9328 ms/op 2.9711 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 26.028 ms/op 25.946 ms/op 1.00
getNextSyncCommitteeIndices 100000 validators 87.148 ms/op 86.707 ms/op 1.01
computeProposers - vc 250000 573.68 us/op 561.74 us/op 1.02
computeEpochShuffling - vc 250000 39.618 ms/op 41.057 ms/op 0.96
getNextSyncCommittee - vc 250000 9.5233 ms/op 9.8819 ms/op 0.96
nodejs block root to RootHex using toHex 94.545 ns/op 96.259 ns/op 0.98
nodejs block root to RootHex using toRootHex 58.155 ns/op 60.256 ns/op 0.97
nodejs fromHex(blob) 789.38 us/op 794.87 us/op 0.99
nodejs fromHexInto(blob) 638.50 us/op 640.80 us/op 1.00
nodejs block root to RootHex using the deprecated toHexString 370.72 ns/op 374.82 ns/op 0.99
nodejs byteArrayEquals 32 bytes (block root) 26.668 ns/op 26.200 ns/op 1.02
nodejs byteArrayEquals 48 bytes (pubkey) 38.532 ns/op 37.774 ns/op 1.02
nodejs byteArrayEquals 96 bytes (signature) 34.679 ns/op 36.184 ns/op 0.96
nodejs byteArrayEquals 1024 bytes 42.656 ns/op 44.397 ns/op 0.96
nodejs byteArrayEquals 131072 bytes (blob) 1.7957 us/op 1.7876 us/op 1.00
browser block root to RootHex using toHex 147.09 ns/op 145.52 ns/op 1.01
browser block root to RootHex using toRootHex 132.64 ns/op 131.80 ns/op 1.01
browser fromHex(blob) 1.6257 ms/op 1.7152 ms/op 0.95
browser fromHexInto(blob) 644.48 us/op 642.99 us/op 1.00
browser block root to RootHex using the deprecated toHexString 486.78 ns/op 485.05 ns/op 1.00
browser byteArrayEquals 32 bytes (block root) 28.844 ns/op 28.226 ns/op 1.02
browser byteArrayEquals 48 bytes (pubkey) 40.604 ns/op 39.795 ns/op 1.02
browser byteArrayEquals 96 bytes (signature) 75.379 ns/op 74.257 ns/op 1.02
browser byteArrayEquals 1024 bytes 776.51 ns/op 758.38 ns/op 1.02
browser byteArrayEquals 131072 bytes (blob) 96.768 us/op 95.430 us/op 1.01

by benchmarkbot/action

@nflaig nflaig merged commit 78c66ba into unstable Apr 23, 2026
22 of 23 checks passed
@nflaig nflaig deleted the nflaig/parent-execution-requests branch April 23, 2026 21:49
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 23, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.52%. Comparing base (921c575) to head (76bff9e).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@             Coverage Diff              @@
##           unstable    #9265      +/-   ##
============================================
- Coverage     52.52%   52.52%   -0.01%     
============================================
  Files           848      848              
  Lines         61306    61304       -2     
  Branches       4510     4510              
============================================
- Hits          32203    32201       -2     
  Misses        29038    29038              
  Partials         65       65              
🚀 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.

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

Labels

spec-gloas Issues targeting the Glamsterdam spec version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants