Commit Graph

7401 Commits

Author SHA1 Message Date
Mac L
243eecc465 Add cargo-hack to CI to check crate features (#8927)
#8926


  Add a step to CI which runs `cargo check` across all combinations of features for certain crates using `cargo-hack`


Co-Authored-By: Mac L <mjladson@pm.me>
2026-04-07 06:23:11 +00:00
Mac L
9f0696f93f Remove unused exit-future (#9095)
Remove the `exit-future` crate as it is unused.


Co-Authored-By: Mac L <mjladson@pm.me>
2026-04-06 02:54:41 +00:00
Lion - dapplion
7559dd2809 Use spec constants for PTC thresholds in fork choice (#9088)
Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2026-04-04 22:36:26 +00:00
Jimmy Chen
27af0ed82c Add test for protocol registration completeness (#8920)
Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-04-03 16:35:08 +00:00
Michael Sproul
65c2e01612 Gloas fork choice redux (#9025)
Co-Authored-By: hopinheimer <knmanas6@gmail.com>

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

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

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

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

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>

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

Co-Authored-By: Daniel Knopik <107140945+dknopik@users.noreply.github.com>
2026-04-03 08:35:02 +00:00
Eitan Seri-Levi
99f5a92b98 Automatically pass spans into blocking handles (#8158)
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-01 02:13:20 +00:00
chonghe
03385d698d Update blob_delay_ms to track data columns seen (#9024)
* #7477


  Use the last seen data column as the time for `blob_delay_ms`, the metric name remains unchanged


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

Co-Authored-By: Tan Chee Keong <tanck@sigmaprime.io>

Co-Authored-By: Tan Chee Keong <tanck2005@gmail.com>
2026-04-01 00:58:52 +00:00
Daniel Knopik
62c016660f Emit SSE: execution_payload (#9065)
Emit `execution_payload` on successful import of an execution payload.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>
2026-04-01 00:58:49 +00: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
Daniel Knopik
37a948cf32 Never use MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS for networks that started with Fulu enabled (#8731)
Lighthouse uses `MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS` for blob **and column retention** instead of `MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS` if Fulu activated less than `MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS` epochs ago - also if Fulu activated at genesis. This causes unexpected behaviour, as there are no blob sidecars to be stored or requested in such networks.


  ~~Add a special case to avoid that logic in post-Fulu genesis networks (`fulu_fork_epoch == 0`)~~

If the blob retention period would start in the fulu fork epoch, use the `min_epochs_for_data_column_sidecars_requests`, as there are no blobs to retain in Fulu.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>
2026-03-31 11:54:10 +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
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
Michael Sproul
d92efc1e0f Update to spec v1.7.0-alpha.4 (#9046)
Update our consensus code to v1.7.0-alpha.4


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-31 05:59:36 +00: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
Jimmy Chen
2fb69f84c0 Fix local testnet Tempo and Prometheus/Grafana config (#9054)
- Pin Tempo image to `grafana/tempo:2.10.3` — `grafana/tempo:latest` now resolves to an unreleased 3.0 build that removed the `compactor` config field, causing startup failure
- Replace deprecated `prometheus_grafana` additional service with separate `prometheus` + `grafana` services


Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-03-31 00:19:18 +00: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
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
Michael Sproul
e1a2cfe202 Merge remote-tracking branch 'origin/stable' into unstable 2026-03-26 16:51:14 +11: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
Michael Sproul
176cce585c Release v8.1.3 v8.1.3 2026-03-26 12:21:13 +11:00
Michael Sproul
7ca91b8ef4 Bump c-kzg 2026-03-26 12:18:01 +11:00
Michael Sproul
dfd715b65e Bump libp2p 2026-03-26 12:17:53 +11: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
e5facc2faf Bump yamux 2026-03-25 10:22:24 +11:00
Michael Sproul
5d6f787a06 Bump quinn 2026-03-25 10:22:24 +11:00
Lion - dapplion
91c25794fe Schedule Fulu fork for Gnosis mainnet (#9007)
Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-24 03:50:14 +00:00
Michael Sproul
c451ae763c Use BTreeMap for state.validators pending updates (#9017)
Closes:

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


  Milhouse `List`s use a map in front of the binary tree to cache updates. Ever since we adopted Milhouse, we've been using `VecMap`, which is essentially `Vec<Option<T>>`. Turns out, when you've got 2M indices and only 2 non-`None` entries (changes), this is inefficient.

Milhouse is generic in the choice of map (`U: UpdateMap`) and has always supported `BTreeMap`, so this PR switches us over to `BTreeMap`. In previous benchmarks (years ago) it had been slower than `VecMap`, but now it is vastly superior.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-24 01:43:19 +00: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
antondlr
e21053311d Scrap redundant docker builds on releases (#8999)
Our release workflow is pretty inefficient and slow. This PR aims to consolidate and cut down on duplicate tasks.


  1) We now run the whole build process both on pushing to the `stable` branch and pushing a version tag.
A quick win is to not fire off separate builds.

~~2) The Docker release workflow could re-use the binaries being built instead of doing its own cross-compilation. ~~
we won't take this on _right now_


Co-Authored-By: antondlr <anton@sigmaprime.io>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>

Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-23 06:25:06 +00:00
Eitan Seri-Levi
b3d5185893 Carry forward withdrawals from the current BeaconState when a parent envelope is missed (#9014)
Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>
2026-03-22 21:46:39 +00:00
Michael Sproul
de77da6437 Merge remote-tracking branch 'origin/release-v8.1' into backmerge-audit 2026-03-22 14:06:45 +11:00
Michael Sproul
8f9c1ca9ca Bump rustls and ignore unpatched version due to Warp (#9010)
Fix the cargo-audit failure caused by:

- https://rustsec.org/advisories/RUSTSEC-2026-0049

We can't fix it completely yet because `warp 0.3` is keeping us on an old version of `rustls`.

Mac's PR here will fix it:

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


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-21 09:45:20 +00:00
Barnabas Busa
54d62d0017 fix: update kurtosis apt source to sdk.kurtosis.com (#9000)
Co-Authored-By: Barnabas Busa <busa.barnabas@gmail.com>
2026-03-19 11:36:36 +00:00
Michael Sproul
06025228ae Gloas cold DB (#8991)
Closes:

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


  - Update the `HotColdStore` to handle storage of cold states.
- Update `BeaconSnapshot` to hold the execution envelope. This is required to make `chain_dump`-related checks sane, and will be generally useful (see: https://github.com/sigp/lighthouse/issues/8956).
- Bug fix in the `BlockReplayer` for the case where the starting state is already `Full` (we should not try to apply another payload). This happens on the cold DB path because we try to replay from the closest cached state (which is often full).
- Update `test_gloas_hot_state_hierarchy` to cover the cold DB migration.


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

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
2026-03-19 09:09:13 +00:00
Mac L
a965bfdf77 Remove lighthouse/analysis endpoints (#8968)
Some of our custom `lighthouse/analysis` endpoints will require maintenance for the Gloas hard fork. We have decided instead to remove those endpoints. We don't utilize them internally and they have pretty limited utility and so we feel they are not worth maintaining.


  Remove `lighthouse/analysis/attestation_performance` and `lighthouse/analysis/block_packing_efficiency` endpoints.


Co-Authored-By: Mac L <mjladson@pm.me>
2026-03-18 01:24:58 +00:00
Eitan Seri-Levi
17d183eb5b Unknown block for envelope (#8992)
Add a queue that allows us to reprocess an envelope when it arrives over gossip references a unknown block root. When the block is finally imported, we immediately reprocess the queued envelope.

Note that we don't trigger a block lookup sync. Incoming attestations for this block root will already trigger a lookup for us. I think thats good enough


  


Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>
2026-03-17 07:35:05 +00:00
Michael Sproul
95b99ee724 Spec v1.7.0 alpha.3 (#8988)
Update spec code for compliance with spec v1.7.0-alpha.3: https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-alpha.3

The actual consensus changes are minimal. There are few more changes that are only relevant to fork choice or P2P validation that we will pick up in future PRs.

The change "Ignore beacon block if parent payload unknown" is currently covered in a hacky way by `load_parent` and can be improved once we have fork choice.

The change "Add parent_block_root to bid filtering key" is relevant to bid gossip validation, which we don't have at all in unstable yet.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2026-03-16 11:40:22 +00:00
Mac L
4eecca6da7 Update /rewards endpoints to match spec (#8967)
I believe one of our rewards endpoints is slightly out of spec. We do not return the `finalized` status for `post_beacon_rewards_attestations`.
Additionally, the `eth2` client doesn't expect the correct wrapper types for some other endpoints.


  - Update `post_beacon_rewards_attestations` server implementation to match spec.
- Update all three client functions in `eth2` to the correct wrapper type.
- Add missing tests for `http_api` to detect any regressions.


Co-Authored-By: Mac L <mjladson@pm.me>
2026-03-16 04:53:22 +00:00
ethDreamer
6ca610d918 Breakup RPCBlock into LookupBlock & RangeSyncBlock (#8860)
Co-Authored-By: Mark Mackey <mark@sigmaprime.io>
2026-03-13 19:22:29 +00:00
ethDreamer
02137492f3 Fix intermittent simulator test failures (#8983)
Fixes intermittent simulator test failures with error: `Head not synced for node 2. Found 127; Should be 128`


  Modify the delayed node in `basic_sim` to join earlier, giving it sufficient time to discover peers and form a proper gossip mesh before the sync verification check.

**Change:** Delayed node now joins at `END_EPOCH - 3` (epoch 13) instead of `END_EPOCH - 1` (epoch 15).


Co-Authored-By: Mark Mackey <mark@sigmaprime.io>

Co-Authored-By: ethDreamer <37123614+ethDreamer@users.noreply.github.com>
2026-03-13 19:22:25 +00:00
Akihito Nakano
53a711956e Fix flaky test_same_subnet_unsubscription (#8932)
Co-Authored-By: figtracer <1gusredo@gmail.com>

Co-Authored-By: ackintosh <sora.akatsuki@gmail.com>
2026-03-13 18:27:15 +00:00
Shane K Moore
4b3a9d3d10 Refactor/stream vc vote publishing (#8880)
Changes four `ValidatorStore` batch signing methods to return `impl Stream` instead of `Future`. Services consume the stream and publish each batch as it arrives.  No behavioral change for lh since `LighthouseValidatorStore` wraps everything in `stream::once`

Also replaces anonymous tuples in method signatures with named structs


Co-Authored-By: shane-moore <skm1790@gmail.com>

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>

Co-Authored-By: Mac L <mjladson@pm.me>
2026-03-12 09:53:32 +00:00
chonghe
e1e97e6df0 Fix proposer lookahead endpoint JSON return type (#8970)
Co-Authored-By: Tan Chee Keong <tanck@sigmaprime.io>
2026-03-12 01:11:37 +00:00
lystopad
a36b7f3ddb Schedule Fulu fork for Chiado testnet (#8954)
Co-Authored-By: Oleksandr Lystopad <oleksandr.lystopad@erigon.tech>
2026-03-12 00:03:05 +00:00
Michael Sproul
bff72a920d Update database and block replayer to handle payload envelopes (#8886)
Closes:

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


  - Update `BlockReplayer` to support replay of execution payload envelopes.
- Update `HotColdDB` to load payload envelopes and feed them to the `BlockReplayer` for both hot + cold states. However the cold DB code is not fully working yet (see: https://github.com/sigp/lighthouse/issues/8958).
- Add `StatePayloadStatus` to allow callers to specify whether they want a state with a payload applied, or not.
- Fix the state cache to key by `StatePayloadStatus`.
- Lots of fixes to block production and block processing regarding state management.
- Initial test harness support for producing+processing Gloas blocks+envelopes
- A few new tests to cover Gloas DB operations


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

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

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

Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>

Co-Authored-By: Jimmy Chen <jchen.tc@gmail.com>
2026-03-11 23:06:25 +00:00
Lion - dapplion
6350a27031 Optionally check DB invariants at runtime (#8952)
Co-Authored-By: dapplion <35266934+dapplion@users.noreply.github.com>
2026-03-11 06:20:02 +00:00
Mac L
815040dc3c Remove c-kzg (#8930)
#7330


  Removes `c-kzg` from our `kzg` crate and rely fully on the `rust_eth_kzg` crate.

This removes the old `Blob` type entirely and instead handles `rust_eth_kzg::KzgBlobRef`s directly which allows us to avoid some extra stack allocations . Similarly, we make `Bytes32` and `Bytes48` type aliases rather than structs as this fits better with the new `rust_eth_kzg` API.


Co-Authored-By: Mac L <mjladson@pm.me>
2026-03-11 05:43:26 +00:00
Eitan Seri-Levi
2bb79f43aa Update contribution guidlines regarding LLM usage (#8879)
Co-Authored-By: Eitan Seri- Levi <eserilev@gmail.com>
2026-03-10 17:43:59 +00:00
Romeo
906400ed34 Implement proposer lookahead endpoint (#8815)
closes #8809


  Implement GET /eth/v1/beacon/states/{state_id}/proposer_lookahead ([beacon-APIs#565](https://github.com/ethereum/beacon-APIs/pull/565)). Returns the proposer lookahead from Fulu+ states; 400 for pre-Fulu. Includes integration test.


Co-Authored-By: romeoscript <romeobourne211@gmail.com>

Co-Authored-By: Tan Chee Keong <tanck@sigmaprime.io>
2026-03-10 13:36:58 +00:00