Computational cryptography › Live on mainnet today › Hashes and symmetric crypto
ADDRESSINGPrimitive

Account addresses

In plain words

Your address is a short fingerprint of your public key. Until you sign something, only the fingerprint is public.

The idea: Your address is a fingerprint of your public key, not the key itself. Until you sign a transaction, the world only knows the fingerprint, and hashes are believed to hold up against quantum computers. Once you sign, your public key can be recovered from the signature, so from then on a quantum attacker could, in principle, work out your private key.

Why it matters: Accounts that have never sent a transaction keep their public key hidden from future quantum attackers.

The details

On the map: last 20 bytes of Keccak(pubkey). 160 bits means only ~2^80 work to find an address collision

An Ethereum address is the last 20 bytes of the Keccak-256 hash of the public key[1]. Until an account signs something, only this hash is public, which hides the key from a future quantum attacker.

Because addresses are only 160 bits, finding two keys or deployments with the same address takes about 2^80 work[2], expensive but not out of reach for a very well-funded attacker. That is a known concern for contracts deployed to precomputed (CREATE2) addresses[3].

Rests on

If any of these breaks, this breaks too.

If it falls

If this breaks, these break with it.

References

  1. Gavin Wood. Ethereum: A Secure Decentralised Generalised Transaction Ledger. Ethereum Yellow Paper, 2014. ethereum.github.io/yellowpaper/paper.pdf
  2. Dankrad Feist, Dmitry Khovratovich and Marius van der Wijden. EIP-3607: Reject transactions from senders with deployed code. Ethereum Improvement Proposals (Final), 2021. eips.ethereum.org/EIPS/eip-3607
  3. Vitalik Buterin. EIP-1014: Skinny CREATE2. Ethereum Improvement Proposals (Final), 2018. eips.ethereum.org/EIPS/eip-1014