{
  "id": 3670,
  "title": "EIP-3670: EOF - Code Validation",
  "status": "Stagnant",
  "type": "Standards Track",
  "category": "Core",
  "summary": "This adds strict validation rules for EOF smart contracts when they're deployed. It rejects contracts with invalid bytecode, such as incomplete PUSH instructions or undefined opcodes. It also removes deprecated instructions like CALLCODE and SELFDESTRUCT from EOF contracts. This validation only happens once at deployment time and only affects new EOF contracts - existing legacy contracts remain unchanged. The goal is to make bytecode more predictable and easier to reason about, while ensuring all EVM implementations handle code the same way.",
  "impacts": [],
  "discussion_url": "https://ethereum-magicians.org/t/eip-3670-eof-code-validation/6693",
  "source_markdown_url": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-3670.md",
  "canonical_url": "/latest/eips/3670.json",
  "markdown_url": "/latest/eips/3670.md",
  "citations": [
    {
      "recordId": "eip-3670",
      "artifactPath": "normalized/3670.json",
      "url": "/records/proposal/eip-3670/normalized/3670.json",
      "label": "EIP-3670: EOF - Code Validation",
      "snippet": "This adds strict validation rules for EOF smart contracts when they're deployed. It rejects contracts with invalid bytecode, such as incomplete PUSH instructions or undefined opcodes. It also removes deprecated instructi"
    }
  ]
}
