Go to file
Joel Rousseau ac8811afac
Add missed blocks to monitored validators (#4731)
* add missed_block metric

* init missed_block in constructor

* declare beaconproposercache in ValidatorMonitor

* refacto proposer_shuffling_decision_root to use epoch instead of current.epoch

* imple new proposer_shuffling_decision_root in callers

* push missed_blocks

* prune missed_blocks

* only add to hashmap if it's a monitored validator

* remove current_epoch dup + typos

* extract in func

* add prom metrics

* checkpoint is not only epoch but slot as well

* add safeguard if we start a new chain at slot 0

* clean

* remove unnecessary negative value for a slot

* typo in comment

* remove unused current_epoch

* share beacon_proposer_cache between validator_monitor and beacon_chain

* pass Hash256::zero()

* debug objects

* fix loop: lag is at the head

* sed s/get_slot/get_epoch

* fewer calls to cache.get_epoch

* fix typos

* remove cache first call

* export TYPICAL_SLOTS_PER_EPOCH and use it in validator_monitor

* switch to gauge & loop over missed_blocks hashset

* fix subnet_service tests

* remove unused var

* clean + fix nits

* add beacon_proposer_cache + validator_monitor in builder

* fix store_tests

* fix builder tests

* add tests

* add validator monitor set of tests

* clean tests

* nits

* optimise imports

* lint

* typo

* added self.aggregatable

* duplicate proposer_shuffling_decision_root

* remove duplication in passing beacon_proposer_cache

* remove duplication in passing beacon_proposer_cache

* using indices

* fmt

* implement missed blocks total

* nits

* avoid heap allocation

* remove recursion limit

* fix lint

* Fix valdiator monitor builder pattern

Unify validator monitor config struct

* renaming metrics

* renaming metrics in validator monitor

* add log if there's a missing validator index

* consistent log

* fix loop

* better loop

* move gauge to counter

* fmt

* add error message

* lint

* fix prom metrics

* set gauge to 0 when non-finalized epochs

* better wording

* remove hash256::zero in favour of block_root

* fix gauge total label

* fix last missed block validator

* Add `MissedBlock` struct

* Fix comment

* Refactor non-finalized block loop

* Fix off-by-one

* Avoid string allocation

* Fix compile error

* Remove non-finalized blocks metric

* fix func clojure

* remove unused variable

* remove unused DEFAULT_INDIVIDUAL_TRACKING_THRESHOLD

* remove unused DEFAULT_INDIVIDUAL_TRACKING_THRESHOLD in builder

* add validator index depending on the fork name

* typos

---------

Co-authored-by: Paul Hauner <paul@paulhauner.com>
2023-11-09 15:05:14 +11: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 restore cargo vendor in test suite (#4886) 2023-10-27 10:21:47 +00:00
account_manager Merge unstable 20230925 into deneb-free-blobs. 2023-09-26 10:32:18 +10:00
beacon_node Add missed blocks to monitored validators (#4731) 2023-11-09 15:05:14 +11:00
book Add commmand for pruning states (#4835) 2023-11-03 00:12:19 +00:00
boot_node Remove serde derive references (#4830) 2023-10-11 13:01:30 -04:00
common Block v3 endpoint (#4629) 2023-11-03 00:12:18 +00:00
consensus Add missed blocks to monitored validators (#4731) 2023-11-09 15:05:14 +11:00
crypto Activate clippy::manual_let_else lint (#4889) 2023-10-31 10:31:02 +00:00
database_manager Add commmand for pruning states (#4835) 2023-11-03 00:12:19 +00:00
lcli Upgrade to v1.4.0-beta.3 (#4862) 2023-10-21 13:49:27 +00:00
lighthouse Add missed blocks to monitored validators (#4731) 2023-11-09 15:05:14 +11:00
scripts Merge unstable 20230925 into deneb-free-blobs. 2023-09-26 10:32:18 +10:00
slasher Activate clippy::manual_let_else lint (#4889) 2023-10-31 10:31:02 +00:00
testing Block v3 endpoint (#4629) 2023-11-03 00:12:18 +00:00
validator_client Activate clippy::manual_let_else lint (#4889) 2023-10-31 10:31:02 +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 Activate clippy::manual_let_else lint (#4889) 2023-10-31 10:31:02 +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).