-
Notifications
You must be signed in to change notification settings - Fork 1.1k
eip7805: make variable name more coherent #4505
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
+2
−2
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
jtraglia
approved these changes
Aug 14, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ha, no worries. I'm good with nitpick PRs. Thanks!
b3cb6b7
to
5db8457
Compare
Rose2161
pushed a commit
to Rose2161/consensus-specs
that referenced
this pull request
Aug 18, 2025
* Fix a small bug in a pending consolidation test (#4217) * Update fork trigger sections (#4208) * Use consistent note style (#4224) * Remove outdated paragraph about ExecutionPayloadV4 in electra (#4221) * Add missing section headers to fulu spec (#4223) * Replace some instances of "extended" with "modified" (#4225) * Add Distributed Blob Publishing to Fulu networking spec (#4183) * Add distributed blob publishing section to Fulu p2p interface spec. # Conflicts: # specs/deneb/p2p-interface.md * Apply suggestions from code review Co-authored-by: Lion - dapplion <[email protected]> * Apply suggestions from code review Co-authored-by: Justin Traglia <[email protected]> Co-authored-by: fradamt <[email protected]> * Fix lint * Fix lint. * Add new line before list * Clarify columns that clients must publish to in Distributed Publishing. * add function to retrieve sidecars from both block and sidecar * fix lint * fix lint again * fix tests * Fix tests & nits * Fix more nits * Address review comment. * clarify language Co-authored-by: Alex Stokes <[email protected]> --------- Co-authored-by: Lion - dapplion <[email protected]> Co-authored-by: Justin Traglia <[email protected]> Co-authored-by: fradamt <[email protected]> Co-authored-by: fradamt <[email protected]> Co-authored-by: Justin Traglia <[email protected]> Co-authored-by: Alex Stokes <[email protected]> * Use finalized state for Fulu validator custody (#4211) In `get_validators_custody_requirement`, use the latest finalized state as `BeaconState` instead of the current beacon state. * State that effective balance should be used (#4218) * Bump version to v1.5.0-beta.4 (#4236) * Round down value when setting validator's effective balance (#4229) * Add full_pending_withdrawals_but_first_skipped_* tests (#4237) * Add multiple_pending_deposits_same_pubkey_different_signature test (#4238) * Add withdrawal_and_consolidation_effective_balance_updates test (#4239) * Bump actions/setup-python from 5.4.0 to 5.5.0 in the actions group (#4242) Bumps the actions group with 1 update: [actions/setup-python](https://github.com/actions/setup-python). Updates `actions/setup-python` from 5.4.0 to 5.5.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/42375524e23c412d93fb67b49958b491fce71c38...8d9ed9ac5c53483de85588cdf95a591a75ab9f55) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 5.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump the actions group with 3 updates (#4241) * Bump the actions group with 3 updates Bumps the actions group with 3 updates: [setuptools](https://github.com/pypa/setuptools), [flake8](https://github.com/pycqa/flake8) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `setuptools` from 78.0.2 to 78.1.0 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v78.0.2...v78.1.0) Updates `flake8` from 7.1.2 to 7.2.0 - [Commits](https://github.com/pycqa/flake8/compare/7.1.2...7.2.0) Updates `mkdocs-material` from 9.6.9 to 9.6.10 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.9...9.6.10) --- updated-dependencies: - dependency-name: setuptools dependency-version: 78.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: flake8 dependency-version: 7.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mkdocs-material dependency-version: 9.6.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> * Fix lint --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Traglia <[email protected]> * close outdated issues (#4231) * Adds test that affects the proposer selection (#4230) * Change in balance affects proposer selection * move test to phase0 * lint imports * improve comment * brute force proposer change * Remove helper function --------- Co-authored-by: Justin Traglia <[email protected]> * Use `mdformat` for markdown formatting (#4244) * Replace skip footnote with html block * Remove unnecessary duration columns * Add mdformat to pyproject * Start to use mdformat-toc * Remove table of contents headers * Fix empty header * Finally, run mdformat * Remove doctoc from CI * Fix issue with eip7732 * Error if linter changes something in CI * Use black for linting tests directory (#4245) * Remove flake8 & run black on tests * Run make lint --------- Co-authored-by: Justin Traglia <[email protected]> * Add two consolidation request processing edge case tests (#4246) * Fix the full consolidation queue test (#4248) * Bump the actions group with 3 updates (#4249) Bumps the actions group with 3 updates: [marko](https://github.com/frostming/marko), [pytest-cov](https://github.com/pytest-dev/pytest-cov) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `marko` from 2.1.2 to 2.1.3 - [Release notes](https://github.com/frostming/marko/releases) - [Changelog](https://github.com/frostming/marko/blob/master/CHANGELOG.md) - [Commits](https://github.com/frostming/marko/compare/v2.1.2...v2.1.3) Updates `pytest-cov` from 6.0.0 to 6.1.1 - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.0.0...v6.1.1) Updates `mkdocs-material` from 9.6.10 to 9.6.11 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.10...9.6.11) --- updated-dependencies: - dependency-name: marko dependency-version: 2.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: pytest-cov dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mkdocs-material dependency-version: 9.6.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add EIP-7805 fork version/epoch to the configs (#4250) * Update WS period computation for Electra (#4179) * Add `withdrawal_requests_when_pending_withdrawal_queue_is_full` test (#4252) * Clean up electra presets (#4254) * feat: schedule electra for mainnet (#4258) * Test consolidation with same source and target (#4259) * Bump version to v1.5.0-beta.5 (#4260) * Bump actions/setup-python from 5.4.0 to 5.5.0 in the actions group (#4242) Bumps the actions group with 1 update: [actions/setup-python](https://github.com/actions/setup-python). Updates `actions/setup-python` from 5.4.0 to 5.5.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/42375524e23c412d93fb67b49958b491fce71c38...8d9ed9ac5c53483de85588cdf95a591a75ab9f55) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 5.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump the actions group with 3 updates (#4241) * Bump the actions group with 3 updates Bumps the actions group with 3 updates: [setuptools](https://github.com/pypa/setuptools), [flake8](https://github.com/pycqa/flake8) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `setuptools` from 78.0.2 to 78.1.0 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v78.0.2...v78.1.0) Updates `flake8` from 7.1.2 to 7.2.0 - [Commits](https://github.com/pycqa/flake8/compare/7.1.2...7.2.0) Updates `mkdocs-material` from 9.6.9 to 9.6.10 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.9...9.6.10) --- updated-dependencies: - dependency-name: setuptools dependency-version: 78.1.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: flake8 dependency-version: 7.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mkdocs-material dependency-version: 9.6.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> * Fix lint --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Traglia <[email protected]> * Adds test that affects the proposer selection (#4230) * Change in balance affects proposer selection * move test to phase0 * lint imports * improve comment * brute force proposer change * Remove helper function --------- Co-authored-by: Justin Traglia <[email protected]> * Use `mdformat` for markdown formatting (#4244) * Replace skip footnote with html block * Remove unnecessary duration columns * Add mdformat to pyproject * Start to use mdformat-toc * Remove table of contents headers * Fix empty header * Finally, run mdformat * Remove doctoc from CI * Fix issue with eip7732 * Error if linter changes something in CI * Use black for linting tests directory (#4245) * Remove flake8 & run black on tests * Run make lint --------- Co-authored-by: Justin Traglia <[email protected]> * Add two consolidation request processing edge case tests (#4246) * Fix the full consolidation queue test (#4248) * Bump the actions group with 3 updates (#4249) Bumps the actions group with 3 updates: [marko](https://github.com/frostming/marko), [pytest-cov](https://github.com/pytest-dev/pytest-cov) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `marko` from 2.1.2 to 2.1.3 - [Release notes](https://github.com/frostming/marko/releases) - [Changelog](https://github.com/frostming/marko/blob/master/CHANGELOG.md) - [Commits](https://github.com/frostming/marko/compare/v2.1.2...v2.1.3) Updates `pytest-cov` from 6.0.0 to 6.1.1 - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.0.0...v6.1.1) Updates `mkdocs-material` from 9.6.10 to 9.6.11 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.10...9.6.11) --- updated-dependencies: - dependency-name: marko dependency-version: 2.1.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: pytest-cov dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mkdocs-material dependency-version: 9.6.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add EIP-7805 fork version/epoch to the configs (#4250) * Update WS period computation for Electra (#4179) * Add `withdrawal_requests_when_pending_withdrawal_queue_is_full` test (#4252) * Clean up electra presets (#4254) * feat: schedule electra for mainnet (#4258) * Test consolidation with same source and target (#4259) * Bump version to v1.5.0-beta.5 (#4260) * Cleanup presets and configs (#4256) * Delete unnecessary blank lines * Remove more unnecessary blank lines * Use consistent title/order for rewards and penalties * Add some units * Various improvements * Split up deneb presets appropriately * Clean up fulu presets * Fix nits * Rename eip7732 preset files * Remove deprecated presets * Random config changes * More configs cleanup * Fix more phase0 stuff * Various cleanups * Go with Ben's year * Fix eip7732 kzg commitment inclusion proof depth (#4264) * Update inclusion proof depth for mainnet * Disable two fork-choice tests for now * Remove unused is_previous_epoch_justified function (#4269) * Disable parallelism with make test if a test name is specified (#4270) * Simplify specification tables in main readme (#4271) * Do a major clean up of the main readme (#4272) * Add various tests cases for electra (#4265) * Bump the actions group with 2 updates (#4273) * Allow skipping verification for blobs from EL (#4262) * EIP7805: Use MAX_TRANSACTIONS_PER_PAYLOAD for InclusionList transactions size (#4220) * Update config/preset files for EIP7805 (#4268) * Add eip7805 presets * Move params to presets * Move IL committee domain to constant (#4276) * Add workflow to run nightly mainnet tests (#4280) * Fix bug in electra withdrawals processing (#4281) * Fix a couple broken links (#4279) * Bump the actions group with 3 updates (#4282) Bumps the actions group with 3 updates: [setuptools](https://github.com/pypa/setuptools), [pathos](https://github.com/uqfoundation/pathos) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `setuptools` from 78.1.0 to 79.0.0 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v78.1.0...v79.0.0) Updates `pathos` from 0.3.3 to 0.3.4 - [Release notes](https://github.com/uqfoundation/pathos/releases) - [Commits](https://github.com/uqfoundation/pathos/compare/0.3.3...0.3.4) Updates `mkdocs-material` from 9.6.11 to 9.6.12 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.11...9.6.12) --- updated-dependencies: - dependency-name: setuptools dependency-version: 79.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: pathos dependency-version: 0.3.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: mkdocs-material dependency-version: 9.6.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Improve DataColumnSidecarsByRoot request (#4284) * Mark electra as stable (#4285) * Fix some small, unrelated nits * Remove electra work-in-progress notes * Move electra to stable table * Add two new custody group tests (#4290) * Remove unnecessary sort in `compute_columns_for_custody_group` (#4289) The output is already sorted, no need to sort it again. * Bump actions/setup-python from 5.5.0 to 5.6.0 in the actions group (#4293) Bumps the actions group with 1 update: [actions/setup-python](https://github.com/actions/setup-python). Updates `actions/setup-python` from 5.5.0 to 5.6.0 - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/8d9ed9ac5c53483de85588cdf95a591a75ab9f55...a26af69be951a213d495a4c3e4e4022e16d87065) --- updated-dependencies: - dependency-name: actions/setup-python dependency-version: 5.6.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump setuptools from 79.0.0 to 80.0.0 in the actions group (#4292) Bumps the actions group with 1 update: [setuptools](https://github.com/pypa/setuptools). Updates `setuptools` from 79.0.0 to 80.0.0 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v79.0.0...v80.0.0) --- updated-dependencies: - dependency-name: setuptools dependency-version: 80.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Make `*_REQUESTS_PER_PAYLOAD` the same for mainnet/minimal (#4291) * Add ability to run generators for specific tests (#4288) * Add test_case argument when running generator targets. Add same argument to the general test generator. Skip generating a test if test_case was provided and it does not match. * Add fork-list and preset-list arguments when running generator targets. Update case_list argument to --case-list, for consistenty with fork and preset names. Have these list arguments actually support providing lists. * Fix: Check correct variable for forks' print statement. Add print statement for cases too. * Update generator README for new arguments. * Update README to include gen_all in the docs for the new filtering. * Fix linting issues. * Fix example indentation --------- Co-authored-by: Justin Traglia <[email protected]> * Remove deprecated testing infrastructure (#4294) * deprecate custody game tests * deprecate sharding tests * add ignore to Makefile * fix imports * remove DAS phase * remove sharding TODOs and mention * create deprecated state functions for sharding * linting changes * remove deprecated tests * remove other references * Revert "add ignore to Makefile" This reverts commit 5cc55f62643ca4a2d938714766f71aa3e8e5aa39. * Update ELECTRA_FORK_EPOCH in fork.md * Bump the actions group with 2 updates (#4299) Bumps the actions group with 2 updates: [setuptools](https://github.com/pypa/setuptools) and [pylint](https://github.com/pylint-dev/pylint). Updates `setuptools` from 80.0.0 to 80.3.1 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v80.0.0...v80.3.1) Updates `pylint` from 3.3.6 to 3.3.7 - [Release notes](https://github.com/pylint-dev/pylint/releases) - [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.6...v3.3.7) --- updated-dependencies: - dependency-name: setuptools dependency-version: 80.3.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: pylint dependency-version: 3.3.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Ensure presets/configs for yaml/spec match (#4297) * Add checks to ensure presets/configs for yaml/spec match * Simplify * Clean up generator runner (#4301) * Clean up generator runner * Fix mistake * Fix mistake when doing multiprocessing * Refactor `kzg_7594` generator (#4296) * Refactor `kzg_4844` generator (#4300) * Fix two mistakes when refactoring the `kzg_4844` generator (#4302) * Deprecate BlobSidecarsByRange/Root in Fulu (#4286) * Bump version to v1.5.0 (#4303) * Refactor bls generator (#4304) * Improve generator UX (#4309) * Refactor `gen_runner` (#4310) * Fix typos in blob configuration comments for fulu presets (#4311) * Introduce blob schedule (#4277) * Bump the actions group with 2 updates (#4312) * Clarification on custody sampling (#4251) * Nits on custody sampling * Update specs/fulu/das-core.md Co-authored-by: fradamt <[email protected]> * Update SAMPLES_PER_SLOT * Not specifying the unit of samples Co-authored-by: fradamt <[email protected]> --------- Co-authored-by: fradamt <[email protected]> * Simplify reference test generators (#4317) * Fix assert in `run_get_committee_assignment` (#4315) * Wrap lines at 80 characters in all markdown files * Generate reference tests for EIP7732 & EIP7805 (#4319) * Use latest version of uv when creating the venv (#4325) * Fix link to das-core in fulu validator specs (#4324) * Do import sorting with isort (#4327) * Fix phase run decorator to skip EIP-7732 as intended (#4326) * Update `isort` to `order_by_type = false` (#4328) * Bump version to 1.6.0-alpha.0 (#4329) * Add to epoch processing tests generation states before and after full epoch processing (#4155) * State that reconstructed sidecars which are not custodied may be deleted (#4332) * Clarify node behavior when validator custody changes (#4320) * Bind inputs in ssz_generic reftests (#4333) * Bump the actions group with 3 updates Bumps the actions group with 3 updates: [pycryptodome](https://github.com/Legrandin/pycryptodome), [setuptools](https://github.com/pypa/setuptools) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `pycryptodome` from 3.22.0 to 3.23.0 - [Release notes](https://github.com/Legrandin/pycryptodome/releases) - [Changelog](https://github.com/Legrandin/pycryptodome/blob/master/Changelog.rst) - [Commits](https://github.com/Legrandin/pycryptodome/compare/v3.22.0...v3.23.0) Updates `setuptools` from 80.4.0 to 80.7.1 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v80.4.0...v80.7.1) Updates `mkdocs-material` from 9.6.13 to 9.6.14 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.13...9.6.14) --- updated-dependencies: - dependency-name: pycryptodome dependency-version: 3.23.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: setuptools dependency-version: 80.7.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mkdocs-material dependency-version: 9.6.14 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> * Run linting on pysetup directory (#4335) * Delete unnecessary eth2spec/eip7732/__init__.py file (#4336) * Bump the actions group with 4 updates Bumps the actions group with 4 updates: ruamel-yaml, [setuptools](https://github.com/pypa/setuptools), [pytest-xdist](https://github.com/pytest-dev/pytest-xdist) and [mdformat-gfm-alerts](https://github.com/kyleking/mdformat-gfm-alerts). Updates `ruamel-yaml` from 0.18.10 to 0.18.11 Updates `setuptools` from 80.7.1 to 80.8.0 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v80.7.1...v80.8.0) Updates `pytest-xdist` from 3.6.1 to 3.7.0 - [Release notes](https://github.com/pytest-dev/pytest-xdist/releases) - [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.6.1...v3.7.0) Updates `mdformat-gfm-alerts` from 1.0.1 to 1.0.2 - [Release notes](https://github.com/kyleking/mdformat-gfm-alerts/releases) - [Commits](https://github.com/kyleking/mdformat-gfm-alerts/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: ruamel-yaml dependency-version: 0.18.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: setuptools dependency-version: 80.8.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: pytest-xdist dependency-version: 3.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mdformat-gfm-alerts dependency-version: 1.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> * Allow custom arg parser in test generators (#4339) * Markdown to SpecObject refactoring (#4330) * Remove deneb/electra from blob schedule and default to electra limit (#4341) * Set blob schedule to an empty list (#4342) * Fix handling of multiple Python definitions in code blocks (#4344) * Updated minimum python version to 3.10 (#4345) Co-authored-by: Justin Traglia <[email protected]> * Bump version to v1.6.0-alpha.1 (#4347) * Update default shell to bail on error (#4349) * Run linter on setup.py (#4348) * Bump the actions group with 4 updates (#4355) Bumps the actions group with 4 updates: ruamel-yaml, [setuptools](https://github.com/pypa/setuptools), [pytest](https://github.com/pytest-dev/pytest) and [mypy](https://github.com/python/mypy). Updates `ruamel-yaml` from 0.18.11 to 0.18.12 Updates `setuptools` from 80.8.0 to 80.9.0 - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v80.8.0...v80.9.0) Updates `pytest` from 8.3.5 to 8.4.0 - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.3.5...8.4.0) Updates `mypy` from 1.15.0 to 1.16.0 - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.15.0...v1.16.0) --- updated-dependencies: - dependency-name: ruamel-yaml dependency-version: 0.18.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: setuptools dependency-version: 80.9.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: pytest dependency-version: 8.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mypy dependency-version: 1.16.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add repo input to reftest generator action (#4356) * EIP-7917: Deterministic proposer lookahead (#4190) * Validator custody: Increase only and optional dynamic backfill. (#4357) * Replace black/pylint/isort with ruff (#4350) * Delete unnecessary container comments (#4358) * Run linter on code in markdown files (#4359) * EIP-7917: Refactor return types from List to Vector (#4361) * Increase mainnet tests timeout to 12 hours (#4362) * Use python 3.13 in CI actions (#4363) * Fix epoch processing tests for proposer lookahead (#4364) * Alias new test to blocks handler (#4365) * Fix a few things in setup.py (#4360) * Detect errors in reference test generator action (#4366) * Bump version to v1.6.0-alpha.2 (#4368) * Suggest using getBlobsV2 to get blobs/proofs * Use getPayloadV5 * Bump the actions group with 3 updates (#4372) * Define requirements for the blob schedule (#4370) * CGC: Update before Fulu (#4373) * Modify fork digest to distinguish BPO forks + add entry to ENR (#4354) * Introduce Status v2 with `earliest_available_slot` (#4374) * Release v1.6.0-alpha.2 (#4367) * Delete unnecessary container comments (#4358) * Run linter on code in markdown files (#4359) * EIP-7917: Refactor return types from List to Vector (#4361) * Increase mainnet tests timeout to 12 hours (#4362) * Use python 3.13 in CI actions (#4363) * Fix epoch processing tests for proposer lookahead (#4364) * Alias new test to blocks handler (#4365) * Fix a few things in setup.py (#4360) * Detect errors in reference test generator action (#4366) * Bump version to v1.6.0-alpha.2 (#4368) * Suggest using getBlobsV2 to get blobs/proofs * Use getPayloadV5 * Bump the actions group with 3 updates (#4372) * Define requirements for the blob schedule (#4370) * CGC: Update before Fulu (#4373) * Modify fork digest to distinguish BPO forks + add entry to ENR (#4354) * Introduce Status v2 with `earliest_available_slot` (#4374) --------- Co-authored-by: Lin Oshitani <[email protected]> Co-authored-by: Leo Lara <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Manu NALEPA <[email protected]> Co-authored-by: Alex Stokes <[email protected]> Co-authored-by: raulk <[email protected]> * Add fork version to compute fork digest test cases (#4376) * Do not wrap long lines in `config.yaml` files (#4379) Spec configs follow a YAML subset that does not involve linebreaks, to avoid requiring client implementations to include a full YAML lib. When Ruamel YAML was updated recently, the default settings changed and certain tests started to emit `config.yaml` with linebreaks. By setting Ruamel config `width` to a larger value, previous behaviour is restored. * EIP-7917: Add test for proposer lookahead excluding exited validators * Add more proposer lookahead tests * Bump the actions group with 4 updates (#4385) Bumps the actions group with 4 updates: [marko](https://github.com/frostming/marko), [py-ecc](https://github.com/ethereum/py_ecc), [pytest-cov](https://github.com/pytest-dev/pytest-cov) and [mypy](https://github.com/python/mypy). Updates `marko` from 2.1.3 to 2.1.4 - [Release notes](https://github.com/frostming/marko/releases) - [Changelog](https://github.com/frostming/marko/blob/master/CHANGELOG.md) - [Commits](https://github.com/frostming/marko/compare/v2.1.3...v2.1.4) Updates `py-ecc` from 7.0.1 to 8.0.0 - [Release notes](https://github.com/ethereum/py_ecc/releases) - [Changelog](https://github.com/ethereum/py_ecc/blob/main/docs/release_notes.rst) - [Commits](https://github.com/ethereum/py_ecc/compare/v7.0.1...v8.0.0) Updates `pytest-cov` from 6.1.1 to 6.2.1 - [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.1.1...v6.2.1) Updates `mypy` from 1.16.0 to 1.16.1 - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.16.0...v1.16.1) --- updated-dependencies: - dependency-name: marko dependency-version: 2.1.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: py-ecc dependency-version: 8.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: pytest-cov dependency-version: 6.2.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: mypy dependency-version: 1.16.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix yields in new proposer lookahead test (#4386) * Add fork choice compliance test generator (#3831) * Replace ast.unparse() with custom parsing (#4387) * Combine helpers into compute_time_at_slot (#4388) * Add execution_requests to fulu.GetPayloadResponse (#4389) * Add jtraglia's spec viewer to the readme (#4392) * Fix test_effective_decrease_balance_updates_lookahead reftest (#4395) * Remove dead attestation generation code (#4396) * Align master with dev after v1.6.0-alpha.2 release mistake (#4397) * Delete unnecessary container comments (#4358) * Run linter on code in markdown files (#4359) * EIP-7917: Refactor return types from List to Vector (#4361) * Increase mainnet tests timeout to 12 hours (#4362) * Use python 3.13 in CI actions (#4363) * Fix epoch processing tests for proposer lookahead (#4364) * Alias new test to blocks handler (#4365) * Fix a few things in setup.py (#4360) * Detect errors in reference test generator action (#4366) * Bump version to v1.6.0-alpha.2 (#4368) * Suggest using getBlobsV2 to get blobs/proofs * Use getPayloadV5 * Bump the actions group with 3 updates (#4372) * Define requirements for the blob schedule (#4370) * CGC: Update before Fulu (#4373) * Modify fork digest to distinguish BPO forks + add entry to ENR (#4354) * Introduce Status v2 with `earliest_available_slot` (#4374) --------- Co-authored-by: Lin Oshitani <[email protected]> Co-authored-by: Leo Lara <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Manu NALEPA <[email protected]> Co-authored-by: Alex Stokes <[email protected]> Co-authored-by: raulk <[email protected]> * Use get_blob_parameters in gossip block validation * Add nightly workflow to deal with stale issues/PRs * Bump version to v1.6.0-alpha.3 * Bump the actions group with 2 updates (#4405) * Bump the actions group with 2 updates Bumps the actions group with 2 updates: [pytest](https://github.com/pytest-dev/pytest) and [ruff](https://github.com/astral-sh/ruff). Updates `pytest` from 8.4.0 to 8.4.1 - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.4.0...8.4.1) Updates `ruff` from 0.11.13 to 0.12.0 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.11.13...0.12.0) --- updated-dependencies: - dependency-name: pytest dependency-version: 8.4.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: actions - dependency-name: ruff dependency-version: 0.12.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions ... Signed-off-by: dependabot[bot] <[email protected]> * Fix imports --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Justin Traglia <[email protected]> * Correct the docstrings for `process_execution_payload` tests with blobs (#4408) * Fix formatting for Capella preset (#4411) * Add support for automated releases (#4409) * Remove unnecessary config overrides in test (#4410) * Remove peer sampling in Fulu (#4393) * Add some clarifications around new ENR changes (#4406) * Clarify peering expectations when `nfd` values are different (#4407) * `DataColumnSidecarsByRoot`: Serve for finalized epochs. (#4394) * Test proposer lookahead initialization uses active validator set at fork (#4413) * Add PeerDAS tests (#4391) * Update release documentation (#4416) * Run mdformat on all markdown files (#4417) * Convert DAS providers section to supernodes section (#4415) * Fix sanity test steps in release action (#4418) * Fix sanity test steps in release action (#4419) * Remove blobs/proofs from new PeerDAS forkchoice tests (#4421) * Increase release action timeout to 24 hours (#4423) * In the release action, disable sanity checks & remove sudo (#4425) * In the release action, add back sudo (#4428) * Remove broken link from README (#4431) In #4317 the test generators were moved and the README was deleted. * Remove duplicate "the" words in comments (#4430) Description: Fix duplicate word "the" in test comments for consolidation process in test_process_consolidation_request.py. * Add IL committee assignment and IL signature tests (#4435) This PR adds EIP-7805 tests that are agnostic to the upcoming spec changes. `get_attester_head` is changed for the sake of spec tests. In the real world, `on_block` is called before `get_attester_head`, guaranteeing the existence of `head_block`. However, in spec tests, many of attestation tests run attestation functions directly without calling `on_block`. The gimmick of fetching `head_block` only when it's necessary avoids failure in such cases. * Remove empty sections and unify Protocols section name (#4436) * Fix mutable default argument anti-pattern for Random objects (#4433) For the previous release ([commit](https://github.com/ethereum/consensus-spec-tests/commit/0fd545b2ba739479082680e3d0683bf91f8164f8)), I noticed that many of the test files were different. I found that we were using `rng=Random(...)` in function declarations which will not work like we want. The core issue is that default arguments are evaluated once when the function is defined, not each time it's called. So when we use `rng=Random(...)` in a function declaration, that same `Random` object instance gets shared across all function calls, accumulating state changes. For reference, see [Mutable Default Arguments](https://docs.python-guide.org/writing/gotchas/#mutable-default-arguments). I tested this by running the following multiple times, confirming that the hash was the same each time: ```bash rm -rf ../consensus-spec-tests make reftests preset=minimal find ../consensus-spec-tests -type f -exec sha256sum {} + | sort | sha256sum ``` To be clear, the next release's diff will be large, but the next next release's diff will be small 😄 * Improve the release action (#4432) * Add gloas section in preparation for that. * Remove invalid `sort-by: number` configuration. * Re-enable the two sanity tests (minimal & mainnet tests). * Add a new version check to ensure tag matches the version file. * Bump the actions group across 1 directory with 3 updates (#4434) * Make updates to reflect default master branch (#4437) * Update links to the `dev` branch. * Set `master` as the default branch in workflows. * Update release instructions to reflect change. * Replace outdated instance of csc with cgc (#4444) * Bump the actions group with 2 updates (#4442) Bumps the actions group with 2 updates: [mypy](https://github.com/python/mypy) and [ruff](https://github.com/astral-sh/ruff). * Fix broken links in markdown files (#4441) * Resolve TODOs and Improve EIP-7805 (FOCIL) Spec (#4351) This PR resolves TODOs and improves the honest validator section of EIP-7805 spec. It contains minimal test changes and rest of tests will be added by the subsequent PR. * Move inclusion list specs to new `inclusion-list.md` file (#4446) This PR adds `inclusion-list.md` as [suggested](https://github.com/ethereum/consensus-specs/pull/4351#pullrequestreview-3023153485) in the previous PR. `inclusion-list.md` encapsulates `InclusionListStore` and inclusion list handling logic. Fork-choice store interacts with IL store via functions defined in `inclusion-list.md`, leveraging this abstraction. This can be considered as adding another module that is responsible of inclusion list. To represent some of the relationship between the fork-choice module and others in a simple diagram, it would look like this: [Beacon chain] — [Fork-choice] — [Inclusion list]. * Make commitment deduplication in `verify_cell_kzg_proof_batch` deterministic (#4447) We found a small issue w.r.t. the deduplication of commitments in `verify_cell_kzg_proof_batch`: ```python # Create the list of deduplicated commitments we are dealing with deduplicated_commitments = [ bytes_to_kzg_commitment(commitment_bytes) for commitment_bytes in set(commitments_bytes) ] ``` In short, using `set` to remove the duplicates is wrong as sets are unordered objects: ```python >>> a = [1, 3, 2, 1] >>> list(set(a)) [1, 2, 3] ``` Because of that, between runs, `deduplicated_commitments` will be different and so `commitment_indices`. The issue here is that the Fiat-Shamir challenge is computed by taking this arguments and hashing them together: ```python def verify_cell_kzg_proof_batch_impl( commitments: Sequence[KZGCommitment], commitment_indices: Sequence[CommitmentIndex], cell_indices: Sequence[CellIndex], cosets_evals: Sequence[CosetEvals], proofs: Sequence[KZGProof], ) -> bool: ... # Step 1: Compute a challenge r and its powers r^0, ..., r^{num_cells-1} r = compute_verify_cell_kzg_proof_batch_challenge( commitments, commitment_indices, cell_indices, cosets_evals, proofs ) ... ``` so, if between runs they change due to the non-deterministic deduplication, so does the challenge. This breaks Fiat-Shamir because if the prover generates a challenge $c_i$ and the verifier generates $c_j$ so that $c_i != c_j$ for the same set of inputs $S$, then proofs won't be able to be verified, even if "correct". Right now this is not an issue as this is used in PeerDAS as an optimization, not like the usual two-parties setup we find in ZK. However, for correctness, this should be addressed, as the specs are "formally" wrong as of now. * Make several updates to EIP-7732 spec (#4438) This PR updates EIP-7732 in several places. It should be read commit by commit. The list of commits is as follows - Add a Builder withdrawal prefix `0x03` which is a compounding validator, allow any validator to self-build for a zero value, but only 0x03 validators to build for others. - Remove all PTC reward logic and keep the beacon committee as pre-7732. - Add slot to the execution payload envelope (makes implementation easier) - Remove the payload status enumeration and simply use a boolean in the PTCAttestation object. - Update the payment mechanism from a direct transfer of validator balance to a withdrawal to a specific execution layer address (a fee recipient). - Use the attestation data index field to signal payload availability in attestations. - Fix all tests This PR does not update the forkchoice logic, that will come on a separate PR perhaps from @fradamt * Align section headers in `fork-choice.md` for EIP-7805 (#4449) * Add script to check for inconsistent fork comments (#4448) This PR adds a script (and CI check with calls the script) which identifies "fork comments" (the [New in Fork] and [Modified in Fork] comments) and ensures the following consistencies: * Fork comments with EIPs must not have a dash. * Just the way we do things. I think it's to match the python constant, which cannot have dashes. * Fork comments must use one of the approved actions. * The two actions are "New" and "Modified"; "Updated" is not allowed. * Fork comments must be on a standalone line; not inline comments. * The reason this matters is because the linter will break long lines which is very ugly. * Fix `KZG_COMMITMENT_INCLUSION_PROOF_DEPTH_EIP7732` (#4451) Got this error when generating test vectors last night. The mainnet value was wrong. ``` Exception: invalid inputs length: 22, vector length is: 21 ``` * Update EIP-7732 fork-choice (#4450) This PR: - Reverts the fork-choice to today's behavior in terms of boost (proposer boost = 40, no other boosts), and by removing (block, slot) voting - Starting from today's fork-choice, it allows for decoupled beacon block and payload by working on a tree of `ForkChoiceNode`s instead of blocks. - A `ForkChoiceNode` has `(root, payload_status)`, where `payload_status` is either `PENDING`, `EMPTY` or `FULL`. Pending is for the beacon block *before making a decision on the payload*, the other two for the payload decision. As long as a `PENDING` `ForkChoiceNode` is chosen by `get_head`, the corresponding beacon block is part of the canonical chain, though the payload may or may not be part of it. - `FULL` and `EMPTY` are considered children of the `PENDING` `ForkChoiceNode`, so all weight from the `EMPTY` and `FULL` variants is inherited by the `PENDING` variant. - the `FULL` variant is only considered if the payload is locally available (is imported in `store.execution_payload_states`, which requires satisfying `is_data_available`) - When running `get_head`, we alternate choosing between beacon blocks, i.e., `PENDING` `ForkChoiceNode`s, and then making a a decision about the `EMPTY` and `FULL` children of the current beacon block: ``` (B, PENDING) ├── (B, EMPTY) └── (B, FULL) (B, PENDING) ├─→ (B, EMPTY) │ ├─→ (C, PENDING) │ │ ├─→ (C, EMPTY) │ │ └─→ (C, FULL) │ └─→ (D, PENDING) └X→ (B, FULL) (unavailable) ``` - Still,`get_head` remains nearly identical to today, by adding a `get_fork_choice_children` function that substitutes the current explicit choice of children of the current `head` and abstracts away the alternating logic of choosing between empty/full payloads and actual beacon blocks - `LatestMessage`s are augmented with a `payload_present` boolean recording the payload presence indicated by (the overloading of) `data.index` (set to `data.index == 1`). This is useful when `data.slot > block.slot`, when the attestation expresses an opinion on the payload's presence, as it tells us whether to assign weight to the `EMPTY` or `FULL` variant (which also trickles down to the `PENDING` variant since they are children of it), whereas it is irrelevant when `data.slot == block.slot` (and should always be set to `False` because `data.index` can only be `0` then) - `should_extend_payload` handles the remaining decision, about the payload status of a block *from the previous slot*, when we don't have any regular attestations *with information about the payload*. If the payload is locally available, the `FULL` variant is chosen: - Whenever a majority of the PTC has voted for it - If the current proposer has extended anything but the EMPTY variant In other words, the next proposer is allowed to reorg the previous payload only if it receives less than half of the PTC votes, and otherwise we always default to FULL --------- Co-authored-by: Justin Traglia <[email protected]> Co-authored-by: Potuz <[email protected]> * Clarify payload envelope construction in EIP-7732 (#4454) - Add specification on constructing `slot` and `execution_requests` in execution payload envelope - Remove spec related to `payload_withheld` --------- Co-authored-by: Justin Traglia <[email protected]> * Add missing new/modified prefixes to eip7732 functions (#4455) For consistency, we should state if these functions are new or modified. * Fix duplicate function call (#4460) This removes the duplicate calls to `process_withdrawals` and `process_execution_payload_header` * eip7732: add becoming builder section (#4456) * In `get_custody_groups`, skip computation if all groups are custodied (#4459) A simple optimization which doesn't change anything, but worth mentioning because not all clients do this. For supernodes which custody everything, we can skip computing the list of custody groups and return the full range of groups. Given that there is quite a bit of hashing involved, this isn't exactly free. Thanks to @nalepae for suggesting this. * eip7732: update self build condition (#4464) For self builder (ie `builder_index == block.proposer_index`), the amount should be zero otherwise builder prefix is required * Store blob schedule as a VariableDefinition in the pyspec (#4469) We forgot to store the blob schedule as a `VariableDefinition` here. This didn't really affect anything internally, but it prevented this config variable from being correctly parsed by outside tooling (eg the consensus specifications viewer). * Bump the actions group with 3 updates (#4471) Bumps the actions group with 3 updates: [ruff](https://github.com/astral-sh/ruff), [rich](https://github.com/Textualize/rich) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material). * eip7732: fix builder pending withdrawals processing (#4470) I think `process_withdrawals` slice assignment logic is off: ```python state.builder_pending_withdrawals[:processed_builder_withdrawals_count] = [ w for w in state.builder_pending_withdrawals[:processed_builder_withdrawals_count] if not is_builder_payment_withdrawable(state, w) ] ``` The left side creates a slice of exactly N items, but the filtered list comprehension on the right could produce fewer items I think what should have happened is `processed_builder_withdrawals_count` tracks how many withdrawals were processed from the queue (regardless of success), and we should remove exactly that many items from the front of the queue. This is similar to how `processed_partial_withdrawals_count` work * Fast test_full_attestations_one_validator_one_gwei (#4462) Fixes https://github.com/ethereum/consensus-specs/issues/4318 Now it takes seconds. Before merging we need to consider: + With this version the one gwei validator is not the only validator. + As one gwei makes it less likely to be chosen for the committee, with a different pseudo-random seed this test could fail. The previous version would never fail because the one gwei validator was the only one, so it was warrantied to be part of the committee. However, the previous version could take arbitrary time depending on the pseudo-random seed. So this approach has its pros and cons with respect to previous version. * eip7732: remove duplicate merge transition complete testing section (#4478) * Update EIP-7732: Add boolean to PayloadAttestationData (#4473) This is just a placeholder EIP to have the right data structure. This change should entail changes in the following places but those can only be made after rebasing on top of Fulu and #3510 - The honest validator guide should include two separate deadlines for the PTC, on payload available and data available. - The honest validator guide should give instructions on how to set the new data available flag to true if the data was available at the last deadline and set the payload available flag if the payload was available at the first deadline - Forkchoice should update `get_proposer_head` with the payload and data timeliness flags. * Add EIP-7916 ProgressiveList specs and tests (#4445) EIP-7916 defines a new SSZ type for lists of unknown length. Historically, we used List[type, N] with very large N values for this: - This wastes hashes, as log(N) hashes are still required even if only a single item is present. This is especially bad when nesting lists. - Generalized indices break, as is what happened when the Attestation count got reduced in Electra, introducing maintenance burden to apps that possibly involves security countil for upgrading smart contracts. This PR adds specs and tests for EIP-7916 which fixes these issues, making the new list type available to EIP implementations in _features. - https://eips.ethereum.org/EIPS/eip-7916 * Improve some eip7732 p2p gossip validations (#4474) * Simplify some statements. * Move `header.builder_index` check before withdrawal creds check. * Fix `header.value` check; clarify that it's excess balance & `MIN_ACTIVATION_BALANCE` not `MIN_BUILDER_BALANCE`. * Fix joined list item for `header.parent_block_root`. * eip7732: add process execution payload header tests (#4457) * eip7732: add process payload att tests (#4463) This PR adds the following payload attestation tests - Valid basic attestations (payload present/not present) - Partial PTC participation - Invalid beacon block root/slot timing - Invalid signatures and edge cases * eip7732: fix a typo in builder.md (#4483) This PR fixes a typo `state.last_block_hash` to `state.latest_block_hash`. * eip7732: fix quorum calc to avoid double-counting (#4481) * Use frozendict with list-of-records (#4486) It was like this before but somehow got removed. When there's a non-empty blob schedule, entries must be a frozendict so that it can be hashed. * Bump the actions group with 2 updates (#4487) Bumps the actions group with 2 updates: [mypy](https://github.com/python/mypy) and [ruff](https://github.com/astral-sh/ruff). * Make NUMBER_OF_COLUMNS a preset (#4485) [As discussed on discord](https://discord.com/channels/595666850260713488/1401858592264552501), `NUMBER_OF_COLUMNS` should be a preset, not a configuration value. It's technically an alias of `CELLS_PER_EXT_BLOB` (preset) which is used in KZG libraries. I've also added the latter to the preset files as well so that it is more clear that it's an alias. * eip7805: remove unnecessary equivocation filter (#4492) This PR removes unnecessary equivocation filter. The idea was to make sure we don't include any ILs from equivocators but `process_inclusion_list` already handles this requirement. (See L17 of `process_inclusion_list`.) * Add EIP-7916 ProgressiveBitlist specs and tests (#4480) This follows up on #4445 to extend EIP-7916 support for bitlists, making the `ProgressiveBitlist` type available to implementations in _features. - https://eips.ethereum.org/EIPS/eip-7916 * eip7805: fix cutoff config typo (#4490) This PR fixes cutoff config typo. * Make PTC selection balance-weighted (#4488) 1. The first commit changes the sampling logic in `get_ptc` to be balance weighted, for security reasons (see discord discussion starting [here](https://discord.com/channels/595666850260713488/874767108809031740/1400916536197251082)). Unlike for sync-committees and proposers, it doesn't use a new shuffle to select candidate indices to which a balance-weighted acceptance probability is applied. Instead, to minimize computational load, it just reuses the existing committee shuffle, starting from the committees of the PTC's `slot` and moving forward from there (wrapping around if necessary). 2. The second commit refactors all functions that do balance weighted sampling, through helpers `compute_balance_weighted_selection` and `compute_balance_weighted_acceptance`: - `compute_balance_weighted_acceptance` takes care of the balance-weighted acceptance (whether a candidate index is accepted or not, with probability proportional to its balance) - `compute_balance_weighted_selection` takes care of the whole selection process, going over the given `indices` and selecting them with balance-weighted probability until the required number has been selected. It has a parameter `shuffle_indices` which indicates whether `indices` should be shuffled or not. This is `False` for the PTC, since we are just reusing the existing shuffle 3. The other commits remove `state.latest_full_slot`, which is unused after the introduction of `state.execution_payload_availability`, and fixes a small mistake in `fork-choice.md` If people think the refactor is unnecessary, we could just go with the first commit. On the one end, the refactor might make it a bit more annoying to change the selection logic for just some of these in the future. On the other hand, there is currently a lot of code duplication and lack of readability, and `get_ptc` is in particular quite hard to understand because there's a lot going on in it. Another option could be a smaller refactor with just `compute_balance_weighted_acceptance`, which should be much less likely to be customized by different selection processes (whereas `compute_balance_weighted_selection` already has some customization with `shuffle_indices`, and there's other possibilities like fixed size or not) * Bump version to v1.6.0-alpha.4 (#4494) * Disable payload attestation tests on mainnet (#4495) These are currently broken. Will disable on mainnet for now, so I can make a release. * eip7732: do not deduplicate `indexed_payload_attestations` (#4496) `attesting_indices` for a payload attestation should be able to contain duplicate indices if the PTC does (which it can, as of #4488), to verify an aggregate signature/pubkey that contains some signature/pubkey multiple times. This is also the behavior for sync committees, as opposed to including a single signature/pubkey even for duplicate indices, and having to deal with duplication more explicitly (e.g. `aggregation_bits` could be less than `PTC_SIZE`, counting would have to be with multiplicity). Tests are fixed by making `prepare_signed_payload_attestation` deal with duplicates in `attesting_indices` when setting `aggregation_bits`, by enforcing 1 index = 1 bit set (if a validator index appears `n` times in the PTC but only `m < n` in `attesting_indices`, only `m` bits are set) * Replace INTERVALS_PER_SLOT with explicit slot component times (#4476) This PR is an alternative to #3510. * Deprecate `SECONDS_PER_SLOT` in favor of `SLOT_DURATION_MS`. * Deprecate `INTERVALS_PER_SLOT` in favor of config vars in basis points. Instead of presets in millisecond units, this PR defines slot component durations (eg `ATTESTATION_DUE_BPS`) with config variables where the unit is basis points (a common way to describe percentages). This will make it easier to test different slot times and fine-tune slot component durations. To test a different slot time, change `SLOT_DURATION_MS` and the component times will automatically adjust since they are percentages of `SLOT_DURATION_MS`. * Organize configuration sections & add missing comments (#4497) * `MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA` & `MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT` should have been in the validator cycle section. * There should have been a deneb section for `MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT`. * The comment for `ATTESTATION_SUBNET_COUNT` was wrong. * Add missing comments for newer upgrades (including Fulu). * Remove time conversion comments from configs/presets (#4498) Now that we're considering changing the slot duration (EIP7782), we should remove time conversion comments (eg 256 epochs is ~27 hours) so these aren't misleading. My other changes are little nits, mostly for consistency. * Bump the actions group with 3 updates (#4499) Bumps the actions group with 3 updates: [marko](https://github.com/frostming/marko), [deepdiff](https://github.com/seperman/deepdiff) and [ruff](https://github.com/astral-sh/ruff). * eip7732: use correct late block cutoff time in proposer boost tests (#4501) These three tests were failing under the mainnet preset. The issue is that we were using `ATTESTATION_DUE_BPS` instead of `ATTESTATION_DUE_BPS_EIP7732` in eip7732. * eip7805: rebase spec onto fulu (#4502) This PR sets EIP7805's previous fork to Fulu & makes other necessary changes. PS: It also makes the `is_data_available` comment consistent across all specs. * eip7805: make variable name more coherent (#4505) * eip7732: rebase spec onto fulu (#4503) This PR rebases eip7732 specs from electra to fulu. It also fixes a few small inconsistencies I noticed while reviewing. Mainnet tests pass too: <img width="916" height="354" alt="image" src="https://github.com/user-attachments/assets/7479ae8f-a0a5-450b-9ce1-a65f6bcbe254" /> * eip7732: add tests for builder pending payments processing (#4475) --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Justin Traglia <[email protected]> Co-authored-by: Gabriel Astieres <[email protected]> Co-authored-by: Jimmy Chen <[email protected]> Co-authored-by: Lion - dapplion <[email protected]> Co-authored-by: fradamt <[email protected]> Co-authored-by: fradamt <[email protected]> Co-authored-by: Justin Traglia <[email protected]> Co-authored-by: Alex Stokes <[email protected]> Co-authored-by: Manu NALEPA <[email protected]> Co-authored-by: NC <[email protected]> Co-authored-by: Tyler <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: JihoonSong <[email protected]> Co-authored-by: Mikhail Kalinin <[email protected]> Co-authored-by: Barnabas Busa <[email protected]> Co-authored-by: Ben Edgington <[email protected]> Co-authored-by: Derek Guenther <[email protected]> Co-authored-by: Mehdi AOUADI <[email protected]> Co-authored-by: Cypher Pepe <[email protected]> Co-authored-by: Michel Simonot <[email protected]> Co-authored-by: Wenceslas Sanchez <[email protected]> Co-authored-by: SunnysidedJ <[email protected]> Co-authored-by: Leo Lara <[email protected]> Co-authored-by: Pop Chunhapanya <[email protected]> Co-authored-by: Alex Vlasov <[email protected]> Co-authored-by: Lin Oshitani <[email protected]> Co-authored-by: raulk <[email protected]> Co-authored-by: Etan Kissling <[email protected]> Co-authored-by: Agnish Ghosh <[email protected]> Co-authored-by: Potuz <[email protected]> Co-authored-by: CrazyFrog <[email protected]> Co-authored-by: kilavvy <[email protected]> Co-authored-by: nethoxa <[email protected]> Co-authored-by: Toni Wahrstätter <[email protected]> Co-authored-by: terence <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
My nitpick cooldown is up :p