Evaluated on: · Spec revision: 2025-08-19 · f8be9ce27b
Scope at the cutoff. At the information cutoff, EIP-7997 proposed an activation-time insertion of fixed runtime bytecode at address 0x0B, creating a minimal factory available at the same address on adopting EVM chains. The factory interprets calldata as a 32-byte salt followed by variable-length initcode, forwards all call value to CREATE2, returns the created address on success, and propagates failure returndata by reverting. It adds no transaction type, opcode, or custom gas schedule; its protocol changes are the predeployed system account and the one-time state change that installs it.
- Evaluator
- LLMChecklist v2
- Confidence
- Medium
- Under-specified at assessment cutoff
- No
- Plausible range
- 14–14 (Medium)
- Assessment cutoff
- 2025-08-21 · EIP revision
f8be9ce27b(2025-08-19)
Score bands · Checklist revision 2
- 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 fork activation mechanism3
- Added system contracts2
- Transition-tool interface changes2
- Edge/boundary conditions2
Under-specified at assessment cutoff: No
The EIP text available at the assessment cutoff left material behavior unresolved. The affected criteria and the plausible total range record that uncertainty.
The assessor found no material behavior left unresolved by the EIP text at the cutoff.
Notable ambiguities noted by the assessor (2)
- The manifest and output template title the item Deterministic Factory Contract, while the sealed historical EIP front matter says Deterministic Factory Predeploy; the EIP number, revision identity, and hashes match.
- The proposal requires an activation-only state insertion but does not prescribe a transition-tool API; the interface-change score therefore reflects the required activation-aware mechanism rather than a named field.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| New fork activation mechanism | 3 | The fork activation block directly modifies state by installing account code. The rubric assigns score 3 whenever activation modifies state or internal variables. |
Confidence: High |
| Added system contracts | 2 | The proposal adds one system contract whose operation can create contracts and transfer the forwarded value, making it stateful in effect. The single stateful-system-contract anchor is score 2. |
Confidence: High |
| Transition-tool interface changes | 2 | A transition tool must have a new activation-aware mechanism that distinguishes the one block where code is inserted from later blocks. This is more than one ordinary data field but does not imply multiple new fields plus another mechanism, fitting score 2. |
Confidence: Medium Uncertainty: The EIP does not prescribe a transition-tool API; an environment with sufficient existing fork-activation context might implement the behavior without a new external field. |
| Edge/boundary conditions | 2 | Several edge-prone mechanisms must be covered: 31 versus 32-byte input, empty and variable initcode, creation success versus collision or initcode failure, return-data lengths, and value forwarding. They are multiple but remain bounded combinations around a small fixed contract, fitting score 2 rather than the elevated-case score 3. |
Confidence: High |
| Cross-EIP interactions | 2 | Correct testing must coordinate the new factory with two directly required EIPs, especially CREATE2 success or collision failure and EIP-211 failure-returndata propagation. The dependencies are important but limited to this small call path, matching score 2 rather than extensive multi-EIP interdependence. |
Confidence: High Uncertainty: References to EIPs 155, 5792, and 7702 describe motivation or rejected workarounds, not protocol dependencies or behavior modified by EIP-7997, so they are not counted as interacting EIPs. Interacting EIPs: EIP-211, EIP-1014 |
| Patterns affecting pre-existing tests | 1 | Existing tests that assume 0x0B is empty, call it as an empty account, or cross the activation transition need localized updates. This is a minor, narrow subset rather than a considerable or diverse body of pre-existing tests, matching score 1. |
Confidence: Medium Uncertainty: The sealed package does not enumerate the pre-existing test corpus, so the exact affected count cannot be established; the narrow address-specific impact is clear from the specification. |
| New invariant on pre-existing tests | 1 | Tests not principally about the factory but which span this fork activation must additionally observe the code insertion in resulting state. That is a narrow activation-focused category, not a mechanically added assertion for every test in the fork, so score 1 applies. |
Confidence: Medium Uncertainty: The package specifies no test vectors, so whether a particular framework expresses this as an explicit assertion or through a state root is not established. |
| Security risks | 1 | The security exposure is explicit but localized to the small factory's deployment semantics and can be reviewed and tested in isolation. It does not substantially alter multiple critical component assumptions, fitting score 1. |
Confidence: High |
Show 20 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | The EIP deploys code that uses existing opcodes and allocates no opcode number, so score 0 applies. |
|
| Modified opcodes | 0 | Calling CREATE2 and return-data opcodes from a newly installed contract does not modify their behavior, so the binary score-0 anchor applies. |
|
| Added precompiles | 0 | Placement in the precompile address range does not make fixed EVM bytecode a precompile. No native precompile is introduced, so score 0 applies. |
|
| Modified precompiles | 0 | The proposal neither changes an existing precompile's logic nor its gas schedule, so score 0 applies. |
|
| Modified system contracts | 0 | Addition of a distinct system contract is scored in the preceding criterion and causes no direct or identified indirect modification to an existing system contract, so score 0 applies. |
|
| EVM Gas rule changes | 0 | The factory pays the existing gas schedules of the ordinary opcodes it executes, so the score-0 anchor for no gas-accounting change applies. |
|
| State-access ordering within opcode execution | 0 | Executing existing CREATE2 from a new contract does not modify where state is accessed inside CREATE2 or any other opcode, matching score 0. |
|
| Blob gas accounting changes | 0 | No blob gas accounting is introduced or modified, so the score-0 anchor applies. |
|
| State gas accounting changes | 0 | The state insertion is a protocol state change, not a change to state-gas accounting as defined by this anchor; score 0 applies. |
|
| New EVM gas refund | 0 | No new EVM gas-refund mechanism is introduced, matching score 0. |
|
| New transaction types | 0 | The proposal explicitly introduces no transaction type, so the binary score-0 anchor applies. |
|
| New or modified transaction validity mechanisms | 0 | No existing transaction validity rule or intrinsic gas calculation is changed, so score 0 applies. |
|
| New block / header fields | 0 | No block or header field is introduced, so the binary score-0 anchor applies. |
|
| Encoding changes (RLP/SSZ) | 0 | An application-level calldata layout for one contract is outside the RLP/SSZ transaction, block, and interface encoding anchor; no such encoding changes are introduced, so score 0 applies. |
|
| Block syncing changes | 0 | No block RLP validation mechanism is introduced, so score 0 applies. |
|
| Engine API changes | 0 | No Engine API field or communication mechanism is added, matching score 0. |
|
| New test-framework primitives | 0 | Existing state, call, creation, return-data, and revert expectations are sufficient to test the fixed bytecode; no new framework-level expectation or modifier is required, so score 0 applies. |
Uncertainty: The test section is TBD, but the specified behaviors do not reveal a need for a novel primitive. |
| Performance risks | 0 | The new fixed account exposes no new client execution algorithm or unmetered workload beyond already metered EVM execution; therefore it does not introduce a mechanism requiring separate protocol performance validation and scores 0. |
Uncertainty: Adoption could increase use of CREATE2 factories, but workload popularity is not a new protocol performance mechanism specified by this EIP. |
| Cryptography | 0 | Reusing CREATE2's existing Keccak-based address derivation is not a new or modified cryptography mechanism, so score 0 applies. |
|
| Unspecified behavior requiring cross-client consensus | 0 | The fixed bytecode plus the two required opcode specifications determines outcomes for constructible execution cases; the missing test vectors do not themselves leave consensus behavior unspecified. The score-0 anchor applies. |
Uncertainty: The Test Cases section is TBD, but this is a coverage gap rather than an identified behavioral question requiring client agreement. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@f8be9ce27bEIPS/eip-7997.md committed 2025-08-19 · information cutoff 2025-08-21T13:34:18Z- Rubric
- Checklist revision 2 ·
ethspecs/pm@3d8c0128c5 - Evaluator
- gpt-5.6-sol at xhigh reasoning effort · isolation
bubblewrap_one_eip_capsule_v1 - Source record
- Frozen research record
research/tasks/05-retrospective-complexity-assignment/outputs/fork-eips/amsterdam/eip-7997.yaml· sha256aada0f5dcac5 - Supporting documents in the sealed package
supporting/eip-155.md,supporting/eip-211.md,supporting/eip-1014.md,supporting/eip-5792.md,supporting/eip-7702.md