Hash

ECDSA 在比特幣中使用了多少次以及在哪裡使用?

  • February 4, 2022

我目前對交易過程中究竟在哪裡使用 ECDSA 有點困惑……有些資源似乎說它使用過一次,而另一些資源似乎說它使用了 3 次。

這裡哪個是正確的?

A:ECDSA 只是用於生成公鑰,然後用於創建數字簽名(因此 ECDSA 間接用於創建簽名)。然後驗證只需要接收者的公鑰。

或者,B:ECDSA 用於生成公鑰,然後與公鑰和一些雜湊一起再次創建數字簽名,然後第三次驗證簽名。

我沒有程式/電腦科學背景,因此我正在尋找該過程的一般描述,而不是基於程式碼的解釋(儘管如果它真的有助於澄清,我不介意!)。我確實知道 ECDSA 如何工作的基礎知識。

數字簽名方案,如 ECDSA,被正式定義為三種算法的集合:

  • 創建(私鑰,公鑰)對的密鑰生成算法。
  • 給定消息和私鑰的簽名算法計算簽名。
  • 給定消息和公鑰的驗證算法驗證簽名是否由相應的私鑰創建。

這三種算法在比特幣交易生命週期的不同時間使用:

  • 當接收者想要創建地址時,使用**ECDSA 密鑰生成算法(*)。**私鑰和公鑰儲存在錢包中,公鑰轉換為地址,然後交給發送者。然後,發送者建構一個記入該地址的交易。
  • 當接收者想要花費收到的硬幣時,他們需要建構一個“贖回”它們的交易。這涉及到ECDSA 簽名算法來授權交易花費這些硬幣,表明硬幣的所有者同意它。
  • 當該交易被廣播到網路時,比特幣節點和錢包將驗證交易,因為不允許無效交易。這涉及到ECDSA 驗證算法的使用。

所以回答你的問題:這取決於你在談論哪種算法。每個地址使用一次密鑰生成算法。每個交易輸入使用一次簽名算法。驗證算法由每個節點對每個交易輸入執行一次。

(*) = 在現代比特幣錢包中,地址實際上不再是隨機生成的,而是來自種子。這可以被視為選擇使用不同但兼容的密鑰生成算法。還值得注意的是,ECDSA 的密鑰生成實際上並不是 ECDSA 特定的,因為每個 256 位數字都是有效的私鑰,並且從私鑰到公鑰的轉換算法(大部分)在所有基於 EC 的算法中共享(例如,它與 BIP340 Schnorr 簽名和 ECDH 密鑰協商協議兼容)。

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