Evaluated on: · Spec revision: 2024-11-26 · b16c055363
Scope at the cutoff. This revision of EIP-7823 adds an upper bound to the MODEXP precompile at address 0x05, which EIP-198 defines. Each of the three declared length fields (length_of_BASE, length_of_EXPONENT, length_of_MODULUS) must be at most 1024 bytes (8192 bits). If any length is larger, the precompile stops, returns an error and consumes all gas. The input format, output format and gas pricing function are otherwise unchanged. The Backwards Compatibility and Security Considerations sections are still TODO placeholders.
- Evaluator
- LLMChecklist v3
- Confidence
- High
- Under-specified at assessment cutoff
- Yes — 1 criterion affected
- Plausible range
- 7–8 (Low)
- Assessment cutoff
- 2025-01-23 · EIP revision
b16c055363(2024-11-26)
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: The Backwards Compatibility and Security Considerations sections are TODO. A few details are not stated: when the bound check happens relative to gas computation, whether the bound applies to otherwise trivial calls (e.g. zero modulus length), and the 'bits' wording for the length fields. The surrounding rule supports a single outcome in each case.
Plausible total
7–8
recorded score 8 · plausible tiers Low
Affected criteria (1)
Unresolved questions at the cutoff (3)
- Does the bound apply even when length_of_MODULUS is 0 or the call would otherwise return trivially?
- Is the bound checked before or after gas computation? Observable effect is the same (all gas consumed), but traces may differ.
- How should historical transactions using lengths over 1024 bytes be treated? The EIP marks this as needing analysis.
Notable ambiguities noted by the assessor (4)
- The specification says each length input 'MUST be less than or equal to 8192 bits (1024 bytes)'. The parenthetical shows it means the declared byte length, not the 256-bit length field itself.
- No activation fork is specified in the text; Osaka is assumed from the assessment framing.
- The Prague baseline gas formula for MODEXP (after EIP-198) is not supplied. Gas expectations for cases at the boundary depend on it.
- Backwards Compatibility and Security Considerations are TODO placeholders.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified precompiles | 3 | A complex precompile (MODEXP: variable input length, dynamic gas) has a behavior change: new rejection and failure rules. This meets level 3. |
Confidence: High |
| Patterns affecting pre-existing tests | 1 | Rework is limited to the boundary/large-length cases in the MODEXP precompile family. Baseline cases with any declared length above 1024 bytes change from success (when affordable) to failure. Ordinary cases with lengths of 1024 bytes or less are unaffected. |
Confidence: High |
| Security risks | 1 | The new validation boundary can be checked locally within the precompile. Fuzzing the length fields at and above the limit is enough, and no other component's assumptions change. |
Confidence: Medium Uncertainty: Contracts that depend on MODEXP inputs over 1024 bytes would break. This is an application-level concern and the EIP has not analyzed it. |
| Edge/boundary conditions | 1 | Exactly one boundary-sensitive mechanism is introduced: the per-field length limit. Its dimensions are which field exceeds the limit, the value sizes (1024/1025/very large), and interaction with available gas and calldata padding. It is still a single mechanism, so level 1. |
Confidence: High Uncertainty: The three fields could be treated as separate mechanisms, but they share one rule. |
| Cross-EIP interactions | 1 | The interaction with EIP-198 needs only local compatibility checks within the precompile's own tests: the bound with right-padding, length-field parsing, and the gas formula's >1024 branch. No coordinated multi-EIP scenarios are needed. |
Confidence: Medium Uncertainty: Later MODEXP gas repricing in the baseline is not in the supplied documents. Interacting EIPs: EIP-198 |
| Unspecified behavior requiring cross-client consensusUnder-specified | 1 | Some details are not stated: whether the bound applies when other lengths make the call trivial (e.g. modulus length 0), and when the check happens relative to gas calculation. However, the rule "any length > 1024 → fail, consume all gas" supports a single outcome. Localized, level 1. |
Confidence: Medium Uncertainty: The baseline Prague gas formula (later repricing) is not in the packet, but this does not affect the bound's outcome. |
Show 22 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No new instructions. |
|
| Modified opcodes | 0 | Changed precompile behavior reached through an unchanged instruction does not count. |
|
| Added precompiles | 0 | No new precompile. |
|
| Added system contracts | 0 | None added. |
|
| Modified system contracts | 0 | No system contract changes. |
|
| EVM Gas rule changes | 0 | No execution-gas accounting rule or parameter changes. Calls that previously succeeded with oversized lengths now consume all gas through the existing failure mechanism. That is a precompile behavior change and is scored under ~PC. |
Uncertainty: Some readers might count the change in gas outcome for previously affordable oversized calls as a level-1 gas change. Here it is attributed to the precompile's changed failure rule. |
| State-access ordering within opcode execution | 0 | Precompile internals change, but no instruction's own state-access or gas-charge sequence changes. |
|
| Blob gas accounting changes | 0 | No blob gas changes. |
|
| State gas accounting changes | 0 | No state gas accounting changes. |
|
| New EVM gas refund | 0 | No new refund mechanism. |
|
| New transaction types | 0 | None. |
|
| New or modified transaction validity mechanisms | 0 | Precompile outputs and failures are excluded from this criterion. |
|
| New block / header fields | 0 | None. |
|
| Encoding changes (RLP/SSZ) | 0 | Precompile calldata is not a listed schema. |
|
| Block syncing changes | 0 | Only an execution rule changes. |
|
| New fork activation mechanism | 0 | Only fork-gated rule selection is needed. |
|
| Engine API changes | 0 | No Engine API field or endpoint changes. |
|
| Transition-tool interface changes | 0 | No interface change is required beyond ordinary fork selection. |
|
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertions. |
|
| New test-framework primitives | 0 | Existing precompile-call test primitives are enough. New parameter values are not new primitives. |
|
| Performance risks | 0 | Tightening the input space adds no new workload and does not change the resource assumptions behind pricing. Inputs at the 1024-byte boundary were already allowed in the baseline. |
Uncertainty: Benchmarks for future repricing are mentioned only as a possibility and are not part of this EIP. |
| Cryptography | 0 | No cryptographic verification, signing, hashing or proof rule changes. The arithmetic primitive itself is unchanged. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@b16c055363EIPS/eip-7823.md committed 2024-11-26 · information cutoff 2025-01-23T23:05:03Z- 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/osaka/eip-7823.yaml· sha2565fef5ba59d0f - Supporting documents supplied with the EIP
supporting/eip-198.md