The Solidity documentation on accounts states that there are two types:

  • External accounts, which are owned by humans
  • Contract accounts, which are controlled by code

The following line in the documentation is confusing for me:

Every account has a persistent key-value store mapping 256-bit words to 256-bit words called storage.

I understand that contract accounts have storage space and why this is necessary. But why is this also true for external accounts? There are answers available in the context of contract accounts but not in the context of an external account.

Am I missing something here? Any help is highly appreciated.

1 Answer 1


Accounts have a common data structure, so technically you can say that both externally-owned accounts and contracts have a code section and a storage section. However, for externally-owned accounts both code and storage are empty. There's no way to write to the storage of an externally-owned account.

  • If storage and code section of external account is empty then why provide them space in the first place? Don't you think it is waste of hard disk space?
    – Thinker
    Commented Jun 26, 2018 at 10:50
  • It gives you a common data structure for externally-owned accounts and contracts, which makes things simpler. Commented Jun 26, 2018 at 10:53
  • Ok, they both have common data structure but storage and code field in case the external account is set to empty.
    – Thinker
    Commented Jun 26, 2018 at 10:56
  • 3
    Storage is represented as a trie, so an empty storage takes essentially no disk space, only nonzero entries require space Commented Jun 27, 2018 at 2:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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