Evaluated on: · Spec revision: 2025-07-01 · d386b29b5a
Scope at the cutoff. EIP-7951, at the revision supplied, adds one native precompile, P256VERIFY, at address 0x100. It performs ECDSA signature verification over secp256r1 (P-256). It accepts exactly 160 bytes (h, r, s, qx, qy) and charges a constant 3450 gas. It returns 32 bytes holding 1 for a valid signature and empty output for any failure, and it never reverts. It requires r and s in (0, n), qx and qy below p, an on-curve public key that is not the point at infinity, a check that the computed R' is not infinity, and a comparison of R'.x with r modulo n. It is described as interface-compatible with RIP-7212 and as fixing RIP-7212's missing infinity check and non-modular comparison.
- Evaluator
- LLMChecklist v3
- Confidence
- High
- Under-specified at assessment cutoff
- Yes — 3 criteria affected
- Plausible range
- 7–10 (Low)
- Assessment cutoff
- 2025-07-02 · EIP revision
d386b29b5a(2025-07-01)
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: Minor gaps: the spec does not explicitly state that 0x100 is in the warm precompile set, the referenced test vectors are not supplied, the reference-implementation sentence is truncated, and the infinity-encoding and on-curve checks overlap. All failures give the same empty output, so outcomes are largely determined.
Plausible total
7–10
recorded score 9 · plausible tiers Low
Unresolved questions at the cutoff (2)
- Is address 0x100 included in the pre-warmed precompile address set from fork activation?
- What do the referenced (unsupplied) test vectors cover?
Notable ambiguities noted by the assessor (4)
- The EIP says (0,0) encodes infinity, but (0,0) is already off-curve, so check 5 is redundant with check 4.
- The message hash h is not reduced or bounded; implementations must handle h ≥ n consistently.
- Cases where R'.x ≥ n and where R' is infinity need specially crafted vectors that are hard to construct.
- Address 0x100 lies outside the contiguous low precompile range; warm-set treatment is implied but not stated.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Edge/boundary conditions | 2 | Multiple boundary-sensitive mechanisms are introduced: length, r/s range, coordinate range, curve membership, R' infinity and the modular x-comparison. Each can be tested largely independently, so there is no elevated matrix. |
Confidence: High Uncertainty: Constructing the R'.x ≥ n case and the R' = infinity case needs specially crafted vectors. These are hard to build but are not interacting dimensions. |
| Added precompiles | 1 | Exactly one precompile, with a fixed supported input length and constant gas, which makes it simple. |
Confidence: High |
| Patterns affecting pre-existing testsUnder-specified | 1 | Rework is confined to boundary cases in the precompile-address and warm-access family: calls to 0x100 now return precompile output and are warm. Ordinary tests are unaffected. |
Confidence: Medium Uncertainty: Whether any baseline tests target 0x100 is not evidenced, so this could be 0. |
| Security risks | 1 | Security conditions such as input validation and deterministic verification can be checked locally, for example by differential fuzzing of the precompile. No other component's assumptions change. |
Confidence: Medium Uncertainty: Applications migrating from RIP-7212 assumptions are outside EL testing. |
| Performance risks | 1 | Component benchmarks of the precompile, including worst-case inputs, are enough to validate the 3450 gas pricing. Baseline end-to-end assumptions do not change. |
Confidence: Medium Uncertainty: Benchmark data is not supplied. |
| Cryptography | 1 | Exactly one established mechanism (P-256 ECDSA verification), with NIST standards and a referenced test-vector set as resources. |
Confidence: Medium Uncertainty: The test-vector file is not supplied. Validation details that are Ethereum-specific (unreduced h, empty output on failure) need custom cases, but these remain within established ECDSA semantics. |
| Cross-EIP interactions | 1 | Only local compatibility checks are needed: calling via CALL, STATICCALL and DELEGATECALL, warm-access treatment of 0x100, and out-of-gas handling. The precompile can otherwise be tested independently. No candidate interacting EIPs were supplied. |
Confidence: Medium Uncertainty: The interaction with the warm-access rules is implied, not stated. |
| Unspecified behavior requiring cross-client consensusUnder-specified | 1 | These are minor localized omissions. The surrounding rules support one intended outcome: treating 0x100 like other precompiles and returning empty output on all failures. There are no competing normative outcomes. |
Confidence: Medium Uncertainty: The withheld test-vector file might resolve some edge outcomes. |
Show 20 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No opcodes are added. |
|
| Modified opcodes | 0 | Changed callee behavior through unchanged instructions does not count. |
|
| Modified precompiles | 0 | No existing L1 precompile changes. |
|
| Added system contracts | 0 | Precompiles are excluded from this criterion. |
|
| Modified system contracts | 0 | No system contract changes. |
|
| EVM Gas rule changesUnder-specified | 0 | Constant precompile fees are ordinary contract fees under the template. No metering, limit or settlement rule changes. |
Uncertainty: Adding a precompile address implicitly extends the pre-warmed precompile address set (an access-cost effect for address 0x100). The EIP does not state this, and it could arguably count as a level-1 parameter change. |
| 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. |
|
| 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 refund mechanism. |
|
| New transaction types | 0 | None. |
|
| New or modified transaction validity mechanisms | 0 | Precompile outputs are excluded. |
|
| New block / header fields | 0 | None. |
|
| Encoding changes (RLP/SSZ) | 0 | Precompile input formats are not listed serialized protocol objects. |
|
| Block syncing changes | 0 | No RLP or structural block validation changes. |
|
| New fork activation mechanism | 0 | Rule selection alone does not count. |
|
| Engine API changes | 0 | No Engine API changes. |
|
| Transition-tool interface changes | 0 | Only fork-aware precompile activation is needed; there is no interface change. |
|
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertion. |
|
| New test-framework primitives | 0 | Testing uses standard precompile-call patterns and vectors. Vectors are data, not new primitives. |
Uncertainty: Generating valid P-256 signatures for custom cases may need a signing helper (a local extension, level 1), but adding a library is arguably not a framework primitive. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@d386b29b5aEIPS/eip-7951.md committed 2025-07-01 · information cutoff 2025-07-02T17:49:36Z- 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-7951.yaml· sha25695877a4122b7