Externally-Owned Accounts (EOA)
Externally-Owned Accounts (EOA) are user accounts that can create
transactions and are controlled by private keys. An EOA is not
associated with your real-world identity. Rather than using your actual
identity, Ethereum software generates one for you, using Public Key
Cryptography. Public Key Cryptography is used to establish pseudony-
mous identities in a blockchain implementation. Externally-Owned
Accounts (EOAs) are managed using a keypair containing a private
key and a public key, which have a cryptographic relationship. Private
keys are like passwords in that they allow access to your Ethereum
account and let you perform actions, such as sending a transaction or
interacting with an application. Private keys should not be shared with
anyone, ever. Unlike passwords, you are entirely responsible for your
own private keys. If you misplace them, delete them or they are stolen
then there is no recourse.
In a more technical sense, an Ethereum account’s private key is a
256-bit number (between 1 and 2256). You can visualise this as a number
range so astronomically large no two people will end up with the same
number. To your computer, a 256-bit number is a long series of binary
0 s and 1 s, but this binary number gets translated for us into a more
manageable hexadecimal form. Hexadecimal is a base-16 numbering
system that uses 0–9 and A–F to representationally compress large
binary numbers. Below is an Ethereum account’s private key represented
in hexadecimal:
a37efb76efceae747a746f64ef25f9f8f622f57d754f397705425dbe28f901b4
Most Ethereum wallets create what is known as a seed phrase that can
be used to derive the private keys of multiple accounts. I know that
sounds tricky, but in practical terms, it just means you won’t encounter
raw private keys much, but will instead encounter the seed phrase. Here
is what one looks like:
heart forest bird damp abandon soap bird holiday poverty expire
grant keep
The majority of Ethereum wallets will use a seed phrase from which
you can derive many individual accounts. This means you can have a
single seed phrase, but many derived accounts.
On the other side of the identity equation is the public key. In formal
terms, a public key is a set of coordinates generated from the private
key using Elliptic Curve Cryptography (ECC). The ECC algorithm is
one-way. I can generate a public key from a private key and show you
the public key, but you can’t reverse engineer from the public key back
to the private key.
Public Key Cryptography allows us to establish a digital signature
scheme. A digital signature is a cryptographic signature appended to
transactions using private keys. The public key can be used to verify the
digital signature. Here’s the digital signature scheme:
i Software creates the private key.
ii Software derives the public key from the private key.
iii User signs transactions with a digital signature using their pri-
vate key.
iv Network verifies digital signature came from the private key using the
public key.
Ethereum transactions are sent to Ethereum addresses. Informally,
Ethereum addresses are identifiers for accounts. Formally, Ethereum
addresses are 42-character hexadecimal identifiers derived from the last
20 bytes of the public key with a 0x prefix. An example address looks
as follows:
0x5e16Fa36555B428823d3Ed32aa7CbB07a92F301B
In the Ethereum roadmap, there are plans to transition over to a
more intuitive and user-friendly account experience called Account
Abstraction. It might even exist by the time you are reading this.
The hope is Account Abstraction will give users more control and
flexibility over their accounts, such as the social recovery of private keys.
Externally-Owned Accounts (EOA) have an Ethereum address and
an associated account state.2 EOAs contain two fields: the Nonce and
the Balance. The Nonce in an Ethereum account is an incrementing
number showing how many transactions an account has made and how
many contracts it has created. The Nonce is used to determine the order
of transactions in the same slot. The Balance is how much ETH the
account is holding. We can extrapolate that tracking the world state
is partially to track the current transaction count and balance of an
EOA.