I understand that addresses are hashes of the public keys. But why? What is the rationale behind this design decision?

And why 160 bits? Why not just use the hash directly? Is 160-bit guaranteed to be sufficient in the future for compatibility and security?

  • maybe they just follow the design of bitcoin. ref: bitcoin.stackexchange.com/questions/3600/… – lz96 Jun 17 '18 at 5:53
  • (That duplicate is basically asking "What is the use of the Ethereum address in the first place?") – Richard Horrocks Jun 17 '18 at 8:16
  • 1
    @lz96 That's interesting. Bitcoin indeed uses RIPEMD160, which probably explains why Ethereum truncates the Keccak-256 output to that size. – Xiao Jia Jun 17 '18 at 14:23

Ethereum has been build for 'future' with resilience in mind. For address generation (i.e. public-private key pair), Elliptic Curve Cryptography (ECC) is used, and besides other reasons, its performance is far superior to other existing algorithms (for example, RSA-based).

Even though no flaw has been found in the Elliptic Curve algorithm used in Ethereum, the founding designers wanted to keep the system resilient in case a flaw/ exploit in the algorithm is detected so that no one can reverse engineer the private key from the public key. Because the hashing algorithm has already been proved to be immune to reverse engineering, adding this on top means that no one can go back to the private key from the address (even if the ECC algorithm were exploitable).

  • 1
    I agree that it is useful in cases where a change in the key algorithm is required, since hashing adds an extra level of indirection. But as for your irreversibility claim, isn't the public key also present in the transactions? – Xiao Jia Jun 17 '18 at 14:13
  • 1
    See crypto.stackexchange.com/a/18106/59755 for recovering public keys from transactions. An interesting property is that before an account had signed any transactions it's not possible to recover the keys solely from the addresses. – Xiao Jia Jun 17 '18 at 14:51

Addresses are smaller in size than public keys, they are identifiable from addresses of other cryptocurrencies, some addresses like bitcoin have checksum built into them whereas ethereum addresses are valid IBAN account number.

  • I'm asking specifically about Ethereum. Didn't know the IBAN story. But that seems to be just an add-on feature, while I guess the design of the address space must predate ICAP. – Xiao Jia Jun 17 '18 at 14:18
  • Ok, I had given answer in generic sense, have to look into ethereum address design. But one thing is sure, ethereum address design has put many users in trouble, it has no checksum, same address space is used for testnets, even for ethereum forks like ethereum classic. Users have accidentally send ethers to testnets and other forks. Whereas bitcoin uses markers and checksums in their addresses. So that users can’t send coins accidentally to wrong addresses – kherwa Jun 17 '18 at 14:39

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