Bitcoin-Core-Development
libsecp256k1 中是否有理論上應該移動到主核心程式碼庫的程式碼?
在這個關於 libsecp256k1 的問題中,Pieter Wuille 說:
libsecp256k1 為涉及私鑰、公鑰或兩者的各種操作提供實現。這包括密鑰生成(計算給定私鑰的公鑰)、密鑰派生(例如 BIP32)以及簽名和驗證數字簽名(ECDSA,最近還有 BIP340 Schnorr)
與libbitcoinkernel試圖定義什麼是共識和什麼不是一樣,libsecp256k1 中的程式碼與 secp256k1 操作不嚴格相關(並且可能不是共識關鍵,例如錢包)並且可以/應該移動到核心程式碼庫?還是有一個乾淨的分離(盡可能乾淨)?如果它們存在的例子會很棒。
我認為 libsecp256k1 和 Bitcoin Core 之間的界限非常明確:涉及私鑰或公鑰操作的所有內容都在 libsecp256k1 中。
當然,理論上,任何東西都可以在任何地方,但我認為這裡沒有太多的餘地。事實上,我認為最近的意圖是另闢蹊徑,稍微擴展 libsecp256k1 中的內容。特別是,目前在 libsecp256k1 中有 key-tweak 操作(在私鑰和公鑰上),但諸如實際 BIP32 派生邏輯(包括散列等)及其主根密鑰調整和驗證等內容在 Bitcoin Core 中,建立在libsecp256k1 的調整 API。我認為在某些時候我們希望在 libsecp256k1 中擁有 BIP32 和 Taproot 特定的 API,因為我們的目標是在那裡擁有高級且難以濫用的 API。
當然,libsecp256k1 不只是被比特幣核心使用,所以即使想要另闢蹊徑(並將一些邏輯轉移到比特幣核心),我們也不一定能夠做到這一點,因為可能有可能依賴於所述假設功能的庫的其他使用者。