Contract Accounts
A contract account is controlled by its code. You can think of a contract like a script. The commands in this script are executed by the Ethereum Virtual Machine (EVM). Contract accounts don’t have a private key. They are either invoked by a transaction (from an EOA) or a message (from another contract account).
Contract accounts can:
- receive, hold, and send ETH (to EOAs or other contract accounts)
- interact with other contract accounts by sending messages (they are not signed)
- write to and read from its storage
Creating a contract account costs gas since storage is occupied during the creation.
Contract accounts get only activated through a transaction or a message.