EVM Accounts and Addresses
Where ETH is stored. Users can initialize accounts, deposit ETH into the accounts, and transfer ETH from their accounts to other users.
Accounts and account balances are stored in a big table in the EVM; they are a part of the overall EVM state. When searching up your balances, most Ethereum wallets use a 3rd-party node like Infura or Alchemy by default.
Account Types
Ethereum has two account types:
- Externally-owned account (EOA) | controlled by anyone with the private keys
- Contract account | a smart contract deployed to the network, controlled by code
Both account types have the ability to:
- Receive, hold and send ETH and tokens
- Interact with deployed smart contracts
Key differences
Externally Owned Account | Contract Account |
---|---|
Has a unique address | Has a unique address |
Holds coin/tokens balances | Holds coins/tokens balances |
Private key is needed | No private or public key needed |
Controlled by humans | Controlled by code |
Free to create | Costs gas to create |
EOA
- Creating an account costs nothing
- Can initiate transactions
- Transactions between externally-owned accounts can only be ETH/token transfers
- Made up of a cryptographic pair of keys: public and private keys that control account activities
Contract
- Creating a contract has a cost because you're using network storage
- Can only send transactions in response to receiving a transaction
- Transactions from an external account to a contract account can trigger code which can execute many different actions, such as transferring tokens or even creating a new contract
- Contract accounts don't have private keys. Instead, they are controlled by the logic of the smart contract code