# CL Breakout Notes **Date:** 2026 / 04 / 28 **Hosts:** Barnabas **Time:** 13:30 ## 1. EIP-by-EIP Decisions ### EIP-8080 — Let Exits Use the Consolidation Queue **Decision: DFI (Decline For Inclusion) — skipped for Glamsterdam.** - **Rationale for skipping:** - Low practical value: exit queue is currently empty; problem is hypothetical. - Adds infrastructure on top of the consolidation mechanism, which several teams want to deprecate entirely (in favor of "just exit and re-deposit"). - Consolidation requests have seen near-zero adoption despite significant implementation cost during MaxEB. - **Client positions:** Teku, Nimbus, Lodestar all in favor of skipping. Prysm indifferent. - **Longer-term direction (Paul Harris / Speaker 6):** Eventually deprecate consolidations; declare a final fork supporting them, then force exit + re-deposit. Real problem to solve is unbounded validator-set state growth (sparse data structure or key reuse), not patching the consolidation path. - **Status:** To be formally DFI'd publicly on a future ACD call. ### EIP-8061 — Exit / Consolidation Churn Increase **Decision: INCLUDED in Glamsterdam DevNet 1.** - Activation churn unchanged; only exit (×4) and consolidation (×2) churn increased. - General agreement: increasing exit speed (not entry) is acceptable. - Open question raised but not blocking: weak-subjectivity period safety — rationale exists in the EIP (Francesco). - **Action:** Spec PR to be merged today; Alpha 6 release targeted for tomorrow. ### EIP-7045 — Remove Slashed Validators from Validator Duties **Decision: Remains CFI for Glamsterdam, NOT in DevNet 1. Scope reduced to proposer duties / look-ahead only.** - **Potuz's concern:** Original EIP breaks the invariant that "head state works" for short-fork validation (because attester slashings apply immediately). Implementation consequences not yet investigated by any team. - **Compromise:** Restrict scope to proposer duties within the look-ahead window — this is already covered by existing proposer-selection logic, so the change becomes trivial. - Decision on full inclusion deferred; not urgent for this week. ### EIP-7688 (SSZ "Stable Containers" / Profiles) **Decision: Remains in Glamsterdam scope, NOT in DevNet 1.** - Most CL libraries report readiness; Prysm not ready. - **Unresolved design issue (raised by Speaker 11):** Progressive lists break the SSZ-derived upper bound on object size. Most acute for attestations, where bit-lists make the gossip object effectively unbounded. - **Counterpoint (Speaker 2):** Practical limits (e.g., 1 MB or 100 KB cap on attestations) can be applied at the network layer, similar to how blocks are already handled. - **Risk flagged (Potuz):** Per-object DoS limits would need to be argued out individually on ACD — non-trivial process cost. - Spec PR ready, tests being generated. Revisit before committing to a DevNet. ### EIP-7237 — Independent CL/EL Sync (Potuz) **Decision: NOT in DevNet 1. Dedicated breakout scheduled.** **Mechanism (summarized by Potuz):** 1. CL syncs beacon blocks only — no payload download, no payload validation during catch-up. 2. On reaching head, CL issues an FCU to the EL, which then begins `newPayload` flow normally over devp2p. 3. To bind the two independent download paths, a new field is added to the execution header: a hash/accumulator over `(parent_hash, timestamp, gas_limit, slot, ...)` — fields the CL already validates. 4. On `newPayload`, EL confirms it computed the same accumulator, guaranteeing the CL and EL converged on the same chain. **Discussion:** - **Lodestar (Speaker 13):** Already solves "no payload during sync" via simple block-hash verification on the CL side; would prefer a future where CL streams payloads directly to EL, eliminating devp2p sync entirely. Notes the EIP's accumulator replaces RLP-hash verification with a custom construction. - **Speaker 9 (Teku):** devp2p is empirically faster than beacon-chain sync in many cases; coordination should support parallel CL/EL download. - **Raul (Prysm):** Argues for a maximally decoupled, more fluid Engine API — streaming roots, ranges, pivot points — rather than overloading FCU. Wants the design to fit future client architecture (block-in-block, etc.), not just be a point optimization. - **Speaker 12 (EL):** Needs payload hashes early to avoid downloading garbage during parallel sync — Potuz confirms hashes can be sent as CL downloads beacon blocks. **Outcome:** Deferred to a dedicated breakout. EL representation required. --- ## 2. Execution Requests Deduplication (Raul / Prysm) **Proposal:** Remove duplication of execution requests between the beacon block body and the execution payload on gossip only. Canonical SSZ structure unchanged. **Mechanism:** - On gossip-sub, zero out the execution requests field in the beacon block. - Gossip validator re-fills the field from the EL state (already required to have the prior payload to execute the current block). - Equivalent to existing blinded-block pattern. **Concerns:** - **Signature validity (Potuz, Speaker 13):** Block must be signed over the *full* structure; signature verification must happen *after* re-fill. Resolvable — same as blinded block flow. - **Cleaner alternative (Speaker 11):** Use an explicit blinded networking container with the request-root inlined, rather than a zero-out trick. Raul concedes this is cleaner but harder to express in Prysm's SSZ library; offered to do it that way if other teams prefer. - **Potuz's preference:** Would rather pursue full payload elimination (EIP-7237) than add the dedup as a half-measure. **Decision:** Candidate for DevNet 1, contingent on tomorrow's architecture breakout outcome. Raul to open PR against Prysm shortly. --- ## 3. DevNet 0 Launch Plan **Target:** End of today. **Scope — what's IN:** - Full Glamsterdam structural changes (block-level access lists, etc.). - Transactions enabled. - Kurtosis + fuzzing for stability checks. **Scope — what's OUT (deferred to DevNet 1+):** - Blob transactions. - Execution requests. **Rationale (Potuz):** Validate structural correctness first under load before layering in blobs and requests, both of which have caused recent network incidents. ### Open Issue: Blob DA Validation - Recent network instability traced to clients (specifically called out: Nimbus, Lodestar) **not performing DA checks**, propagating blocks built on unavailable blobs, then triggering downscoring cascades and forks. - Lighthouse: propagates locally built blobs but does not run DA checks (per Raul). - Prysm and others now believed to be checking DA correctly — but unverified across the board. - `getBlobs` engine API usage by some clients may have masked missing DA checks (they were getting blobs from the engine rather than the network). ### Open Issue: Execution Requests Invalidating Pool Objects - Identified failure mode: execution requests in payload N can invalidate pooled exits/withdrawals that the proposer is trying to include in beacon block N+1. - Pre–EIP-7549/1594, this was handled by state transition on the payload. Post-change, proposers must perform partial processing of prior-payload requests *before* packing the beacon block. - Triggered consistently around epoch 10 on prior devnet (Cortal 6). - Cannot be caught by spec tests — requires Kurtosis-style integration testing (Philipp's approach). --- ## 4. DevNet 1 Scope (Confirmed) **Committed:** - **EIP-8061** (exit/consolidation churn). **Pending tomorrow's breakout:** - Either Raul's execution-requests dedup, **or** nothing additional beyond 8061. - Potuz's EIP-7237 confirmed NOT in DevNet 1. **Target launch:** Friday. --- ## 5. Schedule Changes | When | Original | New | |---|---|---| | Wed AM | FOCIL | **Independent CL/EL Sync + client architecture** (led by Potuz, with Raul) | | Thu | ETH P2P broadcast (2h) + erasure coding | ETH P2P (1h) + **FOCIL Part 1** (1h); CL hardening / Amsterdam testing tools PM unchanged | | Fri | Shorter slots (2h) + batched attestations | Shorter slots (shortened) + **FOCIL Part 2** if needed | EL developer attendance requested for Wednesday's sync breakout. --- ## 6. Side Threads (Not Blocking) - **Network message size limits with progressive SSZ:** Loss of a static upper bound on attestation gossip messages is a real concern — current pipeline rejects oversized messages early using exact-size derivation. Consensus leaning toward pragmatic per-topic caps (e.g., 300 KB attestations) rather than relying on type-derived bounds. Same precedent already exists for blocks (gas-limit bound vs. SSZ bound). - **Long-term consolidation deprecation:** Strong sentiment from Paul Harris and Speaker 6 to declare a final fork supporting consolidations and force exit-then-redeposit thereafter; address state growth via sparse validator-set structures rather than further consolidation tooling. --- ## Action Items 1. **Spec PR for EIP-8061** — today (Speaker 6). 2. **Alpha 6 release** — tomorrow (Speaker 6). 3. **DevNet 0 launch** — end of today, no blobs / no execution requests, with transactions. 4. **Wednesday AM breakout** on independent CL/EL sync + client architecture — Potuz leads, Raul co-leads; EL devs required. 5. **Raul** to open Prysm PR for execution-requests gossip dedup. 6. **DevNet 1 launch target** — Friday, scope finalized after Wednesday breakout. 7. **Public DFI** of EIP-8080 to be raised on a future ACD call.