Commit Graph

3813 Commits

Author SHA1 Message Date
Eitan Seri-Levi
a42444de4e Merge branch 'gloas-walk-always' into epbs-devnet-1 2026-04-04 01:18:38 +09:00
Michael Sproul
bc7864b076 Split out InvalidPayloadAttestation error 2026-04-02 11:44:02 +11:00
Michael Sproul
1c5a7bed74 Clarify name of on_valid_payload_envelope_received 2026-04-02 10:56:34 +11:00
Michael Sproul
5f8605f67e Disable optimistic sync for Gloas 2026-04-02 10:40:23 +11:00
Eitan Seri- Levi
2660856dc8 Merge branch 'gloas-fork-choice-fixes' into epbs-devnet-1 2026-04-01 00:35:27 -07:00
Michael Sproul
5aae563d84 Remove proposer boost weight during upgrade 2026-04-01 17:59:45 +11:00
Eitan Seri- Levi
dc5489d20c Merge branch 'gloas-walk-always' of https://github.com/sigp/lighthouse into gloas-fork-choice-fixes 2026-03-31 23:53:09 -07:00
Michael Sproul
f5b2445d09 Remove stupid GLOAS comments 2026-04-01 16:46:02 +11:00
Michael Sproul
bc6cf0f882 Remove payload attestation queueing and more cleanups 2026-04-01 11:17:33 +11:00
Michael Sproul
1ee2ce4258 Fix schema migrations 2026-04-01 10:38:03 +11:00
Eitan Seri- Levi
0f996ddbe8 sse stuff 2026-03-31 11:23:59 -07:00
Eitan Seri- Levi
a538d7b91a resolve merge conflicts 2026-03-31 11:06:08 -07:00
Eitan Seri- Levi
1eefef610e Resolve merge conflicts 2026-03-31 11:04:23 -07:00
Eitan Seri- Levi
7645064a38 Fix fc 2026-03-31 10:40:39 -07:00
Eitan Seri-Levi
e1cabb8d67 Merge branch 'unstable' into gloas-walk-always 2026-04-01 02:24:42 +09:00
Daniel Knopik
7fe9da0043 Add Gloas SSE event boilerplate (#9053)
Implement boilerplate for new SSE events as specified in
- https://github.com/ethereum/beacon-APIs/pull/588

While that one is not merged yet, I believe the SSE events might be utilized in Dora already.


  Implement the boilerplate, i.e. subscription tracking and publish queues. A PR to implement to fully implement already implementable events will follow.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>
2026-03-31 10:42:51 -05:00
Lion - dapplion
6f480e499e Add range sync tests (#8989)
Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2026-03-31 10:42:51 -05:00
Michael Sproul
a1534bbfb3 Check ChainSpec consistency with upstream config.yaml (#9008)
Closes:

- https://github.com/sigp/lighthouse/issues/9002


  - Commit `config.yaml` for minimal and mainnet to `consensus/types/configs`. For now we omit any auto-downloading logic, to avoid the hassles of dealing with Github rate limits etc on CI. Unfortunately these files are NOT bundled inside the spec tests.
- Fix the values of `min_builder_withdrawability_delay` for minimal and mainnet. These discrepancies aren't caught by the current spec tests, because the spec tests are missing data: https://github.com/ethereum/consensus-specs/pull/5005. Will be fixed in the next release/when we update to nightly.
- Fix the blob schedule for `minimal`, which should be empty, NOT inherited from mainnet.
- Keep `SECONDS_PER_SLOT` for now because the Kurtosis tests fail upon their complete removal. We will be able to completely remove `SECONDS_PER_SLOT` soon.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-31 10:42:51 -05:00
Daniel Knopik
037b263f17 Emit SSE: execution_payload_gossip (#9063)
Emit `execution_payload_gossip` on successful gossip verification of an execution payload. This is done as last step inside the verification function.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>
2026-03-31 15:16:40 +00:00
Eitan Seri-Levi
f6f37652a8 Gloas get payload envelope beacon API (#9038)
Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>

Co-Authored-By: Mac L <mjladson@pm.me>
2026-03-31 10:44:12 +00:00
Eitan Seri- Levi
9f08f48880 import envelope status into fc 2026-03-30 23:56:51 -07:00
Daniel Knopik
2b224c59f7 Add Gloas SSE event boilerplate (#9053)
Implement boilerplate for new SSE events as specified in
- https://github.com/ethereum/beacon-APIs/pull/588

While that one is not merged yet, I believe the SSE events might be utilized in Dora already.


  Implement the boilerplate, i.e. subscription tracking and publish queues. A PR to implement to fully implement already implementable events will follow.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>
2026-03-31 06:16:34 +00:00
dapplion
5353710e0a Fix compilation, clear best_child/best_descendant in migration
- Fix leaf detection in heads_descended_from_finalization (parent()
  method call, map away enumerate index)
- Clear best_child and best_descendant in v28->v29 migration (no
  longer used, replaced by virtual tree walk)
- Migration now rewrites fork choice data instead of being a no-op
2026-03-31 00:51:19 -05:00
Lion - dapplion
bc5d8c9f90 Add range sync tests (#8989)
Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2026-03-31 05:07:22 +00:00
Michael Sproul
3bc1d882f2 Clarify load_parent genesis behaviour 2026-03-31 15:36:14 +11:00
Michael Sproul
e1dcd9e692 Update schema test 2026-03-31 14:17:37 +11:00
Michael Sproul
5c6e171a22 Add schema v29 migration 2026-03-31 14:05:39 +11:00
Michael Sproul
419645cc96 Update CURRENT_SCHEMA_VERSION to 29 2026-03-31 13:25:00 +11:00
Michael Sproul
991dc92d8f Check ChainSpec consistency with upstream config.yaml (#9008)
Closes:

- https://github.com/sigp/lighthouse/issues/9002


  - Commit `config.yaml` for minimal and mainnet to `consensus/types/configs`. For now we omit any auto-downloading logic, to avoid the hassles of dealing with Github rate limits etc on CI. Unfortunately these files are NOT bundled inside the spec tests.
- Fix the values of `min_builder_withdrawability_delay` for minimal and mainnet. These discrepancies aren't caught by the current spec tests, because the spec tests are missing data: https://github.com/ethereum/consensus-specs/pull/5005. Will be fixed in the next release/when we update to nightly.
- Fix the blob schedule for `minimal`, which should be empty, NOT inherited from mainnet.
- Keep `SECONDS_PER_SLOT` for now because the Kurtosis tests fail upon their complete removal. We will be able to completely remove `SECONDS_PER_SLOT` soon.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-30 06:43:57 +00:00
Michael Sproul
4c3fd70dbf Merge remote-tracking branch 'origin/unstable' into gloas-walk-always 2026-03-30 16:10:35 +11:00
Eitan Seri-Levi
5efaf85c90 Gloas new payload v5 (#9037)
Use the new payload v5 engine api for gloas. This is required for ePBS devnets

In a separate PR we can implement the full engine api spec changes for glamsterdam
https://github.com/ethereum/execution-apis/blob/main/src/engine/amsterdam.md


  


Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>
2026-03-30 04:52:08 +00:00
Mac L
a5e748f808 Use yaml_serde in place of deprecated serde_yaml (#9040)
`serde_yaml` is now deprecated. The API-compatible `yaml_serde` should be used instead.


  Replace `serde_yaml` with `yaml_serde`. This is purely mechanical as the API is 1-to-1.


Co-Authored-By: Mac L <mjladson@pm.me>
2026-03-29 18:39:20 +00:00
Eitan Seri- Levi
09e9a54314 When a block comes in whose parent is unkown, queue the block for processing and lookup the parent envelope 2026-03-26 23:40:35 -07:00
Michael Sproul
12f5ab04f3 Load the state corresponding to head payload status yay 2026-03-26 16:03:55 +11:00
dapplion
ac5357532b Source head_payload_status from get_head, not hardcoded Pending
Thread head_payload_status from get_head() return through to
CanonicalHead::new(). In restore_from_store, call get_head() on the
loaded fork choice to get the correct status. Removes Pending defaults.
2026-03-25 23:19:54 -05:00
dapplion
ea1e99b2f7 Add TODO for head_payload_status initialization (re: #8998) 2026-03-25 23:09:11 -05:00
dapplion
c7670ede02 Cleanup and spec parity fixes
- Add missing payload attestation slot check: spec returns early when
  data.slot != block.slot (PTC votes only for assigned block)
- Remove dead ignored tests (need mock EL Gloas support to run)
- Remove unused new_with_gloas and inspect_queued_payload_attestations
- Remove gloas entries from bin.rs (not part of this PR)
- Collapse nested if in payload attestation error handling (clippy)
- Rename env -> envelope in load_parent
- Add TODO(gloas) for parent_head_hash in re-org path
- Remove head_payload_status from ForkchoiceUpdateParameters (lives on
  CachedHead, sourced from get_head return)
2026-03-25 23:07:45 -05:00
dapplion
e676c33c92 Merge sigp/unstable into gloas-walk-always 2026-03-25 22:02:08 -05:00
dapplion
93f987f3cf Remove head_payload_status from ForkchoiceUpdateParameters
head_payload_status is internal fork choice state, not an EL
forkchoiceUpdated parameter. It already lives on CachedHead — source
it directly from get_head() return in recompute_head_at_slot instead
of threading through ForkchoiceUpdateParameters.

Also add TODO(gloas) for parent_head_hash in re-org path (V29 nodes
don't carry execution_status).
2026-03-25 21:16:06 -05:00
Michael Sproul
bd34bb1430 Remove schema migrations for v28 and earlier (#9031)
With LH v8.1.3 supporting Fulu-on-Gnosis, we no longer need these DB migrations. All Lighthouse nodes running in prod will soon be updated to LH v8.0.0+ and schema v28+.

This PR helps with Gloas fork choice changes, by allowing us to avoid updating old schema migrations when adding V29 for Gloas:

- https://github.com/sigp/lighthouse/pull/9025


  


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-26 02:10:34 +00:00
dapplion
f31a93697e Fix test review issues
- Remove wrong latest_message assertions from payload attestation test
  (on_payload_attestation writes to PTC bitfields, not vote tracker)
- Fix corrupted comment: "votes.gloas_enabled() to the genesis block"
  → "votes to the genesis block"
- Fix http_api test fallback string: "n/a" → "irrelevant" to match
  production code
- Add issue link to #[ignore] test
- Add comment explaining head_payload_status as u8 cast
2026-03-25 20:08:43 -05:00
dapplion
e7f027badd O(n) children index, fix load_parent for gloas blocks
- Build parent->children index once per find_head call, replacing O(n)
  scans in filter_block_tree and get_node_children with O(1) lookups.
- Skip zero block_hash in is_parent_block_full check — default/zero
  hashes don't indicate a real payload relationship.
- Fall back to block state_root for genesis when envelope not stored.
- Store execution payload envelope in EF test harness during
  on_execution_payload step.
2026-03-25 19:38:54 -05:00
Michael Sproul
9f1f68c3ee Add back AttestationFromBlock 2026-03-26 10:39:57 +11:00
dapplion
fdf2fd2267 Simplify reorg weight logic, TODO(gloas) for payload-aware version
Remove V17/V29 branching in beacon_chain reorg weight computation.
Use total weight for both pre and post-GLOAS, which is correct for
pre-GLOAS and conservative for post-GLOAS. The payload-aware version
will be needed when reorg logic is enabled for GLOAS.
2026-03-25 18:38:59 -05:00
Michael Sproul
e77651ac06 Revert changes in load_parent 2026-03-26 10:27:20 +11:00
Michael Sproul
2323b86ffa Merge remote-tracking branch 'origin/unstable' into gloas-walk-always 2026-03-26 10:07:46 +11:00
dapplion
93ef1e395c Include head_payload_status in ForkChoiceView comparison
The early exit check in recompute_head_at_slot compared only
head_block_root and checkpoints. When on_execution_payload changed
the payload status from Empty to Full without changing the head root,
the CachedHead was not updated. Add head_payload_status to
ForkChoiceView so the change is detected.
2026-03-25 17:47:49 -05:00
Eitan Seri-Levi
c7055b604f Gloas serve envelope rpc (#8896)
Serves envelope by range and by root requests. Added PayloadEnvelopeStreamer so that we dont need to alter upstream code when we introduce blinded payload envelopes.


  


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-03-25 06:45:24 +00:00
Michael Sproul
8b448864f0 Re-do head_payload_status 2026-03-25 14:05:11 +11:00
Alleysira
7ffc637eef fix(network): set ENR nfd to zero bytes when next fork is unknown (#9009)
Fixes #8996


  When no next fork is scheduled, the `nfd` field in the ENR was set to the current fork digest via
`.unwrap_or_else(|| ctx.fork_context.current_fork_digest())`.

According to the [spec](1baa05e711/specs/fulu/p2p-interface.md (L636-L637)), `nfd` should be zero-valued bytes when the next fork is unknown.


Co-Authored-By: Alleysira <1367108378@qq.com>

Co-Authored-By: Alleysira <56925051+Alleysira@users.noreply.github.com>

Co-Authored-By: Pawan Dhananjay <pawandhananjay@gmail.com>
2026-03-23 22:07:37 +00:00