Addresses

為什麼將公鑰的最後 20 個字節用作地址?

  • August 7, 2018

根據這篇關於如何從公鑰中派生乙太坊地址的文章:

取此公鑰 (Keccak-256) 的最後 40 個字元/20 個字節。或者,換句話說,刪除前 24 個字元/12 個字節。這 40 個字元/20 個字節就是地址。當以 0x 為前綴時,它變為 42 個字元長。

我的問題是為什麼最後 20 個字節(而不是 20 個字節)是任意決定還是有潛在的數學目的?

完整的公鑰在 Ethereum* 中並沒有那麼有用,因為它們沒有任何實際用途。取最後 20 個字節是:

  1. 啟發式旨在簡化密鑰的管理;也就是說,在大額轉賬中通過電話複製和粘貼、校驗和或確認。
  2. 搶占式安全機制。散列函式每隔十年左右就會被破壞,因此切割完整的公鑰是一個很好的額外防禦層。中本聰在比特幣中做了同樣的事情,因為地址被雜湊了兩次:SHA-256 和 RIPEMD-160(如果一個被破壞,你仍然有另一個作為盾牌)。

*你可以使用乙太坊來發送消息,但你為什麼要這樣做?它很昂貴,您可以使用 PGP。

引用自:https://ethereum.stackexchange.com/questions/56057