Skip to content

[Bug]: MetaMask Incorrectly Blocks Valid Transactions to Own EOA #32495

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
chopperdaddy opened this issue May 3, 2025 · 0 comments
Open

[Bug]: MetaMask Incorrectly Blocks Valid Transactions to Own EOA #32495

chopperdaddy opened this issue May 3, 2025 · 0 comments
Labels
external-contributor type-bug Something isn't working

Comments

@chopperdaddy
Copy link

chopperdaddy commented May 3, 2025

Describe the bug

MetaMask incorrectly blocks transactions that send data to the same address as the sender with the error "External transactions to internal accounts cannot include data". This validation is overly restrictive and prevents legitimate use cases such as inscriptions and other valid on-chain operations.

Expected behavior

The transaction should be processed normally, allowing users to send data to their own address. This is a valid Ethereum operation that has legitimate use cases including:

Screenshots/Recordings

No response

Steps to reproduce

  1. Use MetaMask version 12.15.0 or later
  2. Attempt to send a transaction with the following parameters:
{
  to: ownAddress, // Same as the from address
  data: someData, // Any hex encoded data
  value: 0
}

Error messages or log output

{
    "code": -32602,
    "message": "External transactions to internal accounts cannot include data",
    "stack": "{\n  \"code\": -32602,\n  \"message\": \"External transactions to internal accounts cannot include data\",\n  \"stack\": \"Error: External transactions to internal accounts cannot include data\\n    at new o (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:1:780)\\n    at i (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:1:3871)\\n    at Object.invalidParams (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:1:4377)\\n    at chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:5:1047205\\n    at He.addTransaction (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:5:893020)\\n    at async chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background-1.js:1:265367\"\n}\n  at new o (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:1:780)\n  at i (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:1:3871)\n  at Object.invalidParams (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:1:4377)\n  at chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:5:1047205\n  at He.addTransaction (chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/common-4.js:5:893020)\n  at async chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background-1.js:1:265367"
}

TransactionExecutionError: Invalid parameters were provided to the RPC method.
Double check you have provided the correct parameters.

Request Arguments:
  chain:     Sepolia (id: 11155111)
  from:      0xf1Aa941d56041d47a9a18e99609A047707Fe96c7
  to:        0xf1Aa941d56041d47a9a18e99609A047707Fe96c7
  value:     0 ETH
  data:      0x646174613a6d6573736167652f766e642e7469632b6a736f6e2c7b22746f706963223a22307839326236353233656463363439616432376334373438333661323966366437366330376338376237363935623935343330643563666465383863323966303138222c22636f6e74656e74223a2254657374696e6720696e736372697074696f6e20636f6d6d656e74222c2276657273696f6e223a22307830222c22656e636f64696e67223a2275746638227d
  gas:       28466
  gasPrice:  12.496770907 gwei
  nonce:     1087

Details: External transactions to internal accounts cannot include data
Version: [email protected]
    at getTransactionError (getTransactionError.js:13:10)
    at sendTransaction.js:205:11
    at Generator.throw (<anonymous>)
    at rejected (chunk-ZYQGWDEM.js:92:29)
    at _ZoneDelegate.invoke (zone.js:339:158)
    at Object.onInvoke (core.mjs:6368:25)
    at _ZoneDelegate.invoke (zone.js:339:46)
    at ZoneImpl.run (zone.js:110:35)
    at zone.js:2428:30
    at _ZoneDelegate.invokeTask (zone.js:364:171)Caused by: InvalidParamsRpcError: Invalid parameters were provided to the RPC method.
Double check you have provided the correct parameters.

Details: External transactions to internal accounts cannot include data
Version: [email protected]
    at buildRequest.js:49:19
    at Generator.throw (<anonymous>)
    at rejected (chunk-ZYQGWDEM.js:92:29)
    at _ZoneDelegate.invoke (zone.js:339:158)
    at Object.onInvoke (core.mjs:6368:25)
    at _ZoneDelegate.invoke (zone.js:339:46)
    at ZoneImpl.run (zone.js:110:35)
    at zone.js:2428:30
    at _ZoneDelegate.invokeTask (zone.js:364:171)
    at core.mjs:6037:49

Detection stage

In production (default)

Version

12.15.0+

Build type

None

Browser

Chrome

Operating system

MacOS

Hardware wallet

No response

Additional context

Technical Details

  • MetaMask Version: 12.15.0+
  • Network: Any Ethereum network
  • Error occurs in the transaction validation layer before the transaction reaches the network
  • The error occurs regardless of transaction type

Impact

This bug prevents users from performing legitimate on-chain operations that require sending data to their own address. This affects:

  • Users trying to create inscriptions
  • Developers implementing self-referential contract operations
  • Any application that requires sending data to the same address
  • Projects using ethscriptions or similar technologies

Additional Context

  • The error is coming from MetaMask's base transaction validation logic
  • This validation is preventing valid use cases
  • Other wallets (like Rainbow, Rabby, etc.) allow these transactions without issues
  • This is a valid Ethereum operation that should be allowed

Severity

No response

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
external-contributor type-bug Something isn't working
Projects
Status: To be fixed
Status: To be triaged
Development

No branches or pull requests

2 participants