## Week 10 and Week 11 Updates: ### Progress on ePBS Implementation: - PR [#14363](https://github.com/prysmaticlabs/prysm/pull/14363): Implements sync for signed execution payload header. Introduces `ExecutionHeaderVerifier` and new getters in chain info package(terence) - PR [#14308](https://github.com/prysmaticlabs/prysm/pull/14308): Implements `UpdateVotesOnPayloadAttestation`. Handles PTC votes and equivocations(kira) - PR [#14373](https://github.com/prysmaticlabs/prysm/pull/14373): Adds unit tests for execution payload envelope verifier(Jihoon) - PR [#14378](https://github.com/prysmaticlabs/prysm/pull/14378): Adds Prysm RPC endpoint for validator to get header from beacon node(terence) - PR [#14380](https://github.com/prysmaticlabs/prysm/pull/14380): Implements retrieval of payload attestation data. Modifies `HighestReceivedBlockSlot` to `HighestReceivedBlockSlotRoot`(terence) - PR [#14381](https://github.com/prysmaticlabs/prysm/pull/14381): Implements Prysm RPC for submitting payload attestation messages(terence) - PR [#14365](https://github.com/prysmaticlabs/prysm/pull/14365): Hardcodes `GenesisValidatorRoot` in config(Amaan) - PR [#14383](https://github.com/prysmaticlabs/prysm/pull/14383): Adds ePBS fork configuration. Merged(Jihoon) ### Some challenges we faced and discussion - Execution payload header handling: Discussion on using hash vs hash+root for proposer and sync. Decided on ByHash for sync and ByHashAndRoot for proposer. - State access optimization: Proposed using ReadOnlyBeaconState instead of multiple helpers to reduce locking/unlocking overhead. - Caching mechanism: Current cache implementation clears after payload processing, causing issues for payload attestation message construction. - Updated PTC vote handling in UpdateVotesOnPayloadAttestation: ```go if node.ptcVote[i] == primitives.PTCStatus(0) { node.ptcVote[i] = data.PayloadStatus } ``` - Modified test implementation to handle Electra and ePBS having same epoch: ```go // Changed from using epoch to update name if update.Name == "electra" { // Electra-specific logic } else if update.Name == "epbs" { // ePBS-specific logic } ``` ### Focus for the next 2 weeks: - Implement builder's blacklist to prevent P2P stack poisoning. - Optimize caching mechanism for payload status. - Update spec to replace `MIN_BUILDER_BALANCE` with `EJECTION_BALANCE`. - Implement internal function for payload attestation message handling. - Resolve Gazelle-related issues in CI pipeline.