Bitcoin-Core

為什麼壓縮和未壓縮的公鑰必須產生不同的地址?

  • August 9, 2022

我正在閱讀“掌握比特幣”一書。我知道一開始公鑰是橢圓曲線上的 x 和 y。然後將其優化為僅包含 x,並且可以通過求解曲線方程得出 y。在實踐中,錢包 A 和錢包 B 可能會生成不同的公鑰(假設一個使用壓縮算法,另一個使用未壓縮算法) 不同的公鑰將散列到不同的地址,這是一個問題 - 錢包不知道在哪裡尋找硬幣導入私鑰時。這是通過向私鑰添加內容來指定使用哪個版本來解決的。

我希望我理解正確,直到這一點。

我的問題是:為什麼不能解壓縮壓縮的公鑰(有效地使其成為未壓縮的公鑰)然後導出地址。這樣即使你使用壓縮的密鑰,地址也會和未壓縮的完全一樣?

我的問題是:為什麼你不能解壓縮壓縮的公鑰(有效地使其成為未壓縮的公鑰)然後派生地址。這樣即使你使用壓縮的密鑰,地址也會和未壓縮的完全一樣?

你當然可以,但你不想。在消費時,公鑰會在消費交易中顯示。所揭示的公鑰必須與地址的嵌入式雜湊要求相匹配。如果地址是根據壓縮公鑰計算的,則必須顯示壓縮公鑰。如果地址是根據未壓縮的公鑰計算的,則必須顯示未壓縮的公鑰。

切換到壓縮公鑰的目的是使用更少的鏈上鍊空間,從而間接支付更少的費用(因為費用與使用的鏈上空間成正比)。如果您通過解壓縮壓縮密鑰來派生地址,那麼您首先會失去使用壓縮密鑰的意義。

請注意,如今未壓縮的密鑰非常罕見。幾乎所有自 2012 年以來編寫的錢包軟體都專門使用壓縮密鑰。BIP32(一種確定性生成錢包密鑰的通用機制形式,於 2013 年推出)僅支持壓縮密鑰。使用隔離見證腳本(BIP141,2017 年 8 月引入)時,僅支持壓縮密鑰(在隔離見證中使用未壓縮密鑰將導致交易無法中繼)。如今,兩者之間的混淆基本上已不再是問題。

免責聲明:我是 BIP32 的作者,也是 BIP141 的合著者。

引用自:https://bitcoin.stackexchange.com/questions/114777