Skip to content

Introduce separate payload availability deadline - #5212

Merged
jtraglia merged 7 commits into
ethereum:masterfrom
potuz:dual_deadlines
May 15, 2026
Merged

Introduce separate payload availability deadline#5212
jtraglia merged 7 commits into
ethereum:masterfrom
potuz:dual_deadlines

Conversation

@potuz

@potuz potuz commented May 6, 2026

Copy link
Copy Markdown
Contributor

In the current forkchoice algorithm, if a payload is available timely but its execution takes longer than the remaining time into the slot, the next proposer is forced to reorg the payload (it did not have time to import the payload) while attesters that finish executing the payload manage to reorg it.

This allows for builders to perform an ex-ante reorg of the next proposer by releasing a payload right before the PTC deadline, making sure that the average execution time of the payload is between the remaining time of the slot and before the next attestation deadline.

The preferred method to prevent this is to set the gas limit in a manner as to which to make it impossible for these payloads to exist. This however imposes conditions on how late the PTC deadline must be. The later the PTC deadline, the smaller the gas limit that the protocol can handle. At the same time, the earlier the PTC deadline, the smaller the blob data throughput that the protocol can handle.

This simple PR enforces the mechanism proposed by @ethDreamer by which PTC attesters record the timeliness of the payload (here set to 50% of the slot) but only send the payload attestation at the deadline (today set at 75% of the slot).

@github-actions github-actions Bot added the gloas label May 6, 2026
@brech1 brech1 changed the title Use different deadlines for payload and blob data availability. Use different deadlines for payload and blob data availability May 6, 2026
@jtraglia

Copy link
Copy Markdown
Member

For the record, @potuz wants there to be a different availability deadline value in this PR. But at ACDC we agreed to use the same deadline as now. So let's merge this with the same deadline and follow up with a PR to tweak it later.

@jtraglia jtraglia changed the title Use different deadlines for payload and blob data availability Introduce separate payload availability deadline May 15, 2026
@jtraglia
jtraglia merged commit e4cf086 into ethereum:master May 15, 2026
15 checks passed
barnabasbusa added a commit to ethpandaops/ethereum-genesis-generator that referenced this pull request May 16, 2026
## Summary

Aligns the CL config template with consensus-specs `v1.7.0-alpha.8`. The
release
([changelog](https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-alpha.8))
lands a mostly spec-internal set of changes; only two land in the YAML
configs:

- **`MIN_BUILDER_WITHDRAWABILITY_DELAY`** — mainnet raised from `64` to
`8192` epochs
([consensus-specs#5223](ethereum/consensus-specs#5223)).
Minimal preset stays at `2`.
- **`PAYLOAD_DUE_BPS`** — new field, `7500` bps in both presets
([consensus-specs#5212](ethereum/consensus-specs#5212),
_Introduce separate payload availability deadline_). Exposed through the
env-var indirection so testnets can override it.

Verified locally with `.github/check-consensus-spec-values.py` against
upstream `mainnet.yaml` and `minimal.yaml` from the `v1.7.0-alpha.8` tag
— both report `all 63 comparable spec fields match`.

## Test plan
- [x] Render template with mainnet defaults and diff against upstream
`mainnet.yaml` @ v1.7.0-alpha.8
- [x] Render template with minimal overrides and diff against upstream
`minimal.yaml` @ v1.7.0-alpha.8
- [ ] Boot a CL client (lighthouse/teku/prysm/lodestar/nimbus/grandine)
against the new config to confirm none reject the new `PAYLOAD_DUE_BPS`
or the raised `MIN_BUILDER_WITHDRAWABILITY_DELAY`
barnabasbusa added a commit to ethpandaops/ethereum-package that referenced this pull request May 16, 2026
## Summary

Mirrors
[ethpandaops/ethereum-genesis-generator#293](ethpandaops/ethereum-genesis-generator#293)
and brings the package in line with consensus-specs `v1.7.0-alpha.8`
([release
notes](https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-alpha.8)).

Only two upstream changes touch the YAML configs:

- **`MIN_BUILDER_WITHDRAWABILITY_DELAY`** — mainnet default raised from
`64` to `8192` epochs
([consensus-specs#5223](ethereum/consensus-specs#5223)).
Minimal preset stays at `2`. The README docs were already drifted (said
`4096`), so they're corrected here too.
- **`PAYLOAD_DUE_BPS`** — new field, `7500` bps in both presets
([consensus-specs#5212](ethereum/consensus-specs#5212),
_Introduce separate payload availability deadline_). Added as a
configurable `network_params` entry (default `7500`) so devnets can
override it.

Also bumps the default ethereum-genesis-generator image from `6.0.6` to
`6.0.7` (the patch release that carries the upstream changes).

## Test plan
- [ ] `kurtosis run --enclave alpha8 . --args-file gloas_genesis.yaml` —
confirm the rendered CL config contains the new `PAYLOAD_DUE_BPS: 7500`
and `MIN_BUILDER_WITHDRAWABILITY_DELAY: 8192`
- [ ] Validate that omitting `payload_due_bps` from a user-provided
network_params still works (default fallback)
- [ ] Validate that overriding `payload_due_bps` in network_params
propagates into the rendered config
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants