Skip to content

feat: merge BAL into ePBS#9226

Merged
nflaig merged 12 commits intounstablefrom
nc/bal-merge-unstable
Apr 21, 2026
Merged

feat: merge BAL into ePBS#9226
nflaig merged 12 commits intounstablefrom
nc/bal-merge-unstable

Conversation

@ensi321
Copy link
Copy Markdown
Contributor

@ensi321 ensi321 commented Apr 17, 2026

Based on changes from bal-devnet-4 branch.

ensi321 and others added 2 commits April 16, 2026 23:46
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (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 implements support for the Gloas hardfork, specifically incorporating EIP-7843 and EIP-7928. It updates the Engine API with new method versions, adds slotNumber and blockAccessList to execution payloads, and extends SSZ types and serialization logic. A review comment suggests improving type safety in the block production logic by using a more specific type cast for payload attributes.

Comment thread packages/beacon-node/src/chain/produceBlock/produceBlockBody.ts Outdated
@ensi321 ensi321 force-pushed the nc/bal-merge-unstable branch from e14f7cf to 8120218 Compare April 17, 2026 07:16
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 17, 2026

⚠️ Performance Alert ⚠️

Possible performance regression was detected for some benchmarks.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold.

Benchmark suite Current: 19d9e13 Previous: 4fb05c5 Ratio
send data - 1000 16384B messages 46.237 ms/op 13.836 ms/op 3.34
enrSubnets - fastDeserialize 4 bits 317.00 ns/op 100.00 ns/op 3.17
Full benchmark results
Benchmark suite Current: 19d9e13 Previous: 4fb05c5 Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.4215 ms/op 1.3569 ms/op 1.05
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 42.895 us/op 47.166 us/op 0.91
BLS verify - blst 769.28 us/op 773.05 us/op 1.00
BLS verifyMultipleSignatures 3 - blst 1.4427 ms/op 1.4107 ms/op 1.02
BLS verifyMultipleSignatures 8 - blst 2.2965 ms/op 2.2779 ms/op 1.01
BLS verifyMultipleSignatures 32 - blst 7.1932 ms/op 7.3560 ms/op 0.98
BLS verifyMultipleSignatures 64 - blst 13.847 ms/op 14.488 ms/op 0.96
BLS verifyMultipleSignatures 128 - blst 26.780 ms/op 27.032 ms/op 0.99
BLS deserializing 10000 signatures 641.83 ms/op 666.59 ms/op 0.96
BLS deserializing 100000 signatures 6.7085 s/op 6.5810 s/op 1.02
BLS verifyMultipleSignatures - same message - 3 - blst 840.80 us/op 779.87 us/op 1.08
BLS verifyMultipleSignatures - same message - 8 - blst 1.0099 ms/op 924.45 us/op 1.09
BLS verifyMultipleSignatures - same message - 32 - blst 1.7127 ms/op 1.6123 ms/op 1.06
BLS verifyMultipleSignatures - same message - 64 - blst 2.6427 ms/op 2.3969 ms/op 1.10
BLS verifyMultipleSignatures - same message - 128 - blst 4.5496 ms/op 4.1267 ms/op 1.10
BLS aggregatePubkeys 32 - blst 18.665 us/op 18.297 us/op 1.02
BLS aggregatePubkeys 128 - blst 65.396 us/op 65.060 us/op 1.01
getSlashingsAndExits - default max 53.204 us/op 49.628 us/op 1.07
getSlashingsAndExits - 2k 394.55 us/op 373.58 us/op 1.06
proposeBlockBody type=full, size=empty 777.12 us/op 680.36 us/op 1.14
isKnown best case - 1 super set check 404.00 ns/op 169.00 ns/op 2.39
isKnown normal case - 2 super set checks 398.00 ns/op 172.00 ns/op 2.31
isKnown worse case - 16 super set checks 386.00 ns/op 168.00 ns/op 2.30
validate api signedAggregateAndProof - struct 1.6367 ms/op 1.5480 ms/op 1.06
validate gossip signedAggregateAndProof - struct 1.6518 ms/op 1.5459 ms/op 1.07
batch validate gossip attestation - vc 640000 - chunk 32 116.72 us/op 107.19 us/op 1.09
batch validate gossip attestation - vc 640000 - chunk 64 104.12 us/op 95.828 us/op 1.09
batch validate gossip attestation - vc 640000 - chunk 128 95.503 us/op 87.181 us/op 1.10
batch validate gossip attestation - vc 640000 - chunk 256 91.977 us/op 83.579 us/op 1.10
bytes32 toHexString 527.00 ns/op 292.00 ns/op 1.80
bytes32 Buffer.toString(hex) 404.00 ns/op 173.00 ns/op 2.34
bytes32 Buffer.toString(hex) from Uint8Array 481.00 ns/op 240.00 ns/op 2.00
bytes32 Buffer.toString(hex) + 0x 413.00 ns/op 172.00 ns/op 2.40
Return object 10000 times 0.23940 ns/op 0.21490 ns/op 1.11
Throw Error 10000 times 3.4249 us/op 3.3482 us/op 1.02
toHex 95.881 ns/op 103.62 ns/op 0.93
Buffer.from 87.636 ns/op 89.105 ns/op 0.98
shared Buffer 58.961 ns/op 59.319 ns/op 0.99
fastMsgIdFn sha256 / 200 bytes 1.7730 us/op 1.4900 us/op 1.19
fastMsgIdFn h32 xxhash / 200 bytes 365.00 ns/op 152.00 ns/op 2.40
fastMsgIdFn h64 xxhash / 200 bytes 430.00 ns/op 201.00 ns/op 2.14
fastMsgIdFn sha256 / 1000 bytes 5.1240 us/op 4.7900 us/op 1.07
fastMsgIdFn h32 xxhash / 1000 bytes 469.00 ns/op 243.00 ns/op 1.93
fastMsgIdFn h64 xxhash / 1000 bytes 479.00 ns/op 255.00 ns/op 1.88
fastMsgIdFn sha256 / 10000 bytes 43.574 us/op 42.327 us/op 1.03
fastMsgIdFn h32 xxhash / 10000 bytes 1.5000 us/op 1.2990 us/op 1.15
fastMsgIdFn h64 xxhash / 10000 bytes 1.0520 us/op 850.00 ns/op 1.24
send data - 1000 256B messages 4.7166 ms/op 4.0820 ms/op 1.16
send data - 1000 512B messages 5.0860 ms/op 4.2060 ms/op 1.21
send data - 1000 1024B messages 4.7513 ms/op 4.5136 ms/op 1.05
send data - 1000 1200B messages 5.0678 ms/op 4.7220 ms/op 1.07
send data - 1000 2048B messages 4.8473 ms/op 5.0305 ms/op 0.96
send data - 1000 4096B messages 6.1225 ms/op 5.9688 ms/op 1.03
send data - 1000 16384B messages 46.237 ms/op 13.836 ms/op 3.34
send data - 1000 65536B messages 221.67 ms/op 239.18 ms/op 0.93
enrSubnets - fastDeserialize 64 bits 1.0550 us/op 748.00 ns/op 1.41
enrSubnets - ssz BitVector 64 bits 513.00 ns/op 270.00 ns/op 1.90
enrSubnets - fastDeserialize 4 bits 317.00 ns/op 100.00 ns/op 3.17
enrSubnets - ssz BitVector 4 bits 503.00 ns/op 264.00 ns/op 1.91
prioritizePeers score -10:0 att 32-0.1 sync 2-0 229.49 us/op 209.72 us/op 1.09
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 252.59 us/op 242.15 us/op 1.04
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 381.47 us/op 337.23 us/op 1.13
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 636.24 us/op 605.43 us/op 1.05
prioritizePeers score 0:0 att 64-1 sync 4-1 754.29 us/op 705.50 us/op 1.07
array of 16000 items push then shift 1.3933 us/op 1.3215 us/op 1.05
LinkedList of 16000 items push then shift 8.2320 ns/op 7.1840 ns/op 1.15
array of 16000 items push then pop 76.999 ns/op 71.996 ns/op 1.07
LinkedList of 16000 items push then pop 6.6450 ns/op 6.2030 ns/op 1.07
array of 24000 items push then shift 2.0155 us/op 1.9716 us/op 1.02
LinkedList of 24000 items push then shift 7.5330 ns/op 7.2600 ns/op 1.04
array of 24000 items push then pop 106.04 ns/op 98.798 ns/op 1.07
LinkedList of 24000 items push then pop 6.5930 ns/op 6.3030 ns/op 1.05
intersect bitArray bitLen 8 5.0990 ns/op 4.8720 ns/op 1.05
intersect array and set length 8 30.842 ns/op 30.366 ns/op 1.02
intersect bitArray bitLen 128 25.223 ns/op 25.034 ns/op 1.01
intersect array and set length 128 531.24 ns/op 516.79 ns/op 1.03
bitArray.getTrueBitIndexes() bitLen 128 1.3610 us/op 1.0420 us/op 1.31
bitArray.getTrueBitIndexes() bitLen 248 2.1920 us/op 1.8700 us/op 1.17
bitArray.getTrueBitIndexes() bitLen 512 4.3470 us/op 3.7900 us/op 1.15
Full columns - reconstruct all 6 blobs 144.27 us/op 166.79 us/op 0.86
Full columns - reconstruct half of the blobs out of 6 70.031 us/op 75.104 us/op 0.93
Full columns - reconstruct single blob out of 6 36.174 us/op 33.252 us/op 1.09
Half columns - reconstruct all 6 blobs 414.45 ms/op 403.13 ms/op 1.03
Half columns - reconstruct half of the blobs out of 6 207.14 ms/op 205.57 ms/op 1.01
Half columns - reconstruct single blob out of 6 76.134 ms/op 72.994 ms/op 1.04
Full columns - reconstruct all 10 blobs 218.52 us/op 256.37 us/op 0.85
Full columns - reconstruct half of the blobs out of 10 113.92 us/op 139.46 us/op 0.82
Full columns - reconstruct single blob out of 10 36.054 us/op 34.188 us/op 1.05
Half columns - reconstruct all 10 blobs 695.68 ms/op 644.53 ms/op 1.08
Half columns - reconstruct half of the blobs out of 10 356.58 ms/op 321.91 ms/op 1.11
Half columns - reconstruct single blob out of 10 76.388 ms/op 67.780 ms/op 1.13
Full columns - reconstruct all 20 blobs 1.9894 ms/op 1.0364 ms/op 1.92
Full columns - reconstruct half of the blobs out of 20 286.61 us/op 201.71 us/op 1.42
Full columns - reconstruct single blob out of 20 32.672 us/op 31.154 us/op 1.05
Half columns - reconstruct all 20 blobs 1.3990 s/op 1.3095 s/op 1.07
Half columns - reconstruct half of the blobs out of 20 699.59 ms/op 657.10 ms/op 1.06
Half columns - reconstruct single blob out of 20 75.081 ms/op 71.630 ms/op 1.05
Set add up to 64 items then delete first 2.1546 us/op 2.1927 us/op 0.98
OrderedSet add up to 64 items then delete first 3.4137 us/op 3.4686 us/op 0.98
Set add up to 64 items then delete last 2.2694 us/op 2.1945 us/op 1.03
OrderedSet add up to 64 items then delete last 4.4768 us/op 3.3398 us/op 1.34
Set add up to 64 items then delete middle 3.4672 us/op 2.1821 us/op 1.59
OrderedSet add up to 64 items then delete middle 7.9670 us/op 4.8863 us/op 1.63
Set add up to 128 items then delete first 5.0372 us/op 4.4261 us/op 1.14
OrderedSet add up to 128 items then delete first 7.7199 us/op 6.8144 us/op 1.13
Set add up to 128 items then delete last 5.3373 us/op 4.0533 us/op 1.32
OrderedSet add up to 128 items then delete last 8.4189 us/op 6.0594 us/op 1.39
Set add up to 128 items then delete middle 5.3764 us/op 4.0742 us/op 1.32
OrderedSet add up to 128 items then delete middle 14.872 us/op 12.123 us/op 1.23
Set add up to 256 items then delete first 10.680 us/op 8.0918 us/op 1.32
OrderedSet add up to 256 items then delete first 16.580 us/op 12.504 us/op 1.33
Set add up to 256 items then delete last 10.910 us/op 7.9010 us/op 1.38
OrderedSet add up to 256 items then delete last 17.786 us/op 11.947 us/op 1.49
Set add up to 256 items then delete middle 11.124 us/op 7.8269 us/op 1.42
OrderedSet add up to 256 items then delete middle 43.459 us/op 35.751 us/op 1.22
pass gossip attestations to forkchoice per slot 2.8544 ms/op 2.6328 ms/op 1.08
forkChoice updateHead vc 100000 bc 64 eq 0 437.15 us/op 417.57 us/op 1.05
forkChoice updateHead vc 600000 bc 64 eq 0 2.8048 ms/op 2.4894 ms/op 1.13
forkChoice updateHead vc 1000000 bc 64 eq 0 4.4441 ms/op 4.2059 ms/op 1.06
forkChoice updateHead vc 600000 bc 320 eq 0 2.7166 ms/op 2.5002 ms/op 1.09
forkChoice updateHead vc 600000 bc 1200 eq 0 2.7013 ms/op 2.5647 ms/op 1.05
forkChoice updateHead vc 600000 bc 7200 eq 0 3.9262 ms/op 2.8578 ms/op 1.37
forkChoice updateHead vc 600000 bc 64 eq 1000 3.0783 ms/op 3.0038 ms/op 1.02
forkChoice updateHead vc 600000 bc 64 eq 10000 3.1942 ms/op 3.1151 ms/op 1.03
forkChoice updateHead vc 600000 bc 64 eq 300000 8.1292 ms/op 7.7914 ms/op 1.04
computeDeltas 1400000 validators 0% inactive 13.079 ms/op 12.932 ms/op 1.01
computeDeltas 1400000 validators 10% inactive 12.247 ms/op 12.049 ms/op 1.02
computeDeltas 1400000 validators 20% inactive 11.283 ms/op 11.062 ms/op 1.02
computeDeltas 1400000 validators 50% inactive 8.7024 ms/op 8.5213 ms/op 1.02
computeDeltas 2100000 validators 0% inactive 19.681 ms/op 19.379 ms/op 1.02
computeDeltas 2100000 validators 10% inactive 18.858 ms/op 18.466 ms/op 1.02
computeDeltas 2100000 validators 20% inactive 16.647 ms/op 16.742 ms/op 0.99
computeDeltas 2100000 validators 50% inactive 13.034 ms/op 12.777 ms/op 1.02
altair processAttestation - 250000 vs - 7PWei normalcase 3.5078 ms/op 3.3473 ms/op 1.05
altair processAttestation - 250000 vs - 7PWei worstcase 4.8667 ms/op 2.8215 ms/op 1.72
altair processAttestation - setStatus - 1/6 committees join 122.09 us/op 104.79 us/op 1.17
altair processAttestation - setStatus - 1/3 committees join 219.13 us/op 207.38 us/op 1.06
altair processAttestation - setStatus - 1/2 committees join 306.55 us/op 292.23 us/op 1.05
altair processAttestation - setStatus - 2/3 committees join 404.61 us/op 379.88 us/op 1.07
altair processAttestation - setStatus - 4/5 committees join 532.42 us/op 525.67 us/op 1.01
altair processAttestation - setStatus - 100% committees join 637.48 us/op 618.56 us/op 1.03
altair processBlock - 250000 vs - 7PWei normalcase 4.6913 ms/op 3.6971 ms/op 1.27
altair processBlock - 250000 vs - 7PWei normalcase hashState 17.691 ms/op 16.606 ms/op 1.07
altair processBlock - 250000 vs - 7PWei worstcase 23.150 ms/op 22.196 ms/op 1.04
altair processBlock - 250000 vs - 7PWei worstcase hashState 49.815 ms/op 45.500 ms/op 1.09
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6361 ms/op 1.4276 ms/op 1.15
phase0 processBlock - 250000 vs - 7PWei worstcase 18.602 ms/op 17.896 ms/op 1.04
altair processEth1Data - 250000 vs - 7PWei normalcase 312.35 us/op 309.65 us/op 1.01
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 13.191 us/op 8.7550 us/op 1.51
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 23.923 us/op 23.184 us/op 1.03
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 6.1640 us/op 10.441 us/op 0.59
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 4.0660 us/op 6.8640 us/op 0.59
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 95.941 us/op 102.03 us/op 0.94
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.5845 ms/op 1.4913 ms/op 1.06
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.9789 ms/op 1.9423 ms/op 1.02
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.9603 ms/op 1.9532 ms/op 1.00
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.4752 ms/op 4.3045 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.2782 ms/op 2.1852 ms/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.4078 ms/op 4.6036 ms/op 0.96
Tree 40 250000 create 429.69 ms/op 359.15 ms/op 1.20
Tree 40 250000 get(125000) 91.974 ns/op 95.588 ns/op 0.96
Tree 40 250000 set(125000) 1.0002 us/op 1.0690 us/op 0.94
Tree 40 250000 toArray() 17.282 ms/op 15.105 ms/op 1.14
Tree 40 250000 iterate all - toArray() + loop 18.120 ms/op 13.101 ms/op 1.38
Tree 40 250000 iterate all - get(i) 40.150 ms/op 40.911 ms/op 0.98
Array 250000 create 2.3744 ms/op 2.3062 ms/op 1.03
Array 250000 clone - spread 718.08 us/op 711.68 us/op 1.01
Array 250000 get(125000) 0.50100 ns/op 0.30700 ns/op 1.63
Array 250000 set(125000) 0.51200 ns/op 0.31400 ns/op 1.63
Array 250000 iterate all - loop 58.417 us/op 59.588 us/op 0.98
phase0 afterProcessEpoch - 250000 vs - 7PWei 55.961 ms/op 53.375 ms/op 1.05
Array.fill - length 1000000 2.3423 ms/op 2.3322 ms/op 1.00
Array push - length 1000000 10.696 ms/op 9.1287 ms/op 1.17
Array.get 0.21476 ns/op 0.21534 ns/op 1.00
Uint8Array.get 0.25127 ns/op 0.25110 ns/op 1.00
phase0 beforeProcessEpoch - 250000 vs - 7PWei 28.059 ms/op 16.563 ms/op 1.69
altair processEpoch - mainnet_e81889 347.85 ms/op 278.38 ms/op 1.25
mainnet_e81889 - altair beforeProcessEpoch 36.847 ms/op 16.172 ms/op 2.28
mainnet_e81889 - altair processJustificationAndFinalization 7.1150 us/op 5.9590 us/op 1.19
mainnet_e81889 - altair processInactivityUpdates 4.1539 ms/op 4.5829 ms/op 0.91
mainnet_e81889 - altair processRewardsAndPenalties 19.589 ms/op 20.980 ms/op 0.93
mainnet_e81889 - altair processRegistryUpdates 780.00 ns/op 561.00 ns/op 1.39
mainnet_e81889 - altair processSlashings 355.00 ns/op 145.00 ns/op 2.45
mainnet_e81889 - altair processEth1DataReset 352.00 ns/op 135.00 ns/op 2.61
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.4554 ms/op 1.3573 ms/op 1.81
mainnet_e81889 - altair processSlashingsReset 934.00 ns/op 714.00 ns/op 1.31
mainnet_e81889 - altair processRandaoMixesReset 1.5700 us/op 1.2940 us/op 1.21
mainnet_e81889 - altair processHistoricalRootsUpdate 353.00 ns/op 136.00 ns/op 2.60
mainnet_e81889 - altair processParticipationFlagUpdates 658.00 ns/op 476.00 ns/op 1.38
mainnet_e81889 - altair processSyncCommitteeUpdates 323.00 ns/op 110.00 ns/op 2.94
mainnet_e81889 - altair afterProcessEpoch 40.508 ms/op 43.635 ms/op 0.93
capella processEpoch - mainnet_e217614 1.0632 s/op 901.92 ms/op 1.18
mainnet_e217614 - capella beforeProcessEpoch 67.100 ms/op 69.926 ms/op 0.96
mainnet_e217614 - capella processJustificationAndFinalization 9.2200 us/op 6.6530 us/op 1.39
mainnet_e217614 - capella processInactivityUpdates 18.704 ms/op 16.566 ms/op 1.13
mainnet_e217614 - capella processRewardsAndPenalties 108.69 ms/op 97.629 ms/op 1.11
mainnet_e217614 - capella processRegistryUpdates 4.7610 us/op 4.6500 us/op 1.02
mainnet_e217614 - capella processSlashings 364.00 ns/op 143.00 ns/op 2.55
mainnet_e217614 - capella processEth1DataReset 363.00 ns/op 137.00 ns/op 2.65
mainnet_e217614 - capella processEffectiveBalanceUpdates 6.1219 ms/op 7.5314 ms/op 0.81
mainnet_e217614 - capella processSlashingsReset 949.00 ns/op 704.00 ns/op 1.35
mainnet_e217614 - capella processRandaoMixesReset 1.6000 us/op 1.2520 us/op 1.28
mainnet_e217614 - capella processHistoricalRootsUpdate 357.00 ns/op 138.00 ns/op 2.59
mainnet_e217614 - capella processParticipationFlagUpdates 677.00 ns/op 461.00 ns/op 1.47
mainnet_e217614 - capella afterProcessEpoch 108.62 ms/op 116.51 ms/op 0.93
phase0 processEpoch - mainnet_e58758 338.13 ms/op 309.87 ms/op 1.09
mainnet_e58758 - phase0 beforeProcessEpoch 64.630 ms/op 62.093 ms/op 1.04
mainnet_e58758 - phase0 processJustificationAndFinalization 6.7160 us/op 6.3070 us/op 1.06
mainnet_e58758 - phase0 processRewardsAndPenalties 17.548 ms/op 17.746 ms/op 0.99
mainnet_e58758 - phase0 processRegistryUpdates 2.5450 us/op 2.3680 us/op 1.07
mainnet_e58758 - phase0 processSlashings 365.00 ns/op 314.00 ns/op 1.16
mainnet_e58758 - phase0 processEth1DataReset 359.00 ns/op 146.00 ns/op 2.46
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 896.57 us/op 854.03 us/op 1.05
mainnet_e58758 - phase0 processSlashingsReset 1.0810 us/op 971.00 ns/op 1.11
mainnet_e58758 - phase0 processRandaoMixesReset 2.3820 us/op 1.3200 us/op 1.80
mainnet_e58758 - phase0 processHistoricalRootsUpdate 358.00 ns/op 149.00 ns/op 2.40
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.4360 us/op 1.2340 us/op 1.16
mainnet_e58758 - phase0 afterProcessEpoch 33.342 ms/op 36.239 ms/op 0.92
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0965 ms/op 1.2963 ms/op 0.85
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.7863 ms/op 1.6135 ms/op 1.11
altair processInactivityUpdates - 250000 normalcase 11.457 ms/op 12.696 ms/op 0.90
altair processInactivityUpdates - 250000 worstcase 11.503 ms/op 12.857 ms/op 0.89
phase0 processRegistryUpdates - 250000 normalcase 2.6910 us/op 2.9880 us/op 0.90
phase0 processRegistryUpdates - 250000 badcase_full_deposits 162.26 us/op 152.40 us/op 1.06
phase0 processRegistryUpdates - 250000 worstcase 0.5 64.923 ms/op 60.868 ms/op 1.07
altair processRewardsAndPenalties - 250000 normalcase 17.318 ms/op 14.264 ms/op 1.21
altair processRewardsAndPenalties - 250000 worstcase 16.621 ms/op 13.896 ms/op 1.20
phase0 getAttestationDeltas - 250000 normalcase 5.4539 ms/op 5.4700 ms/op 1.00
phase0 getAttestationDeltas - 250000 worstcase 7.3059 ms/op 5.4804 ms/op 1.33
phase0 processSlashings - 250000 worstcase 60.615 us/op 61.976 us/op 0.98
altair processSyncCommitteeUpdates - 250000 12.329 ms/op 10.259 ms/op 1.20
BeaconState.hashTreeRoot - No change 431.00 ns/op 203.00 ns/op 2.12
BeaconState.hashTreeRoot - 1 full validator 100.44 us/op 65.360 us/op 1.54
BeaconState.hashTreeRoot - 32 full validator 762.25 us/op 720.97 us/op 1.06
BeaconState.hashTreeRoot - 512 full validator 9.6253 ms/op 6.6075 ms/op 1.46
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 111.05 us/op 76.656 us/op 1.45
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.6915 ms/op 1.1429 ms/op 1.48
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 22.668 ms/op 14.039 ms/op 1.61
BeaconState.hashTreeRoot - 1 balances 102.12 us/op 60.357 us/op 1.69
BeaconState.hashTreeRoot - 32 balances 1.1163 ms/op 622.04 us/op 1.79
BeaconState.hashTreeRoot - 512 balances 7.3589 ms/op 4.9122 ms/op 1.50
BeaconState.hashTreeRoot - 250000 balances 189.42 ms/op 161.70 ms/op 1.17
aggregationBits - 2048 els - zipIndexesInBitList 20.330 us/op 19.183 us/op 1.06
regular array get 100000 times 23.442 us/op 22.999 us/op 1.02
wrappedArray get 100000 times 23.448 us/op 23.095 us/op 1.02
arrayWithProxy get 100000 times 14.413 ms/op 10.171 ms/op 1.42
ssz.Root.equals 22.263 ns/op 21.821 ns/op 1.02
byteArrayEquals 22.045 ns/op 21.608 ns/op 1.02
Buffer.compare 9.4700 ns/op 9.0010 ns/op 1.05
processSlot - 1 slots 11.947 us/op 9.4920 us/op 1.26
processSlot - 32 slots 2.5055 ms/op 2.2934 ms/op 1.09
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 4.8694 ms/op 4.1513 ms/op 1.17
getCommitteeAssignments - req 1 vs - 250000 vc 1.6833 ms/op 1.7102 ms/op 0.98
getCommitteeAssignments - req 100 vs - 250000 vc 3.4373 ms/op 3.5058 ms/op 0.98
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7518 ms/op 3.7562 ms/op 1.00
findModifiedValidators - 10000 modified validators 918.41 ms/op 785.51 ms/op 1.17
findModifiedValidators - 1000 modified validators 503.21 ms/op 459.88 ms/op 1.09
findModifiedValidators - 100 modified validators 293.27 ms/op 307.10 ms/op 0.95
findModifiedValidators - 10 modified validators 159.89 ms/op 149.08 ms/op 1.07
findModifiedValidators - 1 modified validators 173.00 ms/op 183.37 ms/op 0.94
findModifiedValidators - no difference 146.18 ms/op 132.30 ms/op 1.10
migrate state 1500000 validators, 3400 modified, 2000 new 3.8394 s/op 2.9053 s/op 1.32
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.7400 ns/op 3.7700 ns/op 1.52
state getBlockRootAtSlot - 250000 vs - 7PWei 458.57 ns/op 385.70 ns/op 1.19
computeProposerIndex 100000 validators 1.3540 ms/op 1.3463 ms/op 1.01
getNextSyncCommitteeIndices 1000 validators 2.8862 ms/op 2.9240 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 25.943 ms/op 25.791 ms/op 1.01
getNextSyncCommitteeIndices 100000 validators 87.365 ms/op 88.820 ms/op 0.98
computeProposers - vc 250000 548.82 us/op 563.93 us/op 0.97
computeEpochShuffling - vc 250000 39.779 ms/op 39.484 ms/op 1.01
getNextSyncCommittee - vc 250000 9.4330 ms/op 9.6793 ms/op 0.97
nodejs block root to RootHex using toHex 91.542 ns/op 100.88 ns/op 0.91
nodejs block root to RootHex using toRootHex 55.662 ns/op 62.280 ns/op 0.89
nodejs fromHex(blob) 835.41 us/op 800.84 us/op 1.04
nodejs fromHexInto(blob) 673.10 us/op 647.21 us/op 1.04
nodejs block root to RootHex using the deprecated toHexString 527.99 ns/op 527.80 ns/op 1.00
nodejs byteArrayEquals 32 bytes (block root) 26.521 ns/op 26.438 ns/op 1.00
nodejs byteArrayEquals 48 bytes (pubkey) 38.453 ns/op 38.266 ns/op 1.00
nodejs byteArrayEquals 96 bytes (signature) 40.560 ns/op 36.892 ns/op 1.10
nodejs byteArrayEquals 1024 bytes 45.279 ns/op 46.392 ns/op 0.98
nodejs byteArrayEquals 131072 bytes (blob) 1.7958 us/op 1.7940 us/op 1.00
browser block root to RootHex using toHex 149.85 ns/op 147.56 ns/op 1.02
browser block root to RootHex using toRootHex 135.60 ns/op 133.21 ns/op 1.02
browser fromHex(blob) 1.6693 ms/op 1.6216 ms/op 1.03
browser fromHexInto(blob) 685.55 us/op 647.02 us/op 1.06
browser block root to RootHex using the deprecated toHexString 359.68 ns/op 359.16 ns/op 1.00
browser byteArrayEquals 32 bytes (block root) 28.584 ns/op 28.578 ns/op 1.00
browser byteArrayEquals 48 bytes (pubkey) 40.271 ns/op 40.397 ns/op 1.00
browser byteArrayEquals 96 bytes (signature) 75.283 ns/op 75.080 ns/op 1.00
browser byteArrayEquals 1024 bytes 773.99 ns/op 770.86 ns/op 1.00
browser byteArrayEquals 131072 bytes (blob) 97.288 us/op 98.001 us/op 0.99

by benchmarkbot/action

Comment thread packages/types/src/gloas/sszTypes.ts Outdated
Comment thread packages/beacon-node/src/chain/produceBlock/produceBlockBody.ts Outdated
ensi321 and others added 2 commits April 17, 2026 16:43
Co-authored-by: Nico Flaig <nflaig@protonmail.com>
@ensi321 ensi321 marked this pull request as ready for review April 17, 2026 23:54
@ensi321 ensi321 requested a review from a team as a code owner April 17, 2026 23:54
Comment thread packages/beacon-node/src/execution/engine/http.ts Outdated
Comment thread packages/beacon-node/src/execution/engine/http.ts Outdated
nflaig
nflaig previously approved these changes Apr 18, 2026
Copy link
Copy Markdown
Member

@nflaig nflaig left a comment

Choose a reason for hiding this comment

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

need alpha.5 spec changes to pass

@wemeetagain wemeetagain added the spec-gloas Issues targeting the Glamsterdam spec version label Apr 20, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 52.54%. Comparing base (abc719d) to head (1e5bb15).
⚠️ Report is 1 commits behind head on unstable.

Additional details and impacted files
@@            Coverage Diff            @@
##           unstable    #9226   +/-   ##
=========================================
  Coverage     52.53%   52.54%           
=========================================
  Files           848      848           
  Lines         61402    61388   -14     
  Branches       4525     4519    -6     
=========================================
- Hits          32256    32254    -2     
+ Misses        29081    29069   -12     
  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.

twoeths
twoeths previously approved these changes Apr 21, 2026
@nflaig nflaig dismissed stale reviews from twoeths and themself via f7d2bda April 21, 2026 21:30
nflaig
nflaig previously approved these changes Apr 21, 2026
@nflaig nflaig enabled auto-merge (squash) April 21, 2026 21:53
@nflaig nflaig merged commit 0bc48d3 into unstable Apr 21, 2026
18 of 19 checks passed
@nflaig nflaig deleted the nc/bal-merge-unstable branch April 21, 2026 22:06
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.

4 participants