{
  "id": 7761,
  "title": "EIP-7761: EXTCODETYPE instruction",
  "status": "Stagnant",
  "type": "Standards Track",
  "category": "Core",
  "summary": "This adds an EXTCODETYPE instruction to EOF contracts to distinguish between different account types. EOF removes code introspection capabilities like EXTCODESIZE, but this creates problems for ERC-721 and ERC-1155 tokens that need to know whether a recipient is an EOA (externally owned account) or a contract to implement safe transfers correctly. EXTCODETYPE returns 0 for no code (EOA), 1 for legacy contracts, and 2 for EOF contracts. This enables proper implementation of token standards in EOF while also helping proxy contracts verify that their upgrade targets are safe to call with EXTDELEGATECALL.",
  "impacts": [],
  "discussion_url": "https://ethereum-magicians.org/t/eip-7761-is-contract-instruction/20936",
  "source_markdown_url": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7761.md",
  "canonical_url": "/latest/eips/7761.json",
  "markdown_url": "/latest/eips/7761.md",
  "citations": [
    {
      "recordId": "eip-7761",
      "artifactPath": "normalized/7761.json",
      "url": "/records/proposal/eip-7761/normalized/7761.json",
      "label": "EIP-7761: EXTCODETYPE instruction",
      "snippet": "This adds an EXTCODETYPE instruction to EOF contracts to distinguish between different account types. EOF removes code introspection capabilities like EXTCODESIZE, but this creates problems for ERC-721 and ERC-1155 token"
    }
  ]
}
