Understanding Ethereum Accounts

What is an Ethereum account?

An Ethereum account is an entity with an ether (ETH) balance that can send transactions on the chain. These accounts are either user-controlled (human) or deployed as smart contracts (code-dependent). Transactions, which change the state of the Ethereum Virtual Machine (EVM), need to be broadcast to the network. Any node can broadcast a request for a transaction to be executed on the EVM. After this happens, a block producer will execute the transaction and propagate the resulting state change to the rest of the Ethereum network. Transactions require a fee and must be mined to become valid.

How many types of Ethereum accounts are there?

Two different types of Ethereum accounts exist. The first is called an externally owned account (EOA). The second is called a contract account. Externally owned accounts are controlled by anyone with the private keys. Contract accounts are smart contracts deployed to the network and controlled by code. Both types are identified by an Ethereum address. In terms of capabilities, the two account types can:
1. Receive, hold, and send ETH and tokens
2. Interact with smart contracts on the chain

(1) Externally owned accounts (EOA)

EOAs are controlled by users. This control occurs often through software such as a wallet application. Externally owned accounts are simple accounts without any associated code or data storage. This type of Ethereum account is controlled by and cryptographically signed using a private key in the "real world."

(2) Contract accounts (smart contracts)

A contract account is controlled by code executed by the Ethereum Virtual Machine. It is also referred to as a smart contract. Contract accounts have associated code and data storage, but not private keys. They "control themselves.” These accounts do so in the way determined by their smart contract code.

Diagram adapted from: Ethereum EVM Illustrated

Which are some characteristics of these accounts?

Ethereum accounts have four fields:

What are the differences between the account types?

(1) Externally owned accounts (EOA):
· Creating an EOA costs nothing
· An EOA can initiate transactions
· Transactions between externally-owned accounts can only be ETH transfers

(2) Contract accounts (smart contracts):
· Creating a contract has a cost because you are using network storage
· A contract account 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

Read more here: Private Key | Public Key

1. Externally owned accounts

An externally owned address is an account with a public and private key pair holding one’s funds. It is the ‘public’ address required to receive funds from another party. To access the funds, one must have its private key. Caution is needed; a private key gives access to all the funds in an address. A wallet is an interface for managing an Ethereum account—as well as its public and private key. Get an Ethereum address or account to both send and receive funds. Visit the Etherscan Directory for a list of wallets.

2. Contracts

A contract address hosts a collection of code on Ethereum that executes functions. The functions are executed when a transaction with associated input data (contract interaction) is made. Such addresses are created when a contract is deployed to the blockchain. Both the externally owned and contract addresses share the same format of 42-hexadecimal characters.

Etherscan distinguishes between the two types by displaying the contract Creator field for contract addresses per the example above. Then, for token contracts, there is a Token Tracker field just below the contract Creator field. We also display Contract instead of Address and provide a Contract tab for users to view and interact with the contract.