# Dev Update - Week 11
#### Continuous Integration (CI) Fixes
This week, I focused on ensuring that the CI passed for my branch, which involved dealing with submodule discrepancies. The steps I took were:
- **Submodule Update**: Ensured that the submodule references were correctly aligned with the `unstable` branch:
```bash
git checkout unstable -- vendor
```
- **Submodule Initialization**: Initialized and updated the submodules to match the commit references from the `unstable` branch:
```bash
git submodule update --init --recursive
```
- **Commit Changes**: Added the updated submodule references and committed the changes:
```bash
git add vendor
git commit -m "commit message"
```
- **Verification**: Verified that the `epbs` vendor folder now matches the `unstable` branch:
```bash
git diff unstable -- vendor
```
- **Signature Verification**:
- Implemented the [`verify_execution_payload_envelope_signature`](https://github.com/status-im/nimbus-eth2/blob/e4b54d968dba9007d20ccd9be1a25c149d5d66ab/beacon_chain/spec/signatures.nim#L455) and [`verify_execution_payload_header_signature`](https://github.com/status-im/nimbus-eth2/blob/e4b54d968dba9007d20ccd9be1a25c149d5d66ab/beacon_chain/spec/signatures.nim#L426) functions.
- Refactored the `compute_foo_signing_root` part, which is now reused by the `verify_foo_signature` functions to run `blsVerify`. This refactoring will streamline Nimbus’s ability to sign such messages efficiently.
- I encountered an error related to the usage of Limited types with SSZ (Simple Serialize). The error message indicated that Limited types should not be used with SSZ due to ABI differences, specifically in the `compute_execution_payload_header_signing_root` and `compute_execution_payload_envelope_signing_root` function. To address this issue, I modified the `builder_index` in the `ExecutionPayloadEnvelope` and `ExecutionPayloadHeader` objectos to be of type `uint64` instead of `ValidatorIndex`. The updated structure looks like this:
```nim
ExecutionPayloadHeader* = object
# Execution block header fields
parent_block_hash*: Eth2Digest
parent_block_root*: Eth2Digest
gas_limit*: uint64
builder_index*: uint64
slot*: Slot
value*: Gwei
blob_kzg_commitments_root*: KzgCommitments
```
- **Withdrawals Processing**:
- Implemented the [`process_withdrawals`](https://github.com/status-im/nimbus-eth2/blob/e4b54d968dba9007d20ccd9be1a25c149d5d66ab/beacon_chain/spec/state_transition_block_epbs.nim#L32) function to handle the EPBS `BeaconState` with deterministic withdrawals. Any execution payload linked to the parent beacon block is required to honor these withdrawals in the execution layer.
### Payload Attestation Modifications
- Updated several payload attestation functions to work exclusively with `epbs.BeaconState`:
- [`is_valid_indexed_payload_attestation`](https://github.com/status-im/nimbus-eth2/blob/e4b54d968dba9007d20ccd9be1a25c149d5d66ab/beacon_chain/spec/payload_attestations.nim#L19)
- [`get_ptc`](https://github.com/status-im/nimbus-eth2/blob/e4b54d968dba9007d20ccd9be1a25c149d5d66ab/beacon_chain/spec/payload_attestations.nim#L65)
- [`get_indexed_payload_attestation`](https://github.com/status-im/nimbus-eth2/blob/e4b54d968dba9007d20ccd9be1a25c149d5d66ab/beacon_chain/spec/payload_attestations.nim#L135)
- [`get_payload_attesting_indices`](https://github.com/status-im/nimbus-eth2/blob/e4b54d968dba9007d20ccd9be1a25c149d5d66ab/beacon_chain/spec/payload_attestations.nim#L135)
[PR Link](https://github.com/status-im/nimbus-eth2/pull/6443)
Mentor: [tersec](https://github.com/tersec)
---