Skip to main content

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 AccountContract Account
Has a unique addressHas a unique address
Holds coin/tokens balancesHolds coins/tokens balances
Private key is neededNo private or public key needed
Controlled by humansControlled by code
Free to createCosts 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

Wallet Selection

Find a wallet

Context