Commit Graph

7474 Commits

Author SHA1 Message Date
Eitan Seri-Levi
2f6f9b51ad Merge remote-tracking branch 'king/fix-gloas-kurtosis-genesis' into unstable 2026-04-28 00:12:58 +02:00
Eitan Seri-Levi
1681b8335f Merge remote-tracking branch 'jimmy/gloas-ptc-pool-block-packing' into unstable 2026-04-28 00:12:16 +02:00
Eitan Seri-Levi
36993c106e Merge conflicts 2026-04-28 00:11:22 +02:00
Eitan Seri-Levi
e179fc2870 Merge remote-tracking branch 'origin/gloas-default-to-available-envelope' into unstable 2026-04-28 00:10:41 +02:00
Eitan Seri-Levi
b0255efde6 Merge remote-tracking branch 'origin/gloas-parent-envelope-unknown-lookup' into unstable 2026-04-28 00:10:17 +02:00
Jimmy Chen
fb02b67555 Remove unnecessary check 2026-04-28 00:09:13 +02:00
Jimmy Chen
77d288cb48 Fix payload attestation service using stale slot after sleep 2026-04-27 23:44:03 +02:00
Josh King
afc2346d9e fix: gloas from genesis
- Fix forkchoice update sending zero-hash head to EL at genesis by reading
  latest_block_hash from state when the genesis bid hashes are all zeros
- Simplify genesis block construction — the genesis block body is empty per
  spec, remove the incorrect bid-copying logic and body root override in
  initialize_beacon_state_from_eth1
2026-04-27 23:26:29 +02:00
Jimmy Chen
b90787f8bc Merge branch 'unstable' into gloas-ptc-pool-block-packing 2026-04-27 17:14:00 +02:00
Eitan Seri-Levi
028b5a42a9 Add payload attestation validator duty (#9178)
Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-04-27 15:13:35 +00:00
Jimmy Chen
a519120a37 Cap payload attestations to MaxPayloadAttestations 2026-04-27 17:09:35 +02:00
Eitan Seri-Levi
daab3408aa spawn a task for col construction 2026-04-27 17:08:16 +02:00
Eitan Seri-Levi
fadc055250 Fixes 2026-04-27 17:00:41 +02:00
Eitan Seri-Levi
5db022a442 Merge branch 'gloas-publish-data-columns-during-local-block-building' of https://github.com/eserilev/lighthouse into gloas-publish-data-columns-during-local-block-building 2026-04-27 14:53:03 +02:00
Eitan Seri-Levi
6b3b6ccf51 Clean up and self review 2026-04-27 14:52:52 +02:00
Eitan Seri-Levi
61b5fe8ec8 Merge branch 'unstable' into gloas-publish-data-columns-during-local-block-building 2026-04-27 14:33:28 +02:00
Eitan Seri-Levi
356c1fc659 Clean up 2026-04-27 14:27:20 +02:00
Jimmy Chen
9518eac182 Fix lint and incorrect condition 2026-04-27 13:40:03 +02:00
Eitan Seri-Levi
732123abbb linting 2026-04-27 13:14:48 +02:00
Jimmy Chen
0e9107f0be Clean ups 2026-04-27 13:13:45 +02:00
Jimmy Chen
1543db8b87 Add payload attestation pool and block packing
Store gossip-verified PayloadAttestationMessages in the operation pool
keyed by PayloadAttestationData. At block production time, aggregate
them into PayloadAttestations using PTC position mapping and include
in the block body. Wire pool insertion into the gossip handler after
fork choice.
2026-04-27 13:13:45 +02:00
Eitan Seri-Levi
4746dc5629 publish columns 2026-04-27 13:02:08 +02:00
hopinheimer
6ab48a76f0 Gloas PayloadAttestation gossip verification (#9145)
Co-Authored-By: hopinheimer <knmanas6@gmail.com>

Co-Authored-By: hopinheimer <48147533+hopinheimer@users.noreply.github.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-04-27 09:51:20 +00:00
Shane K Moore
fae7941b2d Gloas ptc duties beacon node response (#8415)
Co-Authored-By: shane-moore <skm1790@gmail.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: Eitan Seri-Levi <eserilev@gmail.com>

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2026-04-26 15:25:00 +00:00
Eitan Seri-Levi
276c4d5ff3 Gloas set AttestationData.index (#9100)
For gloas `attestation.data.index` should be set to 1 if we are attesting to a block whose slot is not the attestation duty slot and slot payload_status is `FULL`


  


Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2026-04-26 13:40:22 +00:00
Eitan Seri-Levi
6323cd3827 Fix builder exit signature batch verification logic and small refactor (#9173)
We had a bug when performing batch builder exit signature verification. The EF spec tests cover this case, but the EF tests only calls  individual signature verification (which is a separate code path). This PR unifies the two code paths. We should probably spend some time reviewing EF test code coverage and make sure we don't have separate code paths that do similar things.


  


Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
2026-04-25 23:51:02 +00:00
Eitan Seri-Levi
269e474f49 Resolve merge conflicts 2026-04-25 17:14:57 +09:00
hopinheimer
df764ffa9a Re-issue ForkchoiceUpdate based on updated PayloadStatus (#9102)
Co-Authored-By: hopinheimer <knmanas6@gmail.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
2026-04-25 08:04:09 +00:00
Daniel Knopik
8a384ff445 Cell Dissemination (Partial messages) (#8314)
- https://github.com/ethereum/consensus-specs/pull/4558
- https://eips.ethereum.org/EIPS/eip-8136


  


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>

Co-Authored-By: Pawan Dhananjay <pawandhananjay@gmail.com>

Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-04-23 18:52:28 +00:00
Pawan Dhananjay
e086628efe Avoid lint and fmt for agents (#9166)
N/A


  Do not make the AI agent always fmt and lint. This takes way too long and the agents I work with take this too literally sometimes and run lint after incomplete changes just wasting time.

I feel its not a big ask to run fmt and lint yourself and/or run it in some local configs instead of global ones.


Co-Authored-By: Pawan Dhananjay <pawandhananjay@gmail.com>
2026-04-23 12:50:15 +00:00
Eitan Seri-Levi
82dc8b4edc Ensure payload envelope streamer always serves canonical envelopes after the split slot (#9085)
Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
2026-04-23 11:32:26 +00:00
Eitan Seri-Levi
ca59cf453e Merge conflicts' 2026-04-23 02:34:34 +09:00
Eitan Seri-Levi
755b8d8510 resolve merge conlfict 2026-04-23 02:15:26 +09:00
Eitan Seri-Levi
f2ce147f79 Update 2026-04-23 01:52:47 +09:00
Eitan Seri-Levi
29f6dfa460 Default envelope to always avail 2026-04-23 01:47:47 +09:00
Eitan Seri-Levi
cfc748309f At the fork transition ensure we build ontop of the correct parent block hash (#9160)
When producing a block at the fork, treat parent payload status as full

I've been testing on kurtosis and this fixes an issue where we cant propose a block at the fork.

This is a screenshot of the fix. The envelope shows missing because we are missing an SSE event, but the envelope is in fact being imported and the chain is progressing just fine
<img width="652" height="748" alt="image" src="https://github.com/user-attachments/assets/7764a68c-33fb-4987-a691-0af71f0bea02" />


  


Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
2026-04-22 15:43:17 +00:00
Mac L
5a13e37456 Fix audit failure for rustls-webpki (#9161)
Another `rustls-webpki` audit failure: https://rustsec.org/advisories/RUSTSEC-2026-0104


  Bump `rustls-webpki` to the latest (unaffected) version.
As with the previous `rustls-webpki` vulns, we add an ignore for our older version required by warp 0.3.
This ignore will be resolved by https://github.com/sigp/lighthouse/pull/9001


Co-Authored-By: Mac L <mjladson@pm.me>
2026-04-22 12:07:59 +00:00
Michael Sproul
4de08f1b4a Remove more mentions of "pending"/"full" states (#9156)
Just a little naming cleanup (no semantic changes) to remove mentions of pending and full states that were still lurking.

This hopefully helps Claude forget about the concept (it defaults to naming variables `pending_state`s without this change).


  


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-04-22 02:03:13 +00:00
Eitan Seri-Levi
7731b5f250 Gloas engine api updates (#9150)
Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
2026-04-21 07:36:22 +00:00
Michael Sproul
02c2841db0 Revert Gloas API changes from 9092 (#9151)
This reverts commit 2749e18d0e, from:

- #9092

We no longer need those changes since the abolition of pending/full states.


  


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-04-21 07:23:07 +00:00
Michael Sproul
cf3d5e285e Gloas spec v1.7.0-alpha.5 and beacon_chain tests (#8998)
Fix database pruning post-Gloas


  - Fix DB pruning logic (and state summaries DAG)
- Get the `beacon_chain` tests running with `FORK_NAME=gloas` 🎉


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>

Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>

Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
2026-04-21 06:29:15 +00:00
Michael Sproul
c028bac28d Fix slasher OOM (#9141)
Fix a vulnerability in the slasher whereby it would OOM upon processing an invalid attestation with an artificially high `validator_index`. This fix has already been made available to affected users on the `slasher-fix` branch.


  - Prevent attestations from being passed to the slasher prior to signature verification. This was unnecessary, as they would later be passed on successful validation as well.
- Add a defensive cap on the maximum validator index processable by the slasher. The cap is high enough that it shouldn't be reached for several years, and will quickly result in warning logs if forgotten.
- Add a regression test that confirms that the issue is fixed.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-04-20 00:59:42 +00:00
Michael Sproul
9b08e1ad63 Fix total_effective_balance=0 in PreEpochCache (#9106)
Fix a **consensus fault** in `PreEpochCache` 🙀

Fortunately it's only reachable on a network with `total_active_balance=0`, i.e. a network that's already completely dead. As such this PR is not time-sensitive in any way.


  Add the floor on `total_effective_balance` when converting from `PreEpochCache` to `EpochCache`. An alternative would be to add the floor inside `PreEpochCache::get_total_active_balance`, however that would be redundant, as the only place this function is called outside this file is in single-pass epoch processing:

176cce585c/consensus/state_processing/src/per_epoch_processing/single_pass.rs (L461-L462)

The `set_total_active_balance` call already handles the floor.

A regression test is included.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-04-20 00:59:39 +00:00
Shane K Moore
b561b59549 Gloas - add get_payload_attestation_endpoint (#8497)
Co-Authored-By: shane-moore <skm1790@gmail.com>

Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>

Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-04-17 14:01:25 +00:00
Pawan Dhananjay
4cb3ffed8d Rust 1.95 lints (#9142)
N/A


  Adds lints for rust 1.95. Mostly cosmetic.
1. .zip(a.into_iter()) -> .zip(a) . Also a few more places where into_iter is not required
2. replace sort_by with sort_by_key
3. move if statements inside match block.
4. use checked_div instead of if statements. I think this is debatable in terms of being better, happy to remove it if others also feel its unnecessary


Co-Authored-By: Pawan Dhananjay <pawandhananjay@gmail.com>
2026-04-16 23:50:20 +00:00
Shane K Moore
794718e96b Gloas vc ptc duty (#8338)
Co-Authored-By: shane-moore <skm1790@gmail.com>

Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>
2026-04-16 10:23:18 +00:00
Lion - dapplion
a9f43f9934 Add mixed V17/V29 execution payload invalidation test (#9089)
Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2026-04-16 06:19:57 +00:00
Jimmy Chen
e0922badbe Prefix VC root spans with lh_ so they get exported to tracing backend (#9129)
The tracing exporter uses a `PrefixBasedSampler` that only samples root spans whose name starts with `lh_`. Rename the VC root spans to include the prefix so their traces are exported.

Thanks @lmnzx for pointing this out!


  


Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-04-16 00:07:58 +00:00
Mac L
30446b9f3a Bump rustls-webpki to unblock CI (#9130)
New audit failure from `RUSTSEC-2026-0098`


  Bump `rustls-webpki` to an unaffected version, add an ignore for the old version used by `warp` 0.3


Co-Authored-By: Mac L <mjladson@pm.me>

Co-Authored-By: Pawan Dhananjay <pawandhananjay@gmail.com>
2026-04-16 00:07:54 +00:00
YoungWoo Yang
d3c13c4cf0 Gloas: envelope peer penalties and REJECT/IGNORE mapping (#8981)
Closes #8949


  Implements peer penalties and REJECT/IGNORE message propagation for `SignedExecutionPayloadEnvelope` gossip handling, completing follow-up work from #8806.

Feedback on the error classification would be appreciated.

### Key Implementation Details

- Maps all 15 `EnvelopeError` variants to REJECT/IGNORE based on [Gloas p2p spec](https://github.com/ethereum/consensus-specs/blob/master/specs/gloas/p2p-interface.md#execution_payload)
- Follows `ExecutionPayloadError` handling pattern from block gossip (`penalize_peer()` method)
- Uses explicit variant matching (rather than catch-all `_`) for type safety
- Applies `LowToleranceError` penalty for protocol violations (invalid signatures, mismatches, etc.)
- Ignores without penalty for spec-defined cases (unknown block root, prior to finalization) and internal errors


Co-Authored-By: 0u-Y <yyw1000@naver.com>

Co-Authored-By: Eitan Seri-Levi <eserilev@gmail.com>
2026-04-14 16:41:56 +00:00