Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
0154de0
eip7732 adapt rpc methods
tbenr Feb 4, 2025
f35c99d
move to separate method
tbenr Feb 5, 2025
cec9c75
fix toc
tbenr Feb 5, 2025
37c401c
test: Cover signature_slot tiebreaker in is_better_update
bshastry Feb 6, 2025
ea74634
spec: Add comment to clarify tiebreaker for signature slots in is_bet…
bshastry Feb 11, 2025
044f22d
Merge pull request #4124 from bshastry/test_lc_update_sig_slot
jtraglia Feb 11, 2025
7c96e79
Add back `compute_cells` function
jtraglia Feb 11, 2025
4b5a06e
feedback
tbenr Feb 12, 2025
b06b8bc
Merge branch 'dev' into 7732-rpc
tbenr Feb 12, 2025
9d377fd
Update function doc
jtraglia Feb 12, 2025
a9e40ac
Merge pull request #4128 from jtraglia/compute-cells
jtraglia Feb 12, 2025
6ce4d30
Add clarifications regarding SSZ-snappy length prefix
jtraglia Feb 14, 2025
30f9fa8
Do not double build pyspec
jtraglia Feb 14, 2025
a3205e6
For the most part, rename whisk to eip7441
jtraglia Feb 14, 2025
7973118
Rename test_whisk to test_eip7441
jtraglia Feb 14, 2025
04f8412
Fix lint
jtraglia Feb 14, 2025
5186414
Do not print "building eth2spec"
jtraglia Feb 15, 2025
c8d4092
Merge pull request #4130 from jtraglia/dont-double-build-pyspec
jtraglia Feb 15, 2025
9d1e708
Merge pull request #4129 from jtraglia/ssz-varint-clarification
jtraglia Feb 15, 2025
732a2d0
Remove WHISK_ prefixes
jtraglia Feb 18, 2025
64598e9
as per feedback
tbenr Feb 18, 2025
7d6b435
Merge branch 'dev' into 7732-rpc
tbenr Feb 18, 2025
45dfbe2
Merge pull request #4131 from jtraglia/rename-whisk-to-eip7441
jtraglia Feb 18, 2025
b9f8a75
Merge pull request #4120 from tbenr/7732-rpc
jtraglia Feb 18, 2025
686e853
Remove python version from circleci cache key (#4134)
jtraglia Feb 19, 2025
7480d03
Add light client sync test for forced update before update timeout (#…
bshastry Feb 19, 2025
3c3e07b
Move deprecated specs to new directory
jtraglia Feb 26, 2025
e5480ea
Fix typos
jtraglia Feb 26, 2025
ae9325f
Merge pull request #4143 from jtraglia/deprecated-specs-dir
jtraglia Feb 26, 2025
36d80ad
Fix broken link polynomial-commitments-sampling.md (#4140)
rebustron Feb 26, 2025
ecf9f1f
Simplify build system for computed constants
etan-status Mar 7, 2025
9c68b41
Use correct division kind in Fulu
etan-status Mar 7, 2025
b419ba8
Merge pull request #4152 from etan-status/py-presetconstants
jtraglia Mar 9, 2025
21d914a
Define PAYLOAD_TIMELY_THRESHOLD with int division
jtraglia Mar 10, 2025
798223a
Cast CELLS_PER_EXT_BLOB to an int in a few spots
jtraglia Mar 10, 2025
39af832
Fix list presentation in rendered specifications (#4156)
hara-desu Mar 10, 2025
a291e65
Fix typos raised in another PR
jtraglia Mar 10, 2025
ffdb390
Merge branch 'dev' into fix-test-gen
jtraglia Mar 10, 2025
e57de72
Fix some nits with bellatrix p2p formatting
jtraglia Mar 10, 2025
e210eeb
Dedent line
jtraglia Mar 10, 2025
2cc2cd9
Merge pull request #4157 from jtraglia/fix-test-gen
jtraglia Mar 10, 2025
492572d
Add EIP-7805 (FOCIL) specs (#4003)
terencechain Mar 13, 2025
9ede9db
Add consolidation request test with 0x00 source credentials (#4162)
GaAstDev Mar 13, 2025
9277196
Bump version to v1.5.0-beta.3 (#4164)
jtraglia Mar 13, 2025
95c3fba
Change Store.inclusion_list from List to Set (#4165)
jtraglia Mar 13, 2025
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
2 changes: 1 addition & 1 deletion specs/_deprecated/das/das-core.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ Implementations:

```python
def recover_data(data: Sequence[Optional[Sequence[Point]]]) -> Sequence[Point]:
"""Given an a subset of half or more of subgroup-aligned ranges of values, recover the None values."""
"""Given a subset of half or more of subgroup-aligned ranges of values, recover the None values."""
...
```

Expand Down
2 changes: 1 addition & 1 deletion specs/_features/eip7732/builder.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ To construct the `execution_payload_envelope` the builder must perform the follo
2. Set the `builder_index` field to be the validator index of the builder performing these steps. This field **MUST** be `header.builder_index`.
3. Set `beacon_block_root` to be the `hash_tree_root` of the corresponding beacon block.
4. Set `blob_kzg_commitments` to be the `commitments` field of the blobs bundle constructed when constructing the bid. This field **MUST** have a `hash_tree_root` equal to `header.blob_kzg_commitments_root`.
5. Set `payload_witheld` to `False`.
5. Set `payload_withheld` to `False`.

After setting these parameters, the builder should run `process_execution_payload(state, signed_envelope, verify=False)` and this function should not trigger an exception.

Expand Down
2 changes: 1 addition & 1 deletion specs/_features/eip7732/fork-choice.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ This is the modification of the fork choice accompanying the EIP-7732 upgrade.

| Name | Value |
| -------------------- | ----------- |
| `PAYLOAD_TIMELY_THRESHOLD` | `PTC_SIZE / 2` (=`uint64(256)`) |
| `PAYLOAD_TIMELY_THRESHOLD` | `PTC_SIZE // 2` (= 256) |
| `INTERVALS_PER_SLOT` | `4` # [modified in EIP-7732] |
| `PROPOSER_SCORE_BOOST` | `20` # [modified in EIP-7732] |
| `PAYLOAD_WITHHOLD_BOOST` | `40` |
Expand Down
2 changes: 1 addition & 1 deletion specs/altair/validator.md
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ Set `contribution.subcommittee_index` to the index for the subcommittee index co
###### Aggregation bits

Let `contribution.aggregation_bits` be a `Bitvector[SYNC_COMMITTEE_SIZE // SYNC_COMMITTEE_SUBNET_COUNT]`, where the `index`th bit is set in the `Bitvector` for each corresponding validator included in this aggregate from the corresponding subcommittee.
An aggregator finds the index in the sync committee (as determined by a reverse pubkey lookup on `state.current_sync_committee.pubkeys`) for a given validator referenced by `sync_committee_message.validator_index` and maps the sync committee index to an index in the subcommittee (along with the prior `subcommittee_index`). This index within the subcommittee is set in `contribution.aggegration_bits`.
An aggregator finds the index in the sync committee (as determined by a reverse pubkey lookup on `state.current_sync_committee.pubkeys`) for a given validator referenced by `sync_committee_message.validator_index` and maps the sync committee index to an index in the subcommittee (along with the prior `subcommittee_index`). This index within the subcommittee is set in `contribution.aggregation_bits`.

For example, if a validator with index `2044` is pseudo-randomly sampled to sync committee index `135`. This sync committee index maps to `subcommittee_index` `1` with position `7` in the `Bitvector` for the contribution.

Expand Down
30 changes: 16 additions & 14 deletions specs/bellatrix/p2p-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,20 +76,22 @@ In addition to the gossip validations for this topic from prior specifications,
the following validations MUST pass before forwarding the `signed_beacon_block` on the network.
Alias `block = signed_beacon_block.message`, `execution_payload = block.body.execution_payload`.

- If the execution is enabled for the block -- i.e. `is_execution_enabled(state, block.body)`
then validate the following:
- _[REJECT]_ The block's execution payload timestamp is correct with respect to the slot
-- i.e. `execution_payload.timestamp == compute_timestamp_at_slot(state, block.slot)`.
- If `execution_payload` verification of block's parent by an execution node is *not* complete:
- [REJECT] The block's parent (defined by `block.parent_root`) passes all
validation (excluding execution node verification of the `block.body.execution_payload`).
- otherwise:
- [IGNORE] The block's parent (defined by `block.parent_root`) passes all
validation (including execution node verification of the `block.body.execution_payload`).

The following gossip validation from prior specifications MUST NOT be applied if the execution is enabled for the block -- i.e. `is_execution_enabled(state, block.body)`:

- [REJECT] The block's parent (defined by `block.parent_root`) passes validation.
If the execution is enabled for the block -- i.e. `is_execution_enabled(state, block.body)`
then validate the following:

- _[REJECT]_ The block's execution payload timestamp is correct with respect to the slot
-- i.e. `execution_payload.timestamp == compute_timestamp_at_slot(state, block.slot)`.
- If `execution_payload` verification of block's parent by an execution node is *not* complete:
- _[REJECT]_ The block's parent (defined by `block.parent_root`) passes all
validation (excluding execution node verification of the `block.body.execution_payload`).
- Otherwise:
- _[IGNORE]_ The block's parent (defined by `block.parent_root`) passes all
validation (including execution node verification of the `block.body.execution_payload`).

The following gossip validation from prior specifications MUST NOT be applied if the execution is
enabled for the block -- i.e. `is_execution_enabled(state, block.body)`:

- _[REJECT]_ The block's parent (defined by `block.parent_root`) passes validation.

#### Transitioning the gossip

Expand Down
2 changes: 1 addition & 1 deletion specs/electra/validator.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ Changed the max attestations size to `MAX_ATTESTATIONS_ELECTRA`.

The network attestation aggregates contain only the assigned committee attestations.
Attestation aggregates received by the block proposer from the committee aggregators with disjoint `committee_bits` sets and equal `AttestationData` SHOULD be consolidated into a single `Attestation` object.
The proposer should run the following function to construct an on chain final aggregate form a list of network aggregates with equal `AttestationData`:
The proposer should run the following function to construct an on chain final aggregate from a list of network aggregates with equal `AttestationData`:

```python
def compute_on_chain_aggregate(network_aggregates: Sequence[Attestation]) -> Attestation:
Expand Down
2 changes: 1 addition & 1 deletion specs/fulu/peer-sampling.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def get_extended_sample_count(allowed_failures: uint64) -> uint64:

At each slot, a node needs to be able to readily sample from *any* set of columns. To this end, a node SHOULD find and maintain a set of diverse and reliable peers that can regularly satisfy their sampling demands.

A node runs a background peer discovery process, maintaining peers of various custody distributions (both `custody_size` and column assignments). The combination of advertised `custody_size` size and public node-id make this readily and publicly accessible. The peer set should cover the whole column space, with some redundancy. The number of peers, or at least the redundancy implied by the custody distributions over the the peer set, should be tuned upward in the event of failed sampling.
A node runs a background peer discovery process, maintaining peers of various custody distributions (both `custody_size` and column assignments). The combination of advertised `custody_size` size and public node-id make this readily and publicly accessible. The peer set should cover the whole column space, with some redundancy. The number of peers, or at least the redundancy implied by the custody distributions over the peer set, should be tuned upward in the event of failed sampling.

*Note*: while high-capacity and super-full nodes are high value with respect to satisfying sampling requirements, a node SHOULD maintain a distribution across node capacities as to not centralize the p2p graph too much (in the extreme becomes hub/spoke) and to distribute sampling load better across all nodes.

Expand Down
6 changes: 3 additions & 3 deletions tests/generators/kzg_7594/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ def case_verify_cell_kzg_proof_batch():
commitments = [VALID_COMMITMENTS[1]]
cell_indices = list(range(len(cells)))
# Set first cell index to an invalid value
cell_indices[0] = spec.CELLS_PER_EXT_BLOB
cell_indices[0] = int(spec.CELLS_PER_EXT_BLOB)
expect_exception(spec.verify_cell_kzg_proof_batch, commitments, cell_indices, cells, proofs)
identifier = make_id(commitments, cell_indices, cells, proofs)
yield f'verify_cell_kzg_proof_batch_case_invalid_cell_index_{identifier}', {
Expand Down Expand Up @@ -480,7 +480,7 @@ def case_recover_cells_and_kzg_proofs():
cell_indices = list(range(spec.CELLS_PER_EXT_BLOB // 2))
partial_cells = [cells[cell_index] for cell_index in cell_indices]
# Replace first cell_index with an invalid value
cell_indices[0] = spec.CELLS_PER_EXT_BLOB
cell_indices[0] = int(spec.CELLS_PER_EXT_BLOB)
expect_exception(spec.recover_cells_and_kzg_proofs, cell_indices, partial_cells)
identifier = make_id(cell_indices, partial_cells)
yield f'recover_cells_and_kzg_proofs_case_invalid_cell_index_{identifier}', {
Expand Down Expand Up @@ -513,7 +513,7 @@ def case_recover_cells_and_kzg_proofs():
cell_indices = list(range(0, spec.CELLS_PER_EXT_BLOB, 2))
partial_cells = [cells[cell_index] for cell_index in cell_indices]
# Add another cell_index
cell_indices.append(spec.CELLS_PER_EXT_BLOB - 1)
cell_indices.append(int(spec.CELLS_PER_EXT_BLOB - 1))
expect_exception(spec.recover_cells_and_kzg_proofs, cell_indices, partial_cells)
identifier = make_id(cell_indices, partial_cells)
yield f'recover_cells_and_kzg_proofs_case_invalid_more_cell_indices_than_cells_{identifier}', {
Expand Down