P2SH的第二個問題是它提供的隱私保證非常少。根據BIP 13的規定,P2SH交易需要使用以3號開頭的不同地址。這使得區塊鏈觀察者不僅能識別網路中的所有P2SH交易,而且還能準確指出多重簽名內的身份:
在上面的例子中,網路將意識到(1)多重簽名交易的存在,(2)它由多少個簽名者組成,以及(3)簽名者是誰。這不利於操作安全性,特別是對於像2FA這樣的用例。這不利於隱私。
另一方面,金鑰聚合允許簽名者保持匿名,並且不會透過洩露解鎖餘額所需的金鑰來損害操作安全性。最重要的是,金鑰聚合使得多重簽名可以與常規交易無法區分:
比特幣中Schnorr的第一次迭代將淘汰當前與ECDSA一起使用的OP_CHECKSIG和OP_CHECKMULTISIG系列操作碼,以支援一個名為OP_CHECKDLS的新類別。我這裡不介紹太多細節,DLS代表的是離散日誌簽名,它允許使用更少的操作碼更有效地驗證簽名。
在2018年初,Gregory Maxwell、Andrew Poelstra、Yannick Seurin和Pieter Wuille就一項名為MuSig的基於Schnorr的新多重簽名方案發表了一份白皮書。自MuSig釋出以來,他們一直在努力將提出的多重簽名方案轉換為可用的程式碼(https://github.com/ElementsProject/secp256k1-zkp/tree/secp256k1-zkp/src/modules/musig)。
在金鑰聚合的背景下,關於MuSig最有趣的事情之一,是在區塊鏈之外建立私人智慧合約的可能性。從本質上講,MuSig使多重簽名參與者能夠將質押權附加到鏈下聚合金鑰,這不需要比特幣的共識規則來知道它。
2018年12月,安東尼·湯斯(Anthony Towns)是第一個為啟用Schnorr 提出半正式提案(https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-December/016556.html)的核心開發者,該提案發布在比特幣開發郵件列表中。我預計在接下來的幾個月裡會有更多關於潛在軟分叉的討論。
總結一下:比特幣中MuSig的第一次迭代將原生支援金鑰聚合,這可以立即(1)提高多重簽名的隱私,(2)提高交易驗證的效率,(3)透過消除ECDSA的固有問題來提高安全性,(4)啟用像Taproot這樣的智慧合約解決方案,我計劃之後講一下這一點。
但這只是一個開始。
交叉輸入聚合:隱私的下一步
如上一節所述,金鑰聚合對於花費單個輸入的多重簽名是一個非常有用的功能。由於比特幣交易通常不止一個輸入,因此可以利用Schnorr的未來迭代來建立互動聚合簽名(IAS)方案,其中交易裡的所有輸入與單個簽名同時使用。
再次,簽名者之間的互動完全是在鏈下的,但現在,單個簽名可用於花費一筆交易的所有輸入。每個輸入仍然有自己的公鑰,但可由Schnorr IAS使用:
Greg Maxwell,Pieter Wuille,Anthony Towns等人一直致力於Taproot智慧合約方案的進化,以促進這一功能。他們將此方案稱為廣義Taproot或G'root ,它可以在將來更容易地將金鑰聚合轉換為交叉輸入聚合。
與金鑰聚合一樣,交叉輸入聚合進一步提高了比特幣交易的效率。但是,最重要的是, 它可以在比特幣的基礎層上實現強大的隱私保護機制。
交叉輸入聚合最令人興奮的方面之一,是它可以改善比特幣上的CoinJoin交易。提一下背景,CoinJoin是一種隱私保護技術,其中多個傳送者和接收者在單筆交易中組合。目標是使區塊鏈觀察者難以把特定的傳送者和接收者聯絡起來,從而使CoinJoin內的實體能夠聲稱合理的拒絕。
這項技術最初由Greg Maxwell於2013年在BitcoinTalk上提出(https://bitcointalk.org/index.php?topic=279249),此後透過各種服務向使用者提供,包括JoinMarket、SharedCoin、ShufflePuff、DarkWallet和CoinShuffle。CoinJoin的各種變體,例如Wasabi錢包中使用的Chaumian CoinJoin方案,在原始模型之上做了極大的改進。然而,由於匿名愛公司,它仍然依賴足夠多的使用者來混淆他們的餘額。
今天CoinJoin的另一個問題是整個交易型別的可識別性(和潛在的審查)。考慮到今天區塊鏈分析中最常用的試探是密切關注特定輸入以確定兩個或更多地址是否屬於同一實體。例如,如果Alice發給Bob 1.982723 BTC,則區塊鏈觀察者可以跟蹤該特定輸入的小數以繪製交易圖 ,或者跟蹤歷史細目和UTXO所有權的更改。
為了防止這種情況,CoinJoin實現需要共同的價值面額,CoinJoin中的每個人都傳送相同的金額。例如,Wasabi錢包的使用者在100名參與者的CoinJoin交易中傳送相同的0.1BTC面額。雖然仍難以確定特定發件人和收件人之間的聯絡,但區塊鏈觀察者可以尋找共同面額來識別CoinJoin發生的情況,並建議其客戶審查所涉及的所有實體。
交叉輸入聚合可以為這種情況提供幫助,因為它在協議層引入了額外的混淆機制。從本質上講, 交叉輸入聚合可以構建基於Schnorr的CoinJoin交易,其中n個簽名者在外人看來就像是正常的單簽名者交易。這也可能使CoinJoin更容易在流行的錢包中實現,而無需繁重的工程設計,這可能會增加網路的整體匿名性 ,或使用此技術的使用者數量。
共同面額問題可以透過其他技術進一步解決,例如Pay-to-EndPoint(P2EP),它將中本聰早期的隱私工作(參見P2IP:https://en.bitcoin.it/wiki/IP_transaction)與CoinJoin相結合,傳送者和接收者都為交易提供輸入。這種新技術值得一篇獨立的帖子,但你可以在這裡(https://blockstream.com/2018/08/08/improving-privacy-using-pay-to-endpoint/)、這裡(https://medium.com/@nopara73/pay-to-endpoint-56eb05d3cac6)和這裡(https://bitcoinmagazine.com/articles/blockchain-analysis-about-get-harder-p2ep-enters-testing-phase/)閱讀更多相關資訊。
P2EP是向後相容的,當與Schnorr結合使用時,它可以在比特幣的基礎層中實現足夠的隱私。
一石二鳥
我們可以合理地假設比特幣的大規模使用取決於其隱私保障的強度。與此同時,閃電網路的普及及其自身支援私人支付的潛力,也使得最後的比特幣被挖後對鏈上結算的未來需求產生了不確定性。因此,對隱私的需求和在沒有區塊獎勵的情況下比特幣的長期可持續性可能是今天比特幣最令人擔憂的兩個問題。值得慶幸的是,Schnorr啟用的隱私機制可以同時解決這兩個問題。
我花了數千小時回顧了各種複雜的隱私技術,包括Ring Signatures,Confidential Transactions,Bulletproofs,zkSNARKs,STARKs和MimbleWimble的不同實現。雖然其中一些技術已經足夠成熟,可以在比特幣的基礎層上實現,但它們仍然具有獨特的風險和權衡。正如您可能已經聽說的那樣,比特幣是不喜歡硬分叉的,這使得我們很難想象任何這些技術都可以實現的情況。
人們似乎在反覆擔憂使用同態加密或非互動式零知識證明系統,因為它們阻止了比特幣貨幣基礎的完全可聽性(audibility)。換句話說,當對交易價值進行編碼時,很難核實比特幣的供應上限是否實際上是2100萬 BTC。同樣,當隱藏交易金額時,通脹錯誤和雙重支付變得難以確定。這是一個相當大的權衡,推動在比特幣的基礎層實現最新隱私可能會分裂社羣。
但是,如果比特幣的基礎層獲得足夠的隱私,甚至不需要實施這些技術呢?
Schnorr絕對可以幫到你。如果大多數比特幣交易都是將Schnorr的交叉輸入聚合功能與P2EP結合使用,那麼透過簡單地檢視區塊鏈,幾乎不可能對特定傳送者和接收者進行去模糊處理。比特幣的供應仍然是可審計的,但其交易也將提供更強大的隱私保障。
如果存在對隱私的需求,也可以合理地假設比特幣使用者和企業可能都想要被動地參與CoinJoin交易,並讓他們的錢包在後臺不斷混合他們的餘額。在這種情況下,對隱私的需求直接轉化為鏈上交易費用的增加。與SegWit一樣,使用者最有可能首先支援該技術的採用,但企業必須在某些時候效仿以保持重要性。
隨著時間的推移,採用這些技術將使區塊鏈分析過時,並有效地從比特幣企業所需的 AML/KYC程式中移除,就像實物現金一樣。當您將現金存入您的銀行賬戶時,銀行將不會檢查鈔票上是否有藥物痕跡,並在發現藥物的情況下阻止您的存款。隨著區塊鏈分析的擴散,加上沒有Schnorr的CoinJoin等技術的缺點,沒有理由認為比特幣已經做到這一點。
當在特定地址和UTXO上執行AML/KYC變得無關緊要,並且焦點轉向個人而非餘額時,比特幣企業將完全接受隱私。事實上,我懷疑當這種情況發生時,隱私和可互換性將成為未來比特幣企業價值主張的一個組成部分。
最終,在比特幣的基礎層上採用更強大的隱私機制將進一步增強其使用者的權力,同時,有助於在最後的比特幣被挖後建立一個充滿活力的交易費市場。我的猜測是,這一切都始於Schnorr的啟用,而每個人似乎都參與其中。
本文由幣信研究院原創編譯,原文連結:
https://medium.com/digitalassetresearch/schnorr-signatures-the-inevitability-of-privacy-in-bitcoin-b2f45a1f7287