目錄
前言
在這篇文章中,我們來看看 Schnorr 簽章演算法,這是 ECDSA 的替代方案之一,可能會給比特幣帶來一些令人興奮的變化。
簡單回顧一下數位簽章
數位簽章的作用如它們的前身——紙本簽章一樣,但它們更安全。只要花一點時間和精力,任何人都可以偽造紙本簽章。那怕您有幾十萬年的時間可以使用,強大的數位簽章方案是很難偽造的。
數位簽章的用例有好幾個。有個熱門的用例是向世界證明您寫了一條特定的訊息。如前所述,您可以用私鑰(一長串您應該妥善保管的數字)來建立公鑰。透過對 secp256k1 曲線進行一些有趣的數學運算,您就可以做到這一點。接下來,您也可以從您的公鑰生成一個公共地址。
注意,向任何人展示您的公鑰是完全安全的。您可以將它展示於您的網站或Twitter的個人簡介中,這樣其他人就可以驗證您的身份。同樣,您可以與他人分享您的公共地址,以便他們可以向您發送加密貨幣。
您的私鑰允許您建立數位簽章。透過編寫一個訊息,並使用您的私鑰對其進行操作,您就可以建立一個經簽章的訊息。任何人都可以拿它與您的公鑰進行比較,以確認它確實是由您簽署的。
這與比特幣有什麼關係?這樣說吧,無論您何時再進行比特幣交易,您都在以數位方式簽署一個訊息,說我正在發送這些之前發送給我的代幣。然後,當它被發送到網路上的其他節點時,它們可以檢查 ECDSA 簽章是否與該訊息相符。如果不符,它們就會拒絕。
什麼是 Schnorr 簽章?
Schnorr 簽章是一種不同的方案。它的運作方式與我們目前使用的橢圓曲線數位簽章演算法類似,但與之相比擁有許多優勢。Schnorr 簽章之發展實際上早於 ECDSA,導致許多人想知道為什麼他們沒有從一開始就整合到比特幣中。
一個可能的解釋是,該方案的創造者 Claus P. Schnorr,為其申請了專利。這些專利在 2008 年初到期,較比特幣白皮書發佈的時間早了幾個月,但該方案仍然沒有全面的標準化。因此,中本聰選擇了更被廣泛接受(和開源)的 ECDSA。
為什麼 Schnorr 簽章具有優勢?
與其他方案相比,Schnorr 簽章非常簡單。因此,他們比他們的替代品更安全。乍看之下,這可能對您來說意義不大,但它們有另一個強大的特性:線性。
用通俗的話來說,這使得該方案對某些活動特別有吸引力,而其中最明顯的就是多重簽名交易。也許您已經知道比特幣有支援多重簽名,但它其實沒有做得很漂亮。
當您建立一個多重簽名地址時,無論誰向您發送資金,資金發送人都不需要知道您對資金消費設定的條件。甚至他們都不知道他們正在向一個多重簽名設定發送資金──地址上的唯一特殊的地方就是它是以「3」開頭的。
然而,當您想轉移資金時,您就暴露了它的本質。假設您與愛麗絲和鮑勃一起使用三分之三的設定。假設要花費 5 個比特幣的話,您們三個必須提供公鑰和有效簽章。當您把資金從這個地址轉移出去時,整個網路可以透過查看區塊鏈了解這樣的狀況。
從隱私的角度來看,這並不是很好。再補充一點,如果我們建立一個更大的多重簽名(例如十分之八),那麼我們會在區塊鏈上佔用了相當多的空間。費用可能會很昂貴,因為這會導致冗長的交易;要記住,您的交易中的位元組越多,您需要支付的就越多。
Schnorr 簽章已被吹捧為這些隱私和可擴展性問題的解決方案。可以看到,它們允許諸如簽章彙整等,這可以將多個簽章者的簽章合併成為一個簽章。由此產生的「主簽章」,其將與常規的單人簽章長度相同,從而大大地節省空間。
此外,合併簽章會使觀察者更難確定誰簽署了(或沒有簽署)交易。在 m 分之 m 方案中(所有參與者都必須簽章才能消費),您甚至無法區分單方交易和多人簽章的交易。
什麼時候 Schnorr 簽章會被應用到比特幣上?
我們不確定。就像大多數比特幣協定的升級一樣,廣大的比特幣使用者社群,可能需要一段時間才能同意加入 Schnorr 簽章。比特幣核心貢獻者 Pieter Wuille、Jonas Nick 和 Tim Ruffing 已經提交了一份比特幣改進提案(BIP)草案,但仍有一段路要走。
Blockstream 已經發佈了一個措施:MuSig。這允許簽章和金鑰彙整,很可能會成為比特幣專屬的 Schnorr 簽章方案基礎。
Schnorr 簽章可以作為一個軟分叉被合併到程式碼中,這代表變化不會分化網路。相反地,這會是一個「選擇性加入」的升級。儘管如此,在不久的將來可以成功整合仍是相當樂觀的想法;要達成共識,可能還需要幾年時間。