Skip to content

fix(tests): ban creates by the frame - #65

Merged
pdobacz merged 2 commits into
forks/monad_ninefrom
fix/create-ban-by-recipient
Oct 19, 2026
Merged

pdobacz merged 2 commits into
forks/monad_ninefrom
fix/create-ban-by-recipient

Conversation

@pdobacz

@pdobacz pdobacz commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Create ban keyed on the recipient (all Monad forks).

Fixes a spec (here) <-> client discrepancy of reading of Monad's 7702 vs CREATE/CREATE2 rule.

CREATE/CREATE2 now halt when the executing frame's address holds a 7702 delegation, checked at create time as the client does, instead of a flag set from the called code address. DELEGATECALL/CALLCODE out of a delegated frame no longer create; DELEGATECALL/CALLCODE from a plain contract into a delegated EOA's code now can. Applies to monad_eight, monad_nine, monad_ten and successors + tests

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; the previous finding is fixed and no new blocking issues were found.

Summary

Changes the CREATE and CREATE2 ban to follow the executing account rather than the address supplying its code.

  • Create opcodes now check the address where the frame runs.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[CREATE or CREATE2] --> B{Static frame?}
    B -->|Yes| C[Halt frame]
    B -->|No| D[Read code at current_target]
    D --> E{Account holds a delegation?}
    E -->|Yes| C
    E -->|No| F[Continue normal creation checks]
Loading

Reviews (2) · Last reviewed commit: "test(monad): cover the create ban across..." · Reviewed by Greptile

@pdobacz
pdobacz requested review from QEDK and mijovic as code owners October 14, 2026 16:54
Comment thread src/ethereum/forks/monad_ten/vm/instructions/system.py
A frame whose address holds a 7702 delegation cannot create, whichever
code it runs, as the client checks the recipient at create time.

Co-Authored-By: Claude <claude-fable-5-1>
A delegated EOA's creating code and a factory reached from a delegated
frame, each entered by every call opcode, on every Monad fork.

Co-Authored-By: Claude <claude-fable-5-1>
@pdobacz
pdobacz force-pushed the fix/create-ban-by-recipient branch from 80926f8 to 774a298 Compare October 14, 2026 17:04
@pdobacz
pdobacz merged commit 716fc6a into forks/monad_nine Oct 19, 2026
12 checks passed
@pdobacz
pdobacz deleted the fix/create-ban-by-recipient branch October 19, 2026 07:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants