Skip to content

feat: add heze fork definition and boilerplate#9505

Draft
ensi321 wants to merge 13 commits into
unstablefrom
nc/heze-boilerplate
Draft

feat: add heze fork definition and boilerplate#9505
ensi321 wants to merge 13 commits into
unstablefrom
nc/heze-boilerplate

Conversation

@ensi321

@ensi321 ensi321 commented Jun 11, 2026

Copy link
Copy Markdown
Member

No description provided.

ensi321 added 4 commits June 10, 2026 21:02
Scaffold the heze fork (post-gloas) as a gloas-copy plus the EIP-7805
inclusion-list data model: IL containers (InclusionList,
SignedInclusionList, committee/request), ExecutionPayloadBid extended
with inclusionListBits, and the modified BeaconState/Body/PayloadAttributes.

Wires fork registration (params, config, forkConfig, ssz/type maps),
upgradeStateToHeze, IBeaconStateViewHeze, and fork-specific bid signing
root/storage and genesis fork versions so the bid type round-trips
correctly. Enables heze spec tests (skipping the FOCIL fork-choice
scenarios shared with gloas pending #9233) and validates heze config
fields against the spec.

Excludes FOCIL feature logic (inclusion-list pools, validation, gossip,
reqresp, duties) which remains on the focil branch.
Move heze constants/presets after gloas to match fork sequence, validate
the heze fork version, inclusion-list config and committee-size values
against the remote spec (ensure-config-is-synced), and wire ethspecify
sources for the heze constant/preset/config references so they are no
longer skipped.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

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 introduces the initial types, configurations, and state transition logic for the upcoming 'Heze' hard fork (EIP-7805), which implements inclusion lists. It adds Heze-specific parameters to the mainnet and minimal configurations, defines SSZ types (such as InclusionList and modified BeaconState), implements the state upgrade logic (upgradeStateToHeze), and updates spec references. However, two issues were identified: first, removing unimplemented Heze fields (VIEW_FREEZE_CUTOFF_BPS, INCLUSION_LIST_SUBMISSION_DUE_BPS, and PROPOSER_INCLUSION_LIST_CUTOFF_BPS) from the ignored remote config list in ensure-config-is-synced.test.ts will cause configuration sync tests to fail; second, a biome ignore comment is required directly preceding case ForkName.heze: in utils.ts to prevent lint/build failures from the switch-case fallthrough.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread packages/config/test/e2e/ensure-config-is-synced.test.ts
Comment thread packages/state-transition/src/lightClient/spec/utils.ts
@github-actions

github-actions Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 292d415 Previous: e6d38ec Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 1.3484 ms/op 992.96 us/op 1.36
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 41.148 us/op 38.473 us/op 1.07
BLS verify - blst 664.80 us/op 760.13 us/op 0.87
BLS verifyMultipleSignatures 3 - blst 1.3791 ms/op 1.3661 ms/op 1.01
BLS verifyMultipleSignatures 8 - blst 2.1847 ms/op 2.1637 ms/op 1.01
BLS verifyMultipleSignatures 32 - blst 6.9600 ms/op 6.8510 ms/op 1.02
BLS verifyMultipleSignatures 64 - blst 13.327 ms/op 13.549 ms/op 0.98
BLS verifyMultipleSignatures 128 - blst 26.280 ms/op 25.576 ms/op 1.03
BLS deserializing 10000 signatures 644.50 ms/op 620.77 ms/op 1.04
BLS deserializing 100000 signatures 6.5751 s/op 6.2642 s/op 1.05
BLS verifyMultipleSignatures - same message - 3 - blst 822.91 us/op 788.61 us/op 1.04
BLS verifyMultipleSignatures - same message - 8 - blst 896.47 us/op 920.89 us/op 0.97
BLS verifyMultipleSignatures - same message - 32 - blst 1.5134 ms/op 1.5260 ms/op 0.99
BLS verifyMultipleSignatures - same message - 64 - blst 2.3871 ms/op 2.4112 ms/op 0.99
BLS verifyMultipleSignatures - same message - 128 - blst 4.1697 ms/op 3.9584 ms/op 1.05
BLS aggregatePubkeys 32 - blst 18.188 us/op 16.949 us/op 1.07
BLS aggregatePubkeys 128 - blst 64.660 us/op 60.916 us/op 1.06
getSlashingsAndExits - default max 57.521 us/op 47.327 us/op 1.22
getSlashingsAndExits - 2k 434.22 us/op 373.68 us/op 1.16
proposeBlockBody type=full, size=empty 908.16 us/op 723.96 us/op 1.25
isKnown best case - 1 super set check 168.00 ns/op 171.00 ns/op 0.98
isKnown normal case - 2 super set checks 168.00 ns/op 168.00 ns/op 1.00
isKnown worse case - 16 super set checks 182.00 ns/op 175.00 ns/op 1.04
validate api signedAggregateAndProof - struct 1.5568 ms/op 1.5372 ms/op 1.01
validate gossip signedAggregateAndProof - struct 1.5530 ms/op 1.5340 ms/op 1.01
batch validate gossip attestation - vc 640000 - chunk 32 110.43 us/op 107.61 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 64 99.249 us/op 96.002 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 128 92.402 us/op 89.778 us/op 1.03
batch validate gossip attestation - vc 640000 - chunk 256 90.373 us/op 85.956 us/op 1.05
bytes32 toHexString 281.00 ns/op 283.00 ns/op 0.99
bytes32 Buffer.toString(hex) 174.00 ns/op 167.00 ns/op 1.04
bytes32 Buffer.toString(hex) from Uint8Array 246.00 ns/op 234.00 ns/op 1.05
bytes32 Buffer.toString(hex) + 0x 173.00 ns/op 163.00 ns/op 1.06
Return object 10000 times 0.21570 ns/op 0.20750 ns/op 1.04
Throw Error 10000 times 3.4464 us/op 3.2995 us/op 1.04
toHex 109.81 ns/op 91.891 ns/op 1.20
Buffer.from 85.611 ns/op 83.350 ns/op 1.03
shared Buffer 59.107 ns/op 61.354 ns/op 0.96
fastMsgIdFn sha256 / 200 bytes 1.4990 us/op 1.4890 us/op 1.01
fastMsgIdFn h32 xxhash / 200 bytes 156.00 ns/op 156.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 200 bytes 207.00 ns/op 288.00 ns/op 0.72
fastMsgIdFn sha256 / 1000 bytes 4.7860 us/op 4.7860 us/op 1.00
fastMsgIdFn h32 xxhash / 1000 bytes 244.00 ns/op 245.00 ns/op 1.00
fastMsgIdFn h64 xxhash / 1000 bytes 253.00 ns/op 268.00 ns/op 0.94
fastMsgIdFn sha256 / 10000 bytes 42.167 us/op 42.161 us/op 1.00
fastMsgIdFn h32 xxhash / 10000 bytes 1.2600 us/op 1.2730 us/op 0.99
fastMsgIdFn h64 xxhash / 10000 bytes 806.00 ns/op 828.00 ns/op 0.97
send data - 1000 256B messages 4.4854 ms/op 4.2922 ms/op 1.05
send data - 1000 512B messages 5.8796 ms/op 5.4586 ms/op 1.08
send data - 1000 1024B messages 5.8099 ms/op 6.2239 ms/op 0.93
send data - 1000 1200B messages 6.8031 ms/op 7.1634 ms/op 0.95
send data - 1000 2048B messages 11.573 ms/op 8.3411 ms/op 1.39
send data - 1000 4096B messages 61.263 ms/op 82.094 ms/op 0.75
send data - 1000 16384B messages 387.54 ms/op 378.85 ms/op 1.02
send data - 1000 65536B messages 1.9146 s/op 1.8013 s/op 1.06
enrSubnets - fastDeserialize 64 bits 799.00 ns/op 735.00 ns/op 1.09
enrSubnets - ssz BitVector 64 bits 276.00 ns/op 264.00 ns/op 1.05
enrSubnets - fastDeserialize 4 bits 103.00 ns/op 104.00 ns/op 0.99
enrSubnets - ssz BitVector 4 bits 277.00 ns/op 264.00 ns/op 1.05
prioritizePeers score -10:0 att 32-0.1 sync 2-0 220.01 us/op 202.47 us/op 1.09
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 249.43 us/op 235.74 us/op 1.06
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 370.60 us/op 343.83 us/op 1.08
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 650.27 us/op 612.17 us/op 1.06
prioritizePeers score 0:0 att 64-1 sync 4-1 756.14 us/op 709.35 us/op 1.07
array of 16000 items push then shift 1.3279 us/op 1.3071 us/op 1.02
LinkedList of 16000 items push then shift 8.0820 ns/op 7.4190 ns/op 1.09
array of 16000 items push then pop 76.345 ns/op 77.700 ns/op 0.98
LinkedList of 16000 items push then pop 6.3820 ns/op 6.0630 ns/op 1.05
array of 24000 items push then shift 1.9737 us/op 1.9390 us/op 1.02
LinkedList of 24000 items push then shift 7.9390 ns/op 6.8830 ns/op 1.15
array of 24000 items push then pop 106.29 ns/op 110.71 ns/op 0.96
LinkedList of 24000 items push then pop 6.4160 ns/op 6.1120 ns/op 1.05
intersect bitArray bitLen 8 4.8380 ns/op 4.8140 ns/op 1.00
intersect array and set length 8 30.214 ns/op 29.738 ns/op 1.02
intersect bitArray bitLen 128 24.305 ns/op 24.333 ns/op 1.00
intersect array and set length 128 507.23 ns/op 500.44 ns/op 1.01
bitArray.getTrueBitIndexes() bitLen 128 1.0870 us/op 1.1110 us/op 0.98
bitArray.getTrueBitIndexes() bitLen 248 1.8570 us/op 1.7720 us/op 1.05
bitArray.getTrueBitIndexes() bitLen 512 3.7400 us/op 3.5330 us/op 1.06
Full columns - reconstruct all 6 blobs 114.49 us/op 111.83 us/op 1.02
Full columns - reconstruct half of the blobs out of 6 74.139 us/op 78.893 us/op 0.94
Full columns - reconstruct single blob out of 6 32.448 us/op 32.105 us/op 1.01
Half columns - reconstruct all 6 blobs 404.82 ms/op 393.57 ms/op 1.03
Half columns - reconstruct half of the blobs out of 6 202.98 ms/op 198.14 ms/op 1.02
Half columns - reconstruct single blob out of 6 72.816 ms/op 70.889 ms/op 1.03
Set add up to 64 items then delete first 1.6778 us/op 1.6901 us/op 0.99
OrderedSet add up to 64 items then delete first 2.5969 us/op 2.5365 us/op 1.02
Set add up to 64 items then delete last 1.9283 us/op 1.9052 us/op 1.01
OrderedSet add up to 64 items then delete last 2.8601 us/op 2.8081 us/op 1.02
Set add up to 64 items then delete middle 1.9139 us/op 1.9004 us/op 1.01
OrderedSet add up to 64 items then delete middle 4.3644 us/op 4.3042 us/op 1.01
Set add up to 128 items then delete first 3.8540 us/op 3.7745 us/op 1.02
OrderedSet add up to 128 items then delete first 6.2950 us/op 5.7733 us/op 1.09
Set add up to 128 items then delete last 3.7416 us/op 3.6385 us/op 1.03
OrderedSet add up to 128 items then delete last 5.5184 us/op 5.5453 us/op 1.00
Set add up to 128 items then delete middle 3.7321 us/op 3.6599 us/op 1.02
OrderedSet add up to 128 items then delete middle 11.590 us/op 11.297 us/op 1.03
Set add up to 256 items then delete first 7.5994 us/op 7.6016 us/op 1.00
OrderedSet add up to 256 items then delete first 12.812 us/op 11.894 us/op 1.08
Set add up to 256 items then delete last 7.3937 us/op 7.2133 us/op 1.02
OrderedSet add up to 256 items then delete last 12.307 us/op 11.163 us/op 1.10
Set add up to 256 items then delete middle 7.5347 us/op 7.1726 us/op 1.05
OrderedSet add up to 256 items then delete middle 35.823 us/op 34.953 us/op 1.02
runFastConfirmationRules vc:100000 bc:96 eq:0 4.8742 ms/op 4.6735 ms/op 1.04
runFastConfirmationRules vc:600000 bc:96 eq:0 37.576 ms/op 34.549 ms/op 1.09
runFastConfirmationRules vc:1000000 bc:96 eq:0 62.712 ms/op 57.661 ms/op 1.09
runFastConfirmationRules vc:600000 bc:320 eq:0 37.423 ms/op 34.637 ms/op 1.08
runFastConfirmationRules vc:100000 bc:96 eq:1000 1.3215 s/op 1.1078 s/op 1.19
pass gossip attestations to forkchoice per slot 2.7667 ms/op 2.6126 ms/op 1.06
forkChoice updateHead vc 100000 bc 64 eq 0 472.55 us/op 431.39 us/op 1.10
forkChoice updateHead vc 600000 bc 64 eq 0 2.7284 ms/op 2.5800 ms/op 1.06
forkChoice updateHead vc 1000000 bc 64 eq 0 4.7100 ms/op 4.2493 ms/op 1.11
forkChoice updateHead vc 600000 bc 320 eq 0 2.8402 ms/op 2.5367 ms/op 1.12
forkChoice updateHead vc 600000 bc 1200 eq 0 2.8740 ms/op 2.6214 ms/op 1.10
forkChoice updateHead vc 600000 bc 7200 eq 0 3.1212 ms/op 2.6885 ms/op 1.16
forkChoice updateHead vc 600000 bc 64 eq 1000 2.8370 ms/op 2.3374 ms/op 1.21
forkChoice updateHead vc 600000 bc 64 eq 10000 2.9708 ms/op 2.3932 ms/op 1.24
forkChoice updateHead vc 600000 bc 64 eq 300000 6.7113 ms/op 6.1748 ms/op 1.09
computeDeltas 1400000 validators 0% inactive 13.595 ms/op 11.564 ms/op 1.18
computeDeltas 1400000 validators 10% inactive 12.396 ms/op 10.935 ms/op 1.13
computeDeltas 1400000 validators 20% inactive 11.907 ms/op 10.315 ms/op 1.15
computeDeltas 1400000 validators 50% inactive 9.7076 ms/op 8.4872 ms/op 1.14
computeDeltas 2100000 validators 0% inactive 19.863 ms/op 17.342 ms/op 1.15
computeDeltas 2100000 validators 10% inactive 18.786 ms/op 16.454 ms/op 1.14
computeDeltas 2100000 validators 20% inactive 17.520 ms/op 15.507 ms/op 1.13
computeDeltas 2100000 validators 50% inactive 14.387 ms/op 10.198 ms/op 1.41
altair processAttestation - 250000 vs - 7PWei normalcase 2.5618 ms/op 1.8252 ms/op 1.40
altair processAttestation - 250000 vs - 7PWei worstcase 2.8520 ms/op 2.6036 ms/op 1.10
altair processAttestation - setStatus - 1/6 committees join 102.63 us/op 101.10 us/op 1.02
altair processAttestation - setStatus - 1/3 committees join 199.79 us/op 208.33 us/op 0.96
altair processAttestation - setStatus - 1/2 committees join 286.66 us/op 285.45 us/op 1.00
altair processAttestation - setStatus - 2/3 committees join 380.35 us/op 370.90 us/op 1.03
altair processAttestation - setStatus - 4/5 committees join 562.14 us/op 514.92 us/op 1.09
altair processAttestation - setStatus - 100% committees join 685.51 us/op 616.70 us/op 1.11
altair processBlock - 250000 vs - 7PWei normalcase 5.4193 ms/op 3.6318 ms/op 1.49
altair processBlock - 250000 vs - 7PWei normalcase hashState 17.008 ms/op 13.322 ms/op 1.28
altair processBlock - 250000 vs - 7PWei worstcase 21.523 ms/op 20.336 ms/op 1.06
altair processBlock - 250000 vs - 7PWei worstcase hashState 48.318 ms/op 42.159 ms/op 1.15
phase0 processBlock - 250000 vs - 7PWei normalcase 1.6320 ms/op 1.4412 ms/op 1.13
phase0 processBlock - 250000 vs - 7PWei worstcase 20.286 ms/op 18.187 ms/op 1.12
altair processEth1Data - 250000 vs - 7PWei normalcase 298.20 us/op 296.00 us/op 1.01
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:16 3.7760 us/op 3.1880 us/op 1.18
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:220 22.670 us/op 19.792 us/op 1.15
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:43 5.5700 us/op 5.7750 us/op 0.96
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:19 3.4590 us/op 3.7920 us/op 0.91
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1021 93.942 us/op 91.315 us/op 1.03
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11778 1.4188 ms/op 1.4263 ms/op 0.99
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 1.9124 ms/op 1.7637 ms/op 1.08
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 1.8799 ms/op 1.7885 ms/op 1.05
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 4.9085 ms/op 3.5086 ms/op 1.40
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 2.3620 ms/op 2.0338 ms/op 1.16
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 5.5817 ms/op 3.8291 ms/op 1.46
Tree 40 250000 create 371.38 ms/op 349.93 ms/op 1.06
Tree 40 250000 get(125000) 95.115 ns/op 96.613 ns/op 0.98
Tree 40 250000 set(125000) 1.0526 us/op 1.0515 us/op 1.00
Tree 40 250000 toArray() 12.133 ms/op 10.079 ms/op 1.20
Tree 40 250000 iterate all - toArray() + loop 10.659 ms/op 10.509 ms/op 1.01
Tree 40 250000 iterate all - get(i) 41.059 ms/op 40.642 ms/op 1.01
Array 250000 create 2.3334 ms/op 2.5093 ms/op 0.93
Array 250000 clone - spread 709.23 us/op 774.99 us/op 0.92
Array 250000 get(125000) 0.30100 ns/op 0.30300 ns/op 0.99
Array 250000 set(125000) 0.30100 ns/op 0.30300 ns/op 0.99
Array 250000 iterate all - loop 58.354 us/op 58.183 us/op 1.00
phase0 afterProcessEpoch - 250000 vs - 7PWei 55.383 ms/op 54.991 ms/op 1.01
Array.fill - length 1000000 2.2805 ms/op 2.3982 ms/op 0.95
Array push - length 1000000 9.5820 ms/op 9.9991 ms/op 0.96
Array.get 0.20728 ns/op 0.22442 ns/op 0.92
Uint8Array.get 0.24090 ns/op 0.23028 ns/op 1.05
phase0 beforeProcessEpoch - 250000 vs - 7PWei 18.314 ms/op 14.324 ms/op 1.28
altair processEpoch - mainnet_e81889 396.68 ms/op 333.95 ms/op 1.19
mainnet_e81889 - altair beforeProcessEpoch 39.805 ms/op 19.748 ms/op 2.02
mainnet_e81889 - altair processJustificationAndFinalization 8.5320 us/op 8.2010 us/op 1.04
mainnet_e81889 - altair processInactivityUpdates 3.5119 ms/op 5.2105 ms/op 0.67
mainnet_e81889 - altair processRewardsAndPenalties 19.857 ms/op 20.327 ms/op 0.98
mainnet_e81889 - altair processRegistryUpdates 550.00 ns/op 528.00 ns/op 1.04
mainnet_e81889 - altair processSlashings 135.00 ns/op 139.00 ns/op 0.97
mainnet_e81889 - altair processEth1DataReset 132.00 ns/op 132.00 ns/op 1.00
mainnet_e81889 - altair processEffectiveBalanceUpdates 1.6837 ms/op 1.4857 ms/op 1.13
mainnet_e81889 - altair processSlashingsReset 709.00 ns/op 691.00 ns/op 1.03
mainnet_e81889 - altair processRandaoMixesReset 1.5630 us/op 1.3000 us/op 1.20
mainnet_e81889 - altair processHistoricalRootsUpdate 134.00 ns/op 132.00 ns/op 1.02
mainnet_e81889 - altair processParticipationFlagUpdates 469.00 ns/op 428.00 ns/op 1.10
mainnet_e81889 - altair processSyncCommitteeUpdates 111.00 ns/op 109.00 ns/op 1.02
mainnet_e81889 - altair afterProcessEpoch 41.886 ms/op 42.713 ms/op 0.98
capella processEpoch - mainnet_e217614 1.0695 s/op 994.19 ms/op 1.08
mainnet_e217614 - capella beforeProcessEpoch 64.609 ms/op 61.093 ms/op 1.06
mainnet_e217614 - capella processJustificationAndFinalization 9.2560 us/op 6.8880 us/op 1.34
mainnet_e217614 - capella processInactivityUpdates 17.228 ms/op 16.451 ms/op 1.05
mainnet_e217614 - capella processRewardsAndPenalties 101.13 ms/op 94.492 ms/op 1.07
mainnet_e217614 - capella processRegistryUpdates 4.5120 us/op 4.3840 us/op 1.03
mainnet_e217614 - capella processSlashings 135.00 ns/op 134.00 ns/op 1.01
mainnet_e217614 - capella processEth1DataReset 133.00 ns/op 132.00 ns/op 1.01
mainnet_e217614 - capella processEffectiveBalanceUpdates 6.1468 ms/op 12.991 ms/op 0.47
mainnet_e217614 - capella processSlashingsReset 683.00 ns/op 687.00 ns/op 0.99
mainnet_e217614 - capella processRandaoMixesReset 1.4130 us/op 1.2500 us/op 1.13
mainnet_e217614 - capella processHistoricalRootsUpdate 131.00 ns/op 136.00 ns/op 0.96
mainnet_e217614 - capella processParticipationFlagUpdates 434.00 ns/op 437.00 ns/op 0.99
mainnet_e217614 - capella afterProcessEpoch 111.66 ms/op 107.75 ms/op 1.04
phase0 processEpoch - mainnet_e58758 376.08 ms/op 370.39 ms/op 1.02
mainnet_e58758 - phase0 beforeProcessEpoch 87.988 ms/op 77.050 ms/op 1.14
mainnet_e58758 - phase0 processJustificationAndFinalization 8.2430 us/op 7.0770 us/op 1.16
mainnet_e58758 - phase0 processRewardsAndPenalties 17.104 ms/op 16.856 ms/op 1.01
mainnet_e58758 - phase0 processRegistryUpdates 2.2780 us/op 2.2450 us/op 1.01
mainnet_e58758 - phase0 processSlashings 133.00 ns/op 133.00 ns/op 1.00
mainnet_e58758 - phase0 processEth1DataReset 133.00 ns/op 133.00 ns/op 1.00
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 5.2737 ms/op 804.26 us/op 6.56
mainnet_e58758 - phase0 processSlashingsReset 990.00 ns/op 923.00 ns/op 1.07
mainnet_e58758 - phase0 processRandaoMixesReset 1.5530 us/op 1.4400 us/op 1.08
mainnet_e58758 - phase0 processHistoricalRootsUpdate 135.00 ns/op 203.00 ns/op 0.67
mainnet_e58758 - phase0 processParticipationRecordUpdates 1.3990 us/op 1.2130 us/op 1.15
mainnet_e58758 - phase0 afterProcessEpoch 34.240 ms/op 34.480 ms/op 0.99
phase0 processEffectiveBalanceUpdates - 250000 normalcase 1.0037 ms/op 1.0299 ms/op 0.97
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 1.6555 ms/op 2.7453 ms/op 0.60
altair processInactivityUpdates - 250000 normalcase 10.589 ms/op 13.425 ms/op 0.79
altair processInactivityUpdates - 250000 worstcase 10.882 ms/op 13.111 ms/op 0.83
phase0 processRegistryUpdates - 250000 normalcase 2.2770 us/op 2.4740 us/op 0.92
phase0 processRegistryUpdates - 250000 badcase_full_deposits 144.21 us/op 150.83 us/op 0.96
phase0 processRegistryUpdates - 250000 worstcase 0.5 68.007 ms/op 79.490 ms/op 0.86
altair processRewardsAndPenalties - 250000 normalcase 14.716 ms/op 17.782 ms/op 0.83
altair processRewardsAndPenalties - 250000 worstcase 14.478 ms/op 17.144 ms/op 0.84
phase0 getAttestationDeltas - 250000 normalcase 5.4371 ms/op 5.6729 ms/op 0.96
phase0 getAttestationDeltas - 250000 worstcase 5.5590 ms/op 5.8107 ms/op 0.96
phase0 processSlashings - 250000 worstcase 63.945 us/op 64.290 us/op 0.99
altair processSyncCommitteeUpdates - 250000 10.230 ms/op 12.822 ms/op 0.80
BeaconState.hashTreeRoot - No change 169.00 ns/op 169.00 ns/op 1.00
BeaconState.hashTreeRoot - 1 full validator 77.043 us/op 174.54 us/op 0.44
BeaconState.hashTreeRoot - 32 full validator 1.0240 ms/op 1.0658 ms/op 0.96
BeaconState.hashTreeRoot - 512 full validator 7.8316 ms/op 15.217 ms/op 0.51
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 94.369 us/op 131.36 us/op 0.72
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.6054 ms/op 2.8505 ms/op 0.56
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 14.956 ms/op 36.687 ms/op 0.41
BeaconState.hashTreeRoot - 1 balances 80.119 us/op 98.003 us/op 0.82
BeaconState.hashTreeRoot - 32 balances 924.46 us/op 951.06 us/op 0.97
BeaconState.hashTreeRoot - 512 balances 5.2353 ms/op 12.853 ms/op 0.41
BeaconState.hashTreeRoot - 250000 balances 205.95 ms/op 210.72 ms/op 0.98
aggregationBits - 2048 els - zipIndexesInBitList 20.542 us/op 20.501 us/op 1.00
regular array get 100000 times 23.326 us/op 23.051 us/op 1.01
wrappedArray get 100000 times 23.254 us/op 23.077 us/op 1.01
arrayWithProxy get 100000 times 10.357 ms/op 10.470 ms/op 0.99
ssz.Root.equals 21.659 ns/op 21.566 ns/op 1.00
byteArrayEquals 21.539 ns/op 21.326 ns/op 1.01
Buffer.compare 8.9400 ns/op 8.7390 ns/op 1.02
processSlot - 1 slots 11.083 us/op 10.780 us/op 1.03
processSlot - 32 slots 2.3761 ms/op 2.5834 ms/op 0.92
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 5.0952 ms/op 4.7067 ms/op 1.08
getCommitteeAssignments - req 1 vs - 250000 vc 1.6753 ms/op 1.6804 ms/op 1.00
getCommitteeAssignments - req 100 vs - 250000 vc 3.4770 ms/op 3.4822 ms/op 1.00
getCommitteeAssignments - req 1000 vs - 250000 vc 3.7478 ms/op 3.7332 ms/op 1.00
findModifiedValidators - 10000 modified validators 743.90 ms/op 749.36 ms/op 0.99
findModifiedValidators - 1000 modified validators 449.97 ms/op 577.53 ms/op 0.78
findModifiedValidators - 100 modified validators 292.91 ms/op 306.13 ms/op 0.96
findModifiedValidators - 10 modified validators 227.18 ms/op 192.51 ms/op 1.18
findModifiedValidators - 1 modified validators 173.30 ms/op 216.90 ms/op 0.80
findModifiedValidators - no difference 217.31 ms/op 220.77 ms/op 0.98
migrate state 1500000 validators, 3400 modified, 2000 new 4.2868 s/op 4.2283 s/op 1.01
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 3.7600 ns/op 3.7500 ns/op 1.00
state getBlockRootAtSlot - 250000 vs - 7PWei 516.87 ns/op 477.90 ns/op 1.08
computeProposerIndex 100000 validators 1.3678 ms/op 1.3831 ms/op 0.99
getNextSyncCommitteeIndices 1000 validators 2.9162 ms/op 2.9398 ms/op 0.99
getNextSyncCommitteeIndices 10000 validators 26.315 ms/op 26.062 ms/op 1.01
getNextSyncCommitteeIndices 100000 validators 94.466 ms/op 90.835 ms/op 1.04
computeProposers - vc 250000 560.06 us/op 578.42 us/op 0.97
computeEpochShuffling - vc 250000 40.146 ms/op 39.959 ms/op 1.00
getNextSyncCommittee - vc 250000 11.032 ms/op 10.109 ms/op 1.09
nodejs block root to RootHex using toHex 96.447 ns/op 99.544 ns/op 0.97
nodejs block root to RootHex using toRootHex 63.270 ns/op 63.295 ns/op 1.00
nodejs fromHex(blob) 998.12 us/op 838.73 us/op 1.19
nodejs fromHexInto(blob) 645.54 us/op 637.41 us/op 1.01
nodejs block root to RootHex using the deprecated toHexString 522.53 ns/op 489.43 ns/op 1.07
nodejs byteArrayEquals 32 bytes (block root) 26.467 ns/op 26.159 ns/op 1.01
nodejs byteArrayEquals 48 bytes (pubkey) 38.562 ns/op 37.776 ns/op 1.02
nodejs byteArrayEquals 96 bytes (signature) 35.570 ns/op 37.830 ns/op 0.94
nodejs byteArrayEquals 1024 bytes 43.655 ns/op 44.126 ns/op 0.99
nodejs byteArrayEquals 131072 bytes (blob) 1.7951 us/op 1.7818 us/op 1.01
browser block root to RootHex using toHex 147.18 ns/op 145.97 ns/op 1.01
browser block root to RootHex using toRootHex 132.54 ns/op 130.95 ns/op 1.01
browser fromHex(blob) 1.8232 ms/op 1.6415 ms/op 1.11
browser fromHexInto(blob) 644.72 us/op 651.10 us/op 0.99
browser block root to RootHex using the deprecated toHexString 355.45 ns/op 345.99 ns/op 1.03
browser byteArrayEquals 32 bytes (block root) 28.445 ns/op 27.990 ns/op 1.02
browser byteArrayEquals 48 bytes (pubkey) 40.407 ns/op 39.439 ns/op 1.02
browser byteArrayEquals 96 bytes (signature) 76.098 ns/op 74.243 ns/op 1.02
browser byteArrayEquals 1024 bytes 770.81 ns/op 755.70 ns/op 1.02
browser byteArrayEquals 131072 bytes (blob) 97.317 us/op 95.037 us/op 1.02

by benchmarkbot/action

ensi321 added 2 commits June 10, 2026 23:25
…snapshot

Add DOMAIN_INCLUSION_LIST_COMMITTEE to the config API specConstants so the
e2e config test (which scans heze spec docs) sees it exposed, and refresh
the forkName snapshot to include heze (shared by the browser test via the
test/browser -> ./unit symlink).
@ensi321 ensi321 marked this pull request as ready for review June 15, 2026 22:47
@ensi321 ensi321 requested a review from a team as a code owner June 15, 2026 22:47

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9f70a38ca9

ℹ️ About Codex in GitHub

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

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

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

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

Comment thread packages/types/src/heze/sszTypes.ts
Comment thread packages/types/src/heze/sszTypes.ts
@nflaig

nflaig commented Jun 22, 2026

Copy link
Copy Markdown
Member

@ensi321 can you address bot comments please

ensi321 and others added 2 commits June 22, 2026 15:02
- getGossipSSZType: dispatch SignedExecutionPayloadBid via sszTypesFor(fork)
  so heze bids include inclusionListBits instead of being decoded as gloas
  and rejected as invalid serialized bytes.
- preparePayloadAttributes: set inclusionListTransactions to an empty list
  post-heze so the heze SSEPayloadAttributes container can be serialized.
  Aggregation pool wiring lands with the focil feature (TODO HEZE).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Resolve conflicts:
- params/index.ts: keep both DOMAIN_BUILDER_DEPOSIT (gloas, 0x0E) and
  DOMAIN_INCLUSION_LIST_COMMITTEE (heze); fix heze domain 14 -> 16 (0x10) to
  match spec (both had collided on 14). Keep both request-type + committee-size
  consts.
- api config constants.ts: export both gloas builder-deposit consts and heze
  DOMAIN_INCLUSION_LIST_COMMITTEE.
- processExecutionPayloadBid.ts: merge imports; drop unused ForkPostGloas and
  BeaconBlock.
@nflaig

nflaig commented Jul 8, 2026

Copy link
Copy Markdown
Member

seems like spec tests are failing

nflaig and others added 2 commits July 8, 2026 15:26
Match spec-tests v1.7.0-alpha.11, where the IL bitlist was removed from
the bid (consensus-specs #5371). It is re-added post-alpha.11 (#5410);
that change will land on the alpha.12 branch instead.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

@nflaig nflaig left a comment

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.

we might wanna wait until alpha.12 since inclusion_list_bits will be there again

Comment thread packages/config/src/chainConfig/configs/mainnet.ts Outdated
Comment thread packages/config/src/chainConfig/configs/minimal.ts Outdated
Comment thread packages/config/src/chainConfig/types.ts Outdated
Comment thread packages/state-transition/src/block/processExecutionPayloadBid.ts
Comment thread packages/state-transition/src/signatureSets/executionPayloadBid.ts Outdated
Comment thread packages/types/src/heze/sszTypes.ts Outdated

export const ExecutionPayloadBid = new ContainerType(
{
...gloasSsz.ExecutionPayloadBid.fields,

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.

let's wait for alpha.12 so the inclusion_list_bits field is back

Comment thread packages/types/src/heze/sszTypes.ts Outdated
ensi321 and others added 2 commits July 8, 2026 21:37
This reverts commit bdafb91.

inclusion_list_bits is re-added to the bid post-alpha.11 (consensus-specs
#5410), so removing it was a regression against the latest spec. Add the
Bitvector[INCLUSION_LIST_COMMITTEE_SIZE] field back and wait for the
alpha.12 spec-tests, where the field is present again.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Drop spurious `(EIP-7805)` from HEZE config comments to match the
  style of other forks
- Remove heze redefinitions of ExecutionPayload, ExecutionPayloadHeader
  and the blinded block types: heze does not modify them per the
  alpha.12 spec, so inherit them from gloas/deneb/electra via the fork
  type registry (mirrors gloas, which defines none of these)
- Type getExecutionPayloadBidSigningRoot's bid param with the top-level
  ExecutionPayloadBid instead of a gloas|heze union
- Drop the `as unknown` double cast in processExecutionPayloadBid by
  widening through CachedBeaconStateAllForks

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ensi321 ensi321 marked this pull request as draft July 9, 2026 05:08
@ensi321

ensi321 commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

wait for #9606 to be merged.

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.

4 participants