diff --git a/.circleci/config.yml b/.circleci/config.yml index 17db49b3a9..80d44bef37 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -155,7 +155,7 @@ jobs: command: make citest fork=electra - store_test_results: path: tests/core/pyspec/test-reports - test-whisk: + test-fulu: docker: - image: cimg/python:3.12.4 working_directory: ~/specs-repo @@ -165,10 +165,10 @@ jobs: - restore_pyspec_cached_venv - run: name: Run py-tests - command: make citest fork=whisk + command: make citest fork=fulu - store_test_results: path: tests/core/pyspec/test-reports - test-eip7594: + test-whisk: docker: - image: cimg/python:3.12.4 working_directory: ~/specs-repo @@ -178,7 +178,7 @@ jobs: - restore_pyspec_cached_venv - run: name: Run py-tests - command: make citest fork=eip7594 + command: make citest fork=whisk - store_test_results: path: tests/core/pyspec/test-reports table_of_contents: @@ -239,10 +239,10 @@ workflows: - test-electra: requires: - install_pyspec_test - - test-whisk: + - test-fulu: requires: - install_pyspec_test - - test-eip7594: + - test-whisk: requires: - install_pyspec_test - table_of_contents diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 20e824de3b..84c5d9cee8 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -86,7 +86,7 @@ jobs: needs: [lint,codespell,table_of_contents] strategy: matrix: - version: ["phase0", "altair", "bellatrix", "capella", "deneb", "electra", "whisk", "eip7594"] + version: ["phase0", "altair", "bellatrix", "capella", "deneb", "electra", "fulu", "whisk"] steps: - name: Checkout repository uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index ad62aa177e..57cd180030 100644 --- a/.gitignore +++ b/.gitignore @@ -22,8 +22,8 @@ tests/core/pyspec/eth2spec/bellatrix/ tests/core/pyspec/eth2spec/capella/ tests/core/pyspec/eth2spec/deneb/ tests/core/pyspec/eth2spec/electra/ +tests/core/pyspec/eth2spec/fulu/ tests/core/pyspec/eth2spec/whisk/ -tests/core/pyspec/eth2spec/eip7594/ tests/core/pyspec/eth2spec/eip6800/ tests/core/pyspec/eth2spec/eip7732/ diff --git a/Makefile b/Makefile index 7a3ebbf6c6..48b1b4fbf6 100644 --- a/Makefile +++ b/Makefile @@ -30,7 +30,7 @@ MARKDOWN_FILES = $(wildcard $(SPEC_DIR)/*/*.md) \ $(wildcard $(SPEC_DIR)/_features/*/*/*.md) \ $(wildcard $(SSZ_DIR)/*.md) -ALL_EXECUTABLE_SPEC_NAMES = phase0 altair bellatrix capella deneb electra whisk eip6800 eip7594 eip7732 +ALL_EXECUTABLE_SPEC_NAMES = phase0 altair bellatrix capella deneb electra fulu whisk eip6800 eip7732 # The parameters for commands. Use `foreach` to avoid listing specs again. COVERAGE_SCOPE := $(foreach S,$(ALL_EXECUTABLE_SPEC_NAMES), --cov=eth2spec.$S.$(TEST_PRESET_TYPE)) PYLINT_SCOPE := $(foreach S,$(ALL_EXECUTABLE_SPEC_NAMES), ./eth2spec/$S) diff --git a/README.md b/README.md index c3a57c6256..e6ce14ec36 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ Features are researched and developed in parallel, and then consolidated into se | Seq. | Code Name | Fork Epoch | Specs | | - | - | - | - | | 5 | **Electra** | TBD | | +| 6 | **Fulu** | TBD | | ### Outdated Specifications diff --git a/configs/mainnet.yaml b/configs/mainnet.yaml index f010bec54d..dadb261b44 100644 --- a/configs/mainnet.yaml +++ b/configs/mainnet.yaml @@ -53,9 +53,9 @@ DENEB_FORK_EPOCH: 269568 # March 13, 2024, 01:55:35pm UTC # Electra ELECTRA_FORK_VERSION: 0x05000000 ELECTRA_FORK_EPOCH: 18446744073709551615 # temporary stub -# EIP7594 -EIP7594_FORK_VERSION: 0x06000000 # temporary stub -EIP7594_FORK_EPOCH: 18446744073709551615 +# Fulu +FULU_FORK_VERSION: 0x06000000 +FULU_FORK_EPOCH: 18446744073709551615 # temporary stub # WHISK WHISK_FORK_VERSION: 0x08000000 # temporary stub WHISK_FORK_EPOCH: 18446744073709551615 @@ -167,23 +167,23 @@ MAX_BLOBS_PER_BLOCK_ELECTRA: 9 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 -# Whisk -# `Epoch(2**8)` -WHISK_EPOCHS_PER_SHUFFLING_PHASE: 256 -# `Epoch(2)` -WHISK_PROPOSER_SELECTION_GAP: 2 - -# EIP7594 +# Fulu NUMBER_OF_COLUMNS: 128 NUMBER_OF_CUSTODY_GROUPS: 128 DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 SAMPLES_PER_SLOT: 8 CUSTODY_REQUIREMENT: 4 -TARGET_BLOBS_PER_BLOCK_EIP7594: 9 -MAX_BLOBS_PER_BLOCK_EIP7594: 12 -# `MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_EIP7594` -MAX_REQUEST_BLOB_SIDECARS_EIP7594: 1536 +TARGET_BLOBS_PER_BLOCK_FULU: 9 +MAX_BLOBS_PER_BLOCK_FULU: 12 +# `MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_FULU` +MAX_REQUEST_BLOB_SIDECARS_FULU: 1536 + +# Whisk +# `Epoch(2**8)` +WHISK_EPOCHS_PER_SHUFFLING_PHASE: 256 +# `Epoch(2)` +WHISK_PROPOSER_SELECTION_GAP: 2 # EIP7732 MAX_REQUEST_PAYLOADS: 128 diff --git a/configs/minimal.yaml b/configs/minimal.yaml index 449dd3c421..afb99949a4 100644 --- a/configs/minimal.yaml +++ b/configs/minimal.yaml @@ -52,9 +52,9 @@ DENEB_FORK_EPOCH: 18446744073709551615 # Electra ELECTRA_FORK_VERSION: 0x05000001 ELECTRA_FORK_EPOCH: 18446744073709551615 -# EIP7594 -EIP7594_FORK_VERSION: 0x06000001 -EIP7594_FORK_EPOCH: 18446744073709551615 +# Fulu +FULU_FORK_VERSION: 0x06000001 +FULU_FORK_EPOCH: 18446744073709551615 # WHISK WHISK_FORK_VERSION: 0x08000001 WHISK_FORK_EPOCH: 18446744073709551615 @@ -168,21 +168,21 @@ MAX_BLOBS_PER_BLOCK_ELECTRA: 9 # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 -# Whisk -WHISK_EPOCHS_PER_SHUFFLING_PHASE: 4 -WHISK_PROPOSER_SELECTION_GAP: 1 - -# EIP7594 +# Fulu NUMBER_OF_COLUMNS: 128 NUMBER_OF_CUSTODY_GROUPS: 128 DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 SAMPLES_PER_SLOT: 8 CUSTODY_REQUIREMENT: 4 -TARGET_BLOBS_PER_BLOCK_EIP7594: 9 -MAX_BLOBS_PER_BLOCK_EIP7594: 12 -# `MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_EIP7594` -MAX_REQUEST_BLOB_SIDECARS_EIP7594: 1536 +TARGET_BLOBS_PER_BLOCK_FULU: 9 +MAX_BLOBS_PER_BLOCK_FULU: 12 +# `MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_FULU` +MAX_REQUEST_BLOB_SIDECARS_FULU: 1536 + +# Whisk +WHISK_EPOCHS_PER_SHUFFLING_PHASE: 4 +WHISK_PROPOSER_SELECTION_GAP: 1 # EIP7732 MAX_REQUEST_PAYLOADS: 128 diff --git a/presets/mainnet/eip7594.yaml b/presets/mainnet/fulu.yaml similarity index 92% rename from presets/mainnet/eip7594.yaml rename to presets/mainnet/fulu.yaml index 813febf26d..84111aba28 100644 --- a/presets/mainnet/eip7594.yaml +++ b/presets/mainnet/fulu.yaml @@ -1,4 +1,4 @@ -# Mainnet preset - EIP7594 +# Mainnet preset - FULU # Misc # --------------------------------------------------------------- diff --git a/presets/minimal/eip7594.yaml b/presets/minimal/fulu.yaml similarity index 92% rename from presets/minimal/eip7594.yaml rename to presets/minimal/fulu.yaml index 847719a421..1204822fb8 100644 --- a/presets/minimal/eip7594.yaml +++ b/presets/minimal/fulu.yaml @@ -1,4 +1,4 @@ -# Minimal preset - EIP7594 +# Minimal preset - FULU # Misc # --------------------------------------------------------------- diff --git a/pysetup/constants.py b/pysetup/constants.py index 6bf22865b2..0959e795c4 100644 --- a/pysetup/constants.py +++ b/pysetup/constants.py @@ -5,7 +5,7 @@ CAPELLA = 'capella' DENEB = 'deneb' ELECTRA = 'electra' -EIP7594 = 'eip7594' +FULU = 'fulu' EIP6800 = 'eip6800' WHISK = 'whisk' EIP7732 = 'eip7732' diff --git a/pysetup/md_doc_paths.py b/pysetup/md_doc_paths.py index 0f0d1c8593..ff081ad5ab 100644 --- a/pysetup/md_doc_paths.py +++ b/pysetup/md_doc_paths.py @@ -7,8 +7,8 @@ CAPELLA, DENEB, ELECTRA, + FULU, WHISK, - EIP7594, EIP6800, EIP7732, ) @@ -21,8 +21,8 @@ CAPELLA: BELLATRIX, DENEB: CAPELLA, ELECTRA: DENEB, + FULU: ELECTRA, WHISK: CAPELLA, - EIP7594: ELECTRA, EIP6800: DENEB, EIP7732: ELECTRA, } diff --git a/pysetup/spec_builders/__init__.py b/pysetup/spec_builders/__init__.py index c5bbcf39eb..f6e05fc5b9 100644 --- a/pysetup/spec_builders/__init__.py +++ b/pysetup/spec_builders/__init__.py @@ -4,8 +4,8 @@ from .capella import CapellaSpecBuilder from .deneb import DenebSpecBuilder from .electra import ElectraSpecBuilder +from .fulu import FuluSpecBuilder from .whisk import WhiskSpecBuilder -from .eip7594 import EIP7594SpecBuilder from .eip6800 import EIP6800SpecBuilder from .eip7732 import EIP7732SpecBuilder @@ -14,6 +14,6 @@ builder.fork: builder for builder in ( Phase0SpecBuilder, AltairSpecBuilder, BellatrixSpecBuilder, CapellaSpecBuilder, DenebSpecBuilder, - ElectraSpecBuilder, WhiskSpecBuilder, EIP7594SpecBuilder, EIP6800SpecBuilder, EIP7732SpecBuilder, + ElectraSpecBuilder, FuluSpecBuilder, WhiskSpecBuilder, EIP6800SpecBuilder, EIP7732SpecBuilder, ) } diff --git a/pysetup/spec_builders/eip7594.py b/pysetup/spec_builders/fulu.py similarity index 95% rename from pysetup/spec_builders/eip7594.py rename to pysetup/spec_builders/fulu.py index e3177da8ca..3cd0c1c467 100644 --- a/pysetup/spec_builders/eip7594.py +++ b/pysetup/spec_builders/fulu.py @@ -1,11 +1,11 @@ from typing import Dict from .base import BaseSpecBuilder -from ..constants import EIP7594 +from ..constants import FULU -class EIP7594SpecBuilder(BaseSpecBuilder): - fork: str = EIP7594 +class FuluSpecBuilder(BaseSpecBuilder): + fork: str = FULU @classmethod def imports(cls, preset_name: str): diff --git a/scripts/build_run_docker_tests.sh b/scripts/build_run_docker_tests.sh index 91aa2c8ae1..1716a4774c 100755 --- a/scripts/build_run_docker_tests.sh +++ b/scripts/build_run_docker_tests.sh @@ -10,7 +10,7 @@ # Set variables -ALL_EXECUTABLE_SPECS=("phase0" "altair" "bellatrix" "capella" "deneb" "electra" "whisk" "eip7594") +ALL_EXECUTABLE_SPECS=("phase0" "altair" "bellatrix" "capella" "deneb" "electra" "fulu" "whisk") TEST_PRESET_TYPE=minimal FORK_TO_TEST=phase0 WORKDIR="//consensus-specs//tests//core//pyspec" diff --git a/specs/_features/eip7594/beacon-chain.md b/specs/fulu/beacon-chain.md similarity index 85% rename from specs/_features/eip7594/beacon-chain.md rename to specs/fulu/beacon-chain.md index 8f30e683e7..5dca6580f5 100644 --- a/specs/_features/eip7594/beacon-chain.md +++ b/specs/fulu/beacon-chain.md @@ -1,4 +1,4 @@ -# EIP7594 -- The Beacon Chain +# Fulu -- The Beacon Chain **Notice**: This document is a work-in-progress for researchers and implementers. @@ -27,8 +27,8 @@ | Name | Value | Description | | - | - | - | -| `TARGET_BLOBS_PER_BLOCK_EIP7594` | `uint64(9)` | *[New in EIP7594]* Target number of blobs in a single block limited by `MAX_BLOBS_PER_BLOCK_EIP7594` | -| `MAX_BLOBS_PER_BLOCK_EIP7594` | `uint64(12)` | *[New in EIP7594]* Maximum number of blobs in a single block limited by `MAX_BLOB_COMMITMENTS_PER_BLOCK` | +| `TARGET_BLOBS_PER_BLOCK_FULU` | `uint64(9)` | *[New in Fulu:EIP7594]* Target number of blobs in a single block limited by `MAX_BLOBS_PER_BLOCK_FULU` | +| `MAX_BLOBS_PER_BLOCK_FULU` | `uint64(12)` | *[New in Fulu:EIP7594]* Maximum number of blobs in a single block limited by `MAX_BLOB_COMMITMENTS_PER_BLOCK` | #### Execution payload @@ -45,7 +45,7 @@ def process_execution_payload(state: BeaconState, body: BeaconBlockBody, executi # Verify timestamp assert payload.timestamp == compute_timestamp_at_slot(state, state.slot) # Verify commitments are under limit - assert len(body.blob_kzg_commitments) <= MAX_BLOBS_PER_BLOCK_EIP7594 # [Modified in EIP7594] + assert len(body.blob_kzg_commitments) <= MAX_BLOBS_PER_BLOCK_FULU # [Modified in Fulu:EIP7594] # Verify the execution payload is valid versioned_hashes = [kzg_commitment_to_versioned_hash(commitment) for commitment in body.blob_kzg_commitments] assert execution_engine.verify_and_notify_new_payload( @@ -54,7 +54,7 @@ def process_execution_payload(state: BeaconState, body: BeaconBlockBody, executi versioned_hashes=versioned_hashes, parent_beacon_block_root=state.latest_block_header.parent_root, execution_requests=body.execution_requests, - target_blobs_per_block=TARGET_BLOBS_PER_BLOCK_EIP7594, # [Modified in EIP7594] + target_blobs_per_block=TARGET_BLOBS_PER_BLOCK_FULU, # [Modified in Fulu:EIP7594] ) ) # Cache execution payload header diff --git a/specs/_features/eip7594/das-core.md b/specs/fulu/das-core.md similarity index 99% rename from specs/_features/eip7594/das-core.md rename to specs/fulu/das-core.md index b3e8a23a48..25576bc1f4 100644 --- a/specs/_features/eip7594/das-core.md +++ b/specs/fulu/das-core.md @@ -1,4 +1,4 @@ -# EIP-7594 -- Data Availability Sampling Core +# Fulu -- Data Availability Sampling Core **Notice**: This document is a work-in-progress for researchers and implementers. diff --git a/specs/_features/eip7594/fork-choice.md b/specs/fulu/fork-choice.md similarity index 96% rename from specs/_features/eip7594/fork-choice.md rename to specs/fulu/fork-choice.md index ed91ab1d46..4a20906804 100644 --- a/specs/_features/eip7594/fork-choice.md +++ b/specs/fulu/fork-choice.md @@ -1,4 +1,4 @@ -# EIP-7594 -- Fork Choice +# Fulu -- Fork Choice ## Table of contents @@ -16,7 +16,7 @@ ## Introduction -This is the modification of the fork choice accompanying EIP-7594. +This is the modification of the fork choice accompanying Fulu. ## Helpers @@ -67,7 +67,7 @@ def on_block(store: Store, signed_block: SignedBeaconBlock) -> None: ) assert store.finalized_checkpoint.root == finalized_checkpoint_block - # [Modified in EIP7594] + # [Modified in Fulu:EIP7594] assert is_data_available(hash_tree_root(block)) # Check the block is valid and compute the post-state diff --git a/specs/_features/eip7594/fork.md b/specs/fulu/fork.md similarity index 82% rename from specs/_features/eip7594/fork.md rename to specs/fulu/fork.md index 4f2c17561f..e496467212 100644 --- a/specs/_features/eip7594/fork.md +++ b/specs/fulu/fork.md @@ -1,4 +1,4 @@ -# EIP7594 -- Fork Logic +# Fulu -- Fork Logic **Notice**: This document is a work-in-progress for researchers and implementers. @@ -12,7 +12,7 @@ - [Helper functions](#helper-functions) - [Misc](#misc) - [Modified `compute_fork_version`](#modified-compute_fork_version) -- [Fork to EIP7594](#fork-to-eip7594) +- [Fork to Fulu](#fork-to-fulu) - [Fork trigger](#fork-trigger) - [Upgrading the state](#upgrading-the-state) @@ -20,7 +20,7 @@ ## Introduction -This document describes the process of EIP7594 upgrade. +This document describes the process of Fulu upgrade. ## Configuration @@ -28,8 +28,8 @@ Warning: this configuration is not definitive. | Name | Value | | - | - | -| `EIP7594_FORK_VERSION` | `Version('0x06000000')` | -| `EIP7594_FORK_EPOCH` | `Epoch(18446744073709551615)` **TBD** | +| `FULU_FORK_VERSION` | `Version('0x06000000')` | +| `FULU_FORK_EPOCH` | `Epoch(18446744073709551615)` **TBD** | ## Helper functions @@ -42,8 +42,8 @@ def compute_fork_version(epoch: Epoch) -> Version: """ Return the fork version at the given ``epoch``. """ - if epoch >= EIP7594_FORK_EPOCH: - return EIP7594_FORK_VERSION + if epoch >= FULU_FORK_EPOCH: + return FULU_FORK_VERSION if epoch >= ELECTRA_FORK_EPOCH: return ELECTRA_FORK_VERSION if epoch >= DENEB_FORK_EPOCH: @@ -57,23 +57,22 @@ def compute_fork_version(epoch: Epoch) -> Version: return GENESIS_FORK_VERSION ``` -## Fork to EIP7594 +## Fork to Fulu ### Fork trigger -EIP7594 does not need a hard fork. We only add this fork doc for compiling this new feature in pyspec. +TBD. This fork is defined for testing purposes, the EIP may be combined with other consensus-layer upgrade. +For now, we assume the condition will be triggered at epoch `FULU_FORK_EPOCH`. -For now, we assume the condition will be triggered at epoch `EIP7594_FORK_EPOCH`. - -Note that for the pure EIP7594 networks, we don't apply `upgrade_to_eip7594` since it starts with EIP7594 version logic. +Note that for the pure Fulu networks, we don't apply `upgrade_to_fulu` since it starts with Fulu version logic. ### Upgrading the state -If `state.slot % SLOTS_PER_EPOCH == 0` and `compute_epoch_at_slot(state.slot) == EIP7594_FORK_EPOCH`, -an irregular state change is made to upgrade to EIP7594. +If `state.slot % SLOTS_PER_EPOCH == 0` and `compute_epoch_at_slot(state.slot) == FULU_FORK_EPOCH`, +an irregular state change is made to upgrade to Fulu. ```python -def upgrade_to_eip7594(pre: electra.BeaconState) -> BeaconState: +def upgrade_to_fulu(pre: electra.BeaconState) -> BeaconState: epoch = electra.get_current_epoch(pre) post = BeaconState( # Versioning @@ -82,7 +81,7 @@ def upgrade_to_eip7594(pre: electra.BeaconState) -> BeaconState: slot=pre.slot, fork=Fork( previous_version=pre.fork.current_version, - current_version=EIP7594_FORK_VERSION, # [Modified in EIP7594] + current_version=FULU_FORK_VERSION, # [Modified in Fulu] epoch=epoch, ), # History diff --git a/specs/_features/eip7594/p2p-interface.md b/specs/fulu/p2p-interface.md similarity index 87% rename from specs/_features/eip7594/p2p-interface.md rename to specs/fulu/p2p-interface.md index 1f8172961e..abebbffecc 100644 --- a/specs/_features/eip7594/p2p-interface.md +++ b/specs/fulu/p2p-interface.md @@ -1,4 +1,4 @@ -# EIP-7594 -- Networking +# Fulu -- Networking **Notice**: This document is a work-in-progress for researchers and implementers. @@ -9,7 +9,7 @@ - [Introduction](#introduction) -- [Modifications in EIP-7594](#modifications-in-eip-7594) +- [Modifications in Fulu](#modifications-in-fulu) - [Preset](#preset) - [Configuration](#configuration) - [Containers](#containers) @@ -43,11 +43,11 @@ ## Introduction -This document contains the consensus-layer networking specification for EIP7594. +This document contains the consensus-layer networking specification for Fulu. The specification of these changes continues in the same format as the network specifications of previous upgrades, and assumes them as pre-requisite. -## Modifications in EIP-7594 +## Modifications in Fulu ### Preset @@ -57,14 +57,14 @@ The specification of these changes continues in the same format as the network s ### Configuration -*[New in EIP7594]* +*[New in Fulu:EIP7594]* -| Name | Value | Description | -|------------------------------------------------|----------------------------------------------------------|---------------------------------------------------------------------------| -| `DATA_COLUMN_SIDECAR_SUBNET_COUNT` | `128` | The number of data column sidecar subnets used in the gossipsub protocol | -| `MAX_REQUEST_DATA_COLUMN_SIDECARS` | `MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS` | Maximum number of data column sidecars in a single request | -| `MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS` | `2**12` (= 4096 epochs, ~18 days) | The minimum epoch range over which a node must serve data column sidecars | -| `MAX_REQUEST_BLOB_SIDECARS_EIP7594` | `MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_EIP7594` | Maximum number of blob sidecars in a single request | +| Name | Value | Description | +|------------------------------------------------|-------------------------------------------------------|---------------------------------------------------------------------------| +| `DATA_COLUMN_SIDECAR_SUBNET_COUNT` | `128` | The number of data column sidecar subnets used in the gossipsub protocol | +| `MAX_REQUEST_DATA_COLUMN_SIDECARS` | `MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS` | Maximum number of data column sidecars in a single request | +| `MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS` | `2**12` (= 4096 epochs, ~18 days) | The minimum epoch range over which a node must serve data column sidecars | +| `MAX_REQUEST_BLOB_SIDECARS_FULU` | `MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_FULU` | Maximum number of blob sidecars in a single request | ### Containers @@ -163,7 +163,7 @@ Where ### The gossip domain: gossipsub -Some gossip meshes are upgraded in the EIP-7594 fork to support upgraded types. +Some gossip meshes are upgraded in the Fulu fork to support upgraded types. #### Topics and messages @@ -174,7 +174,7 @@ Some gossip meshes are upgraded in the EIP-7594 fork to support upgraded types. *Updated validation* - _[REJECT]_ The length of KZG commitments is less than or equal to the limitation defined in Consensus Layer -- - i.e. validate that `len(body.signed_beacon_block.message.blob_kzg_commitments) <= MAX_BLOBS_PER_BLOCK_EIP7594` + i.e. validate that `len(body.signed_beacon_block.message.blob_kzg_commitments) <= MAX_BLOBS_PER_BLOCK_FULU` ##### Blob subnets @@ -215,21 +215,21 @@ The following validations MUST pass before forwarding the `sidecar: DataColumnSi **Protocol ID:** `/eth2/beacon_chain/req/blob_sidecars_by_root/3/` -*[Modified in EIP7594]* +*[Modified in Fulu:EIP7594]* The `` field is calculated as `context = compute_fork_digest(fork_version, genesis_validators_root)`: [1]: # (eth2spec: skip) -| `fork_version` | Chunk SSZ type | -|------------------------|-----------------------| -| `EIP7594_FORK_VERSION` | `eip7594.BlobSidecar` | +| `fork_version` | Chunk SSZ type | +|---------------------|--------------------| +| `FULU_FORK_VERSION` | `fulu.BlobSidecar` | Request Content: ``` ( - List[BlobIdentifier, MAX_REQUEST_BLOB_SIDECARS_EIP7594] + List[BlobIdentifier, MAX_REQUEST_BLOB_SIDECARS_FULU] ) ``` @@ -237,27 +237,27 @@ Response Content: ``` ( - List[BlobSidecar, MAX_REQUEST_BLOB_SIDECARS_EIP7594] + List[BlobSidecar, MAX_REQUEST_BLOB_SIDECARS_FULU] ) ``` *Updated validation* -No more than `MAX_REQUEST_BLOB_SIDECARS_EIP7594` may be requested at a time. +No more than `MAX_REQUEST_BLOB_SIDECARS_FULU` may be requested at a time. ##### BlobSidecarsByRange v3 **Protocol ID:** `/eth2/beacon_chain/req/blob_sidecars_by_range/3/` -*[Modified in EIP7594]* +*[Modified in Fulu:EIP7594]* The `` field is calculated as `context = compute_fork_digest(fork_version, genesis_validators_root)`: [1]: # (eth2spec: skip) -| `fork_version` | Chunk SSZ type | -|------------------------|-----------------------| -| `EIP7594_FORK_VERSION` | `eip7594.BlobSidecar` | +| `fork_version` | Chunk SSZ type | +|---------------------|--------------------| +| `FULU_FORK_VERSION` | `fulu.BlobSidecar` | Request Content: @@ -272,27 +272,27 @@ Response Content: ``` ( - List[BlobSidecar, MAX_REQUEST_BLOB_SIDECARS_EIP7594] + List[BlobSidecar, MAX_REQUEST_BLOB_SIDECARS_FULU] ) ``` *Updated validation* -Clients MUST respond with at least the blob sidecars of the first blob-carrying block that exists in the range, if they have it, and no more than `MAX_REQUEST_BLOB_SIDECARS_EIP7594` sidecars. +Clients MUST respond with at least the blob sidecars of the first blob-carrying block that exists in the range, if they have it, and no more than `MAX_REQUEST_BLOB_SIDECARS_FULU` sidecars. ##### DataColumnSidecarsByRoot v1 **Protocol ID:** `/eth2/beacon_chain/req/data_column_sidecars_by_root/1/` -*[New in EIP7594]* +*[New in Fulu:EIP7594]* The `` field is calculated as `context = compute_fork_digest(fork_version, genesis_validators_root)`: [1]: # (eth2spec: skip) -| `fork_version` | Chunk SSZ type | -|------------------------|-----------------------------| -| `EIP7594_FORK_VERSION` | `eip7594.DataColumnSidecar` | +| `fork_version` | Chunk SSZ type | +|---------------------|--------------------------| +| `FULU_FORK_VERSION` | `fulu.DataColumnSidecar` | Request Content: @@ -321,7 +321,7 @@ No more than `MAX_REQUEST_DATA_COLUMN_SIDECARS` may be requested at a time. The response MUST consist of zero or more `response_chunk`. Each _successful_ `response_chunk` MUST contain a single `DataColumnSidecar` payload. -Clients MUST support requesting sidecars since `minimum_request_epoch`, where `minimum_request_epoch = max(finalized_epoch, current_epoch - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, EIP7594_FORK_EPOCH)`. If any root in the request content references a block earlier than `minimum_request_epoch`, peers MAY respond with error code `3: ResourceUnavailable` or not include the data column sidecar in the response. +Clients MUST support requesting sidecars since `minimum_request_epoch`, where `minimum_request_epoch = max(finalized_epoch, current_epoch - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, FULU_FORK_EPOCH)`. If any root in the request content references a block earlier than `minimum_request_epoch`, peers MAY respond with error code `3: ResourceUnavailable` or not include the data column sidecar in the response. Clients MUST respond with at least one sidecar, if they have it. Clients MAY limit the number of blocks and sidecars in the response. @@ -338,9 +338,9 @@ The `` field is calculated as `context = compute_fork_digest(fork [1]: # (eth2spec: skip) -| `fork_version` | Chunk SSZ type | -|------------------------|-----------------------------| -| `EIP7594_FORK_VERSION` | `eip7594.DataColumnSidecar` | +| `fork_version` | Chunk SSZ type | +|---------------------|--------------------------| +| `FULU_FORK_VERSION` | `fulu.DataColumnSidecar` | Request Content: @@ -371,7 +371,7 @@ The request MUST be encoded as an SSZ-container. The response MUST consist of zero or more `response_chunk`. Each _successful_ `response_chunk` MUST contain a single `DataColumnSidecar` payload. -Let `data_column_serve_range` be `[max(current_epoch - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, EIP7594_FORK_EPOCH), current_epoch]`. +Let `data_column_serve_range` be `[max(current_epoch - MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, FULU_FORK_EPOCH), current_epoch]`. Clients MUST keep a record of data column sidecars seen on the epoch range `data_column_serve_range` where `current_epoch` is defined by the current wall-clock time, and clients MUST support serving requests of data columns on this range. diff --git a/specs/_features/eip7594/peer-sampling.md b/specs/fulu/peer-sampling.md similarity index 94% rename from specs/_features/eip7594/peer-sampling.md rename to specs/fulu/peer-sampling.md index 853bf88ff0..d8b05bba13 100644 --- a/specs/_features/eip7594/peer-sampling.md +++ b/specs/fulu/peer-sampling.md @@ -1,4 +1,4 @@ -# EIP-7594 -- Peer Sampling +# Fulu -- Peer Sampling **Notice**: This document is a work-in-progress for researchers and implementers. @@ -23,7 +23,7 @@ ## Introduction -The purpose of this document is to complement [EIP-7594 -- Data Availability Sampling Core](das-core.md) by specifying the peer sampling functionality of the full PeerDAS protocol. Initially, this functionality may not be implemented by all clients. In such cases, it is replaced by [subnet sampling](das-core.md#subnet-sampling), which is an extension of the custody component of the protocol. +The purpose of this document is to complement [Fulu -- Data Availability Sampling Core](das-core.md) by specifying the peer sampling functionality of the full PeerDAS protocol. Initially, this functionality may not be implemented by all clients. In such cases, it is replaced by [subnet sampling](das-core.md#subnet-sampling), which is an extension of the custody component of the protocol. ## Helper functions diff --git a/specs/_features/eip7594/polynomial-commitments-sampling.md b/specs/fulu/polynomial-commitments-sampling.md similarity index 99% rename from specs/_features/eip7594/polynomial-commitments-sampling.md rename to specs/fulu/polynomial-commitments-sampling.md index f3844756cb..c85e870896 100644 --- a/specs/_features/eip7594/polynomial-commitments-sampling.md +++ b/specs/fulu/polynomial-commitments-sampling.md @@ -1,4 +1,4 @@ -# EIP-7594 -- Polynomial Commitments Sampling +# Fulu -- Polynomial Commitments Sampling ## Table of contents diff --git a/specs/_features/eip7594/validator.md b/specs/fulu/validator.md similarity index 87% rename from specs/_features/eip7594/validator.md rename to specs/fulu/validator.md index 0fddad4ebe..b8781e8ad6 100644 --- a/specs/_features/eip7594/validator.md +++ b/specs/fulu/validator.md @@ -1,4 +1,4 @@ -# EIP7594 -- Honest Validator +# Fulu -- Honest Validator ## Table of contents @@ -17,14 +17,14 @@ ## Introduction -This document represents the changes to be made in the code of an "honest validator" to implement EIP7594. +This document represents the changes to be made in the code of an "honest validator" to implement Fulu. ## Prerequisites This document is an extension of the [Electra -- Honest Validator](../electra/validator.md) guide. All behaviors and definitions defined in this document, and documents it extends, carry over unless explicitly noted or overridden. -All terminology, constants, functions, and protocol mechanics defined in the updated Beacon Chain doc of [EIP7594](./beacon-chain.md) are requisite for this document and used throughout. +All terminology, constants, functions, and protocol mechanics defined in the updated Beacon Chain doc of [Fulu](./beacon-chain.md) are requisite for this document and used throughout. Please see related Beacon Chain doc before continuing and use them as a reference throughout. ## Block proposal @@ -56,8 +56,8 @@ def prepare_execution_payload(state: BeaconState, suggested_fee_recipient=suggested_fee_recipient, withdrawals=withdrawals, parent_beacon_block_root=hash_tree_root(state.latest_block_header), - target_blobs_per_block=TARGET_BLOBS_PER_BLOCK_EIP7594, # [Modified in EIP7594] - max_blobs_per_block=MAX_BLOBS_PER_BLOCK_EIP7594, # [Modified in EIP7594] + target_blobs_per_block=TARGET_BLOBS_PER_BLOCK_FULU, # [Modified in Fulu:EIP7594] + max_blobs_per_block=MAX_BLOBS_PER_BLOCK_FULU, # [Modified in Fulu:EIP7594] ) return execution_engine.notify_forkchoice_updated( head_block_hash=parent_hash, diff --git a/tests/core/pyspec/eth2spec/test/context.py b/tests/core/pyspec/eth2spec/test/context.py index 8b2e8de6d3..8c960cfc75 100644 --- a/tests/core/pyspec/eth2spec/test/context.py +++ b/tests/core/pyspec/eth2spec/test/context.py @@ -8,7 +8,7 @@ from .exceptions import SkippedTest from .helpers.constants import ( PHASE0, ALTAIR, BELLATRIX, CAPELLA, DENEB, ELECTRA, - EIP7594, + FULU, WHISK, MINIMAL, ALL_PHASES, @@ -558,7 +558,7 @@ def wrapper(*args, spec: Spec, **kw): with_deneb_and_later = with_all_phases_from(DENEB) with_electra_and_later = with_all_phases_from(ELECTRA) with_whisk_and_later = with_all_phases_from(WHISK, all_phases=ALLOWED_TEST_RUNNER_FORKS) -with_eip7594_and_later = with_all_phases_from(EIP7594, all_phases=ALLOWED_TEST_RUNNER_FORKS) +with_fulu_and_later = with_all_phases_from(FULU, all_phases=ALLOWED_TEST_RUNNER_FORKS) class quoted_str(str): diff --git a/tests/core/pyspec/eth2spec/test/deneb/fork_choice/test_on_block.py b/tests/core/pyspec/eth2spec/test/deneb/fork_choice/test_on_block.py index 905cb390eb..2845af4634 100644 --- a/tests/core/pyspec/eth2spec/test/deneb/fork_choice/test_on_block.py +++ b/tests/core/pyspec/eth2spec/test/deneb/fork_choice/test_on_block.py @@ -7,7 +7,7 @@ from eth2spec.test.helpers.constants import ( DENEB, - EIP7594, + FULU, ) from eth2spec.test.helpers.block import ( @@ -39,7 +39,7 @@ def get_block_with_blob(spec, state, rng=None): return block, blobs, blob_kzg_proofs -@with_all_phases_from_except(DENEB, [EIP7594]) +@with_all_phases_from_except(DENEB, [FULU]) @spec_state_test def test_simple_blob_data(spec, state): rng = Random(1234) @@ -74,7 +74,7 @@ def test_simple_blob_data(spec, state): yield 'steps', test_steps -@with_all_phases_from_except(DENEB, [EIP7594]) +@with_all_phases_from_except(DENEB, [FULU]) @spec_state_test def test_invalid_incorrect_proof(spec, state): rng = Random(1234) @@ -102,7 +102,7 @@ def test_invalid_incorrect_proof(spec, state): yield 'steps', test_steps -@with_all_phases_from_except(DENEB, [EIP7594]) +@with_all_phases_from_except(DENEB, [FULU]) @spec_state_test def test_invalid_data_unavailable(spec, state): rng = Random(1234) @@ -130,7 +130,7 @@ def test_invalid_data_unavailable(spec, state): yield 'steps', test_steps -@with_all_phases_from_except(DENEB, [EIP7594]) +@with_all_phases_from_except(DENEB, [FULU]) @spec_state_test def test_invalid_wrong_proofs_length(spec, state): rng = Random(1234) @@ -158,7 +158,7 @@ def test_invalid_wrong_proofs_length(spec, state): yield 'steps', test_steps -@with_all_phases_from_except(DENEB, [EIP7594]) +@with_all_phases_from_except(DENEB, [FULU]) @spec_state_test def test_invalid_wrong_blobs_length(spec, state): rng = Random(1234) diff --git a/tests/core/pyspec/eth2spec/test/eip7594/__init__.py b/tests/core/pyspec/eth2spec/test/fulu/__init__.py similarity index 100% rename from tests/core/pyspec/eth2spec/test/eip7594/__init__.py rename to tests/core/pyspec/eth2spec/test/fulu/__init__.py diff --git a/tests/core/pyspec/eth2spec/test/eip7594/merkle_proof/__init__.py b/tests/core/pyspec/eth2spec/test/fulu/merkle_proof/__init__.py similarity index 100% rename from tests/core/pyspec/eth2spec/test/eip7594/merkle_proof/__init__.py rename to tests/core/pyspec/eth2spec/test/fulu/merkle_proof/__init__.py diff --git a/tests/core/pyspec/eth2spec/test/eip7594/merkle_proof/test_single_merkle_proof.py b/tests/core/pyspec/eth2spec/test/fulu/merkle_proof/test_single_merkle_proof.py similarity index 97% rename from tests/core/pyspec/eth2spec/test/eip7594/merkle_proof/test_single_merkle_proof.py rename to tests/core/pyspec/eth2spec/test/fulu/merkle_proof/test_single_merkle_proof.py index 4bd5fb4912..b614793f73 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/merkle_proof/test_single_merkle_proof.py +++ b/tests/core/pyspec/eth2spec/test/fulu/merkle_proof/test_single_merkle_proof.py @@ -2,7 +2,7 @@ from eth2spec.test.context import ( spec_state_test, - with_eip7594_and_later, + with_fulu_and_later, with_test_suite_name, ) from eth2spec.test.helpers.block import ( @@ -62,14 +62,14 @@ def _run_blob_kzg_commitments_merkle_proof_test(spec, state, rng=None): @with_test_suite_name("BeaconBlockBody") -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test def test_blob_kzg_commitments_merkle_proof__basic(spec, state): yield from _run_blob_kzg_commitments_merkle_proof_test(spec, state) @with_test_suite_name("BeaconBlockBody") -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test def test_blob_kzg_commitments_merkle_proof__random_block_1(spec, state): rng = random.Random(1111) diff --git a/tests/core/pyspec/eth2spec/test/eip7594/networking/__init__.py b/tests/core/pyspec/eth2spec/test/fulu/networking/__init__.py similarity index 100% rename from tests/core/pyspec/eth2spec/test/eip7594/networking/__init__.py rename to tests/core/pyspec/eth2spec/test/fulu/networking/__init__.py diff --git a/tests/core/pyspec/eth2spec/test/eip7594/networking/test_get_custody_columns.py b/tests/core/pyspec/eth2spec/test/fulu/networking/test_get_custody_columns.py similarity index 92% rename from tests/core/pyspec/eth2spec/test/eip7594/networking/test_get_custody_columns.py rename to tests/core/pyspec/eth2spec/test/fulu/networking/test_get_custody_columns.py index 97cc948db5..d3be42ce16 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/networking/test_get_custody_columns.py +++ b/tests/core/pyspec/eth2spec/test/fulu/networking/test_get_custody_columns.py @@ -3,7 +3,7 @@ from eth2spec.test.context import ( single_phase, spec_test, - with_eip7594_and_later, + with_fulu_and_later, ) @@ -33,7 +33,7 @@ def _run_get_custody_columns(spec, rng, node_id=None, custody_group_count=None): yield 'result', 'meta', python_list_result -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__min_node_id_min_custody_group_count(spec): @@ -41,7 +41,7 @@ def test_get_custody_columns__min_node_id_min_custody_group_count(spec): yield from _run_get_custody_columns(spec, rng, node_id=0, custody_group_count=0) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__min_node_id_max_custody_group_count(spec): @@ -51,7 +51,7 @@ def test_get_custody_columns__min_node_id_max_custody_group_count(spec): custody_group_count=spec.config.NUMBER_OF_CUSTODY_GROUPS) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__max_node_id_min_custody_group_count(spec): @@ -59,7 +59,7 @@ def test_get_custody_columns__max_node_id_min_custody_group_count(spec): yield from _run_get_custody_columns(spec, rng, node_id=2**256 - 1, custody_group_count=0) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__max_node_id_max_custody_group_count(spec): @@ -70,7 +70,7 @@ def test_get_custody_columns__max_node_id_max_custody_group_count(spec): ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__max_node_id_max_custody_group_count_minus_1(spec): @@ -81,7 +81,7 @@ def test_get_custody_columns__max_node_id_max_custody_group_count_minus_1(spec): ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__short_node_id(spec): @@ -89,7 +89,7 @@ def test_get_custody_columns__short_node_id(spec): yield from _run_get_custody_columns(spec, rng, node_id=1048576, custody_group_count=1) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__1(spec): @@ -97,7 +97,7 @@ def test_get_custody_columns__1(spec): yield from _run_get_custody_columns(spec, rng) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__2(spec): @@ -105,7 +105,7 @@ def test_get_custody_columns__2(spec): yield from _run_get_custody_columns(spec, rng) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns__3(spec): diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/__init__.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/__init__.py similarity index 100% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/__init__.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/__init__.py diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/das/__init__.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/das/__init__.py similarity index 100% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/das/__init__.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/das/__init__.py diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/das/test_das.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/das/test_das.py similarity index 94% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/das/test_das.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/das/test_das.py index dd0a80fda4..f18e52b149 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/unittests/das/test_das.py +++ b/tests/core/pyspec/eth2spec/test/fulu/unittests/das/test_das.py @@ -4,7 +4,7 @@ spec_test, single_phase, with_config_overrides, - with_eip7594_and_later, + with_fulu_and_later, ) from eth2spec.test.helpers.blob import ( get_sample_blob, @@ -16,7 +16,7 @@ def chunks(lst, n): return [lst[i:i + n] for i in range(0, len(lst), n)] -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_compute_matrix(spec): @@ -41,7 +41,7 @@ def test_compute_matrix(spec): assert blob == input_blobs[blob_index] -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_recover_matrix(spec): @@ -68,7 +68,7 @@ def test_recover_matrix(spec): assert recovered_matrix == matrix -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_extended_sample_count__1(spec): @@ -77,7 +77,7 @@ def test_get_extended_sample_count__1(spec): spec.get_extended_sample_count(allowed_failures) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_extended_sample_count__2(spec): @@ -86,7 +86,7 @@ def test_get_extended_sample_count__2(spec): spec.get_extended_sample_count(allowed_failures) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_extended_sample_count__3(spec): @@ -95,7 +95,7 @@ def test_get_extended_sample_count__3(spec): spec.get_extended_sample_count(allowed_failures) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_extended_sample_count__lower_bound(spec): @@ -103,7 +103,7 @@ def test_get_extended_sample_count__lower_bound(spec): spec.get_extended_sample_count(allowed_failures) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_extended_sample_count__upper_bound(spec): @@ -111,7 +111,7 @@ def test_get_extended_sample_count__upper_bound(spec): spec.get_extended_sample_count(allowed_failures) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_extended_sample_count__upper_bound_exceed(spec): @@ -119,7 +119,7 @@ def test_get_extended_sample_count__upper_bound_exceed(spec): expect_assertion_error(lambda: spec.get_extended_sample_count(allowed_failures)) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @with_config_overrides({ 'NUMBER_OF_COLUMNS': 128, diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/polynomial_commitments/__init__.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/polynomial_commitments/__init__.py similarity index 100% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/polynomial_commitments/__init__.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/polynomial_commitments/__init__.py diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/polynomial_commitments/test_polynomial_commitments.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/polynomial_commitments/test_polynomial_commitments.py similarity index 97% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/polynomial_commitments/test_polynomial_commitments.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/polynomial_commitments/test_polynomial_commitments.py index 1d72b142af..b935c212e4 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/unittests/polynomial_commitments/test_polynomial_commitments.py +++ b/tests/core/pyspec/eth2spec/test/fulu/unittests/polynomial_commitments/test_polynomial_commitments.py @@ -3,7 +3,7 @@ spec_test, single_phase, expect_assertion_error, - with_eip7594_and_later, + with_fulu_and_later, ) from eth2spec.test.helpers.blob import ( get_sample_blob, @@ -11,7 +11,7 @@ from eth2spec.utils.bls import BLS_MODULUS -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_fft(spec): @@ -45,7 +45,7 @@ def test_fft(spec): assert individual_evaluation == poly_eval[i] -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_coset_fft(spec): @@ -84,7 +84,7 @@ def test_coset_fft(spec): assert individual_evaluation == poly_eval[i] -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_construct_vanishing_polynomial(spec): @@ -108,7 +108,7 @@ def test_construct_vanishing_polynomial(spec): assert all(a != spec.BLSFieldElement(0) for a in zero_poly_eval_brp[start:end]) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_verify_cell_kzg_proof_batch_zero_cells(spec): @@ -121,7 +121,7 @@ def test_verify_cell_kzg_proof_batch_zero_cells(spec): ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_verify_cell_kzg_proof_batch(spec): @@ -173,7 +173,7 @@ def test_verify_cell_kzg_proof_batch(spec): ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_verify_cell_kzg_proof_batch_invalid(spec): @@ -229,7 +229,7 @@ def test_verify_cell_kzg_proof_batch_invalid(spec): ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_recover_cells_and_kzg_proofs(spec): @@ -268,7 +268,7 @@ def test_recover_cells_and_kzg_proofs(spec): assert proofs == recovered_proofs -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_multiply_polynomial_degree_overflow(spec): diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_config_invariants.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_config_invariants.py similarity index 74% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/test_config_invariants.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/test_config_invariants.py index 624976a350..57b40f6e2c 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_config_invariants.py +++ b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_config_invariants.py @@ -1,11 +1,11 @@ from eth2spec.test.context import ( single_phase, spec_test, - with_eip7594_and_later, + with_fulu_and_later, ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_invariants(spec): @@ -20,20 +20,20 @@ def test_invariants(spec): ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_polynomical_commitments_sampling(spec): assert spec.FIELD_ELEMENTS_PER_EXT_BLOB == 2 * spec.FIELD_ELEMENTS_PER_BLOB -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_networking(spec): - assert spec.config.TARGET_BLOBS_PER_BLOCK_EIP7594 <= spec.config.MAX_BLOBS_PER_BLOCK_EIP7594 - assert spec.config.MAX_BLOBS_PER_BLOCK_EIP7594 <= spec.MAX_BLOB_COMMITMENTS_PER_BLOCK + assert spec.config.TARGET_BLOBS_PER_BLOCK_FULU <= spec.config.MAX_BLOBS_PER_BLOCK_FULU + assert spec.config.MAX_BLOBS_PER_BLOCK_FULU <= spec.MAX_BLOB_COMMITMENTS_PER_BLOCK assert ( - spec.config.MAX_REQUEST_BLOB_SIDECARS_EIP7594 == - spec.config.MAX_REQUEST_BLOCKS_DENEB * spec.config.MAX_BLOBS_PER_BLOCK_EIP7594 + spec.config.MAX_REQUEST_BLOB_SIDECARS_FULU == + spec.config.MAX_REQUEST_BLOCKS_DENEB * spec.config.MAX_BLOBS_PER_BLOCK_FULU ) diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_custody.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_custody.py similarity index 93% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/test_custody.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/test_custody.py index 7e7cef3421..fa2fcbc7dc 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_custody.py +++ b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_custody.py @@ -2,7 +2,7 @@ expect_assertion_error, spec_test, single_phase, - with_eip7594_and_later, + with_fulu_and_later, ) @@ -21,7 +21,7 @@ def run_get_custody_columns(spec, peer_count, custody_group_count): assert len(columns) == len(set(columns)) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns_peers_within_number_of_columns(spec): @@ -31,7 +31,7 @@ def test_get_custody_columns_peers_within_number_of_columns(spec): run_get_custody_columns(spec, peer_count, custody_group_count) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns_peers_more_than_number_of_columns(spec): @@ -41,7 +41,7 @@ def test_get_custody_columns_peers_more_than_number_of_columns(spec): run_get_custody_columns(spec, peer_count, custody_group_count) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns_maximum_groups(spec): @@ -50,7 +50,7 @@ def test_get_custody_columns_maximum_groups(spec): run_get_custody_columns(spec, peer_count, custody_group_count) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_get_custody_columns_custody_size_more_than_number_of_groups(spec): @@ -59,7 +59,7 @@ def test_get_custody_columns_custody_size_more_than_number_of_groups(spec): expect_assertion_error(lambda: spec.get_custody_groups(node_id, custody_group_count)) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_compute_columns_for_custody_group_out_of_bound_custody_group(spec): diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_networking.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_networking.py similarity index 93% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/test_networking.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/test_networking.py index 931cc9c1d1..cb4a9e0f92 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_networking.py +++ b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_networking.py @@ -3,7 +3,7 @@ single_phase, spec_state_test, spec_test, - with_eip7594_and_later, + with_fulu_and_later, ) from eth2spec.debug.random_value import ( RandomizationMode, @@ -45,7 +45,7 @@ def compute_data_column_sidecar(spec, state): # Tests for verify_data_column_sidecar -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar__valid(spec, state): @@ -53,7 +53,7 @@ def test_verify_data_column_sidecar__valid(spec, state): assert spec.verify_data_column_sidecar(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar__invalid_zero_blobs(spec, state): @@ -64,7 +64,7 @@ def test_verify_data_column_sidecar__invalid_zero_blobs(spec, state): assert not spec.verify_data_column_sidecar(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar__invalid_index(spec, state): @@ -73,7 +73,7 @@ def test_verify_data_column_sidecar__invalid_index(spec, state): assert not spec.verify_data_column_sidecar(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar__invalid_mismatch_len_column(spec, state): @@ -82,7 +82,7 @@ def test_verify_data_column_sidecar__invalid_mismatch_len_column(spec, state): assert not spec.verify_data_column_sidecar(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar__invalid_mismatch_len_kzg_commitments(spec, state): @@ -91,7 +91,7 @@ def test_verify_data_column_sidecar__invalid_mismatch_len_kzg_commitments(spec, assert not spec.verify_data_column_sidecar(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecars__invalid_mismatch_len_kzg_proofs(spec, state): @@ -103,7 +103,7 @@ def test_verify_data_column_sidecars__invalid_mismatch_len_kzg_proofs(spec, stat # Tests for verify_data_column_sidecar_kzg_proofs -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar_kzg_proofs__valid(spec, state): @@ -111,7 +111,7 @@ def test_verify_data_column_sidecar_kzg_proofs__valid(spec, state): assert spec.verify_data_column_sidecar_kzg_proofs(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar_kzg_proofs__invalid_wrong_column(spec, state): @@ -120,7 +120,7 @@ def test_verify_data_column_sidecar_kzg_proofs__invalid_wrong_column(spec, state assert not spec.verify_data_column_sidecar_kzg_proofs(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar_kzg_proofs__invalid_wrong_commitment(spec, state): @@ -129,7 +129,7 @@ def test_verify_data_column_sidecar_kzg_proofs__invalid_wrong_commitment(spec, s assert not spec.verify_data_column_sidecar_kzg_proofs(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar_kzg_proofs__invalid_wrong_proof(spec, state): @@ -141,7 +141,7 @@ def test_verify_data_column_sidecar_kzg_proofs__invalid_wrong_proof(spec, state) # Tests for verify_data_column_sidecar_inclusion_proof -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar_inclusion_proof__valid(spec, state): @@ -149,7 +149,7 @@ def test_verify_data_column_sidecar_inclusion_proof__valid(spec, state): assert spec.verify_data_column_sidecar_inclusion_proof(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar_inclusion_proof__invalid_missing_commitment(spec, state): @@ -158,7 +158,7 @@ def test_verify_data_column_sidecar_inclusion_proof__invalid_missing_commitment( assert not spec.verify_data_column_sidecar_inclusion_proof(sidecar) -@with_eip7594_and_later +@with_fulu_and_later @spec_state_test @single_phase def test_verify_data_column_sidecar_inclusion_proof__invalid_duplicate_commitment(spec, state): @@ -170,7 +170,7 @@ def test_verify_data_column_sidecar_inclusion_proof__invalid_duplicate_commitmen # Tests for compute_subnet_for_data_column_sidecar -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase def test_compute_subnet_for_data_column_sidecar(spec): diff --git a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_security.py b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_security.py similarity index 93% rename from tests/core/pyspec/eth2spec/test/eip7594/unittests/test_security.py rename to tests/core/pyspec/eth2spec/test/fulu/unittests/test_security.py index 282433b9c9..d93560d037 100644 --- a/tests/core/pyspec/eth2spec/test/eip7594/unittests/test_security.py +++ b/tests/core/pyspec/eth2spec/test/fulu/unittests/test_security.py @@ -1,7 +1,7 @@ from eth2spec.test.context import ( spec_test, single_phase, - with_eip7594_and_later, + with_fulu_and_later, with_phases, ) from eth2spec.test.helpers.constants import ( @@ -9,7 +9,7 @@ ) -@with_eip7594_and_later +@with_fulu_and_later @spec_test @single_phase @with_phases([MAINNET]) diff --git a/tests/core/pyspec/eth2spec/test/helpers/blob.py b/tests/core/pyspec/eth2spec/test/helpers/blob.py index e0d82da1a0..f89b1ff527 100644 --- a/tests/core/pyspec/eth2spec/test/helpers/blob.py +++ b/tests/core/pyspec/eth2spec/test/helpers/blob.py @@ -4,7 +4,7 @@ from eth2spec.test.helpers.forks import ( is_post_electra, - is_post_eip7594, + is_post_fulu, ) @@ -107,8 +107,8 @@ def get_sample_blob_tx(spec, blob_count=1, rng=random.Random(5566), is_valid_blo def get_max_blob_count(spec): - if is_post_eip7594(spec): - return spec.config.MAX_BLOBS_PER_BLOCK_EIP7594 + if is_post_fulu(spec): + return spec.config.MAX_BLOBS_PER_BLOCK_FULU elif is_post_electra(spec): return spec.config.MAX_BLOBS_PER_BLOCK_ELECTRA else: diff --git a/tests/core/pyspec/eth2spec/test/helpers/constants.py b/tests/core/pyspec/eth2spec/test/helpers/constants.py index 284dc32f03..627243be87 100644 --- a/tests/core/pyspec/eth2spec/test/helpers/constants.py +++ b/tests/core/pyspec/eth2spec/test/helpers/constants.py @@ -18,8 +18,8 @@ CUSTODY_GAME = SpecForkName('custody_game') DAS = SpecForkName('das') ELECTRA = SpecForkName('electra') +FULU = SpecForkName('fulu') WHISK = SpecForkName('whisk') -EIP7594 = SpecForkName('eip7594') EIP7732 = SpecForkName('eip7732') # @@ -37,12 +37,12 @@ *MAINNET_FORKS, ELECTRA, # Experimental patches - EIP7594, + FULU, ) # The forks that have light client specs LIGHT_CLIENT_TESTING_FORKS = (*[item for item in MAINNET_FORKS if item != PHASE0], ELECTRA) # The forks that output to the test vectors. -TESTGEN_FORKS = (*MAINNET_FORKS, ELECTRA, EIP7594, WHISK) +TESTGEN_FORKS = (*MAINNET_FORKS, ELECTRA, FULU, WHISK) # Forks allowed in the test runner `--fork` flag, to fail fast in case of typos ALLOWED_TEST_RUNNER_FORKS = (*ALL_PHASES, WHISK, EIP7732) @@ -57,7 +57,7 @@ ELECTRA: DENEB, # Experimental patches WHISK: CAPELLA, - EIP7594: ELECTRA, + FULU: ELECTRA, EIP7732: ELECTRA, } diff --git a/tests/core/pyspec/eth2spec/test/helpers/forks.py b/tests/core/pyspec/eth2spec/test/helpers/forks.py index e261e3a754..4bb3d54ed3 100644 --- a/tests/core/pyspec/eth2spec/test/helpers/forks.py +++ b/tests/core/pyspec/eth2spec/test/helpers/forks.py @@ -1,6 +1,6 @@ from .constants import ( PHASE0, ALTAIR, BELLATRIX, CAPELLA, DENEB, - ELECTRA, WHISK, EIP7732, EIP7594, + ELECTRA, FULU, WHISK, EIP7732, PREVIOUS_FORK_OF, ) @@ -41,12 +41,12 @@ def is_post_electra(spec): return is_post_fork(spec.fork, ELECTRA) -def is_post_whisk(spec): - return is_post_fork(spec.fork, WHISK) +def is_post_fulu(spec): + return is_post_fork(spec.fork, FULU) -def is_post_eip7594(spec): - return is_post_fork(spec.fork, EIP7594) +def is_post_whisk(spec): + return is_post_fork(spec.fork, WHISK) def is_post_eip7732(spec): diff --git a/tests/core/pyspec/eth2spec/test/utils/kzg_tests.py b/tests/core/pyspec/eth2spec/test/utils/kzg_tests.py index 071efd4a2e..7566e9c981 100644 --- a/tests/core/pyspec/eth2spec/test/utils/kzg_tests.py +++ b/tests/core/pyspec/eth2spec/test/utils/kzg_tests.py @@ -6,7 +6,7 @@ ) from eth2spec.utils import bls -from eth2spec.eip7594 import spec +from eth2spec.fulu import spec ############################################################################### diff --git a/tests/core/pyspec/eth2spec/test/utils/randomized_block_tests.py b/tests/core/pyspec/eth2spec/test/utils/randomized_block_tests.py index df67872880..0e4727b794 100644 --- a/tests/core/pyspec/eth2spec/test/utils/randomized_block_tests.py +++ b/tests/core/pyspec/eth2spec/test/utils/randomized_block_tests.py @@ -251,7 +251,7 @@ def random_block_capella(spec, state, signed_blocks, scenario_state, rng=Random( def random_block_deneb(spec, state, signed_blocks, scenario_state, rng=Random(3456)): block = random_block_capella(spec, state, signed_blocks, scenario_state, rng=rng) # TODO: more commitments. blob_kzg_commitments: List[KZGCommitment, MAX_BLOBS_PER_BLOCK] - # TODO: add MAX_BLOBS_PER_BLOCK_EIP7594 at fulu + # TODO: add MAX_BLOBS_PER_BLOCK_FULU at fulu opaque_tx, _, blob_kzg_commitments, _ = get_sample_blob_tx( spec, blob_count=rng.randint(0, spec.config.MAX_BLOBS_PER_BLOCK), rng=rng) block.body.execution_payload.transactions.append(opaque_tx) diff --git a/tests/generators/kzg_4844/main.py b/tests/generators/kzg_4844/main.py index a4d3544bdf..2e125ba9d9 100644 --- a/tests/generators/kzg_4844/main.py +++ b/tests/generators/kzg_4844/main.py @@ -598,7 +598,6 @@ def cases_fn() -> Iterable[gen_typing.TestCase]: if __name__ == "__main__": bls.use_arkworks() gen_runner.run_generator("kzg", [ - # DENEB create_provider(DENEB, 'blob_to_kzg_commitment', case01_blob_to_kzg_commitment), create_provider(DENEB, 'compute_kzg_proof', case02_compute_kzg_proof), create_provider(DENEB, 'verify_kzg_proof', case03_verify_kzg_proof), diff --git a/tests/generators/kzg_7594/main.py b/tests/generators/kzg_7594/main.py index 814a840537..0c7222fd21 100644 --- a/tests/generators/kzg_7594/main.py +++ b/tests/generators/kzg_7594/main.py @@ -6,9 +6,9 @@ from eth_utils import encode_hex -from eth2spec.eip7594 import spec +from eth2spec.fulu import spec from eth2spec.gen_helpers.gen_base import gen_runner, gen_typing -from eth2spec.test.helpers.constants import EIP7594 +from eth2spec.test.helpers.constants import FULU from eth2spec.test.helpers.typing import SpecForkName from eth2spec.test.utils.kzg_tests import ( CELL_RANDOM_VALID1, @@ -565,8 +565,7 @@ def cases_fn() -> Iterable[gen_typing.TestCase]: if __name__ == "__main__": bls.use_arkworks() gen_runner.run_generator("kzg_7594", [ - # EIP-7594 - create_provider(EIP7594, 'compute_cells_and_kzg_proofs', case_compute_cells_and_kzg_proofs), - create_provider(EIP7594, 'verify_cell_kzg_proof_batch', case_verify_cell_kzg_proof_batch), - create_provider(EIP7594, 'recover_cells_and_kzg_proofs', case_recover_cells_and_kzg_proofs), + create_provider(FULU, 'compute_cells_and_kzg_proofs', case_compute_cells_and_kzg_proofs), + create_provider(FULU, 'verify_cell_kzg_proof_batch', case_verify_cell_kzg_proof_batch), + create_provider(FULU, 'recover_cells_and_kzg_proofs', case_recover_cells_and_kzg_proofs), ]) diff --git a/tests/generators/merkle_proof/main.py b/tests/generators/merkle_proof/main.py index 9ae985b865..4a787f5737 100644 --- a/tests/generators/merkle_proof/main.py +++ b/tests/generators/merkle_proof/main.py @@ -1,4 +1,4 @@ -from eth2spec.test.helpers.constants import DENEB, ELECTRA, EIP7594 +from eth2spec.test.helpers.constants import DENEB, ELECTRA, FULU from eth2spec.gen_helpers.gen_from_tests.gen import run_state_test_generators, combine_mods, check_mods @@ -6,16 +6,16 @@ deneb_mods = {key: 'eth2spec.test.deneb.merkle_proof.test_' + key for key in [ 'single_merkle_proof', ]} - _new_eip7594_mods = {key: 'eth2spec.test.eip7594.merkle_proof.test_' + key for key in [ + electra_mods = deneb_mods + _new_fulu_mods = {key: 'eth2spec.test.fulu.merkle_proof.test_' + key for key in [ 'single_merkle_proof', ]} - electra_mods = deneb_mods - eip_7594_mods = combine_mods(_new_eip7594_mods, electra_mods) + fulu_mods = combine_mods(_new_fulu_mods, electra_mods) all_mods = { DENEB: deneb_mods, ELECTRA: electra_mods, - EIP7594: eip_7594_mods, + FULU: fulu_mods, } check_mods(all_mods, "merkle_proof") diff --git a/tests/generators/networking/main.py b/tests/generators/networking/main.py index 52b94929f7..3217c2cce2 100644 --- a/tests/generators/networking/main.py +++ b/tests/generators/networking/main.py @@ -1,14 +1,14 @@ -from eth2spec.test.helpers.constants import EIP7594 +from eth2spec.test.helpers.constants import FULU from eth2spec.gen_helpers.gen_from_tests.gen import run_state_test_generators, check_mods if __name__ == "__main__": - eip7594_mods = {key: 'eth2spec.test.eip7594.networking.test_' + key for key in [ + fulu_mods = {key: 'eth2spec.test.fulu.networking.test_' + key for key in [ 'get_custody_columns', ]} all_mods = { - EIP7594: eip7594_mods + FULU: fulu_mods } check_mods(all_mods, "networking")