Evaluated on: · Spec revision: 2022-12-05 · 7eac5f7f4a
Scope at the cutoff. This revision of EIP-4844 adds blob-carrying transactions. They use EIP-2718 type 0x05 with an SSZ-encoded `SignedBlobTransaction`. Blocks carry the minimal encoding, while the network/mempool encoding wraps the transaction with blobs, KZG commitments and an aggregated KZG proof that the EL must verify. A separate data-gas fee market is added: a new `excess_data_gas` header field, `fake_exponential` pricing, a target of 2 and a maximum of 4 blobs per block, and a data fee that is burned before execution and not refunded. The EIP also adds a `DATAHASH` opcode (0x49, 3 gas) and a KZG point-evaluation precompile (0x14, 50000 gas). Blob persistence is delegated to the consensus layer as sidecars.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 8 criteria affected
- Plausible range
- 40–49 (High)
- Assessment cutoff
- 2022-12-08 · EIP revision
7eac5f7f4a(2022-12-05)
Score bands · Checklist revision 3
- Low <12
- Medium 12–22
- High ≥23
28 criteria scored 0–3 (4 in exceptional cases; cross-EIP interactions is uncapped); nominal maximum 84.
Complexity profile
Each segment is one criterion's contribution to the LLM total. Hover or focus a segment for its score and rationale.
Top complexity drivers
- New transaction types3
- New or modified transaction validity mechanisms3
- New block / header fields3
- Encoding changes (RLP/SSZ)3
Under-specified at assessment cutoff: Yes
The EIP text available at the assessment cutoff left material behavior unresolved. The affected criteria and the plausible total range record that uncertainty.
Why: This draft leaves several points unresolved. The data gasprice is computed from an ambiguous header (parent vs current). Intrinsic gas and the receipt format for type 0x05 are not stated. Precompile input-length and failure semantics are missing. It is unclear which wrapper checks also apply at block level. The Engine API exchange of blobs is not specified, and the KZG trusted setup is TBD.
Plausible total
40–49
recorded score 43 · plausible tiers High
Unresolved questions at the cutoff (8)
- Does get_data_gasprice use the parent header's excess_data_gas or the current block's header (calc_data_fee takes `parent` but uses `header`)?
- What is the intrinsic gas of a blob transaction, and how is calldata cost computed for an SSZ payload?
- How does the point evaluation precompile handle inputs that are not 192 bytes, and how do assert failures behave (for example, consuming all gas)?
- Do the version-byte and per-block blob-count checks apply at block validation, or only to network wrappers?
- What is the receipt payload for type 0x05, and how is the transaction hash used in the trie and RPC?
- Must a blob transaction contain at least one blob? Can `to` be None (contract creation)?
- Which Engine API fields and methods carry excess_data_gas and blobs to the CL?
- The balance check omits `value`. Is that intended?
Notable ambiguities noted by the assessor (5)
- calc_data_fee(tx, parent) calls get_data_gasprice(header) while validate_block uses parent(block).header, so it is ambiguous which header prices the data fee.
- The KZG trusted setup contents are TBD in the supplied consensus spec.
- Wrapper-validation rules are described as EL verification "after signature verification", but whether they are block-validity or mempool-only rules is unclear.
- Type aliases define Blob as a Vector of BLSFieldElement (uint256) in the EIP but as a ByteVector in the consensus spec.
- The `hash` function used in kzg_to_versioned_hash is not named in the supplied text.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| New transaction types | 3 | A distinct transaction envelope is introduced. |
Confidence: High |
| New or modified transaction validity mechanismsUnder-specified | 3 | Validity now depends on chain history through the parent's excess_data_gas. Testing the price threshold therefore needs coordinated multi-block scenarios that drive the excess up, and transaction construction moves to SSZ signing. Shared transaction construction and scenario sequencing must be restructured, which is level 3. |
Confidence: Medium Uncertainty: It is ambiguous which wrapper checks also apply at block level (for example, the version byte). Intrinsic gas is unspecified. The score could be 2 if multi-block construction is treated as local. |
| New block / header fields | 3 | A new header member is added to the EL execution header. |
Confidence: High |
| Encoding changes (RLP/SSZ) | 3 | Transaction, network wrapper and header schemas all change, so this is level 3. |
Confidence: High |
| Block syncing changes | 3 | Multiple block-import validation rules change: decoding the new header field, validating excess_data_gas against the parent and blob count (complex), and the per-block blob limit. Decoding SSZ transactions in the block body is also new. This is level 3. |
Confidence: High |
| Edge/boundary conditions | 3 | Several independent boundary-sensitive rules are introduced. The affordability and data-gasprice checks form an elevated matrix: blob count × max_fee_per_data_gas × the parent's excess_data_gas (which sets the price) × gas limit × max_fee_per_gas × balance. These combinations jointly determine validity, so this is level 3. |
Confidence: High Uncertainty: The balance check omits value, which may change the expected boundary. |
| Cryptography | 3 | Multiple cryptographic mechanisms are added: pairing-based KZG point verification in the precompile, aggregated KZG verification with Fiat-Shamir in wrapper validation, and versioned-hash binding. The trusted setup is TBD and the KZG/Fiat-Shamir verification requires validation beyond established resources, so this is level 3. |
Confidence: High Uncertainty: Whether hash() in kzg_to_versioned_hash is SHA-256 is not specified in the supplied text. |
| Blob gas accounting changes | 2 | This introduces a completely new blob-gas mechanism: pricing, a per-block limit, an excess accumulator and burn settlement. No blob-gas rules exist in the baseline to change, so the new mechanism does not alter baseline gas expectations. This is level 2. |
Confidence: High Uncertainty: There is an inconsistency over whether the price uses the parent header or the current header (see UNSP). It affects expected values, not the level. |
| Engine API changesUnder-specified | 2 | Endpoint-level behavior (retrieving blobs for block production) and the excess_data_gas payload field are both implied, but the supplied documents define neither concretely. Level 2 is the best-supported score; level 3 is plausible. |
Confidence: Low Uncertainty: The Engine API is not specified in the supplied documents, and validator.md and beacon-chain.md are missing. The score could range from 1 to 3. |
| Transition-tool interface changesUnder-specified | 2 | Multiple semantic fields change: parent/current excess_data_gas, plus transaction fields for data gas and versioned hashes. The invocation protocol has no clear new exchange mechanism, so this is level 2. |
Confidence: Low Uncertainty: No transition-tool evidence was supplied. Accepting SSZ-encoded transactions could count as a new mechanism, which would make this level 3. |
| Patterns affecting pre-existing testsUnder-specified | 2 | Localized cases in several families need rework: invalid-opcode enumeration (0x49), and precompile-range or empty-account calls at 0x14. The header extension changes header construction, but the main effect of that is a new invariant scored under INV. There is no common rewrite across ordinary cases in multiple families, so this is level 2. |
Confidence: Medium Uncertainty: Whether baseline tests actually touch 0x49 or 0x14 cannot be confirmed without a supplied suite. |
| New invariant on pre-existing tests | 2 | All blockchain tests in the target fork must produce and check excess_data_gas, including blocks without blobs. This is a universal assertion, but there is no evidence that pre-fork vectors must be re-derived, so it is level 2. |
Confidence: High |
| New test-framework primitivesUnder-specified | 2 | The target suite needs new construction abstractions: SSZ transaction building and signing, KZG commitment and proof generation, and versioned-hash derivation. These are mostly confined to blob-related tests, so this is level 2. |
Confidence: Medium Uncertainty: Supporting two encodings for one transaction (network and minimal) in shared block construction might affect other families, which would justify level 3. |
| Security risksUnder-specified | 2 | New validation boundaries at mempool ingress, and the EL/CL cross-verification of versioned hashes against sidecar blobs, need targeted integration review and fuzzing. This is level 2. |
Confidence: Medium Uncertainty: The cross-layer data-availability trust split could be read as a shared invariant across components (level 3). |
| Performance risks | 2 | Component benchmarks are needed for the precompile. Targeted integrated benchmarks are needed for mempool ingress: large wrappers combined with aggregate KZG verification and the announce/request flow. This is a bounded interaction, so level 2. |
Confidence: Medium |
| Cross-EIP interactions | 2 | EIP-1559 fee semantics need coordinated cases with data-gas affordability and burning. EIP-2718 envelope and trie handling need coordinated cases for SSZ payloads mixed with RLP types in blocks. The other interactions are local compatibility checks. This is level 2. |
Confidence: Medium Interacting EIPs: EIP-1559, EIP-2718, EIP-2930, EIP-4895, EIP-5793 |
| Unspecified behavior requiring cross-client consensus | 2 | Several localized competing interpretations need agreement before expected results can be fixed: which header's excess_data_gas sets the price, the precompile's length and failure behavior, and intrinsic gas. This is level 2. |
Confidence: Medium Uncertainty: Missing consensus-spec files might resolve some of these points. |
| Added opcodes | 1 | Exactly one simple instruction is added. |
Confidence: High Uncertainty: Behavior in non-blob transactions (an empty list, so presumably zero) is implied but not explicit. |
| Added precompilesUnder-specified | 1 | There is one precompile with a fixed input layout and constant gas, so it is simple. That gives level 1. |
Confidence: Medium Uncertainty: Handling of inputs that are not 192 bytes is not specified. If variable lengths had to be supported, the precompile would be complex (level 2). |
Show 9 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 0 | No existing instruction changes. |
|
| Modified precompiles | 0 | No existing precompile changes. |
|
| Added system contracts | 0 | No system contracts. |
|
| Modified system contracts | 0 | No system contract changes. |
|
| EVM Gas rule changesUnder-specified | 0 | No execution-gas accounting rule or settlement change is specified. The new accounting mechanism is data gas, which is scored under BLOB. Fixed costs for the opcode and precompile are ordinary fees. |
Uncertainty: Intrinsic gas for type-0x05 transactions is not stated. If clients treated it differently from EIP-1559/2930 intrinsic gas (for example, if calldata cost depended on SSZ encoding), this could become level 1. |
| State-access ordering within opcode execution | 0 | No instruction's state-access or gas-charge ordering changes, and no new state-accessing operation is introduced. |
|
| State gas accounting changes | 0 | No state-gas accounting changes. |
|
| New EVM gas refund | 0 | No refund mechanism is introduced. |
|
| New fork activation mechanism | 0 | No one-time state transition or account installation is required. The precompile is native. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@7eac5f7f4aEIPS/eip-4844.md committed 2022-12-05 · information cutoff 2022-12-08- Rubric
- Checklist revision 3 ·
ethspecs/pm@fe2f793b03 - Evaluator
- Opus 5.5 (
claude-opus-5-5) at high effort, one tool-less call per EIP · isolationbubblewrap_claude_p_no_tools_v1 - Source record
- Frozen research record
research/tasks/10-opus-v3-reassessment/retrospective/outputs/assessments/cancun/eip-4844.yaml· sha25655531eeea542 - Supporting documents supplied with the EIP
supporting/eip-1559.md,supporting/eip-2718.md,supporting/eip-2930.md,supporting/eip-4895.md,supporting/eip-5793.md,supporting/ethereum-consensus-specs--specs-eip4844,supporting/ethereum-consensus-specs--specs-eip4844-polynomial-commitments.md