Skip to content

[r3.5] execution: build payloads until the slot they are for - #23102

Open
lystopad wants to merge 1 commit into
release/3.5from
feature/lystopad/cp-23098-to-3.5
Open

[r3.5] execution: build payloads until the slot they are for#23102
lystopad wants to merge 1 commit into
release/3.5from
feature/lystopad/cp-23098-to-3.5

Conversation

@lystopad

@lystopad lystopad commented Aug 7, 2026

Copy link
Copy Markdown
Member

Cherry-pick of #23098 to release/3.5.

r3.5-specific adaptations

NewBlockBuilder differs on this branch: it uses syncCond and a terminated channel where main uses a done channel, and Stop() takes no context. Only the signature change (maxBuildTimeSecs uint64maxBuildTime time.Duration) was applied — the branch's own builder internals are untouched. buildDuration and its tests are byte-identical to #23098.

A payload builder stopped after a fixed fraction of a slot, measured from
when the attributes arrived. A consensus layer may send attributes well
ahead of the slot the payload is for and then call getPayload against the
cached payload id without sending fresh attributes, in which case the
builder has already stopped and returns a payload missing every
transaction that arrived in between.

Derive the budget from the payload's own timestamp instead, so the
builder survives until shortly into the target slot however early it was
asked. Floor it at the previous fixed budget so a late request is no
worse off, and cap it so an implausible timestamp cannot pin a builder
and its resources.
@lystopad lystopad self-assigned this Aug 7, 2026
@lystopad
lystopad enabled auto-merge August 7, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant