{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "ethereum-accounts",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/ethereum-accounts/",
  "collection": "ethereum",
  "title": "Ethereum accounts: keys, contract code and delegated accounts",
  "description": "Understand Ethereum accounts and wallet software, then see how key-controlled accounts, contract accounts and EIP-7702 delegation differ.",
  "aliases": [
    "EOA",
    "externally owned account",
    "contract account"
  ],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T15:10:23.134Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "An Ethereum account is a record in the network’s state, identified by an address. A traditional externally owned account uses a private key; a contract account runs code. EIP-7702 also allows a key-controlled account to delegate code execution, so the old rule that externally owned accounts never have code is incomplete.",
    "claimId": "ethereum-accounts-quick-answer",
    "sourceIds": [
      "accounts",
      "eip7702",
      "forks"
    ]
  },
  "keyFacts": [
    {
      "label": "Identifier",
      "value": "An address identifies an account, not necessarily a person",
      "sourceIds": [
        "accounts"
      ],
      "id": "identifier",
      "claimId": "ethereum-accounts-fact-identifier"
    },
    {
      "label": "Wallet",
      "value": "Software that interacts with accounts",
      "sourceIds": [
        "accounts"
      ],
      "id": "wallet",
      "claimId": "ethereum-accounts-fact-wallet"
    },
    {
      "label": "Delegation",
      "value": "EIP-7702 delegation persists until changed or cleared",
      "sourceIds": [
        "eip7702"
      ],
      "id": "delegation",
      "claimId": "ethereum-accounts-fact-delegation"
    }
  ],
  "prerequisites": [
    "what-is-ethereum"
  ],
  "sections": [
    {
      "id": "state-record",
      "heading": "An account is a state record, not a wallet application",
      "sourceIds": [
        "accounts",
        "evm"
      ],
      "paragraphs": [
        "Account state includes a native balance, a nonce and commitments to code and storage. A wallet is the interface and signing arrangement used to interact with that state; installing a second wallet does not create a second copy of the assets.",
        "A contract can maintain token balances for many accounts inside its own storage. The native balance displayed for an address therefore does not summarize every token or position associated with it."
      ]
    },
    {
      "id": "utxo-comparison",
      "heading": "Compare an account balance with Bitcoin outputs",
      "sourceIds": [
        "accounts",
        "bitcoin-utxo"
      ],
      "paragraphs": [
        "Bitcoin spends complete unspent transaction outputs and creates new outputs, commonly returning change. Ethereum instead updates an account’s native balance and nonce. In an illustrative fee-free comparison, spending a 5-unit Bitcoin-style output to pay 2 units creates a 2-unit payment and 3-unit change output; an account model debits 2 from a balance of 5, leaving 3.",
        "Actual transactions also pay fees. Neither model turns an address into proof of a person’s identity. See [Bitcoin’s UTXO model](/encyclopedia/what-is-a-utxo/) for the output-level explanation."
      ]
    },
    {
      "id": "two-control-models",
      "heading": "A key and a program authorize actions differently",
      "sourceIds": [
        "accounts",
        "contracts"
      ],
      "paragraphs": [
        "A traditional externally owned account signs protocol transactions with its private key. A contract account executes programmed authorization rules when called, such as requiring signatures from two of three designated participants.",
        "In an illustrative shared treasury, one person’s signature may be enough for an ordinary key-controlled account but insufficient for the contract’s two-signature rule. The contract’s actual code, rather than its label, determines the threshold."
      ]
    },
    {
      "id": "delegation",
      "heading": "Delegation changes the old two-box explanation",
      "sourceIds": [
        "eip7702",
        "forks"
      ],
      "paragraphs": [
        "Pectra introduced EIP-7702, which lets an externally owned account authorize a pointer to code that runs in that account’s context. The account can still originate transactions; its behavior is no longer described by an empty-code assumption.",
        "The authorization is consequential because delegation persists. It is not merely permission for one website visit. The delegate code can implement useful restrictions, but the protocol-level delegation itself grants broad execution capabilities."
      ]
    },
    {
      "id": "identity-and-access",
      "heading": "An address does not explain the whole control arrangement",
      "sourceIds": [
        "accounts",
        "eip7702",
        "contracts"
      ],
      "paragraphs": [
        "A familiar address format does not reveal whether keys are shared, a custodian controls them or delegated logic is present. Inspecting code and authorization matters more than inferring ownership from the way an address looks.",
        "Account recovery also depends on that arrangement. A conventional lost key has no built-in reset desk; a programmed account may provide recovery, but only through the rules and parties its implementation actually supports."
      ]
    }
  ],
  "faq": [
    {
      "question": "Can an externally owned account execute code?",
      "answer": "Yes, with EIP-7702 delegation. Its delegated execution coexists with key-based transaction origination, so older statements that EOAs always lack code need qualification.",
      "sourceIds": [
        "eip7702"
      ]
    },
    {
      "question": "Does one account mean one human owner?",
      "answer": "No. Keys can be held by services or groups, and contract authorization can involve several participants. An address alone does not establish a civil identity.",
      "sourceIds": [
        "accounts",
        "contracts"
      ]
    },
    {
      "question": "Is a wallet address stored inside my phone?",
      "answer": "Wallet software keeps signing information or access to it. The account and asset records themselves are part of Ethereum’s shared state.",
      "sourceIds": [
        "accounts",
        "evm"
      ]
    }
  ],
  "claims": [
    {
      "id": "ethereum-accounts-quick-answer",
      "articleSlug": "ethereum-accounts",
      "statement": "An Ethereum account is a record in the network’s state, identified by an address. A traditional externally owned account uses a private key; a contract account runs code. EIP-7702 also allows a key-controlled account to delegate code execution, so the old rule that externally owned accounts never have code is incomplete.",
      "sourceIds": [
        "source-d131f5d8edf3944c",
        "source-d4e3c4ededc427a1",
        "source-556d7525a12cff50"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d131f5d8edf3944c",
          "locator": "Account types; an account examined; a note on wallets"
        },
        {
          "sourceId": "source-d4e3c4ededc427a1",
          "locator": "Abstract; persistence of code delegation; transaction origination; security considerations"
        },
        {
          "sourceId": "source-556d7525a12cff50",
          "locator": "Prague-Electra (Pectra); Paris (The Merge); London"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Checked EIP7702 persistent delegation and account nonce/code distinction against pinned spec. Added source-backed UTXO/account comparison;5−2=3 assumes no fees."
        ]
      }
    },
    {
      "id": "ethereum-accounts-fact-identifier",
      "articleSlug": "ethereum-accounts",
      "statement": "Identifier: An address identifies an account, not necessarily a person",
      "sourceIds": [
        "source-d131f5d8edf3944c"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d131f5d8edf3944c",
          "locator": "Account types; an account examined; a note on wallets"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Checked EIP7702 persistent delegation and account nonce/code distinction against pinned spec. Added source-backed UTXO/account comparison;5−2=3 assumes no fees."
        ]
      }
    },
    {
      "id": "ethereum-accounts-fact-wallet",
      "articleSlug": "ethereum-accounts",
      "statement": "Wallet: Software that interacts with accounts",
      "sourceIds": [
        "source-d131f5d8edf3944c"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d131f5d8edf3944c",
          "locator": "Account types; an account examined; a note on wallets"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Checked EIP7702 persistent delegation and account nonce/code distinction against pinned spec. Added source-backed UTXO/account comparison;5−2=3 assumes no fees."
        ]
      }
    },
    {
      "id": "ethereum-accounts-fact-delegation",
      "articleSlug": "ethereum-accounts",
      "statement": "Delegation: EIP-7702 delegation persists until changed or cleared",
      "sourceIds": [
        "source-d4e3c4ededc427a1"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-d4e3c4ededc427a1",
          "locator": "Abstract; persistence of code delegation; transaction origination; security considerations"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T15:10:23.134Z",
        "reviewer": "automated independent verification",
        "notes": [
          "Checked EIP7702 persistent delegation and account nonce/code distinction against pinned spec. Added source-backed UTXO/account comparison;5−2=3 assumes no fees."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "accounts",
      "label": "Ethereum accounts",
      "publisher": "ethereum.org contributors",
      "url": "https://raw.githubusercontent.com/ethereum/ethereum-org-website/dcc900ff125891da5b6c723b905a7113cf1bd864/public/content/developers/docs/accounts/index.md",
      "canonicalUrl": "https://ethereum.org/en/developers/docs/accounts/",
      "version": "dcc900ff125891da5b6c723b905a7113cf1bd864",
      "checkedAt": "2026-10-02T14:35:40.369782+00:00",
      "locator": "Account types; an account examined; a note on wallets",
      "sha256": "774839a895f46d6d398c27ab56e3a3ba9eb445eae87374cf41a78e7f28ac7983",
      "note": "Supports accounts versus wallet software and account state fields. The older empty-code EOA description is qualified using EIP-7702.",
      "recordId": "source-d131f5d8edf3944c",
      "contentSha256": "774839a895f46d6d398c27ab56e3a3ba9eb445eae87374cf41a78e7f28ac7983"
    },
    {
      "id": "eip7702",
      "label": "EIP-7702: Set Code for EOAs",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://raw.githubusercontent.com/ethereum/EIPs/ac912ca6a9685590345dd8e5736cda75976d0131/EIPS/eip-7702.md",
      "canonicalUrl": "https://eips.ethereum.org/EIPS/eip-7702",
      "version": "ac912ca6a9685590345dd8e5736cda75976d0131",
      "checkedAt": "2026-10-02T14:35:51.249142+00:00",
      "locator": "Abstract; persistence of code delegation; transaction origination; security considerations",
      "sha256": "3d46953e13ebc7ebe229971b301ede853aad6e29f4faf4db1eb9a2085accde1b",
      "note": "Defines persistent EOA code delegation, continued transaction origination and the account-wide consequences of delegate code.",
      "recordId": "source-d4e3c4ededc427a1",
      "contentSha256": "3d46953e13ebc7ebe229971b301ede853aad6e29f4faf4db1eb9a2085accde1b"
    },
    {
      "id": "forks",
      "label": "Ethereum protocol upgrade history",
      "publisher": "ethereum.org contributors",
      "url": "https://raw.githubusercontent.com/ethereum/ethereum-org-website/dcc900ff125891da5b6c723b905a7113cf1bd864/public/content/ethereum-forks/index.md",
      "canonicalUrl": "https://ethereum.org/en/ethereum-forks/",
      "version": "dcc900ff125891da5b6c723b905a7113cf1bd864",
      "checkedAt": "2026-10-02T14:42:49.753070+00:00",
      "locator": "Prague-Electra (Pectra); Paris (The Merge); London",
      "sha256": "5271b10144c46964edd0e49ba692114de372f258ccdc94306198da8b7dae0d3a",
      "note": "Records shipped Pectra changes including EIP-7702 and EIP-7251; supports dated historical upgrade context.",
      "recordId": "source-556d7525a12cff50",
      "contentSha256": "5271b10144c46964edd0e49ba692114de372f258ccdc94306198da8b7dae0d3a"
    },
    {
      "id": "evm",
      "label": "Ethereum Virtual Machine",
      "publisher": "ethereum.org contributors",
      "url": "https://raw.githubusercontent.com/ethereum/ethereum-org-website/dcc900ff125891da5b6c723b905a7113cf1bd864/public/content/developers/docs/evm/index.md",
      "canonicalUrl": "https://ethereum.org/en/developers/docs/evm/",
      "version": "dcc900ff125891da5b6c723b905a7113cf1bd864",
      "checkedAt": "2026-10-02T14:35:40.399163+00:00",
      "locator": "State transition function; EVM instructions; storage",
      "sha256": "2a938eb38a613c0cd2e27229691f7bc3741585ab495a89e9db67fdd575f8b052",
      "note": "Supports deterministic execution, opcodes and the distinction between temporary execution memory and persistent state.",
      "recordId": "source-f31f86bc84bd28d7",
      "contentSha256": "2a938eb38a613c0cd2e27229691f7bc3741585ab495a89e9db67fdd575f8b052"
    },
    {
      "id": "bitcoin-utxo",
      "label": "Bitcoin developer guide: transactions",
      "publisher": "Bitcoin developer documentation",
      "url": "https://developer.bitcoin.org/devguide/transactions.html",
      "locator": "Introduction; inputs and outputs; UTXO",
      "checkedAt": "2026-10-02",
      "note": "Bitcoin spends entire unspent outputs and creates new outputs; change is a new output.",
      "recordId": "source-b282fdecc069b74d",
      "contentSha256": "64097efbee7c8112f28ad172acc4d0f15c34f109fa0e3dacd5b6501506ac6e06",
      "version": null
    },
    {
      "id": "contracts",
      "label": "Introduction to smart contracts",
      "publisher": "ethereum.org contributors",
      "url": "https://raw.githubusercontent.com/ethereum/ethereum-org-website/dcc900ff125891da5b6c723b905a7113cf1bd864/public/content/developers/docs/smart-contracts/index.md",
      "canonicalUrl": "https://ethereum.org/en/developers/docs/smart-contracts/",
      "version": "dcc900ff125891da5b6c723b905a7113cf1bd864",
      "checkedAt": "2026-10-02T14:35:40.398357+00:00",
      "locator": "What is a smart contract; a digital vending machine; limitations; multisig",
      "sha256": "e0933f91c6c58d30c1f5f05cac3c45529bf34dcb0711bbaa9a4dfe2b9b9946db",
      "note": "Supports contract code/state, deterministic rules, illustrative vending logic, external-data limits and multisignature access.",
      "recordId": "source-1bffcf35253de959",
      "contentSha256": "e0933f91c6c58d30c1f5f05cac3c45529bf34dcb0711bbaa9a4dfe2b9b9946db"
    }
  ],
  "related": {
    "articles": [
      "ethereum-smart-accounts",
      "ethereum-wallet-requests",
      "ethereum-token-approvals",
      "what-is-ens"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    },
    {
      "date": "2026-10-02",
      "kind": "prepublication-review",
      "summary": "Added a primary-source comparison of account balances and Bitcoin UTXOs with explicit fee-free arithmetic assumptions."
    }
  ],
  "citation": "Degrees of Satoshi editorial project. “Ethereum accounts: keys, contract code and delegated accounts.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/ethereum-accounts/"
}
