Commit Graph

1226 Commits

Author SHA1 Message Date
Eitan Seri-Levi
f818612795 fix: remove premature on_valid_payload_envelope_received + disable backfill for GLOaS
1. Remove on_valid_payload_envelope_received call before process_block
   in chain segment import. The block isn't in fork choice yet, so it
   always fails with NodeUnknown. import_envelope_from_range_sync
   handles this correctly after process_block.

2. Disable backfill sync when GLOaS is scheduled. Backfill calls
   into_available_block which panics on GLOaS RangeSyncBlock variant.
   Backfill for GLOaS is not yet implemented.
2026-05-07 14:26:04 +00:00
Eitan Seri-Levi
2d68396a08 FIX CHECKPOINT SYNC 2026-05-04 17:27:38 +03:00
Eitan Seri-Levi
a6144def54 Merge branch 'unstable' into gloas-parent-envelope-unknown-lookup 2026-05-04 16:01:26 +02:00
Eitan Seri-Levi
22da18f640 Merge remote-tracking branch 'origin/gloas-range-sync' into glamsterdam-devnet-2 2026-05-04 16:51:06 +03:00
Eitan Seri-Levi
e0048b5206 Another hack 2026-05-04 16:50:35 +03:00
Eitan Seri-Levi
8341b44105 Merge 2026-05-04 16:33:31 +03:00
Eitan Seri-Levi
75d4333776 Hack for checkpoint sync 2026-05-04 15:46:48 +03:00
Eitan Seri-Levi
36aee54be2 Merge remote-tracking branch 'origin/gloas-range-sync' into glamsterdam-devnet-2 2026-05-04 14:58:45 +03:00
Eitan Seri-Levi
3d23f9be0d Merge branch 'unstable' of https://github.com/sigp/lighthouse into gloas-range-sync 2026-05-04 14:58:16 +03:00
Eitan Seri-Levi
3015fa4842 Merge branch 'gloas-range-sync' of https://github.com/eserilev/lighthouse into gloas-range-sync 2026-05-04 14:58:07 +03:00
Eitan Seri-Levi
6af1a927b8 Actually do something with the responses... 2026-05-04 14:57:49 +03:00
Eitan Seri-Levi
9cf155a0dd Implement gloas proposer preference vc duty (#9208)
Allow for the vc to submit its proposer preferences to the network


  


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

Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-05-04 11:33:09 +00:00
Eitan Seri-Levi
7e502a5e65 Fix 2026-05-01 18:23:33 +02:00
Eitan Seri-Levi
47bcd0b347 Fix TODO 2026-05-01 11:12:18 +02:00
dapplion
0ce058835a Address review comments
- data_availability_checker.rs: use !gloas_enabled() instead of < ForkName::Gloas
  (jimmygchen, dapplion).
- beacon_chain.rs: get_data_columns checks data_availability_checker first,
  then pending_payload_cache (dapplion).
- pending_components.rs: merge_data_columns drops the unused Result return
  (jimmygchen). num_completed_columns uses filter() instead of filter_map (jimmygchen).
- pending_column.rs: TODO marker on the hard-coded Gloas variant in
  try_to_sidecar (jimmygchen).
- pending_payload_cache/mod.rs: gloas_spec test helper collapsed to
  ForkName::Gloas.make_genesis_spec(E::default_spec()) (jimmygchen).
- gossip_methods.rs / sync/manager.rs: replace UnknownBlockHashFromAttestation
  fallback with TODO(gloas) for proper Gloas lookup sync (dapplion).
2026-05-01 10:16:06 +02:00
dapplion
dac8a6ec8d Gloas: fix test failures (KZG verifier wiring, harness columns, WSS sync)
Brings the FORK_NAME=gloas beacon_chain test suite from 31 failures to green:

- v1 KZG batch verifier couldn't verify Gloas columns. Added
  verify_columns_against_block helper that picks commitments per fork
  (Fulu: inline on column; Gloas: signed_execution_payload_bid).
- BeaconChainHarness::process_envelope didn't persist columns. Now mirrors
  what production does in import_available_execution_payload_envelope.
- get_or_reconstruct_blobs returned an error for Gloas. Now short-circuits to
  Ok(None); WSS test copies columns from source to dest directly.
- update_data_column_signed_header (block_verification tests) only handled
  Fulu shape. Added a Gloas branch that re-keys to canonical_root.
- BlockError::EnvelopeBlockRootUnknown changed to tuple variant.
- Removed duplicate process_payload_envelope_availability.
2026-05-01 10:06:52 +02:00
Eitan Seri-Levi
fd1a8e1564 use slot so we dont hit the cache twice 2026-05-01 02:54:57 +02:00
Eitan Seri-Levi
378eaedf9c Merge branch 'unstable' of https://github.com/sigp/lighthouse into gloas-payload-cache 2026-05-01 02:22:42 +02:00
Eitan Seri-Levi
a840c40cbe Gloas range sync 2026-04-30 16:40:05 +02:00
Eitan Seri-Levi
28a9342831 Merge branch 'unstable' of https://github.com/sigp/lighthouse into gloas-range-sync 2026-04-30 15:54:22 +02:00
dapplion
23d5be1a0e Fix pending payload cache test lint 2026-04-30 13:41:51 +02:00
dapplion
0b7397eb4e Refactor 2026-04-30 13:39:05 +02:00
dapplion
bd8cfa35f4 Refine Gloas data column availability 2026-04-30 12:36:36 +02:00
Eitan Seri-Levi
666fcbd7c9 intro single_envelope_lookup.rs 2026-04-30 11:31:08 +02:00
Eitan Seri-Levi
fe4ad22ac4 Merge branch 'unstable' of https://github.com/sigp/lighthouse into gloas-parent-envelope-unknown-lookup 2026-04-30 10:33:19 +02:00
Daniel Knopik
ae17107f78 fix test runs 2026-04-30 09:45:59 +02:00
chonghe
8d77b1c08d Remove test_logger feature (#9125)
- #9107


  Remove all instances of `test_logger` in the code


Co-Authored-By: Tan Chee Keong <tanck@sigmaprime.io>
2026-04-30 04:57:47 +00:00
dapplion
ce00ae2dc7 Use stable if matches! instead of if let match guard
`if let` guards are nightly-only (rust-lang/rust#51114), causing
`error[E0658]` and a CI `check-code` failure. Replace with the stable
`if matches!(...)` form suggested by rustc.
2026-04-30 00:08:35 +02:00
Daniel Knopik
e742d0b4f1 fix tests 2026-04-29 23:18:36 +02:00
Daniel Knopik
c5ca824ec3 merge from unstable 2026-04-29 23:00:51 +02:00
Daniel Knopik
7cf76ac7af clean up 2026-04-29 17:38:49 +02:00
Daniel Knopik
2d3354551e error handling and wiring up 2026-04-29 17:38:48 +02:00
Daniel Knopik
d7f5e24ede nuke router 2026-04-29 14:24:25 +02:00
jking-aus
16132a3694 Spec v1.7.0-alpha.6 and Gloas genesis (#9190)
Co-Authored-By: Josh King <josh@sigmaprime.io>

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

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-04-29 08:23:24 +00:00
Eitan Seri-Levi
93293ee8e8 Merge branch 'unstable' of https://github.com/sigp/lighthouse into gloas-range-sync 2026-04-29 09:47:15 +02:00
Daniel Knopik
c76eb3e4c5 merge from unstable 2026-04-29 09:33:34 +02:00
Eitan Seri-Levi
e8c865dcc6 Gossip reprocessed payload envelopes that are timely (#9210)
Payloads from the reprocess queue should be gossiped after import if they are still timely. In devnets this happens frequently since there are many cases where the envelope arrives before the block


  


Co-Authored-By: Eitan Seri-Levi <eserilev@ucsc.edu>
2026-04-28 21:50:07 +00:00
Daniel Knopik
60e1ded4c3 Merge branch 'unstable' into gloas-payload-cache 2026-04-28 22:00:19 +02:00
Eitan Seri-Levi
46c9f313e3 tests 2026-04-28 21:12:22 +02:00
Daniel Knopik
a03906d4c0 fix remaining errors 2026-04-28 17:39:43 +02:00
Eitan Seri-Levi
d5ad1d8178 fix 2026-04-28 17:32:42 +02:00
Eitan Seri-Levi
802f77f700 Range sync 2026-04-28 17:25:53 +02:00
Daniel Knopik
4535753c9b starting to cell-ize 2026-04-28 17:09:42 +02:00
Daniel Knopik
3a5492fba7 initial straightforward merge changes 2026-04-28 17:09:41 +02:00
Eitan Seri-Levi
1de9d40b7e merge conflicts 2026-04-28 16:38:11 +02:00
Eitan Seri-Levi
7e68707213 Merge branch 'unstable' of https://github.com/sigp/lighthouse into gloas-parent-envelope-unknown-lookup 2026-04-28 16:33:52 +02:00
dapplion
11684b0da0 Complete envelope-lookup functionality and tests
Implementation:
- payload_envelope_verification: implement the AvailabilityPending branch
  in the envelope import flow. Previously returned
  InternalError("Pending payload envelope not yet implemented") for any
  envelope whose data columns hadn't yet been received, blocking the
  end-to-end RPC import path. New `import_pending_execution_payload_envelope`
  marks the payload as received in fork choice and persists the envelope to
  the store; columns are still expected to arrive separately (gossip /
  engineGetBlobs / reconstruction) and persist their own ops.

- sync manager: short-circuit `handle_unknown_parent_envelope` when the
  parent's payload was received between gossip-verification and the trigger
  reaching sync. No lookup is created; the trigger is treated as a no-op.

- gossip→sync hook: when a Gloas envelope is imported via the gossip path,
  emit `SyncMessage::GossipEnvelopeImported { block_root }` so any lookups
  awaiting that parent envelope unblock without depending on the in-flight
  RPC response landing first. Closes the review-flagged race where a
  gossip-imported envelope left child lookups pinned.

Tests (3 new):
- envelope_already_received_skips_lookup — trigger after envelope already
  in fork choice creates zero lookups.
- happy_path_unknown_parent_envelope — end-to-end RPC import path: lookups
  complete, head advances to the gossip block.
- happy_path_unknown_parent_envelope_via_gossip — pending envelope-only
  lookup unblocked by a concurrent gossip import via the new sync hook.

Existing tests updated:
- bad_peer_envelope_rpc_failure / bad_peer_wrong_envelope_response now
  expect the lookup to retry and succeed (mirroring `bad_peer_*` tests for
  blocks/blobs/columns), reflecting the now-working import path.
2026-04-28 15:49:29 +02:00
dapplion
7e50d47082 Add bad-peer and crypto-fail envelope-lookup tests
- bad_peer_wrong_envelope_response — peer responds with a different block_root
  than requested; request items raise UnrequestedBlockRoot, both lookups drop.
- crypto_on_fail_with_bad_envelope_signature — signature corruption rejected
  in gossip verification, peer scored with lookup_envelope_processing_failure.

Rename the four already-landed tests to match the existing happy_path /
bad_peer / envelope_* / crypto_on_fail_with_* naming.
2026-04-28 15:25:17 +02:00
dapplion
4dc34c6854 Add gloas parent-envelope-unknown lookup tests
Wires the lookup test rig for Gloas:
- Capture per-block execution payload envelopes from the external harness
  and serve them to peers via a new `network_envelopes_by_root` map.
- Handle `RequestType::PayloadEnvelopesByRoot` in `simulate_on_request` and
  `Work::RpcPayloadEnvelope` in the simulator processor branch.
- Allow `TestRig` callers to override the genesis validator count and
  bump initial balances to `max_effective_balance_electra` post-Electra,
  which Gloas committee-selection requires for genesis init to converge.

Adds four tests for the parent-envelope-unknown flow (each verified
red/green by stubbing the corresponding source path):

- `creates_envelope_and_child_lookups` — `UnknownParentEnvelope` produces
  exactly one envelope-only lookup for the parent root and one child
  lookup awaiting that envelope.
- `idempotent_triggers` — repeated triggers for the same parent merge
  into the existing envelope lookup; no duplicate lookups are created.
- `issues_payload_envelopes_by_root_rpc` — the envelope-only lookup
  dispatches a `PayloadEnvelopesByRoot` RPC for the parent block_root.
- `drops_cascade_on_rpc_error` — when the envelope RPC errors, the
  envelope lookup is dropped and the awaiting child cascades with it.

The end-to-end happy path (envelope arrives → child unblocks → block
imports → head advances) is gated on
`process_execution_payload_envelope` supporting `AvailabilityPending`,
which today returns `InternalError("Pending payload envelope not yet
implemented")`. That gap is independent of this PR's lookup machinery.
2026-04-28 14:59:06 +02:00
dapplion
f44c9e6b84 Simplify reconstruction test assertion
Replace `assert_event_journal_contains_at_least_ordered` helper with an
inline drain that just counts the gossip + reconstruction events. The
helper was carrying around `WORKER_FREED` bookkeeping and a strict
prefix-match for one caller; counting the two relevant work types until
both thresholds are met is the same check with much less code.
2026-04-28 14:59:06 +02:00