為什麼你使用比特幣地址而不是公鑰?
為什麼要對公鑰進行兩次雜湊處理?從公鑰中抽像出來是否有安全優勢?是因為地址可以代表多種東西嗎?我錯過了一些東西。
理論上你可以將比特幣直接發送到公鑰嗎?
是的,您可以將比特幣直接發送到公鑰:事實上,Pay-to-PubKey (P2PK) 和 Pay-to-PubKey-Hash (P2PKH) 都是在第一個比特幣版本中引入的。IIRC,P2PK 今天有時仍用於 Coinbase 交易。
P2PK 交易的輸出略大,但輸入的交易要小得多。
P2PKH 的一個優點是地址比公鑰短。這允許在Base58check中用 34 個字元表示地址。
如果有一個標準可以在 Base58check 中顯示公鑰,那麼它們可能有 51 個字元。可以說,鍵入只有 34 個字元的字元比鍵入 51 個字元更容易。
但實際上,地址之所以被使用,是因為它們有一個標準,而公鑰卻沒有。為什麼會這樣,我不知道。
感謝 Pieter,他提供了知識來修正我的錯誤。;)
另請參閱此相關問題:為什麼預設礦工實現使用 pay-to-pubkey?
正如@Murch 正確指出的那樣,確實可以將比特幣發送到公鑰或公鑰的雜湊值。使用公鑰雜湊的最初動機是縮短地址的大小。未壓縮形式的公鑰長度為 64 字節,而 RIPE-MD 輸出 20 字節(+5 字節的校驗和和版本)。
有趣的是,中本聰並不知道公鑰可以壓縮到 32 字節 +1 位(為什麼比特幣同時支持壓縮和未壓縮的密鑰/地址?),因此選擇散列作為獲取壓縮地址的一種方式。安全隱患很有趣:
與公鑰不同,像 SHA-256 和 RIPE-MD 這樣的雜湊函式被認為是抗量子的。因此,量子攻擊者可以有效地檢索任何比特幣公鑰的私鑰,但不能檢索 P2PKH 地址。但是,每當交易從 P2PKH 地址花費時,它就會將公鑰作為腳本的一部分顯示出來。
另一方面,可能的地址總數為 2^160,而公鑰總數約為 2^256。從理論上講,這意味著地址對於暴力攻擊的安全性不如公鑰。顯然,暴力攻擊對於任何一種地址都是完全不可行的。