Evaluated on: · Spec revision: 2022-12-07 · c282a9bd3e
Scope at the cutoff. This revision of EIP-1153 adds two EVM opcodes, TLOAD (0xb3) and TSTORE (0xb4). They give each contract a word-addressed store that is discarded at the end of every transaction. TLOAD and TSTORE take the same stack arguments as SLOAD and SSTORE and each costs a fixed 100 gas. Neither opcode produces refunds or uses warm/cold access tracking. Transient storage is owned the same way as persistent storage, including under DELEGATECALL and CALLCODE, and writes are rolled back when a frame reverts. TSTORE raises an exception inside a STATICCALL context, while TLOAD is allowed there.
- Evaluator
- LLMChecklist v3
- Confidence
- Medium
- Under-specified at assessment cutoff
- Yes — 2 criteria affected
- Plausible range
- 13–16 (Medium)
- Assessment cutoff
- 2022-12-08 · EIP revision
c282a9bd3e(2022-12-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: The revision prices TSTORE like a dirty-slot SSTORE and says transient storage behaves identically to storage. It never says whether EIP-2200's stipend guard (fail if gasleft ≤ 2300) applies to TSTORE. TLOAD's description also says it 'pops' the loaded value, a likely typo for 'pushes'.
Plausible total
13–16
recorded score 14 · plausible tiers Medium
Affected criteria (2)
Unresolved questions at the cutoff (2)
- Does TSTORE fail with out-of-gas when gasleft ≤ 2300, as SSTORE does under EIP-2200?
- How should transient storage of an account behave after SELFDESTRUCT within the same transaction, and in a failed contract-creation context, beyond the general revert rule?
Notable ambiguities noted by the assessor (4)
- TLOAD is described as one that "pops the value on top of the stack"; the intent is plainly to push the loaded value.
- Whether the EIP-2200 stipend check applies to TSTORE.
- Whether the gas costs are fixed at 100 or tied to future SSTORE/SLOAD repricing ("currently 100 gas").
- The DoS argument in the Reference Implementation uses SSTORE (the TryDOS contract), not TSTORE.
Criterion breakdown
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Added opcodes | 2 | Two simple instructions are introduced (no immediates, fixed stack, constant gas), which is level 2. |
Confidence: High Uncertainty: If an implied stipend check applied to TSTORE, it would make the instruction's failure behavior depend on gasleft. The cost would still be constant. |
| Security risksUnder-specified | 2 | Local checks cover static-context rejection, per-contract isolation, revert rollback and discard at end of transaction (no leakage between transactions in a block). TSTORE also changes the stipend-based reentrancy assumption used by other contracts: a callee could write transient state with only 2300 gas. That needs targeted integration review, which is level 2. |
Confidence: Medium Uncertainty: If an EIP-2200-style stipend check is intended for TSTORE, the stipend concern disappears and level 1 may suffice. |
| Performance risks | 2 | Two workloads need targeted integrated benchmarks: memory allocated by linear-cost TSTORE, and journal rollback on revert across nested frames. Both are a bounded interaction between the new store and frame checkpointing; they do not form cross-subsystem coupling. |
Confidence: Medium Uncertainty: The supplied DoS argument uses SSTORE (the TryDOS contract) rather than TSTORE; worst-case TSTORE fill-then-revert is not demonstrated. |
| Edge/boundary conditions | 2 | There are several independent boundary-sensitive rules: exact-gas out-of-gas for each opcode, stack underflow, key/value extremes, and the frame-entry revert checkpoint boundary. The call-type × revert × reentrancy combinations are semantic coverage rather than an elevated boundary matrix, so level 3 is not met. |
Confidence: Medium Uncertainty: An unresolved stipend check (gasleft ≤ 2300) could add another boundary; it would not change the level. |
| Cross-EIP interactions | 2 | The interaction with EIP-2200's stipend guard needs coordinated cases. EIP-3529 needs only a local refund-compatibility check. Call-type, static-context and revert scenarios are needed but are unnumbered in the supplied documents. There is no multi-EIP vector restructuring, so this is level 2. |
Confidence: Medium Uncertainty: Counting the unnumbered STATICCALL, DELEGATECALL and REVERT interactions as separate EIPs could argue for level 3. Interacting EIPs: EIP-2200, EIP-3529 |
| Unspecified behavior requiring cross-client consensus | 2 | Whether TSTORE fails when gasleft ≤ 2300 has two competing readings that both rest on normative text. The outcome is observable and localized, so expected results need agreement first (level 2). Smaller slips, such as TLOAD "pops the value on top of the stack" where it clearly means pushes, have one evident intended outcome. |
Confidence: Medium Uncertainty: Behavior of transient storage around SELFDESTRUCT and failed CREATE is not discussed. However, the general revert and end-of-transaction discard rules appear to resolve it. |
| Patterns affecting pre-existing tests | 1 | Only baseline cases that treat 0xb3/0xb4 as undefined or invalid opcodes need updated expectations. That is particular cases within one behavioral family (invalid-opcode handling). |
Confidence: Medium |
| New test-framework primitives | 1 | Testing needs a local extension of existing primitives (new opcode entries in the opcode/bytecode helpers). Observation can reuse existing patterns such as SSTORE-ing TLOAD results and multi-transaction blocks. No new abstraction is architecturally required. |
Confidence: Medium |
Show 20 zero-score criteria
| Criterion | Score | Why this score | Evidence / uncertainty |
|---|---|---|---|
| Modified opcodes | 0 | No existing instruction's specified semantics or availability change. The revert and call-context effects on transient storage are part of the new opcodes' semantics. |
Uncertainty: One could argue that REVERT and the CALL family now have extended state effects, which would be level 3. Those effects are observable only through TLOAD/TSTORE. |
| Added precompiles | 0 | None introduced. |
|
| Modified precompiles | 0 | None modified. |
|
| Added system contracts | 0 | None introduced. |
|
| Modified system contracts | 0 | None modified. |
|
| EVM Gas rule changesUnder-specified | 0 | The EIP adds fixed-cost gas-table entries for two new instructions; these are covered under Added opcodes. No accounting mechanism is introduced, and no existing charging, metering or settlement rule changes. The expected gas results of baseline operations do not change. |
Uncertainty: The spec does not say whether TSTORE inherits the EIP-2200 rule that a store fails when gasleft is at or below the 2300 stipend. If it does, there is a new gasleft-based metering condition, which would point to level 2. |
| State-access ordering within opcode execution | 0 | Charges are constant, the opcodes take no part in warm/cold or access-list tracking, and no existing opcode's ordering changes. The only failure cases are out-of-gas and a static-context write, and both are exceptional halts with the same observable result whatever their order. |
Uncertainty: Some might treat TSTORE as a new state-accessing operation that needs an ordering rule (level 2). Because it touches no trie or access list, level 0 is chosen. |
| Blob gas accounting changes | 0 | No blob-gas rules are touched. |
|
| State gas accounting changes | 0 | Transient storage never becomes persistent state, and no state-gas charging is added or changed. |
|
| New EVM gas refund | 0 | No refund mechanism is introduced. |
|
| New transaction types | 0 | None introduced. |
|
| New or modified transaction validity mechanisms | 0 | No transaction-validity changes. |
|
| New block / header fields | 0 | None added. |
|
| Encoding changes (RLP/SSZ) | 0 | No schema or codec changes. |
|
| Block syncing changes | 0 | No change to block RLP decoding or structural validation. |
|
| New fork activation mechanism | 0 | No activation-specific state transition. |
|
| Engine API changes | 0 | No Engine API changes. |
|
| Transition-tool interface changes | 0 | Transient storage starts empty for every transaction and is discarded at its end, so no t8n field or mechanism change is required. |
|
| New invariant on pre-existing tests | 0 | Baseline tests need no new assertion, because no new observable output exists outside execution. |
|
| Cryptography | 0 | No cryptographic rule changes. |
|
Assessment provenance
- Assessed EIP revision
ethereum/EIPs@c282a9bd3eEIPS/eip-1153.md committed 2022-12-07 · information cutoff 2022-12-08- 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/cancun/eip-1153.yaml· sha25642c6e89a965e - Supporting documents supplied with the EIP
supporting/eip-20.md,supporting/eip-2200.md,supporting/eip-3529.md