Multi-Signature

Schnorr 與 ECDSA 的優勢是什麼?

  • October 19, 2020

我知道 Schnorr 簽名提供了對 ECDSA 的改進,因為它們是固定的 64 字節而不是更長的 ECDSA sig 格式,但是,除了 multisig 之外,我看不出這在任何情況下都比 ECDSA 有什麼優勢。

使用 ECDSA,可以對交易進行簽名和驗證,而無需在消息中包含簽名者的公鑰。然而 Schnorr(如最近的 BIP 中所述)沒有這個優勢,這意味著對於任何不是來自多重簽名地址的交易,在 ECDSA 下儲存驗證所需的所有數據的必要空間將便宜 26 字節(假設 64帶有 33 字節壓縮公鑰的字節 Schnorr sig 與不帶公鑰的 ~71 字節 ECDSA sig)。

關於這一點,為什麼施諾爾會受到如此關注?多重簽名交易是否足以彌補 Schnorr 如此重要的比特幣負載?為什麼幾乎沒有關注在不儲存公鑰的情況下實現交易(乙太坊一直在這樣做)?

您的問題似乎假設唯一的目標是最小化鏈上交易規模。減小尺寸和相關成本當然是可以改進的,但遠非唯一。Schnorr 提案的主要優點是:

  • 更好的隱私,通過使不同的多重簽名支出政策在鏈上無法區分。當與 Taproot 結合使用時,這將擴展到幾乎所有合約的合作執行(無論複雜性或參與者數量如何,它都只是鏈上的單個簽名)
  • 啟用更簡單的高級協議,例如與正常支付無法區分的原子交換。這些可用於建構更有效的支付渠道建設。
  • 通過支持一次對一個塊中的所有簽名進行批量驗證來提高驗證速度(僅是單獨驗證它們速度的一小部分)。
  • 切換到可證明安全的結構,也許可以防止將來對 ECDSA 的利用。

至於您使用公鑰恢復來避免在支出中發佈公鑰的具體建議,有一些反對意見:

  • 公鑰恢復與批量驗證不兼容,並且當忽略批量驗證時,它(稍微)比自身的正常驗證慢。
  • 可能有適用於公鑰恢復的專利。
  • 通過使用 pay-to-pubkey 而不是 pay-to-pubkeyhash 可以更簡單地實現相同的大小節省(再次,當與 Taproot 結合時,此優勢擴展到腳本以及單鍵構造)。
  • 長期交叉輸入簽名聚合通過將每個事務(不僅僅是事務輸入)的簽名總數減少到 1 來節省更大的潛在大小。交叉輸入聚合也與公鑰恢復不兼容,儘管目前不包括在內在施諾爾提案中。

另請注意,缺少公鑰恢復並不是 Schnorr 固有的 - 這是選擇帶有密鑰前綴的 Schnorr 的結果。最好將其視為 3 個屬性之間的權衡:

  1. 線性:為公鑰總和共同生成簽名的能力(所有 Schnorr 多重簽名結構的基礎)。
  2. 缺乏密鑰延展性:通過密鑰延展性,可以對現有公鑰進行簽名並將其轉換為相關密鑰的簽名(例如,同一 BIP32 樹中的一個)
  3. 公鑰恢復:從簽名和消息中重建公鑰的能力。

以密鑰為前綴的 Schnorr 缺少公鑰恢復。非密鑰前綴的 Schnorr 受到密鑰延展性的影響。ECDSA 缺乏線性。似乎不可能建構一個包含所有三個的簽名方案。

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