Skip to content

Missed block at an epoch boundary produces a payload with stale withdrawals #187

Description

@jimmygchen

On glamsterdam-devnet-8, builder 1889 won slot 142048, but Teku and Lighthouse rejected its reveal because the withdrawals did not match state. Slot 142047 was missed, and 142048 was the first slot of the next epoch.

At 05:29:33.101 UTC, Buildoor synthesized the 142048 attributes from 142047 and started building. This copied the withdrawals and prev_randao across the epoch boundary. Teku emitted another event for slot 142048 856 ms later. Buildoor did not replace the build because both events used the same beacon and execution parent tuple.

The logs do not contain the Teku event body. If it contained post-transition withdrawals, Buildoor failed to use them. If it contained pre-transition withdrawals, this can indicate a related Teku proposer-preparation bug. The incident has not been reproduced.

Buildoor must not submit copied state-dependent attributes across an epoch boundary. A regression test can cover a missed final epoch slot followed by changed withdrawals.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions