EIP.tools

EIP.tools

⚠️ DraftStandards Track: Core

EIP-7839: Unified Network Configuration

Execution Layer to fetch network parameters from Consensus Layer

Authors
Created2024-12-11
Discussion Linkhttps://ethereum-magicians.org/t/eip-7839-unified-network-configuration/22192

Markdown

https://raw.githubusercontent.com/ethereum/EIPs/6f...
Pull Request#9128PR closed (unmerged)

EIP-GPT summary

Contents
AbstractMotivationSpecificationConfiguration APIEL Startup BehaviorParameter DerivationFormulaError HandlingRationaleBackwards CompatibilitySecurity ConsiderationsCopyright

Abstract

This EIP proposes a protocol for the Execution Layer (EL) to fetch its configuration parameters from the Consensus Layer (CL) at startup. This eliminates duplicate configuration and ensures consistency between layers by making the CL the source of truth for network parameters.

Motivation

Currently, many configuration parameters must be defined separately for both the Execution Layer and Consensus Layer. This creates several problems:

  1. Configuration duplication increases the chance of inconsistencies between layers
  2. Parameters that should be derived from each other (like max gas limit from blob counts) must be manually kept in sync
  3. Fork schedules must be maintained in multiple places
  4. Network upgrades require coordinating changes across multiple configuration files

By allowing the EL to fetch its configuration from the CL, we can:

  1. Eliminate duplicate configuration
  2. Ensure parameters stay in sync automatically
  3. Simplify network upgrades by having a single source of truth
  4. Reduce operator error from misconfiguration

Specification

Configuration API

The CL must implement a new API endpoint that returns a "one-off" configuration parameters for all post merge values:

CL configuration valuesEL configuration (geth style example) values
DEPOSIT_NETWORK_IDchainId
BELLATRIX_FORK_EPOCHmergeNetsplitBlock
TERMINAL_TOTAL_DIFFICULTYterminalTotalDifficulty
CAPELLA_FORK_EPOCHshanghaiTime
DENEB_FORK_EPOCHcancunTime
ELECTRA_FORK_EPOCHpragueTime
FULU_FORK_EPOCHosakaTime
GOSSIP_MAX_SIZEgasLimit

All legacy parameters pre merge may be dropped from the EL configuration to further simplify it.

Additional parameters can be added to the API as needed. For example:

GOSSIP_MAX_SIZE_ELECTRA -> adjust max gas at fork transition only

TARGET_BLOBS_PER_BLOCK_ELECTRA -> target blobs adjustment per block at fork transition

MAX_BLOBS_PER_BLOCK_ELECTRA -> max blobs adjustment per block at fork transition

GOSSIP_MAX_SIZE_FULU -> adjust max gas at fork transition only

TARGET_BLOBS_PER_BLOCK_FULU -> target blobs adjustment per block at fork transition

MAX_BLOBS_PER_BLOCK_FULU -> max blobs adjustment per block at fork transition

EL Startup Behavior

  1. On startup, the EL must attempt to fetch configuration from the CL
  2. The EL must retry with exponential backoff until successful
  3. The EL must not start processing blocks until configuration is received
  4. Configuration values must be validated before use

Parameter Derivation

Some parameters must be calculated rather than directly copied:

  1. Max gas limit must be derived from gossip_max_size according to formula instead of people individually setting it on their nodes.
  2. Fork activation times must be converted from epoch numbers to timestamps for the EL to use.
  3. Target and max blobs per blocks can be used to calculate

Formula

Worst case scenario:

Max Gas limit = gossip_max_size * cost of zero-byte calldata

Max Gas limit = 10 * 2**20 * 4 == 41,943,040

Suggested gas limit = 0.75 * Max Gas limit

Node operators can set the gas limit to 0.9 * Max Gas limit

Future fork examples:

Max Gas limit Osaka = gossip_max_size_fulu * 4

Error Handling

  1. If the CL is unreachable, the EL must continue retrying, and should not start processing blocks until configuration is received.
  2. If received parameters are invalid, the EL must reject them and retry fetching configuration.
  3. The EL may log all configuration related errors for debugging.
  4. The EL may retry to fetch the configuration periodically. This would enable CL only changes to be triggered without needing to restart the EL.

Rationale

This design:

  1. Makes the CL's config.yaml the single source of truth for network configuration.
  2. Allows for future extension of synchronized parameters.
  3. Easily extendable to include new one-off parameters without passing constant parameters in the engine API.
  4. Max Gas limit can be adjusted at fork transitions to ensure proper testing and validation before deployment.

The retry mechanism ensures the EL will eventually get configuration even if the CL is not immediately available at startup.

Backwards Compatibility

This EIP is backwards compatible as clients can fall back to existing manual configuration if the CL does not implement the new API.

Security Considerations

  1. The EL must validate all received configuration values.
  2. The connection between EL and CL must be authenticated.
  3. Invalid configuration must not cause the EL to start with unsafe parameters.
  4. The retry mechanism must not create DOS vectors.

Copyright and related rights waived via CC0.

EIP.tools

EIP.tools

Search, read, and map Ethereum improvement proposals, ERCs, RIPs, and CAIPs from one focused interface.

Farcaster
by @apoorveth