Evaluated on: · Spec revision: 2024-05-09 · ad9ecb077c
Scope at the cutoff. This revision of EIP-7702 adds a new EIP-2718 transaction type whose payload carries a list of `[contract_code, y_parity, r, s]` authorization tuples. When the transaction starts, each tuple's signer is recovered with `ecrecover(keccak(MAGIC + contract_code), ...)`. The signer's code must be empty; it is then set to `contract_code`, and the signer is added to the EIP-2929 `accessed_addresses` set. Every signer's code is set back to empty when the transaction ends. Intrinsic gas is the EIP-2930 formula plus calldata-style per-byte costs over each `contract_code` and 5000 per tuple. The EIP adds no opcodes, precompiles, system contracts or header fields.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 6 criteria affected
- Plausible range
- 25–33 (High)
- Assessment cutoff
- 2024-05-23 · EIP revision
ad9ecb077c(2024-05-09)
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
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 early draft omits several consensus-relevant outcomes. It does not say what happens when signature recovery or the code-emptiness check fails, including for duplicate signers. Behavior of the code reset on revert is not specified, nor whether storage and nonce changes made under temporary code persist. The payload has no value field, and the outer signing hash, receipt payload, MAGIC and TX_TYPE are undefined. Authorization signatures carry no nonce or chain_id.
Plausible total
25–33
recorded score 26 · plausible tiers High
Unresolved questions at the cutoff (8)
- Does a failed code-emptiness check or invalid signature make the transaction invalid, abort execution, or skip the tuple?
- How is a signer that appears twice in one list handled, given that the second check sees code already set?
- Is code reset at the end of the transaction also on revert or out-of-gas, and do storage or balance changes made by temporary code persist?
- Where is the value field, or can value not be transferred?
- What hash does the outer transaction signature cover, and what is the receipt payload?
- Is contract creation (empty destination) allowed?
- Which signature validity bounds (s range, y_parity) apply to authorization tuples?
- Is there a size limit on contract_code?
Notable ambiguities noted by the assessor (6)
- The payload has no value field despite having destination and data.
- The authorization message keccak(MAGIC + contract_code) has no nonce or chain_id, so signatures are replayable indefinitely and across chains.
- The consequence of a failed 'Verify that the contract code of signer is empty' is not stated.
- The fee-market fields assume EIP-1559, which is not listed in requires.
- MAGIC, TX_TYPE and FORK_BLKNUM are TBD; FORK_BLKNUM and FORK_BLOCK_NUMBER are used inconsistently.
- It is not stated whether a signer may equal tx.origin, or how sender-with-code rules interact with that case.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| New transaction types | 3 | A new EIP-2718 transaction type is introduced. |
Confidence: High |
| Encoding changes (RLP/SSZ) | 3 | A new serialized transaction schema is defined. |
Confidence: High Uncertainty: The signing payload of the outer transaction and the receipt payload are not specified, and the schema has no value field. |
| Security risks | 3 | The EIP changes shared authorization and trust invariants across several components. EOAs can execute arbitrary code signed once with no replay protection; balances can drop without the owner sending a transaction (affecting mempool and inclusion lists); and EOA-versus-contract assumptions in contracts change. Coordinated adversarial scenarios are needed, so level 3. |
Confidence: High |
| EVM Gas rule changes | 2 | The EIP adds a new intrinsic-gas accounting mechanism for authorization tuples, and signer pre-warming uses the existing EIP-2929 mechanism. Both apply only to the new transaction type, so existing rules and baseline gas results do not change. This fits level 2. |
Confidence: High Uncertainty: The text does not say whether the signer warming is reverted if the transaction later fails; warming at transaction start is presumably not revertible. |
| New or modified transaction validity mechanismsUnder-specified | 2 | The new transaction type and its intrinsic-gas rule need dedicated validity cases. These can be built on the existing typed-transaction validation sequence, so level 2. |
Confidence: Medium Uncertainty: If a failed code-emptiness or signature check makes the whole transaction invalid, validity would depend on other accounts' state, possibly changed by earlier transactions in the block. That would need coordinated multi-account/state scenarios and would reach level 3. |
| New test-framework primitives | 2 | The target suite needs a new construction abstraction (authorization tuples signed by arbitrary keys and attached to the new transaction type). This is limited to the target's own test suite and does not change how other families are built, so level 2. |
Confidence: Medium Uncertainty: The actual capabilities of existing helpers are not evidenced. |
| Performance risks | 2 | Targeted integrated benchmarks are needed for transactions with many tuples. The bounded interaction is signature recovery, code writes and reset of arbitrary-size code against the state/commitment path, which must be checked against the 5000 per-tuple and calldata pricing. This is level 2. |
Confidence: Medium Uncertainty: Without a code-size limit, the cost of setting and resetting large code depends on client state handling. |
| Edge/boundary conditionsUnder-specified | 2 | Several boundary-sensitive mechanisms are introduced: the intrinsic-gas threshold, the code-emptiness check (including duplicates and order in the list), and signature-value bounds. An elevated matrix is plausible (signer identity versus origin or destination × prior code × transaction outcome), but the failure outcomes are unspecified, so level 2 is the best-supported score. |
Confidence: Medium Uncertainty: Once failure semantics are defined, interactions between signer identity, duplicate entries and revert/reset behavior could justify level 3. |
| Cross-EIP interactions | 2 | EIP-2929 and EIP-2930 need coordinated cases: warm/cold gas for signers, and signers that also appear in the access list or as tx.origin or destination. EIP-2718 needs only local envelope compatibility checks. This does not amount to coupled restructuring across many EIPs, so level 2. |
Confidence: Medium Uncertainty: The fee fields imply EIP-1559, and sender-with-code rules (EIP-3607) are relevant, but neither is supplied or cited. Interacting EIPs: EIP-2929, EIP-2930, EIP-2718 |
| Unspecified behavior requiring cross-client consensusUnder-specified | 2 | Several localized, constructible outcomes have competing interpretations: failure handling for verification and signatures, duplicate signers, persistence of storage written by temporary code, and the missing value field. Expected results cannot be fixed until these are agreed, so level 2. |
Confidence: Medium Uncertainty: EOAs executing code and holding storage is newly observable behavior. If agreeing on it required re-baselining across families, level 3 could be argued. |
| Block syncing changesUnder-specified | 1 | Block import must accept and structurally decode one new transaction payload format, which is a simple local rule. No header or cross-block validation changes, so level 1. |
Confidence: Medium Uncertainty: Element-type constraints on the tuples (byte lengths, y_parity range) are not stated. If they are enforced as several structural rules, level 2 could apply. |
| Transition-tool interface changes | 1 | One new semantic transaction-input field (the contract_code authorization list) must be passed. No new tool mechanism or exchange sequence is required, so this is level 1. |
Confidence: Medium Uncertainty: No transition-tool evidence was supplied. Whether recovered signers must be reported in output is unspecified. |
| CryptographyUnder-specified | 1 | Exactly one established mechanism (secp256k1 ECDSA recovery with keccak) is added as a new protocol validation site. Hashing and recovery primitives are unchanged, but the validity rules for authorization signatures are new, so level 1. |
Confidence: Medium Uncertainty: The s-range, y_parity range and handling of an invalid signature are not stated. If reuse of an unchanged primitive is read as no new mechanism, the score would be 0. |
Show 15 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No new instruction. |
|
| Modified opcodes | 0 | No instruction's specified semantics change. EXTCODE* and CALL into a signer behave normally against the state that holds the temporary code. |
|
| Added precompiles | 0 | No new precompile. |
|
| Modified precompiles | 0 | No precompile semantics or gas change. |
|
| Added system contracts | 0 | No system contract. |
|
| Modified system contracts | 0 | No system contract is modified. |
|
| State-access ordering within opcode executionUnder-specified | 0 | No opcode's state-access or gas-charge ordering changes. The new access sequence (recover, check code, set code, warm) is transaction-level setup rather than instruction execution, so level 0 is the best fit. |
Uncertainty: If the authorization processing were treated as a new state-accessing operation that needs an ordering rule, level 2 could be argued. |
| Blob gas accounting changes | 0 | Blob-gas accounting is not affected. |
|
| State gas accounting changes | 0 | The EIP introduces no state-gas accounting, state-byte rates or budgets. Its flat per-tuple cost is intrinsic execution gas and is scored under GAS. |
|
| New EVM gas refund | 0 | No new refund mechanism. |
|
| New block / header fields | 0 | No header member is added. |
|
| New fork activation mechanism | 0 | No activation-specific state transition is required. |
|
| Engine API changes | 0 | No Engine API field or endpoint changes. |
|
| Patterns affecting pre-existing tests | 0 | Existing transaction types and opcode behaviors keep their inputs and expected results. The new behavior is reached only through the new transaction type, so no baseline test family needs rework. |
Uncertainty: Existing tests that assume an EOA can never execute code are application-level, not baseline EL tests. |
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertion. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@ad9ecb077cEIPS/eip-7702.md committed 2024-05-09 · information cutoff 2024-05-23- 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/prague/eip-7702.yaml· sha256366e812c27c1 - Supporting documents supplied with the EIP
supporting/eip-20.md,supporting/eip-2718.md,supporting/eip-2929.md,supporting/eip-2930.md,supporting/eip-3074.md,supporting/eip-4337.md,supporting/eip-5003.md