Skip to content

Conversation

@michaelsproul
Copy link
Member

Issue Addressed

The beacon API spec wasn't updated to use the Fulu definition of dependent_root for the proposer duties endpoint. No other client updated their logic, so to retain backwards compatibility the decision has been made to continue using the block root at the end of epoch N - 1, and introduce a new v2 endpoint down the track to use the correct dependent root.

Eth R&D discussion: https://discord.com/channels/595666850260713488/598292067260825641/1433036715848765562

Proposed Changes

Change the behaviour of the v1 endpoint back to using the last slot of N - 1 rather than the last slot of N - 2. This introduces the possibility of dependent root false positives (the root can change without changing the shuffling), but causes the least compatibility issues with other clients.

@michaelsproul michaelsproul added HTTP-API v8.0.0 Q4 2025 Fusaka Mainnet Release labels Oct 30, 2025
@michaelsproul michaelsproul added the ready-for-review The code is ready for review label Nov 3, 2025
epoch: Epoch,
head_block_root: Hash256,
) -> Result<Hash256, Error> {
let decision_slot = epoch.saturating_sub(1u64).end_slot(E::slots_per_epoch());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is fine, but just want to note that the previous logic uses min_seed_lookahead, but no live network modifies this config

// Pre-Fulu the proposer shuffling decision slot for epoch N is the slot at the end of
// epoch N - 1 (note: +1 -1 for min_seed_lookahead=1 in all current configs).
epoch
.saturating_add(Epoch::new(1))
.saturating_sub(self.min_seed_lookahead)
.start_slot(E::slots_per_epoch())
.saturating_sub(1_u64)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh yeah good point. Should be OK seeing as we plan to deprecate v1 proposer duties at Glamsterdam

Copy link
Member

@jimmygchen jimmygchen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me!

@jimmygchen jimmygchen added ready-for-merge This PR is ready to merge. and removed ready-for-review The code is ready for review labels Nov 3, 2025
@mergify mergify bot added the queued label Nov 3, 2025
mergify bot added a commit that referenced this pull request Nov 3, 2025
@jimmygchen
Copy link
Member

@mergify dequeue

@mergify
Copy link

mergify bot commented Nov 3, 2025

This pull request has been removed from the queue for the following reason: pull request dequeued.

Pull request #8335 has been dequeued by a dequeue command.

You should look at the reason for the failure and decide if the pull request needs to be fixed or if you want to requeue it.
If you do update this pull request, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio requeue comment.

@mergify
Copy link

mergify bot commented Nov 3, 2025

dequeue

✅ The pull request has been removed from the queue default

@mergify mergify bot added dequeued and removed queued labels Nov 3, 2025
jimmygchen added a commit to jimmygchen/lighthouse that referenced this pull request Nov 3, 2025
Squashed commit of the following:

commit 258c13b
Author: Michael Sproul <[email protected]>
Date:   Thu Oct 30 17:32:14 2025 +1100

    Fix broken test

commit f5368c8
Author: Michael Sproul <[email protected]>
Date:   Thu Oct 30 13:52:33 2025 +1100

    Use legacy dependent root in v1 proposer duties endpoint

commit e88ffd1
Author: Michael Sproul <[email protected]>
Date:   Thu Oct 30 13:06:07 2025 +1100

    Start working on backwards compat
@jimmygchen jimmygchen mentioned this pull request Nov 3, 2025
jimmygchen added a commit to jimmygchen/lighthouse that referenced this pull request Nov 3, 2025
Squashed commit of the following:

commit 258c13b
Author: Michael Sproul <[email protected]>
Date:   Thu Oct 30 17:32:14 2025 +1100

    Fix broken test

commit f5368c8
Author: Michael Sproul <[email protected]>
Date:   Thu Oct 30 13:52:33 2025 +1100

    Use legacy dependent root in v1 proposer duties endpoint

commit e88ffd1
Author: Michael Sproul <[email protected]>
Date:   Thu Oct 30 13:06:07 2025 +1100

    Start working on backwards compat
@jimmygchen
Copy link
Member

@Mergifyio requeue

@mergify
Copy link

mergify bot commented Nov 3, 2025

requeue

✅ The queue state of this pull request has been cleaned. It can be re-embarked automatically

@mergify mergify bot added queued and removed dequeued labels Nov 3, 2025
mergify bot added a commit that referenced this pull request Nov 3, 2025
@mergify mergify bot merged commit 4908687 into sigp:release-v8.0 Nov 3, 2025
37 checks passed
@mergify mergify bot removed the queued label Nov 3, 2025
mergify bot pushed a commit that referenced this pull request Nov 4, 2025
N/A

Includes the following unmerged PRs:
- #8344
- #8335
- #8339

This PR should be merged after all above PRs are merged.


  


Co-Authored-By: Jimmy Chen <[email protected]>

Co-Authored-By: Jimmy Chen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

HTTP-API ready-for-merge This PR is ready to merge. v8.0.0 Q4 2025 Fusaka Mainnet Release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants