EIP-8408: eth/73 - Indexed Cell Requests

Hi everyone,

EIP 8408 proposes indexed mask encoding for heterogeneous GetCells and Cells messages while preserving the existing shared mask encoding for uniform requests.

Motivation

The eth/72 GetCells message applies one cell mask to every transaction hash in a request.

When every transaction requires the same cells, this representation is compact and efficient. When transactions require different cell sets, however, the requester must divide one scheduling batch into several requests based on exact mask equality.

These heterogeneous masks can occur during recovery, partial delivery, or differences in peer availability. Dividing the batch creates additional request frames and repeats information that could otherwise be shared.

Proposal

EIP 8408 introduces an indexed representation containing a table of unique masks.

Each transaction hash references the mask that applies to it using a compact mask identifier.

The protocol supports two representations:

  1. The existing shared representation for requests where every transaction uses the same mask

  2. The indexed representation for requests containing multiple masks

The indexed representation provides the following properties:

  1. Each unique mask is encoded once

  2. Every transaction hash selects one mask from the table

  3. Unused and duplicate masks are rejected

  4. Masks are ordered by their first reference to provide canonical encoding

  5. Transaction, mask, and response limits are explicitly defined

  6. Responses use the same representation as their corresponding requests

  7. Returned masks must remain subsets of the masks originally requested

Preserving the shared representation

The shared representation remains the preferred form when every transaction requires the same mask.

This avoids adding overhead to routine custody sampling and maintains the existing eth/72 encoding for the common uniform case.

Clients may use the indexed representation when heterogeneous masks would otherwise require multiple requests or when it produces a smaller encoded request.

Evaluation

Evaluation demonstrates that indexed encoding reduces request frames and request wire bytes when scheduling batches contain heterogeneous masks.

Initial live observations primarily contained uniform batches. This indicates that the benefit depends on workload conditions and motivates broader measurement across recovery states, peer configurations, and client implementations.

EIP 8408 provides a canonical and backwards compatible mechanism for handling fragmented batches when they occur while allowing clients to retain the efficient shared representation for uniform requests.

Compatibility

EIP 8408 introduces a separately negotiated eth/73 capability.

Clients supporting eth/73 can continue negotiating eth/72 with peers that do not support indexed cell requests. Existing peers remain unaffected and continue using the shared GetCells and Cells messages defined by EIP 8070.

Feedback requested

Feedback would be particularly helpful on the following questions:

  1. Under which recovery and synchronization conditions do heterogeneous mask batches occur in real client workloads

  2. Whether a new protocol version is the appropriate negotiation mechanism

  3. What resource limits should apply to unique masks and request entries

  4. Whether clients should always prefer the shared representation when every transaction uses the same mask

  5. Which measurements should be collected before recommending deployment

Links

  1. EIP pull request

  2. Technical discussion