Skip to content

Conversation

pull[bot]
Copy link

@pull pull bot commented Jul 9, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.2)

Can you help keep this open source service alive? 💖 Please sponsor : )

jtraglia and others added 30 commits March 26, 2025 16:53
* 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]>
In `get_validators_custody_requirement`, use the latest finalized state as `BeaconState` instead of the current beacon state.
…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](actions/setup-python@4237552...8d9ed9a)

---
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

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](pypa/setuptools@v78.0.2...v78.1.0)

Updates `flake8` from 7.1.2 to 7.2.0
- [Commits](PyCQA/flake8@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](squidfunk/mkdocs-material@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]>
* 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]>
* 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
* Remove flake8 & run black on tests

* Run make lint

---------

Co-authored-by: Justin Traglia <[email protected]>
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](frostming/marko@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](pytest-dev/pytest-cov@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](squidfunk/mkdocs-material@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>
leolara and others added 28 commits July 30, 2025 11:35
Fixes #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.
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.
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
* 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`.
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
This PR fixes a typo `state.last_block_hash` to
`state.latest_block_hash`.
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.
[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.
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`.)
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
This PR fixes cutoff config typo.
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)
These are currently broken. Will disable on mainnet for now, so I can
make a release.
`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)
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`.
* `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).
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.
…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.
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.
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"
/>
@Rose2161 Rose2161 self-assigned this Aug 18, 2025
@Rose2161 Rose2161 merged commit 8ca38f9 into Rose2161:master Aug 18, 2025
3 of 5 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.