← GlossaryCoins & networks
What Is an Externally Owned Account (EOA)? Wallets vs Contracts
An externally owned account (EOA) is an Ethereum account controlled by a private key that can initiate transactions, as opposed to a contract account, which is controlled by its code and only acts when called.
Key takeaways
- Ethereum has two account types: EOAs and contract accounts.
- Anyone with an EOA's private key controls it.
- Only EOAs can start transactions; contracts respond to them.
- A regular wallet address on Ethereum is an EOA.
Two kinds of account
Ethereum has two types of accounts. ethereum.org lists them as externally owned accounts, controlled by anyone with the private keys, and contract accounts, which are smart contracts deployed to the network and controlled by code. Both have an address and a balance of ETH, but they are created and controlled differently.
How an EOA works
An EOA is what a normal wallet creates. It is controlled by a pair of cryptographic keys: the private key signs transactions, and the address is derived from the public key. Creating an EOA costs nothing, because it is just generating a key. It can hold ETH and tokens, send transactions and call contracts.
How contract accounts differ
A contract account has code and storage and is controlled by that code. It has no private key. According to ethereum.org, a contract can only send messages in response to receiving a transaction, so it cannot act on its own; some EOA must call it first. Contracts are created by a transaction that deploys their code.
Why it matters
When you use a wallet, you are using an EOA. Everything depends on keeping its private key safe. Newer designs let contract accounts act like wallets, with features such as recovery and spending limits, but they are different from a standard EOA. When you send to an address, nothing in the format tells you whether it is an EOA or a contract, so check that you are sending to a person's wallet and not to the wrong kind of address, since some contracts cannot return funds.
Example
You create a wallet and get an address like 0x1234… controlled by your private key. You send a transaction that calls a swap contract. The contract is a contract account with no private key, and it runs only because your EOA called it.
Put it into practice
Keep the key behind your address safe
Your Ethereum address in Scrypt Wallet is an externally owned account backed by a key. Back that key up and never share it with anyone.
Create a free wallet Get Scrypt for AndroidSources and verification
Last reviewed 2026-10-02 by the Scrypt Wallet team. The factual claims on this page, and where each comes from:
- An externally owned account is controlled by anyone with the private keys, and a contract account is a smart contract controlled by code. [1]
- A contract account can only send messages in response to receiving a transaction. [1]
Sources
- Ethereum accounts · ethereum.org · secondary source
Primary sources are protocol papers, specifications, source code or a project's own documentation; secondary sources are wikis and explainers. We checked each claim against the source text on the review date. Found an error? Tell us and we will correct it.
Frequently asked questions
Is my wallet address an EOA?
A standard wallet on Ethereum uses an EOA, controlled by your private key.
Can a contract send funds by itself?
No. It runs only in response to a transaction from an account.
Do EOAs cost anything to create?
No. Creating one is generating a key pair. You only pay fees when you send transactions.
Written by the Scrypt Wallet team · Updated 2026-10-02. General education, not financial, tax or legal advice.