Skip to content

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

Open
@chopperdaddy

Description

@chopperdaddy

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Sev1-highHigh severity; partial loss of service with severe impact upon users, with no workaround.external-contributorteam-transactionsTransactions teamtype-bugSomething isn't working

    Type

    Projects

    Status

    To be fixed

    Status

    To be triaged

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions