Skip to content

Conversation

macladson
Copy link
Member

@macladson macladson commented Jul 10, 2025

Proposed Changes

Adds the required boilerplate code for the Gloas (Glamsterdam) hard fork. This allows PRs testing Gloas-candidate features to test fork transition.

This also includes de-duplication of post-Bellatrix readiness notifiers from #6797 (credit to @dapplion)

Additional Info

Not all tests have been updated yet.

@macladson macladson added work-in-progress PR is a work-in-progress gloas labels Jul 10, 2025
@dapplion
Copy link
Collaborator

@macladson can you add this de-duplications?

@michaelsproul
Copy link
Member

Can we resolve conflicts on this and merge?

Might be nice before your types refactor @macladson?

@macladson macladson force-pushed the gloas-boilerplate branch 2 times, most recently from 0cd243f to 710dfb7 Compare August 5, 2025 16:17
@ethDreamer ethDreamer mentioned this pull request Aug 11, 2025
87 tasks
@macladson macladson added ready-for-review The code is ready for review blocked and removed work-in-progress PR is a work-in-progress labels Aug 21, 2025
@macladson
Copy link
Member Author

macladson commented Aug 21, 2025

I have rebased this code onto #7909 to clear up the confusion around payload versioning. I also removed the new versions of get and new_payload and Gloas will just reuse the Fulu ones for now. These aren't too hard to add later when required. As for any missing tests, I think we can just update those as we start adding Gloas content, it's not worth holding off on getting this merged.

Edit: With #7909 merged this is now ready for review

Copy link

mergify bot commented Aug 22, 2025

Some required checks have failed. Could you please take a look @macladson? 🙏

@mergify mergify bot added waiting-on-author The reviewer has suggested changes and awaits thier implementation. ready-for-review The code is ready for review and removed ready-for-review The code is ready for review waiting-on-author The reviewer has suggested changes and awaits thier implementation. labels Aug 22, 2025
@@ -101,6 +101,7 @@ fn reconstruct_default_header_block<E: EthSpec>(
ForkName::Deneb => ExecutionPayloadDeneb::default().into(),
ForkName::Electra => ExecutionPayloadElectra::default().into(),
ForkName::Fulu => ExecutionPayloadFulu::default().into(),
ForkName::Gloas => ExecutionPayloadGloas::default().into(),
Copy link

@shane-moore shane-moore Aug 22, 2025

Choose a reason for hiding this comment

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

Note: Comment below has no impact on this PR. just something we'll have to address in epbs branches, and noting here while reviewing since it's top of mind

When loading blinded blocks from the db, we run reconstruct_default_header_block to get a default ExecutionPayloadHeader. If we expect the db to store blinded blocks for Gloas, then this ForkName::Gloas => ExecutionPayloadGloas::default().into() variant will be hit for creating a default payload, but when we try let header_from_payload = ExecutionPayloadHeader::from(payload.to_ref()); right below it, ExecutionPayloadHeader is no longer supported in gloas, so it will fail.

I haven't thought enough about how the db will be refactored, but my intuition is that we will only store Full beacon blocks post-gloas, so we should be able to move Gloas into the variant:

 ForkName::Base | ForkName::Altair => {
            return Err(Error::PayloadReconstruction(format!(
                "Block with fork variant {} has execution payload",
                fork
            ))
            .into())

@@ -3244,6 +3252,25 @@ pub fn generate_rand_block_and_blobs<E: EthSpec>(
message.body.blob_kzg_commitments = bundle.commitments.clone();
bundle
}
SignedBeaconBlock::Gloas(SignedBeaconBlockGloas {
Copy link

@shane-moore shane-moore Aug 22, 2025

Choose a reason for hiding this comment

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

Note: Comment below has no impact on this PR. just something we'll have to address in epbs branches, and noting here while reviewing since it's top of mind

we removed the gloas variant of generate_rand_block_and_blobs in eip-7732 branch since beacon blocks no longer contain execution payloads or blobs.

The goal of this test seems to be:

  1. Generate a beacon block with blob commitments
  2. Generate corresponding blob sidecars
  3. Link them together with proofs

This won't work in gloas, since the kzg commitments will be revealed along with the ExecutionPayloadEnvelope instead of the BeaconBlock. We should probably make a comment in the epbs branches that we'll need a new test based off this separation

},
},
},
let forks = [

Choose a reason for hiding this comment

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

much cleaner now 🤙

@shane-moore
Copy link

LGTM, all changes seem isolated to gloas variants, so no side effects on current functionality. ofcourse could use a few more sets of 👀

Copy link
Member

@ethDreamer ethDreamer left a comment

Choose a reason for hiding this comment

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

LGTM!

@ethDreamer
Copy link
Member

As Shane mentioned, there are many things in this PR that don't make total sense in the context of block payload separation. So we've been addressing them as they come up in the implementation of Gloas. It doesn't make sense to address them in this PR as it's beyond the scope and will start to cause conflicts with the changes we've already made.

@@ -16,7 +16,7 @@ use types::*;
///
/// This can be deleted once schema versions prior to V22 are no longer supported.
Copy link
Member

@michaelsproul michaelsproul Aug 26, 2025

Choose a reason for hiding this comment

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

We'll be able to delete this once Fulu goes live on mainnet.

i.e. we can avoid making any more Gloas-related changes to this (hopefully).

Copy link
Member

@michaelsproul michaelsproul left a comment

Choose a reason for hiding this comment

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

LGTM, let's merge

@michaelsproul michaelsproul added ready-for-merge This PR is ready to merge. and removed ready-for-review The code is ready for review labels Aug 26, 2025
mergify bot added a commit that referenced this pull request Aug 26, 2025
@mergify mergify bot merged commit e438691 into sigp:unstable Aug 26, 2025
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gloas ready-for-merge This PR is ready to merge.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants