Ethereum consensus client in Rust
Go to file
Divma f4ffa9e0b4 Handle processing results of non faulty batches (#3439)
## Issue Addressed
Solves #3390 

So after checking some logs @pawanjay176 got, we conclude that this happened because we blacklisted a chain after trying it "too much". Now here, in all occurrences it seems that "too much" means we got too many download failures. This happened very slowly, exactly because the batch is allowed to stay alive for very long times after not counting penalties when the ee is offline. The error here then was not that the batch failed because of offline ee errors, but that we blacklisted a chain because of download errors, which we can't pin on the chain but on the peer. This PR fixes that.

## Proposed Changes

Adds a missing piece of logic so that if a chain fails for errors that can't be attributed to an objectively bad behavior from the peer, it is not blacklisted. The issue at hand occurred when new peers arrived claiming a head that had wrongfully blacklisted, even if the original peers participating in the chain were not penalized.

Another notable change is that we need to consider a batch invalid if it processed correctly but its next non empty batch fails processing. Now since a batch can fail processing in non empty ways, there is no need to mark as invalid previous batches.

Improves some logging as well.

## Additional Info

We should do this regardless of pausing sync on ee offline/unsynced state. This is because I think it's almost impossible to ensure a processing result will reach in a predictable order with a synced notification from the ee. Doing this handles what I think are inevitable data races when we actually pause sync

This also fixes a return that reports which batch failed and caused us some confusion checking the logs
2022-08-12 00:56:38 +00:00
.github Linkcheck fix (#3452) 2022-08-11 10:08:36 +00:00
account_manager Builder Specs v0.2.0 (#3134) 2022-07-30 00:22:37 +00:00
beacon_node Handle processing results of non faulty batches (#3439) 2022-08-12 00:56:38 +00:00
book fix: incorrectly formatted MEV link in Lighthouse Book (#3434) 2022-08-09 06:05:17 +00:00
boot_node Release v2.5.1 (#3406) 2022-08-03 04:23:09 +00:00
common lighthouse_version: Fix version string regex (#3451) 2022-08-11 07:50:32 +00:00
consensus Remove some "wontfix" TODOs for the merge (#3449) 2022-08-10 13:06:46 +00:00
crypto crypto/bls: make blst dependency optional (#3387) 2022-08-08 23:56:59 +00:00
database_manager Use async code when interacting with EL (#3244) 2022-07-03 05:36:50 +00:00
lcli Add support for beaconAPI in lcli functions (#3252) 2022-08-09 06:05:13 +00:00
lighthouse Serve Bellatrix preset in BN API (#3425) 2022-08-10 07:52:59 +00:00
scripts Builder Specs v0.2.0 (#3134) 2022-07-30 00:22:37 +00:00
slasher Use async code when interacting with EL (#3244) 2022-07-03 05:36:50 +00:00
testing Update invalid head tests (#3400) 2022-08-05 23:41:09 +00:00
validator_client Serve Bellatrix preset in BN API (#3425) 2022-08-10 07:52:59 +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 Add merge support to simulator (#3292) 2022-07-18 23:15:40 +00:00
Cargo.lock Serve Bellatrix preset in BN API (#3425) 2022-08-10 07:52:59 +00:00
Cargo.toml Remove builder redundancy (#3294) 2022-07-01 01:15:19 +00:00
CONTRIBUTING.md [Contribution docs] Add GitPOAP Badge to Display Number of Minted GitPOAPs for Contributors (#3343) 2022-08-09 02:27:04 +00:00
Cross.toml Update Cross config for v0.2.2 (#3286) 2022-06-29 04:50:36 +00:00
Dockerfile docker rust version update (#3353) 2022-07-20 18:18:25 +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 Ignore RUSTSEC-2022-0040 - owning_ref soundness (#3415) 2022-08-02 23:20:52 +00:00
README.md Remove build status badge from README (#3195) 2022-05-20 05:02:14 +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).