Evaluated on: · Spec revision: 2026-10-07 · 6dac5e7491 · EIP-8081 list: DFI
Scope at the cutoff. EIP-8355 adds three precompiles at 0x12, 0x13 and 0x14 that verify FIPS 204 ML-DSA signatures for ML-DSA-44, ML-DSA-65 and ML-DSA-87. Each one takes `pubkey ++ signature ++ message`, where the public key is compressed and the message has variable length, and always uses the empty context. Every call that does not run out of gas returns a 32-byte word: 1 when the signature verifies and 0 when it fails, is malformed or the input is too short. Gas is BASE + 6 per 32-byte message word, charged before verification. BASE is 6500, 9000 or 13500, and the message-word count is clamped at zero.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 5 criteria affected
- Plausible range
- 10–16 (Low–Medium)
- Snapshot
- 2026-10-07 · EIP revision
6dac5e7491(2026-10-07)
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: There are minor gaps. The input says 'big-endian throughout' while using FIPS 204 encodings. 'Out-of-range coefficients' is not mapped to concrete FIPS 204 checks. The gas figures are marked as needing benchmarking. The addresses collide with EIP-8051, and placement relative to other Hegotá precompiles is not addressed. Warm-set and access-list treatment of the new addresses is not stated.
Plausible total
10–16
recorded score 12 · plausible tiers Low, Medium
Unresolved questions at the cutoff (5)
- Does 'big-endian throughout' only describe the absence of length fields, or does it modify FIPS 204 field encodings?
- Which concrete checks count as 'out-of-range coefficients' for the pk and signature encodings?
- Are the 0x12–0x14 addresses final, given EIP-8051's claim on 0x12/0x13?
- Are the new addresses pre-warmed and recorded in block-level access lists like other precompiles?
- Will the base gas values change after benchmarking?
Notable ambiguities noted by the assessor (4)
- Address collision with EIP-8051 (0x12, 0x13).
- 'big-endian throughout' versus FIPS 204's native encodings.
- Gas figures are provisional, pending benchmarks.
- Whether the three parameter sets count as one or three cryptographic mechanisms.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added precompiles | 3 | Multiple precompiles are added, and all three are complex: they take variable-length input and charge dynamic gas. |
Confidence: High |
| Edge/boundary conditions | 2 | Several independent boundary-sensitive rules: the minimum-length threshold, the word-boundary gas rounding with clamp, and the malformed-encoding and norm-bound rejections, each per parameter set. Length drives both gas and parsing, but the combinations can be tested largely independently, so there is no elevated matrix. |
Confidence: Medium |
| CryptographyUnder-specified | 2 | A new standardized verification algorithm is added in three parameter instantiations. Each has different sizes, bounds and encodings and needs its own vector set. All are established, with Wycheproof and ACVP resources named, so the 'multiple mechanisms, all established' condition applies. Fixing ctx to empty stays within FIPS 204. |
Confidence: Medium Uncertainty: If the three parameter sets are treated as one mechanism, the score would be 1. |
| Patterns affecting pre-existing tests | 1 | Baseline cases that treat 0x12–0x14 as empty accounts change expected return data and gas after the fork. Examples are tests that sweep precompile address ranges or target the first unassigned address. This rework is confined to address-boundary cases in one family. |
Confidence: Medium Uncertainty: How many baseline tests target these addresses depends on suites not supplied. |
| Security risks | 1 | The security conditions can be checked locally on the precompile: fail-closed outputs on malformed input, up-front gas charging, and correct rejection of forged or malformed signatures. No other component's assumptions change. |
Confidence: Medium |
| Performance risksUnder-specified | 1 | Three precompile workloads, plus per-byte message hashing, need component benchmarks to check that the base and per-word costs hold under worst-case inputs. Baseline end-to-end assumptions are unchanged. |
Confidence: Medium Uncertainty: Large-message or worst-case-input block stress testing could push this to 2. |
| Cross-EIP interactionsUnder-specified | 1 | Only local compatibility checks are needed. Under EIP-8141, the precompiles must be callable from VERIFY frames (static context), including as a direct frame target. The EIP-8051 address collision is a fork-composition check. EIP-7951 is only a contrast in output format. The verification flow built on ARBITRARY signatures is an optional application design. |
Confidence: Medium Uncertainty: If EIP-8141 VERIFY-frame flows using SIGDATACOPY plus the precompile are judged required coordinated cases, the score would be 2. Interacting EIPs: EIP-8141, EIP-8051, EIP-7951 |
| Unspecified behavior requiring cross-client consensusUnder-specified | 1 | Some localized wording is loose. The normative reference to FIPS 204 ML-DSA.Verify with ctx="" still supports one intended outcome, so there are no competing normative interpretations. |
Confidence: Medium Uncertainty: If 'big-endian throughout' were read as overriding the FIPS 204 encodings, competing outcomes would arise and the score would be 2. |
Show 20 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 0 | No new opcode. |
|
| Modified opcodes | 0 | Calling new precompiles through unchanged instructions does not modify those instructions. |
|
| Modified precompiles | 0 | No existing precompile changes. |
Uncertainty: EIP-8051 proposes different precompiles at 0x12/0x13, but it is not part of the baseline. |
| Added system contracts | 0 | No system contract is added. |
|
| Modified system contracts | 0 | No system contract is modified. |
|
| EVM Gas rule changesUnder-specified | 0 | The only gas content is the fee schedule of the new precompiles, which the template treats as an ordinary contract fee. No EVM charging, metering or settlement rule changes. |
Uncertainty: Adding precompile addresses normally puts them in the pre-warmed access set, which changes cold/warm costs for calls to 0x12–0x14. The target does not state this. If it is counted as a parameter change, level 1 could apply. |
| State-access ordering within opcode execution | 0 | No opcode's ordering of state access or gas charging changes. The precompiles are stateless. |
Uncertainty: The target does not say whether calls to the new precompile addresses enter the block-level access list. That treatment is inherited from generic precompile rules not supplied here. |
| Blob gas accounting changes | 0 | No change to blob-gas accounting. |
|
| State gas accounting changes | 0 | No change to state-gas accounting. |
|
| New EVM gas refund | 0 | No refund mechanism is introduced. |
|
| New transaction types | 0 | No new transaction envelope. |
|
| New or modified transaction validity mechanisms | 0 | No consensus transaction-validity rule changes. Precompile outputs are excluded from this criterion. |
|
| New block / header fields | 0 | No block or header member is added. |
|
| Encoding changes (RLP/SSZ) | 0 | Precompile input is calldata, not a protocol serialized schema. |
|
| Block syncing changes | 0 | No change to block RLP decoding or structural validation. |
|
| New fork activation mechanism | 0 | No activation-specific state transition is required. |
|
| Engine API changes | 0 | No Engine API change. |
|
| Transition-tool interface changes | 0 | No transition-tool interface change is required. |
|
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertion. |
|
| New test-framework primitives | 0 | Precompile call tests with variable-length input and dynamic gas use existing primitives. Importing vectors is vector work, not a new abstraction. |
Uncertainty: Converting the Wycheproof/ACVP sets may need a converter script, but that is not a framework primitive. |
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@6dac5e7491EIPS/eip-8355.md committed 2026-10-07 · information cutoff 2026-10-07T22:23:55Z- 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/prospective/outputs/assessments/hegota-2026-10-08/eip-8355.yaml· sha2561a71da538893 - Supporting documents supplied with the EIP
supporting/eip-7951.md,supporting/eip-8051.md,supporting/eip-8141.md