{
  "id": 5920,
  "title": "EIP-5920: PAY opcode",
  "status": "Stagnant",
  "type": "Standards Track",
  "category": "Core",
  "summary": "The PAY opcode simply transfers ETH without executing code at recipient, making it more efficient, secure and compatible with account abstraction.",
  "impacts": [
    "Indirect benefits through safer smart contract interactions and potentially lower gas costs for ETH transfers.",
    "Security improvements - eliminates reentrancy attack vectors by tranfering ETH to your contracts.",
    "Wallets need to support the new transaction type using this opcode.",
    "Transaction analysis tools, debuggers, and smart contract libraries need updates to support the new PAY opcode.",
    "L2s aiming to be EVM compatible need to also implement this change.",
    "No change for stakers or node operation.",
    "No changes for consensus layer operations as this affects execution layer opcodes.",
    "Need to implement new PAY opcode with proper gas accounting using EIP-2929 warm/cold access patterns and new account creation costs.",
    "Eliminates potential attack vectors from ETH tranfers to contracts",
    "Creates a dedicated function to tranfer the native token",
    "Improves gas cost for transactions that only tranfesrs ETH"
  ],
  "discussion_url": "https://ethereum-magicians.org/t/eip-5920-pay-opcode/11717",
  "source_markdown_url": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-5920.md",
  "canonical_url": "/latest/eips/5920.json",
  "markdown_url": "/latest/eips/5920.md",
  "citations": [
    {
      "recordId": "eip-5920",
      "artifactPath": "normalized/5920.json",
      "url": "/records/proposal/eip-5920/normalized/5920.json",
      "label": "EIP-5920: PAY opcode",
      "snippet": "The PAY opcode simply transfers ETH without executing code at recipient, making it more efficient, secure and compatible with account abstraction."
    }
  ]
}
