Ethereum consensus client in Rust
Go to file
Michael Sproul c574f8136e Fix block backfill with genesis skip slots (#4820)
## Issue Addressed

Closes #4817.

## Proposed Changes

- Fill in the linear block roots array between 0 and the slot of the first block (e.g. slots 0 and 1 on Holesky).
- Backport the `--freezer`, `--skip` and `--limit` options for `lighthouse db inspect` from tree-states. This allows us to easily view the database corruption of 4817 using `lighthouse db inspect --network holesky --freezer --column bbr --output values --limit 2`.
- Backport the `iter_column_from` change and `MemoryStore` overhaul from tree-states. These are required to enable `lighthouse db inspect`.
- Rework `freezer_upper_limit` to allow state lookups for slots below the `state_lower_limit`. Currently state lookups will fail until state reconstruction completes entirely.

There is a new regression test for the main bug, but no test for the `freezer_upper_limit` fix because we don't currently support running state reconstruction partially (see #3026). This will be fixed once we merge `tree-states`! In lieu of an automated test, I've tested manually on a Holesky node while it was reconstructing.

## Additional Info

Users who backfilled Holesky to slot 0 (e.g. using `--reconstruct-historic-states`) need to either:

- Re-sync from genesis.
- Re-sync using checkpoint sync and the changes from this PR.

Due to the recency of the Holesky genesis, writing a custom pass to fix up broken databases (which would require its own thorough testing) was deemed unnecessary. This is the primary reason for this PR being marked `backwards-incompat`.

This will create few conflicts with Deneb, which I've already resolved on `tree-states-deneb` and will be happy to backport to Deneb once this PR is merged to unstable.
2023-10-27 05:08:49 +00:00
.cargo Switch allocator to jemalloc (#3697) 2023-01-20 04:19:29 +00:00
.config Reduce nextest threads to 8 (#4846) 2023-10-18 14:19:41 +00:00
.github don't make lcli on self-hosted runners (#4874) 2023-10-25 03:42:23 +00:00
account_manager Merge unstable 20230925 into deneb-free-blobs. 2023-09-26 10:32:18 +10:00
beacon_node Fix block backfill with genesis skip slots (#4820) 2023-10-27 05:08:49 +00:00
book fix docs about --builder (#4754) 2023-10-26 05:23:50 +00:00
boot_node Remove serde derive references (#4830) 2023-10-11 13:01:30 -04:00
common Upgrade to v1.4.0-beta.3 (#4862) 2023-10-21 13:49:27 +00:00
consensus deneb related logging improvements (#4859) 2023-10-25 15:30:17 +00:00
crypto deneb related logging improvements (#4859) 2023-10-25 15:30:17 +00:00
database_manager Fix block backfill with genesis skip slots (#4820) 2023-10-27 05:08:49 +00:00
lcli Upgrade to v1.4.0-beta.3 (#4862) 2023-10-21 13:49:27 +00:00
lighthouse Fix broken Nethermind integration tests (#4836) 2023-10-18 04:08:55 +00:00
scripts Merge unstable 20230925 into deneb-free-blobs. 2023-09-26 10:32:18 +10:00
slasher Enable BLS portable feature on all CI tests (#4868) 2023-10-20 07:30:27 +00:00
testing Upgrade to v1.4.0-beta.3 (#4862) 2023-10-21 13:49:27 +00:00
validator_client Enable BLS portable feature on all CI tests (#4868) 2023-10-20 07:30:27 +00:00
validator_manager Move dependencies to workspace (#4650) 2023-09-22 04:30:56 +00:00
watch Move dependencies to workspace (#4650) 2023-09-22 04:30:56 +00:00
.dockerignore Exclude EE build dirs from Docker context (#3174) 2022-05-09 23:43:31 +00:00
.editorconfig align editorconfig with rustfmt (#4600) 2023-08-14 00:29:44 +00:00
.gitignore Add vendor directory to .gitignore (#4819) 2023-10-18 06:52:51 +00:00
.gitmodules Replace EF tests submodule with a makefile 2019-09-08 04:19:54 +10:00
bors.toml Ultra Fast Super Slick CI (#4755) 2023-10-03 06:33:15 +00:00
Cargo.lock Fix block backfill with genesis skip slots (#4820) 2023-10-27 05:08:49 +00:00
Cargo.toml Merge branch 'unstable' into merge-unstable-to-deneb-20231005 2023-10-05 15:54:44 +11:00
CONTRIBUTING.md Add branching instructions to the contribution guide (#4272) 2023-05-08 12:20:19 +00:00
Cross.toml bump clang in cross.toml (#4602) 2023-08-10 10:58:57 -04:00
Dockerfile Add CARGO_USE_GIT_CLI to the Dockerfile to work around an OOM bug during cross-compiling (#4828) 2023-10-19 05:19:23 +00:00
Dockerfile.cross Use a stable tag for ubuntu in dockerfile (#3231) 2022-05-31 06:09:12 +00:00
LICENSE Update License to Apache 2.0 2019-04-15 16:47:35 +10:00
Makefile Enable BLS portable feature on all CI tests (#4868) 2023-10-20 07:30:27 +00:00
README.md Update blog link in README (#4322) 2023-05-30 01:38:47 +00:00
SECURITY.md Add how users should report security vulnerabilities for this repository (#2562) 2021-09-07 01:54:05 +00:00

Lighthouse: Ethereum consensus client

An open-source Ethereum consensus client, written in Rust and maintained by Sigma Prime.

Book Status Chat Badge

Documentation

Banner

Overview

Lighthouse is:

  • Ready for use on Ethereum consensus mainnet.
  • Fully open-source, licensed under Apache 2.0.
  • Security-focused. Fuzzing techniques have been continuously applied and several external security reviews have been performed.
  • Built in Rust, a modern language providing unique safety guarantees and excellent performance (comparable to C++).
  • Funded by various organisations, including Sigma Prime, the Ethereum Foundation, ConsenSys, the Decentralization Foundation and private individuals.
  • Actively involved in the specification and security analysis of the Ethereum proof-of-stake consensus specification.

Staking Deposit Contract

The Lighthouse team acknowledges 0x00000000219ab540356cBB839Cbe05303d7705Fa as the canonical staking deposit contract address.

Documentation

The Lighthouse Book contains information for users and developers.

The Lighthouse team maintains a blog at lighthouse-blog.sigmaprime.io which contains periodical progress updates, roadmap insights and interesting findings.

Branches

Lighthouse maintains two permanent branches:

  • stable: Always points to the latest stable release.
    • This is ideal for most users.
  • unstable: Used for development, contains the latest PRs.
    • Developers should base their PRs on this branch.

Contributing

Lighthouse welcomes contributors.

If you are looking to contribute, please head to the Contributing section of the Lighthouse book.

Contact

The best place for discussion is the Lighthouse Discord server.

Sign up to the Lighthouse Development Updates mailing list for email notifications about releases, network status and other important information.

Encrypt sensitive messages using our PGP key.

Donations

Lighthouse is an open-source project and a public good. Funding public goods is hard and we're grateful for the donations we receive from the community via:

  • Gitcoin Grants.
  • Ethereum address: 0x25c4a76E7d118705e7Ea2e9b7d8C59930d8aCD3b (donation.sigmaprime.eth).