Files
lighthouse/testing/ef_tests
Michael Sproul c754234b2c Fix bugs in proposer calculation post-Fulu (#8101)
As identified by a researcher during the Fusaka security competition, we were computing the proposer index incorrectly in some places by computing without lookahead.


  - [x] Add "low level" checks to computation functions in `consensus/types` to ensure they error cleanly
- [x] Re-work the determination of proposer shuffling decision roots, which are now fork aware.
- [x] Re-work and simplify the beacon proposer cache to be fork-aware.
- [x] Optimise `with_proposer_cache` to use `OnceCell`.
- [x] All tests passing.
- [x] Resolve all remaining `FIXME(sproul)`s.
- [x] Unit tests for `ProtoBlock::proposer_shuffling_root_for_child_block`.
- [x] End-to-end regression test.
- [x] Test on pre-Fulu network.
- [x] Test on post-Fulu network.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
2025-09-26 14:44:50 +00:00
..
2022-10-12 23:40:42 +00:00
2025-09-01 08:56:25 +00:00
2025-06-04 06:34:12 +00:00

Consensus Specification Tests

This crate parses and executes the test vectors at ethereum/consensus-spec-tests.

Functionality is achieved only via the $ cargo test --features ef_tests command.

Running the Tests

Because the test vectors are very large, we do not download or run them by default. To download them, run (in this directory):

$ make

Note: this may download hundreds of MB of compressed archives from the ethereum/consensus-spec-tests, which may expand into several GB of files.

If successful, you should now have the extracted tests in ./consensus-spec-tests.

Run them with:

$ cargo test --features ef_tests

The tests won't run without the ef_tests feature enabled (this is to ensure that a top-level cargo test --all won't fail on missing files).

The following is sometimes necessary to avoid stack overflow issues when running on MacOS:

$ export RUST_MIN_STACK=8388608

When debugging failing tests, it's often useful to disable parallization and output suppression:

$ cargo test --features ef_tests,disable_rayon -- --nocapture

Saving Space

When you download the tests, the downloaded archives will be kept in addition to the extracted files. You have several options for saving space:

  1. Delete the archives (make clean-archives), and keep the extracted files. Suitable for everyday use, just don't re-run make or it will redownload the archives.
  2. Delete the extracted files (make clean-test-files), and keep the archives. Suitable for CI, or temporarily saving space. If you re-run make it will extract the archives rather than redownloading them.
  3. Delete everything (make clean). Good for updating to a new version, or if you no longer wish to run the EF tests.