Skip to content

EIP-7997 (deterministic factory contract) - #2499

Open
Baltoli wants to merge 1 commit into
ryan-slotnumfrom
bruce/eip-7997
Open

Baltoli wants to merge 1 commit into
ryan-slotnumfrom
bruce/eip-7997

Conversation

@Baltoli

@Baltoli Baltoli commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

No description provided.

Comment thread category/execution/ethereum/deterministic_factory_contract.cpp Outdated
Comment thread category/execution/ethereum/deterministic_factory_contract.hpp
Comment thread category/execution/ethereum/deterministic_factory_contract.hpp Outdated
github-actions[bot]

This comment was marked as outdated.

@Baltoli Baltoli changed the title Deploy deterministic factory EIP-7997 Aug 20, 2026
Base automatically changed from bruce/code-or-nonce to main August 20, 2026 14:02
Copilot AI lite review requested due to automatic review settings August 26, 2026 08:37

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds initial plumbing for EIP-7997 by introducing a new trait feature flag and deploying the deterministic factory system contract during block header execution.

Changes:

  • Extend Traits with eip_7997_active() and implement activation in both EvmTraits and MonadTraits.
  • Deploy the deterministic factory contract (EIP-7997) during execute_block_header.
  • Wire the new implementation into the execution library build.

Verdict: NEEDS CHANGES

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
category/vm/evm/traits.hpp Adds eip_7997_active() to the Traits concept and both trait families.
category/execution/ethereum/execute_block_header.cpp Calls deterministic factory deployment as part of block-header execution.
category/execution/ethereum/deterministic_factory_contract.hpp Declares the deployment helper for the EIP-7997 system contract.
category/execution/ethereum/deterministic_factory_contract.cpp Implements deterministic factory deployment logic and instantiates across traits.
category/execution/CMakeLists.txt Adds the new deterministic factory sources to the execution library.

🤖 Generated with Claude Code

Suppressed comments (1)

category/execution/ethereum/deterministic_factory_contract.cpp:46

  • Using account_exists() here can skip deployment if the address was previously “created” by a balance transfer (balance-only account), leaving the system contract without code/nonce. The existing system-contract deploy path (deploy_block_hash_history_contract) uses account_has_code_or_nonce() for this reason.
    if (MONAD_UNLIKELY(!state.account_exists(FACTORY_ADDRESS))) {

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread category/execution/ethereum/deterministic_factory_contract.hpp Outdated
Comment thread category/execution/ethereum/deterministic_factory_contract.cpp Outdated
Comment thread category/execution/ethereum/deterministic_factory_contract.cpp Outdated
@Baltoli
Baltoli removed the request for review from andreaslyn August 26, 2026 08:42
@Baltoli
Baltoli force-pushed the bruce/eip-7997 branch 5 times, most recently from 26fb909 to 958bc79 Compare September 3, 2026 15:54
@Baltoli

Baltoli commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

@claude Re-review; noting that spec tests have to come all at once in a separate stack

@Baltoli
Baltoli changed the base branch from main to ryan-slotnum September 4, 2026 10:33
@Baltoli
Baltoli force-pushed the bruce/eip-7997 branch 2 times, most recently from 36e9542 to d295a56 Compare September 7, 2026 09:40
ryankeleti
ryankeleti previously approved these changes Sep 9, 2026
dhil
dhil previously approved these changes Sep 11, 2026
EIP-7997 specifies the deterministic deployment factory as a genesis
predeploy for new chains, not an irregular state transition at fork
activation. Monad testnet and mainnet already have the contract live at
0x4e59b44847b379578588920cA78FbF26c0B4956C, so only the devnet genesis
alloc needs it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015A1Xg6kHnQHbRYc6gsk7Zv
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.

5 participants