Externally Owned Accounts (EOA)
๐ Master Ethereum wallets with our beginner's guide.
EOAs are user-controlled accounts, typically created by importing a seed phrase. Key features include:
- Private key ownership
- Ability to initiate transactions
- No associated smart contract code
Contract Accounts (Smart Contracts)
These accounts are governed by code executed on the Ethereum Virtual Machine (EVM). Unlike EOAs:
- No private keys โ controlled entirely by programmed logic
- Created by EOAs โ address derived from creator's address and transaction nonce
- Require gas fees for deployment
Key Components of Contract Accounts:
- codeHash: Unique hash representing the EVM code (always empty for EOAs)
- storageRoot: Merkle hash of the contract's storage data
Comparison Table
| Feature | External Account | Contract Account |
|------------------|------------------|------------------|
| Balance | โ
| โ
|
| Nonce | โ
| โ
|
| codeHash | โ | โ
|
| storageRoot | โ | โ
|
| Transaction Initiation | โ
| โ (Triggered by calls) |
| Private Key | โ
| โ |
| Creation Cost | Free | Gas Required |
FAQs
โ Can contract accounts hold ETH?
Yes, both account types can store ETH balances.
โ What happens to a contract's storage data when it's deleted?
The storageRoot is cleared, but historical data remains on-chain.
โ Why can't contracts initiate transactions?
They only execute when called by EOAs or other contracts.
โ How are contract addresses determined?
Calculated from the creator's address and nonce.
๐ Explore Ethereum development tools to build your first smart contract.
Key Takeaways
- EOAs = User wallets with private keys
- Contracts = Programmable on-chain agents
- All accounts share balance/nonce tracking
- Contracts add code/storage capabilities