There are two types of accounts in Ethereum: Externally Owned Accounts (EOA) and Contract Accounts. An EOA is controlled by a private key, has no associated code, and can send transactions. A contract account has an associated code that executes when it receives a transaction from an EOA. A contract account cannot initiate transactions on its own. Transactions must always originate from an EOA.