Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
4920c9a
eip7688: use forward compatible SSZ types in Gloas
etan-status Oct 1, 2025
f6bcac0
Merge branch 'master' into sn-7688
jtraglia Oct 6, 2025
fd103eb
Merge branch 'master' into sn-7688
etan-status Oct 7, 2025
4605657
Update EIP reference comments
etan-status Oct 8, 2025
d8d7ed7
Merge branch 'master' into sn-7688
etan-status Oct 8, 2025
e8f0a5c
Merge branch 'master' into sn-7688
etan-status Oct 11, 2025
8d3d616
Merge branch 'master' into sn-7688
etan-status Oct 22, 2025
2192b86
Merge branch 'master' into sn-7688
etan-status Oct 30, 2025
b557387
Merge branch 'master' into sn-7688
etan-status Nov 1, 2025
8e78100
Merge branch 'master' into sn-7688
etan-status Dec 12, 2025
b194431
Fix fork transition test
etan-status Dec 12, 2025
4cb6695
Merge branch 'master' into sn-7688
etan-status Dec 30, 2025
b1a54a1
Merge branch 'master' into sn-7688
etan-status Jan 6, 2026
b37ae10
Merge branch 'master' into sn-7688
etan-status Jan 12, 2026
c09acb7
Merge branch 'master' into sn-7688
etan-status Feb 3, 2026
e489eeb
Merge branch 'master' into sn-7688
etan-status Apr 13, 2026
b3cc077
Merge branch 'master' into sn-7688
etan-status Apr 14, 2026
1846800
Merge branch 'master' into sn-7688
etan-status Apr 28, 2026
e80c639
Merge branch 'master' into sn-7688
etan-status Apr 28, 2026
103f684
Fix tests that have been recently introduced to use progressives
etan-status Apr 28, 2026
68fd469
Merge branch 'master' into sn-7688
etan-status Apr 28, 2026
60ffa37
Bump gindices
etan-status Apr 28, 2026
15173c9
Lint
etan-status Apr 28, 2026
58bab43
More adjusted gindices
etan-status Apr 28, 2026
9cfce59
Normalize branches
etan-status Apr 29, 2026
289c9fc
Merge branch 'master' into sn-7688
etan-status Apr 29, 2026
e2d3d06
Remove extra key
etan-status Apr 29, 2026
a33bec2
Add extra key (and fix FCR expectations as seeds meaning changes)
etan-status Apr 29, 2026
b0ecb14
Keep withdrawal_pubkey stable to avoid FCR issues
etan-status Apr 29, 2026
e73586c
Same for other usages of withdrawal keys
etan-status Apr 29, 2026
913bad8
Merge branch 'master' into sn-7688
etan-status Apr 29, 2026
97705d4
Make Transaction progressive
etan-status May 5, 2026
0dab7b5
Merge branch 'upstream/master' into sn-7688
etan-status May 14, 2026
1c039b8
Scope progressive test to Gloas and later
etan-status May 14, 2026
64cade7
Merge tag 'v1.7.0-alpha.8' into sn-7688
etan-status May 15, 2026
6419782
Merge remote-tracking branch 'upstream/master' into sn-7688
etan-status May 17, 2026
42eea12
Retain pre-existing limits for execution requests (separate PR to drop)
etan-status May 18, 2026
7ae84f8
Define type-specific SSZ bounds for progressives
etan-status May 18, 2026
f919d93
Cleanup
etan-status May 19, 2026
fe0e9e7
Naming cleanup
etan-status May 19, 2026
908d312
Add early reject for too many withdrawals
etan-status May 19, 2026
e75dc6c
Drop explainers for where the bounds numbers come from
etan-status May 20, 2026
f15466d
Fix some nits I noticed while reviewing
jtraglia May 20, 2026
c060a3d
Add tests for maximum valid bounds
jtraglia May 20, 2026
dc90ca9
Make BlockAccessList progressive
etan-status May 22, 2026
b4b53ab
Merge branch 'master' into sn-7688
etan-status Jun 1, 2026
91f9834
Merge commit 'v1.7.0-alpha.9' into sn-7688
etan-status Jun 1, 2026
cf39250
Merge commit 'v1.7.0-alpha.10' into sn-7688
etan-status Jun 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions presets/mainnet/eip8148.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,8 @@
# ---------------------------------------------------------------
# 2**4 (= 16)
MAX_SET_SWEEP_THRESHOLD_REQUESTS_PER_PAYLOAD: 16

# Type-specific SSZ bounds
# ---------------------------------------------------------------
# 4,035,526 bytes, ~4 MiB
MAX_SIGNED_BEACON_BLOCK_SIZE_EIP8148: 4035526
22 changes: 15 additions & 7 deletions presets/mainnet/gloas.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ PTC_SIZE: 512
# 2**2 (= 4) attestations
MAX_PAYLOAD_ATTESTATIONS: 4

# State list lengths
# ---------------------------------------------------------------
# 2**40 (= 1,099,511,627,776) builder spots
BUILDER_REGISTRY_LIMIT: 1099511627776
# 2**20 (= 1,048,576) builder pending withdrawals
BUILDER_PENDING_WITHDRAWALS_LIMIT: 1048576

# Withdrawals processing
# ---------------------------------------------------------------
# 2**14 (= 16,384) builders
MAX_BUILDERS_PER_WITHDRAWALS_SWEEP: 16384

# Type-specific SSZ bounds
# ---------------------------------------------------------------
# 16,829 bytes, ~16 KiB
MAX_SIGNED_AGGREGATE_AND_PROOF_SIZE: 16829
# 2,097,616 bytes, ~2 MiB
MAX_ATTESTER_SLASHING_SIZE: 2097616
# 8,585,272 bytes, ~8 MiB
MAX_DATA_COLUMN_SIDECAR_SIZE: 8585272
# 8,585,741 bytes, ~8 MiB
MAX_PARTIAL_DATA_COLUMN_SIDECAR_SIZE: 8585741
# 196,932 bytes, ~192 KiB
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE: 196932
# 4,034,304 bytes, ~4 MiB
MAX_SIGNED_BEACON_BLOCK_SIZE: 4034304
9 changes: 9 additions & 0 deletions presets/mainnet/heze.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,12 @@
# ---------------------------------------------------------------
# 2**4 (= 16) validators
INCLUSION_LIST_COMMITTEE_SIZE: 16

# Type-specific SSZ bounds
# ---------------------------------------------------------------
# 8,344 bytes, ~8 KiB
MAX_SIGNED_INCLUSION_LIST_SIZE: 8344
# 196,934 bytes, ~192 KiB
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE_HEZE: 196934
# 4,034,306 bytes, ~4 MiB
MAX_SIGNED_BEACON_BLOCK_SIZE_HEZE: 4034306
5 changes: 5 additions & 0 deletions presets/minimal/eip8148.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,8 @@
# ---------------------------------------------------------------
# 2**4 (= 16)
MAX_SET_SWEEP_THRESHOLD_REQUESTS_PER_PAYLOAD: 16

# Type-specific SSZ bounds
# ---------------------------------------------------------------
# 1,946,202 bytes, ~2 MiB
MAX_SIGNED_BEACON_BLOCK_SIZE_EIP8148: 1946202
22 changes: 15 additions & 7 deletions presets/minimal/gloas.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ PTC_SIZE: 16
# 2**2 (= 4) attestations
MAX_PAYLOAD_ATTESTATIONS: 4

# State list lengths
# ---------------------------------------------------------------
# 2**40 (= 1,099,511,627,776) builder spots
BUILDER_REGISTRY_LIMIT: 1099511627776
# 2**20 (= 1,048,576) builder pending withdrawals
BUILDER_PENDING_WITHDRAWALS_LIMIT: 1048576

# Withdrawals processing
# ---------------------------------------------------------------
# [customized] 2**4 (= 16) builders
MAX_BUILDERS_PER_WITHDRAWALS_SWEEP: 16

# Type-specific SSZ bounds
# ---------------------------------------------------------------
# 1,462 bytes, ~1 KiB
MAX_SIGNED_AGGREGATE_AND_PROOF_SIZE: 1462
# 131,536 bytes, ~128 KiB
MAX_ATTESTER_SLASHING_SIZE: 131536
# 8,585,272 bytes, ~8 MiB
MAX_DATA_COLUMN_SIDECAR_SIZE: 8585272
# 8,585,741 bytes, ~8 MiB
MAX_PARTIAL_DATA_COLUMN_SIDECAR_SIZE: 8585741
# 196,932 bytes, ~192 KiB
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE: 196932
# 1,944,980 bytes, ~2 MiB
MAX_SIGNED_BEACON_BLOCK_SIZE: 1944980
9 changes: 9 additions & 0 deletions presets/minimal/heze.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,12 @@
# ---------------------------------------------------------------
# 2**4 (= 16) validators
INCLUSION_LIST_COMMITTEE_SIZE: 16

# Type-specific SSZ bounds
# ---------------------------------------------------------------
# 8,344 bytes, ~8 KiB
MAX_SIGNED_INCLUSION_LIST_SIZE: 8344
# 196,934 bytes, ~192 KiB
MAX_SIGNED_EXECUTION_PAYLOAD_BID_SIZE_HEZE: 196934
# 1,944,982 bytes, ~2 MiB
MAX_SIGNED_BEACON_BLOCK_SIZE_HEZE: 1944982
1 change: 1 addition & 0 deletions pysetup/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,7 @@ def combine_dicts(old_dict: dict[str, T], new_dict: dict[str, T]) -> dict[str, T
"List",
"Optional",
"ProgressiveBitlist",
"ProgressiveByteList",
"ProgressiveList",
"Sequence",
"Set",
Expand Down
1 change: 1 addition & 0 deletions pysetup/md_to_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ def _process_table(self, table: Table) -> None:
"Bytes",
"List",
"ProgressiveBitlist",
"ProgressiveByteList",
"ProgressiveList",
"Union",
"Vector",
Expand Down
7 changes: 6 additions & 1 deletion pysetup/spec_builders/gloas.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,20 @@ class GloasSpecBuilder(BaseSpecBuilder):
@classmethod
def imports(cls, preset_name: str):
return f"""
from eth_consensus_specs.utils.ssz.ssz_typing import ProgressiveBitlist, ProgressiveByteList, ProgressiveContainer, ProgressiveList

from eth_consensus_specs.fulu import {preset_name} as fulu
"""

@classmethod
def hardcoded_ssz_dep_constants(cls) -> dict[str, str]:
return {
"FINALIZED_ROOT_GINDEX_GLOAS": "GeneralizedIndex(735)",
"CURRENT_SYNC_COMMITTEE_GINDEX_GLOAS": "GeneralizedIndex(2945)",
"NEXT_SYNC_COMMITTEE_GINDEX_GLOAS": "GeneralizedIndex(2946)",
"EXECUTION_BLOCK_HASH_GINDEX": "GeneralizedIndex(412)",
"EXECUTION_BLOCK_HASH_GINDEX_DENEB": "GeneralizedIndex(812)",
"EXECUTION_BLOCK_HASH_GINDEX_GLOAS": "GeneralizedIndex(832)",
"EXECUTION_BLOCK_HASH_GINDEX_GLOAS": "GeneralizedIndex(11424)",
}

@classmethod
Expand Down
3 changes: 2 additions & 1 deletion specs/_features/eip8025/beacon-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class PublicInput(Container):

```python
class ExecutionProof(Container):
proof_data: ByteList[MAX_PROOF_SIZE]
proof_data: ProgressiveByteList
proof_type: ProofType
public_input: PublicInput
```
Expand Down Expand Up @@ -94,6 +94,7 @@ def process_execution_proof(
proof_engine: ProofEngine,
) -> None:
proof_message = signed_proof.message
assert len(proof_message.proof_data) <= MAX_PROOF_SIZE

# Verify prover is an active validator
validator = state.validators[signed_proof.validator_index]
Expand Down
7 changes: 7 additions & 0 deletions specs/_features/eip8025/p2p-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ and imports proof types from [proof-engine.md](./proof-engine.md).
- [Table of contents](#table-of-contents)
- [Constants](#constants)
- [Execution](#execution)
- [Type-specific SSZ bounds](#type-specific-ssz-bounds)
- [Containers](#containers)
- [`ProofByRootIdentifier`](#proofbyrootidentifier)
- [Helpers](#helpers)
Expand Down Expand Up @@ -41,6 +42,12 @@ and imports proof types from [proof-engine.md](./proof-engine.md).
| ---------------------------------- | ----------- |
| `MAX_EXECUTION_PROOFS_PER_PAYLOAD` | `uint64(4)` |

### Type-specific SSZ bounds

| Name | Value | Description |
| --------------------------------- | -------------------- | -------------------------------------------------- |
| `MAX_SIGNED_EXECUTION_PROOF_SIZE` | `4194449` (= ~4 MiB) | Type-specific SSZ bound for `SignedExecutionProof` |

## Containers

### `ProofByRootIdentifier`
Expand Down
42 changes: 24 additions & 18 deletions specs/_features/eip8148/beacon-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ control their balance withdrawals more precisely.
#### `BeaconState`

```python
class BeaconState(Container):
class BeaconState(ProgressiveContainer(active_fields=[1] * 47)):
genesis_time: uint64
genesis_validators_root: Root
slot: Slot
Expand All @@ -90,17 +90,17 @@ class BeaconState(Container):
eth1_data: Eth1Data
eth1_data_votes: List[Eth1Data, EPOCHS_PER_ETH1_VOTING_PERIOD * SLOTS_PER_EPOCH]
eth1_deposit_index: uint64
validators: List[Validator, VALIDATOR_REGISTRY_LIMIT]
balances: List[Gwei, VALIDATOR_REGISTRY_LIMIT]
validators: ProgressiveList[Validator]
balances: ProgressiveList[Gwei]
randao_mixes: Vector[Bytes32, EPOCHS_PER_HISTORICAL_VECTOR]
slashings: Vector[Gwei, EPOCHS_PER_SLASHINGS_VECTOR]
previous_epoch_participation: List[ParticipationFlags, VALIDATOR_REGISTRY_LIMIT]
current_epoch_participation: List[ParticipationFlags, VALIDATOR_REGISTRY_LIMIT]
previous_epoch_participation: ProgressiveList[ParticipationFlags]
current_epoch_participation: ProgressiveList[ParticipationFlags]
justification_bits: Bitvector[JUSTIFICATION_BITS_LENGTH]
previous_justified_checkpoint: Checkpoint
current_justified_checkpoint: Checkpoint
finalized_checkpoint: Checkpoint
inactivity_scores: List[uint64, VALIDATOR_REGISTRY_LIMIT]
inactivity_scores: ProgressiveList[uint64]
current_sync_committee: SyncCommittee
next_sync_committee: SyncCommittee
latest_block_hash: Hash32
Expand All @@ -113,32 +113,32 @@ class BeaconState(Container):
earliest_exit_epoch: Epoch
consolidation_balance_to_consume: Gwei
earliest_consolidation_epoch: Epoch
pending_deposits: List[PendingDeposit, PENDING_DEPOSITS_LIMIT]
pending_partial_withdrawals: List[PendingPartialWithdrawal, PENDING_PARTIAL_WITHDRAWALS_LIMIT]
pending_consolidations: List[PendingConsolidation, PENDING_CONSOLIDATIONS_LIMIT]
pending_deposits: ProgressiveList[PendingDeposit]
pending_partial_withdrawals: ProgressiveList[PendingPartialWithdrawal]
pending_consolidations: ProgressiveList[PendingConsolidation]
proposer_lookahead: Vector[ValidatorIndex, (MIN_SEED_LOOKAHEAD + 1) * SLOTS_PER_EPOCH]
builders: List[Builder, BUILDER_REGISTRY_LIMIT]
builders: ProgressiveList[Builder]
next_withdrawal_builder_index: BuilderIndex
execution_payload_availability: Bitvector[SLOTS_PER_HISTORICAL_ROOT]
builder_pending_payments: Vector[BuilderPendingPayment, 2 * SLOTS_PER_EPOCH]
builder_pending_withdrawals: List[BuilderPendingWithdrawal, BUILDER_PENDING_WITHDRAWALS_LIMIT]
builder_pending_withdrawals: ProgressiveList[BuilderPendingWithdrawal]
# [Modified in Heze:EIP7805]
latest_execution_payload_bid: ExecutionPayloadBid
payload_expected_withdrawals: List[Withdrawal, MAX_WITHDRAWALS_PER_PAYLOAD]
payload_expected_withdrawals: ProgressiveList[Withdrawal]
ptc_window: Vector[Vector[ValidatorIndex, PTC_SIZE], (2 + MIN_SEED_LOOKAHEAD) * SLOTS_PER_EPOCH]
# [New in EIP8148]
validator_sweep_thresholds: List[Gwei, VALIDATOR_REGISTRY_LIMIT]
validator_sweep_thresholds: ProgressiveList[Gwei]
```

#### `ExecutionRequests`

```python
class ExecutionRequests(Container):
deposits: List[DepositRequest, MAX_DEPOSIT_REQUESTS_PER_PAYLOAD]
withdrawals: List[WithdrawalRequest, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD]
consolidations: List[ConsolidationRequest, MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD]
class ExecutionRequests(ProgressiveContainer(active_fields=[1] * 4)):
deposits: DepositRequests
withdrawals: WithdrawalRequests
consolidations: ConsolidationRequests
# [New in EIP8148]
sweep_thresholds: List[SetSweepThresholdRequest, MAX_SET_SWEEP_THRESHOLD_REQUESTS_PER_PAYLOAD]
sweep_thresholds: ProgressiveList[SetSweepThresholdRequest]
```

### New containers
Expand Down Expand Up @@ -367,6 +367,12 @@ def apply_parent_execution_payload(
parent_slot = parent_bid.slot
parent_epoch = compute_epoch_at_slot(parent_slot)

assert len(requests.deposits) <= MAX_DEPOSIT_REQUESTS_PER_PAYLOAD
assert len(requests.withdrawals) <= MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD
assert len(requests.consolidations) <= MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD
# [New in EIP8148]
assert len(requests.sweep_thresholds) <= MAX_SET_SWEEP_THRESHOLD_REQUESTS_PER_PAYLOAD

# Process execution requests from parent's payload. The execution
# requests are processed at state.slot (child's slot), not the parent's slot.
def for_ops(operations: Sequence[Any], fn: Callable[[BeaconState, Any], None]) -> None:
Expand Down
43 changes: 43 additions & 0 deletions specs/_features/eip8148/p2p-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,15 @@

- [Introduction](#introduction)
- [Modifications in EIP-8148](#modifications-in-eip-8148)
- [Preset](#preset)
- [Type-specific SSZ bounds](#type-specific-ssz-bounds)
- [Helpers](#helpers)
- [Modified `compute_fork_version`](#modified-compute_fork_version)
- [The gossip domain: gossipsub](#the-gossip-domain-gossipsub)
- [Topics and messages](#topics-and-messages)
- [Global topics](#global-topics)
- [`beacon_block`](#beacon_block)
- [`execution_payload`](#execution_payload)

<!-- mdformat-toc end -->

Expand All @@ -21,6 +28,14 @@ specifications of previous upgrades, and assumes them as pre-requisite.

## Modifications in EIP-8148

### Preset

#### Type-specific SSZ bounds

| Name | Value | Description |
| -------------------------------------- | -------------------------- | ----------------------------------------------- |
| `MAX_SIGNED_BEACON_BLOCK_SIZE_EIP8148` | `4035526` bytes (= ~4 MiB) | Type-specific SSZ bound for `SignedBeaconBlock` |

### Helpers

#### Modified `compute_fork_version`
Expand Down Expand Up @@ -50,3 +65,31 @@ def compute_fork_version(epoch: Epoch) -> Version:
return ALTAIR_FORK_VERSION
return GENESIS_FORK_VERSION
```

### The gossip domain: gossipsub

#### Topics and messages

##### Global topics

###### `beacon_block`

*[Modified in EIP8148]*

**Added in EIP8148:**

- _[REJECT]_ The count of
`block.body.parent_execution_requests.sweep_thresholds` is within its limit --
i.e. validate that
`len(block.body.parent_execution_requests.sweep_thresholds) <= MAX_SET_SWEEP_THRESHOLD_REQUESTS_PER_PAYLOAD`.

###### `execution_payload`

*[Modified in EIP8148]*

**Added in EIP8148:**

- _[REJECT]_ The count of `execution_requests.sweep_thresholds` is within its
limit -- i.e. validate that
`len(execution_requests.sweep_thresholds) <= MAX_SET_SWEEP_THRESHOLD_REQUESTS_PER_PAYLOAD`,
with the alias `execution_requests = envelope.execution_requests`.
23 changes: 17 additions & 6 deletions specs/electra/beacon-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
<!-- mdformat-toc start --slug=github --no-anchors --maxlevel=6 --minlevel=2 -->

- [Introduction](#introduction)
- [Types](#types)
- [Constants](#constants)
- [Misc](#misc)
- [Withdrawal prefixes](#withdrawal-prefixes)
Expand Down Expand Up @@ -126,6 +127,16 @@ Electra is a consensus-layer upgrade containing a number of features. Including:
outside Attestation
- [EIP-7691](https://eips.ethereum.org/EIPS/eip-7691): Blob throughput increase

## Types

| Name | SSZ equivalent | Description |
| ----------------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------- |
| `AggregationBits` | `Bitlist[MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]` | Combined participation info for all participating subcommittees |
| `AttestingIndices` | `List[ValidatorIndex, MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]` | List of attesting validator indices |
| `DepositRequests` | `List[DepositRequest, MAX_DEPOSIT_REQUESTS_PER_PAYLOAD]` | List of deposit requests pertaining to an execution payload |
| `WithdrawalRequests` | `List[WithdrawalRequest, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD]` | List of withdrawal requests pertaining to an execution payload |
| `ConsolidationRequests` | `List[ConsolidationRequest, MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD]` | List of consolidation requests pertaining to an execution payload |

## Constants

The following values are (non-configurable) constants used throughout the
Expand Down Expand Up @@ -296,11 +307,11 @@ class ConsolidationRequest(Container):
```python
class ExecutionRequests(Container):
# [New in Electra:EIP6110]
deposits: List[DepositRequest, MAX_DEPOSIT_REQUESTS_PER_PAYLOAD]
deposits: DepositRequests
# [New in Electra:EIP7002:EIP7251]
withdrawals: List[WithdrawalRequest, MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD]
withdrawals: WithdrawalRequests
# [New in Electra:EIP7251]
consolidations: List[ConsolidationRequest, MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD]
consolidations: ConsolidationRequests
```

#### `SingleAttestation`
Expand Down Expand Up @@ -352,7 +363,7 @@ class BeaconBlockBody(Container):
```python
class Attestation(Container):
# [Modified in Electra:EIP7549]
aggregation_bits: Bitlist[MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]
aggregation_bits: AggregationBits
data: AttestationData
signature: BLSSignature
# [New in Electra:EIP7549]
Expand All @@ -364,7 +375,7 @@ class Attestation(Container):
```python
class IndexedAttestation(Container):
# [Modified in Electra:EIP7549]
attesting_indices: List[ValidatorIndex, MAX_VALIDATORS_PER_COMMITTEE * MAX_COMMITTEES_PER_SLOT]
attesting_indices: AttestingIndices
data: AttestationData
signature: BLSSignature
```
Expand Down Expand Up @@ -1395,7 +1406,7 @@ def get_execution_requests_list(execution_requests: ExecutionRequests) -> Sequen
return [
request_type + ssz_serialize(request_data)
for request_type, request_data in requests
if len(request_data) != 0
if request_data
Comment thread
jtraglia marked this conversation as resolved.
]
```

Expand Down
Loading