Skip to content

Conversation

@mehdi-aouadi
Copy link
Contributor

@mehdi-aouadi mehdi-aouadi commented Oct 14, 2025

This PR proposes a structural clarification to the AttestationData container by renaming the index field to payload_status. This field has been unused for its original purpose (committee index designation) since the Electra upgrade and is now repurposed to explicitly signal the status of the execution payload of the attested-to block. The underlying uint64 type is retained to ensure structural stability and provide extensibility for future payload statuses.

The continued existence of the attestation_data.index field in its legacy form presents several issues:

  • Speci clarity: The name index strongly implies a committee index, a function it no longer serves (hardcoded to 0). This discrepancy is a source of confusion for client implementers, researchers, and future protocol developers.
  • Inconsistent usage: Using a field named index to convey information about payload status is a form of semantic overloading that is architecturally unsound and prone to implementation errors. A dedicated, clearly named field is preferable.
  • Technical debt: The index field was intentionally left in place during the Electra hard fork to de-risk the introduction of other complex changes when implementing EIP-7549. Now is a good opportunity to address this known technical debt before further protocol changes build upon this ambiguity.

Risk: Any modification to AttestationData can have wide-ranging and subtle effects.
Mitigation: This change is strictly a rename and does not alter the size, SSZ structure, or serialisation of the container. By avoiding a type change (e.g., to an enum), we minimise the scope of downstream code changes and reduce the risk of introducing new bugs.

Related Links
Context: EIP-7732 Breakout Call #25
Discussion: Discord Thread on Ethereum R&D

# Removed index
beacon_block_root: Root
# [New in Gloas:EIP7732]
payload_status: PayloadStatus
Copy link
Member

Choose a reason for hiding this comment

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

Since PayloadStatus is not an SSZ type, I think it would be better to rename the field and use a boolean.

Maybe payload_present or payload_revealed (not sure which is better):

Suggested change
payload_status: PayloadStatus
payload_revealed: boolean

Copy link
Contributor Author

Choose a reason for hiding this comment

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

In the end I just renamed the index field to payload_status and kept the uint64 type to avoid impacting the SSZ serialisation. Plus it would be possible to introduce new statuses if needed in the future...

@mehdi-aouadi mehdi-aouadi force-pushed the update-attestation-data branch 4 times, most recently from c45158a to 650bf98 Compare October 17, 2025 09:26
@mehdi-aouadi mehdi-aouadi force-pushed the update-attestation-data branch from 650bf98 to 739b193 Compare October 17, 2025 09:28
@mehdi-aouadi mehdi-aouadi marked this pull request as ready for review October 17, 2025 09:46
@mehdi-aouadi mehdi-aouadi requested a review from jtraglia October 17, 2025 10:46
@jtraglia jtraglia changed the title introduce payload_status to attestation data Add payload_status field to AttestationData Oct 23, 2025
@mehdi-aouadi
Copy link
Contributor Author

Closing this PR since it was discussed during EIP-7732 Breakout Room Call #26 and the majority preferred implementation stability and judged this change complex to implement

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