Ethereum consensus client in Rust
Go to file
ethDreamer e8604757a2 Deposit Cache Finalization & Fast WS Sync (#2915)
## Summary

The deposit cache now has the ability to finalize deposits. This will cause it to drop unneeded deposit logs and hashes in the deposit Merkle tree that are no longer required to construct deposit proofs. The cache is finalized whenever the latest finalized checkpoint has a new `Eth1Data` with all deposits imported.

This has three benefits:

1. Improves the speed of constructing Merkle proofs for deposits as we can just replay deposits since the last finalized checkpoint instead of all historical deposits when re-constructing the Merkle tree.
2. Significantly faster weak subjectivity sync as the deposit cache can be transferred to the newly syncing node in compressed form. The Merkle tree that stores `N` finalized deposits requires a maximum of `log2(N)` hashes. The newly syncing node then only needs to download deposits since the last finalized checkpoint to have a full tree.
3. Future proofing in preparation for [EIP-4444](https://eips.ethereum.org/EIPS/eip-4444) as execution nodes will no longer be required to store logs permanently so we won't always have all historical logs available to us.

## More Details

Image to illustrate how the deposit contract merkle tree evolves and finalizes along with the resulting `DepositTreeSnapshot`
![image](https://user-images.githubusercontent.com/37123614/151465302-5fc56284-8a69-4998-b20e-45db3934ac70.png)

## Other Considerations

I've changed the structure of the `SszDepositCache` so once you load & save your database from this version of lighthouse, you will no longer be able to load it from older versions.

Co-authored-by: ethDreamer <37123614+ethDreamer@users.noreply.github.com>
2022-10-30 04:04:24 +00:00
.github Ensure protoc is installed for release CI (#3621) 2022-10-03 23:09:25 +00:00
account_manager Builder Specs v0.2.0 (#3134) 2022-07-30 00:22:37 +00:00
beacon_node Deposit Cache Finalization & Fast WS Sync (#2915) 2022-10-30 04:04:24 +00:00
book Book spelling and grammar corrections (#3659) 2022-10-28 03:23:50 +00:00
boot_node Update discv5 (#3171) 2022-10-28 05:40:06 +00:00
common Deposit Cache Finalization & Fast WS Sync (#2915) 2022-10-30 04:04:24 +00:00
consensus Deposit Cache Finalization & Fast WS Sync (#2915) 2022-10-30 04:04:24 +00:00
crypto Update discv5 (#3171) 2022-10-28 05:40:06 +00:00
database_manager Deposit Cache Finalization & Fast WS Sync (#2915) 2022-10-30 04:04:24 +00:00
lcli Release v3.2.1 (#3660) 2022-10-26 09:38:25 +00:00
lighthouse Update discv5 (#3171) 2022-10-28 05:40:06 +00:00
scripts Ensure protoc is installed for release CI (#3621) 2022-10-03 23:09:25 +00:00
slasher Modularise slasher backend (#3443) 2022-08-15 01:30:56 +00:00
testing Update discv5 (#3171) 2022-10-28 05:40:06 +00:00
validator_client Deposit Cache Finalization & Fast WS Sync (#2915) 2022-10-30 04:04:24 +00:00
.dockerignore Exclude EE build dirs from Docker context (#3174) 2022-05-09 23:43:31 +00:00
.editorconfig Add editorconfig template 2019-03-11 15:09:57 +11:00
.gitignore Allow setting web3signer version through environment (#3368) 2022-07-27 03:20:01 +00:00
.gitmodules Replace EF tests submodule with a makefile 2019-09-08 04:19:54 +10:00
bors.toml bors: require slasher and syncing sim tests (#3645) 2022-10-19 22:55:50 +00:00
Cargo.lock Deposit Cache Finalization & Fast WS Sync (#2915) 2022-10-30 04:04:24 +00:00
Cargo.toml Remove fallback support from eth1 service (#3594) 2022-10-04 08:33:39 +00:00
CONTRIBUTING.md Book spelling and grammar corrections (#3659) 2022-10-28 03:23:50 +00:00
Cross.toml Ensure protoc is installed for release CI (#3621) 2022-10-03 23:09:25 +00:00
Dockerfile Libp2p v0.48.0 upgrade (#3547) 2022-09-29 01:50:11 +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 Add maxperf build profile (#3608) 2022-09-29 06:13:33 +00:00
README.md Changed http:// to https:// on mailing list link (#3610) 2022-09-29 06:13:35 +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).