mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-03 00:31:50 +00:00
This pull request introduces workflows and updates to ensure reproducible builds for the Lighthouse project. It adds two GitHub Actions workflows for building and testing reproducible Docker images and binaries, updates the `Makefile` to streamline reproducible build configurations, and modifies the `Dockerfile.reproducible` to align with the new build process. Additionally, it removes the `reproducible` profile from `Cargo.toml`. ### New GitHub Actions Workflows: * [`.github/workflows/docker-reproducible.yml`](diffhunk://#diff-222af23bee616920b04f5b92a83eb5106fce08abd885cd3a3b15b8beb5e789c3R1-R145): Adds a workflow to build and push reproducible multi-architecture Docker images for releases, including support for dry runs without pushing an image. ### Build Configuration Updates: * [`Makefile`](diffhunk://#diff-76ed074a9305c04054cdebb9e9aad2d818052b07091de1f20cad0bbac34ffb52L85-R143): Refactors reproducible build targets, centralizes environment variables for reproducibility, and updates Docker build arguments for `x86_64` and `aarch64` architectures. * [`Dockerfile.reproducible`](diffhunk://#diff-587298ff141278ce3be7c54a559f9f31472cc5b384e285e2105b3dee319ba31dL1-R24): Updates the base Rust image to version 1.86, removes hardcoded reproducibility settings, and delegates build logic to the `Makefile`. * Switch to using jemalloc-sys from Debian repos instead of building it from source. A Debian version is [reproducible](https://tests.reproducible-builds.org/debian/rb-pkg/trixie/amd64/jemalloc.html) which is [hard to achieve](https://github.com/NixOS/nixpkgs/issues/380852) if you build it from source. ### Profile Removal: * [`Cargo.toml`](diffhunk://#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542L289-L295): Removes the `reproducible` profile, simplifying build configurations and relying on external tooling for reproducibility. Co-Authored-By: Moe Mahhouk <mohammed-mahhouk@hotmail.com> Co-Authored-By: chonghe <44791194+chong-he@users.noreply.github.com> Co-Authored-By: Michael Sproul <michaelsproul@users.noreply.github.com>
state_transition_vectors
This crate contains test vectors for Lighthouse state transition functions.
This crate serves two purposes:
- Outputting the test vectors to disk via
make. - Running the vectors against our code via
make test.
Outputting vectors to disk
Whilst we don't actually need to write the vectors to disk to test them, we provide this functionality so we can generate corpra for the fuzzer and also so they can be of use to other clients.
To create the files in ./vectors (directory relative to this crate), run:
make
This will produce a directory structure that looks roughly like this:
vectors
└── exit
├── invalid_bad_signature
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_duplicate
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_exit_already_initiated
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_future_exit_epoch
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_not_active_after_exit_epoch
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_not_active_before_activation_epoch
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_too_young_by_a_lot
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_too_young_by_one_epoch
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── invalid_validator_unknown
│ ├── block.ssz
│ ├── error.txt
│ └── pre.ssz
├── valid_genesis_epoch
│ ├── block.ssz
│ ├── post.ssz
│ └── pre.ssz
└── valid_previous_epoch
├── block.ssz
├── post.ssz
└── pre.ssz