Ethereum Fundamentals
Accounts: Keys, Contracts, and the End of UTXO · 1/2

Two kinds of accounts

private keysecret, never sharepublic keyderived from privateaddressshareable

Ethereum has exactly two types of accounts, and understanding the difference clears up a lot of confusion for beginners. An externally-owned account, or EOA, is controlled by whoever holds its private key, this is the kind of account you get when you create a wallet. It has an ETH balance and can initiate transactions, but it has no code of its own, it's purely controlled by a human (or software) holding the key.

A contract account is different: it's controlled entirely by the code deployed to it, not by a private key. It can hold a balance and store data too, but it only acts when an EOA (or another contract) sends it a transaction that triggers its code to run. Nobody 'owns' a contract account the way you own a wallet, its behavior is fixed by whatever logic was deployed, which is exactly what makes contracts function as neutral, rule-following programs rather than accounts a person can unilaterally control.