There are two kinds of accounts in Ethereum which share the same address space: External accounts that are controlled by public-private key pairs (i.e. humans) and contract accounts which are controlled by the code stored together with the account.

This is an extract from Solidity docs.

I didn't understand the purpose of two kinds of accounts. Why there's need to be two accounts for the same ethereum address?

  • There were several plans to make EOA be contracts.
    – Ismael
    Oct 9, 2021 at 18:16
  • @PaulRazvanBerg Yes Oct 11, 2021 at 8:18

1 Answer 1


There are no two types of accounts for one address. An address belongs to a smart contract or not. If not it's a "normal" address that can be controlled via a private key or is most likely unused. (Actually I am not sure what would happen if someone has a private key for a smart contract address, but this case is so unlikely that it can be considered impossible). They are in the same address space, because it's easier to handle. This way there is no need for special cases when sending ETH to a smart contract.

Not the answer you're looking for? Browse other questions tagged or ask your own question.