# **SSZ Execution Block Devnet 0 Specification** :::info :mega: **SSZ Execution Block Devnet 0** **Planned launch:** Targeting **Feb 15, 2026 – 12:00 UTC** **Expected duration:** ~10 days **Primary focus:** First multi-client interoperability devnet for **EIP-7807 SSZ-native execution blocks** ::: ## 1. Purpose and Scope ### 1.1 Primary Goals This devnet exists to validate: * End-to-end **client interoperability** for **SSZ-native execution payloads** * Correct implementation of **SSZ-based execution hashing** (no RLP roots) * Stability of **Consensus ↔ Execution** interaction after **SSZ execution structures** * Correctness of **Engine API SSZ variants** * Early feedback on **implementation complexity and operational risk** ### 1.2 Non-Goals Explicitly out of scope: * Performance benchmarking or throughput comparisons * Wallet / RPC UX polish * Long-term chain stability guarantees ## 2. Fork Context ### 2.1 Fork Name and Activation * **Fork name:** `Heka` * **Activation mechanism:** **epoch-based** ## 3. Included EIPs ### 3.1 EIP Inclusion Table | EIP | Title | Category | Status | Notes | | ------------ | -------------------- | --------- | --------- | --------------------- | | **EIP-7807** | SSZ Execution Blocks | Meta | **new** | Primary focus | | **EIP-6404** | SSZ Transactions | Execution | new | Required dependency | | **EIP-6466** | SSZ Receipts | Execution | new | Required dependency | | **EIP-6465** | Withdrawals Root | Execution | new | Transitively required | ### 3.2 EIP-by-EIP Notes #### **EIP-7807 — SSZ Execution Blocks** * **Breaking changes since last devnet:** * N/A – first interop devnet * **Client expectations:** * **CL** * Fork-aware execution payload handling * Validation of SSZ execution block roots * **EL** * Native SSZ block processing * Canonical SSZ hashing * Backward-compatibility logic for pre-fork blocks * **Known open questions:** * Exact canonicalization rules for transitional blocks * Error semantics for mixed SSZ / legacy payloads #### **EIP-6404 — SSZ Transactions** * **Breaking changes:** * Replacement of RLP tx encoding with SSZ containers * **Client expectations:** * **EL** * SSZ tx decoding + validation * Transaction root derivation via SSZ * **CL** * Transparent passthrough (no semantic tx validation) * **Open questions:** * Mempool representation strategy (internal only) * Including https://eips.ethereum.org/EIPS/eip-6493 in this devnet #### **EIP-6466 — SSZ Receipts** * **Breaking changes:** * Receipt root derived from SSZ containers * **Client expectations:** * **EL** * SSZ receipt construction * Backward-compatible receipt RPC encoding * **Open questions:** * Receipt RPC shape stabilization ## 4. Required Client Capabilities ### 4.1 Consensus Clients MUST * Support **Heka fork activation** * Validate SSZ execution payload roots ### 4.2 Execution Clients MUST * Implement: * EIP-7807 * EIP-6404 * EIP-6466 ## 6. Interoperability Matrix ### 6.1 Expected Participation > **Note:** > Devnet-0 is a bootstrap devnet. At launch, only a **Nimbus CL ↔ Nimbus EL** > pairing is expected to fully participate. Other clients are listed for > visibility and future planning only. | CL Client | EL Client | Expected | | ---------- | ------------- | -------- | | Nimbus | Nimbus-EL | Yes | | Lighthouse | Geth | No (planned) | | Lodestar | Reth | No (planned) | | Prysm | Besu | No (planned) | | Nimbus | Nethermind | No (planned) | ## 7. Kurtosis Configuration TODO-will be provided soon ## 8. Testing Plan > **Scope note:** > Devnet-0 is a **bootstrap correctness devnet**. At launch, only a **Nimbus CL ↔ Nimbus EL** pairing is expected to be fully functional. > Inter-client interoperability is **explicitly not required** for Devnet-0 and will be addressed in follow-up devnets. ### 8.1 Smoke Tests (Nimbus ↔ Nimbus) The following must succeed for the **Nimbus CL + Nimbus EL** pairing: * Successful fork activation at the configured epoch * Continuous block production post-fork * Validator participation ≥ **66%** * Stable Engine API handshake using **SSZ payload variants** * No consensus halts attributable to SSZ execution payloads ### 8.2 Targeted Tests (Single-Pair Correctness) These tests focus on **semantic correctness**, not interop: * **SSZ execution block root validation** * CL-computed execution root matches EL-reported root * **Fork-crossing reorg handling** * Reorgs that cross the SSZ-EL fork boundary are processed correctly * **SSZ receipt root consistency** * Receipt roots remain stable across reorgs and re-execution * **Engine API format discipline** * Correct rejection of mixed SSZ / legacy JSON payloads * No silent fallback to legacy RLP paths ### 8.3 Explicitly Deferred Tests The following are **out of scope for Devnet-0**: * Cross-client EL ↔ EL interoperability * Cross-client CL ↔ CL interoperability * Wallet-facing RPC stability guarantees * Performance, throughput, or latency metrics These will be addressed in **Devnet-1+** once additional clients land SSZ support. ### 8.4 Failure Criteria (Bootstrap-Scoped) Devnet-0 is considered **failed** if **any** of the following occur **for the a participating pairing**: * Finality cannot be achieved * Deterministic SSZ execution roots diverge between CL and EL * Fork activation causes persistent block production failure * Engine API incompatibility prevents post-fork execution ## 9. Reorg and Recovery Expectations Clients **must** correctly handle: * Reorgs crossing the SSZ-EL fork * Temporary EL desynchronization ## 10. Monitoring and Tooling ### 10.1 Required * Beacon explorer * Execution metrics dashboard * Fork transition monitor ### 10.2 Optional * Proof-of-data completeness harness * SSZ vs legacy diff tool ## 11. Open Questions * Should SSZ Engine API be **mandatory** for future devnets? * How strict should mixed-format rejection be? * Do wallets need early SSZ receipt exposure? ## 12. Exit Criteria Devnet may shut down once: * All critical EIPs validated * Blocking issues documented
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.