2019 年加密貨幣技術圈裏什麼最火?我們首先想當的就是比特幣的閃電網絡和 Schnorr 簽名技術,當然也少不了 Grin 帶火的 MimbleWimble 技術。什麼是 Schnorr 簽名技術,它能爲比特幣帶來什麼?MimbleWimble 技術又如何呢?真的像很多人說的那樣神奇嗎?爲什麼已經存在多年的 MimbleWimble 技術突然在今年就火了起來呢?

要想爲這些問題找到答案,我們似乎得四處尋覓很多技術大咖或者研究學者才能一一得到解答,然而有一個人能夠一人回答所有這些問題。

3 月 27 日,Blockstream 研究主管、Schnorr 簽名開發者、數學家、技術大神安德魯·波爾斯特拉 (Andrew Poelstra) 做客鏈節點進行線上 AMA,回答了社區提出的各種問題。以下是我們對這次 AMA 中提出的一些重要的問題進行的整理。

原文標題:《獨家對話:Schnorr 簽名開發者 Andrew Poelstra:Schnorr 將使比特幣擴容 10-20%》
整理:kyle

量子計算威脅比特幣?Andrew:到那時候比特幣早就過渡到一種安全的簽名方案

量子計算機一直以來被很多人視爲是比特幣等加密貨幣的剋星,一旦問世並商用,比特幣將遭受滅頂之災。

網友提問:量子計算對比特幣等加密貨幣的潛在威脅是否存在?我們需要擔心嗎?

Andrew 回答說:

當量子計算機成爲現實時,比特幣將從 ECDSA 或 Schnorr(將受到破壞) 過渡到一種量子安全的簽名方案。這是多年以後的事了,現在沒有必要擔心。同時,需要對高效的後量子簽名方案進行更多的研究。

比特幣如果採用 Schnorr 簽名會有什麼好處?

比特幣目前採用的是 ECDSA 簽名,然而這種簽名與 Schnorr 相比在很多方面都有明顯不足之處,但爲什麼比特幣最初沒有直接使用 Schnorr 簽名呢?原因是 Schnorr 簽名的發明者 Claus Schnorr 在 80 年代爲他的發明申請了專利,這項專利直到 2008 年纔到期,中本聰在 2009 年發明比特幣時,可能處於對使用普及性的考慮,最終選擇採用了更爲廣泛使用的 ECDSA 簽名。

比特幣現金(BCH)已經宣佈將在 5 月份實施 Schnorr 簽名技術,並且自豪地認爲 BCH 已經在技術上領先比特幣。那麼 Schnorr 簽名究竟有什麼優勢呢?

網友問道:能不能通俗解釋下 Schnorr 簽名相較於 ECDSA 簽名的具體優勢?從用戶端來講,有什麼感知?

Andrew 回答:

Schnorr 簽名可以很容易地擴展到支持固定大小的多簽名和閾值簽名,以及「無腳本腳本」,這些腳本允許在簽名中編碼閃電支付通道的語義。而對於 ECDSA,這要困難得多。Schnorr 簽名的批量驗證也是可能的,這使得它們的驗證速度比比特幣的 ECDSA 簽名快得多。

另一位網友問道:你能用通俗的語言介紹一下 Scriptless Script 和 Taproot/Graftroot 嗎?它們解決了比特幣哪方面的隱私問題?我聽說 Taproot 似乎是不能隱藏資金流向和具體金額的,只能隱藏合約內容,而且如果雙方不願意合作,可能還是會暴露合約的內容,不知道這種說法對麼?

Andrew 回答:

是的!無腳本腳本(Scriptless scripts)是擴展兩方 Schnorr 多簽名協議的一種方法。該協議允許兩個用戶聯合生成一個簽名,使聯合簽名具有與普通簽名相同的大小和使用相同的驗證方程。使用無腳本腳本,可以擴展此協議,當最後一方完成簽名時,還會向另一方泄露額外的祕密。這個額外的祕密可以像在 Lighting HTLC 中使用的「哈希像原(hash preimages)」一樣使用,而且還有一個額外的好處,那就是它不會出現在區塊鏈上。它還具有更多的代數結構,這使得它在連接多個支付通道時可以「重新盲化」,從而修正了閃電網絡的隱私限制,即路徑中的每個通道都需要使用相同的路徑。

Taproot 是爲比特幣提出的一個提議,所有的輸出都用一個簽名密鑰,可以用一個簽名消費。使用多重簽名和無腳本腳本,可以使用這些單簽名對多方交易、閃電支付通道等進行編碼。Taproot 還允許這個密鑰提交到一個額外的腳本,以防無腳本腳本不夠用。但是在合作的情況下,從來沒有顯示過這個額外的腳本。

Graftroot 是另一個被提出的擴展方案,它不太可能很快被包含在比特幣中,它進一步允許 Taproot 簽署者簽署替代的消費路徑,而不是使用 Taproot 輸出中提交的腳本。由於沒有對可以簽署多少消費策略的限制,在用戶有 1000 條消費路徑的情況下,這將大大提高效率。然而,在實踐中還不清楚這是否是用戶所希望的。

如果實施 Schnorr 簽名技術,比特幣網絡能夠擴容多少?一位網友問道。

Andrew 回答說:

任何多重簽名協議,如 BitGo 或閃電網絡使用的協議,都將與普通點對點交易一樣小。由此節省的空間總量很難估計,但如果每個人都採用這種方法,我預計比特幣區塊鏈的容量將增加 10-20%。

Blockstream 製造中心化?

比特幣 Schnorr 簽名的代碼幾乎已經由 Blockstream 完成,然而有人認爲 Blockstream 對比特幣的去中心化帶來損害。有一位網友就問了這樣一個尖銳的問題,Schnorr 簽名的代碼都已經差不多由 Blockstream 寫好了,是否會被別人誤解主推 Schnorr 簽名的 Blockstream 和比特幣開發組的關係過於密切,或者說會不會有人對此產生什麼誤解?另外這個簽名方案對隔離見證 segwit 有什麼影響?

Andrew 對這個問題並未避諱,他回答說:

Blockstream 向我自己, Pieter Wuille 和 Jonas Nick 支付報酬編寫 Schnorr 簽名代碼,特別是不牽涉區塊鏈共識的多重簽名和閾值簽名。

支持 Schnorr 簽名所需的共識規則更改 (包括 Taproot 和其他一些擴展) 主要由 Johnson Lau、AJ Towns、Pieter Wuille 和 Greg Maxwell 開發。在這些人中,只有 Pieter 爲 Blockstream 工作。一旦有了具體的提議,就需要向整個比特幣社區展示,其中包括來自世界各地許多企業和個人的許多利益相關者。

一般來說,Blockstream 僅向一名 Bitcoin Core 開發者支付薪水,以促進比特幣的發展,並確保我們擁有內部專業的 Bitcoin Core 工作。任何擔心 Blockstream 在 Bitcoin Core 開發中份量太重的人,都應該爲自己的開發者提供資金。

關於閃電網絡這項技術有很多不同的意見。有人認爲,如果使用閃電網絡,我們將面臨一種非常中心化的局面,而 Blockstream 一直在開發和推動閃電網絡的採用。對此你有什麼看法?

Andrew 表示:

我不認爲閃電網絡會是非常中心化的,它確實有一些方面似乎不鼓勵中心化,這將是很好的解決。但是我的研究並不太關注閃電網絡,我很難給出更多的細節。

對於慢霧區最近發現 Mimbleweimble 隱私性問題不能很好解決:MimbleWimble 並沒完全解決交易隱私問題,它讓交易在區塊鏈上不會暴露隱私,這個實現確實很漂亮,但由於它交易的特殊性(類似 TCP 三次握手,A 給 B 簽發交易記錄文件,B 響應文件給 A,A 確認上鍊),這導致相比其他匿名貨幣(如門羅幣、Zcash),基於 MimbleWimble 實現的在鏈下隱私與安全會遭遇更大挑戰。 Andrew 是怎麼看的呢?

Andrew 表示:

MimbleWimble 不會試圖模糊交易圖。因此,門羅幣和 ZCash 提供了更好的隱私保障。

如何向一位性感金髮女郎解釋 Schnorr 和 MimbleWimble 技術是什麼?Andrew:親她

有一位網友提出了一個對單身狗特別實用的撩妹問題,他向 Andrew 問道:你有沒有比較欣賞的中國的密碼學家?能否推薦幾本科普類的密碼學書籍?如果有個 5 歲的小男孩站在你面前,你會如何向他解釋 Schnorr 簽名和 MimbleWimble 技術?如果有個前凸後翹的金髮美女坐在你旁邊,你又會如何向她解釋 Schnorr 簽名和 MimbleWimble 技術?

我沒有讀過很多關於密碼學的書,而是依靠比特幣社區的人推薦閱讀論文和解決有趣的問題。但有一本書對我小時候的影響非常大,讓我成爲了一名密碼學家,那就是大衛·卡恩 (David Kahn) 的《密碼破譯者》(The Codebreakers)。

Andrew 表示:

Schnorr 簽名就像任何數字簽名一樣,就像普通的紙筆簽名一樣,只是在數學上是不可能僞造的。

爲了向一個五歲的男孩解釋 MimbleWimble,我會讓他在賣給我一些他的玩具時考慮這個問題,我也賣給他一些我的。我們可以連續交換很多次錢,或者乾脆把玩具的價值加起來,最後只交換一次錢。MimbleWimble 允許您將多個交易壓縮爲一個,這樣可以節省空間和計算機資源。

作爲一名著名的密碼學家,我經常會遇到一些性感的金髮女郎,她們希望我向她們解釋 Schnorr 簽名和 MimbleWimble。我總是對她們說同樣的話 :「MimbleWimble 就像接吻。你想讓我向你展示一下嗎 ?」

以太坊的分片技術沒用?

還有一個問題問到:Segwit 和 Schnorr 簽名的網絡支持率均達到 100% 的情況下,比特幣每秒的交易量可以提高到 14 筆,相比於現在的速度提高了很多,但是在未來比特幣大範圍採用的情況下,這樣的速率還是無法滿足要求的。在保持區塊 1MB 的情況下,是否還會出現更有效的技術能夠提升比特幣的主鏈交易性能?分片技術會在比特幣網絡上實施嗎?

Andrew 回答:

比特幣已經通過閃電網絡或其他第二層系統,或通過引入本地信任要求,支持每秒數千筆交易。分片(Sharding)在任何地方都行不通,更不用說比特幣了。

比特幣的技術發展已經落後於其他加密貨幣了?

MimbelWimble 最早被討論實施在比特幣上,然後最後 Grin 和 Beam 等項目率先採用,Grin 甚至被稱爲更能實現比特幣的願景,你認爲比特幣在技術上已經落後了嗎?BCH 今年 5 月份就要實施 Schnorr 簽名技術了,爲什麼比特幣卻這麼慢呢?或者說 Schnorr 簽名要在比特幣網絡上實施所面臨的最大問題是什麼?

Andrew:

MimbleWimble 從未被提議用於比特幣。它是一個獨立的區塊鏈設計,其工作原理與比特幣非常不同,並且有非常嚴重的限制:

1、用戶必須信任加密技術,以確保自己沒有通貨膨脹;
2、量子計算機可以造成看不見的和無法檢測的通貨膨脹;
3、沒有能力使用複雜的腳本 ;
4、所有交易都必須使用熱密鑰與發送方和接收方交互創建。

比特幣沒有這些限制。它在技術上並不落後。

比特幣是一個嚴肅的金融體系,沒有領導者,在做出任何改變之前,都需要所有利益相關者的參與。此外,由於比特幣繼續運行並保持安全是如此重要,因此,每次更改都需要進行大量的審查和測試,然後才能部署。探索設計方面也很重要,以確保我們從這個極其昂貴的過程中獲得最大的利益。

BCH 不是一個嚴肅的項目。它的共識規則是由一小部分開發者心血來潮地定義的,這些開發者似乎並不關心完整的提案

比特幣會邁向匿名化嗎?

作爲都能夠增強隱私的技術,比特幣如果採用 Schnorr 和 MimbleWimble,是否會朝匿名貨幣發展?

Andrew:

Schnorr 的簽名,連同 Taproot 和無腳本腳本,承諾讓所有比特幣輸出看起來都一樣,無論它們屬於一個人,還是屬於許多人,都代表着託管、Liquid 掛鉤、閃電通道或智能合約。通過這種方式,他們將大大提高比特幣的隱私。目前還沒有將 MimbleWimble 融入比特幣的提議。

還有網友問你認爲比特幣應該採用 MimbleWimble 技術增強隱私性嗎?如果比特幣隱私性過於強大,你不認爲比特幣會更難被政府承認嗎?這不會阻礙比特幣的採用嗎?

Andrew:

不,MimbleWimble 有太多的權衡 (請參閱我之前的回答),不適合在比特幣中採用。

至於政府,歷史上沒有任何一個政府曾經支持過一種貨幣,在這種貨幣中,所有用戶的金融交易都被髮布到一個公共賬簿上,讓全世界都能看到,包括任意的公司或外國政府。除非比特幣變得更加私有,否則很難看出政府如何能認可它。當然,區塊鏈隱私並不妨礙用戶使用傳統方法報告其活動或執行審計的能力 ; 它實際上會使這變得更容易,因爲它讓用戶能夠生成他們行爲的密碼證明。

你認爲 MimbleWimble 與 zk-SNARKS、保密交易(confidential transactions)等其他隱私技術相比的優勢在哪裏?

Andrew:

MimbleWimble 和 CT 本質上是相同的技術,只是它從區塊鏈中刪除了所有非 CT 特性,從而獲得了額外的可伸縮性優勢。zk- snark 可以比 CT 創建更強的隱私保護,但難以擴展,設置也不可信。

Taproot 會爲比特幣智能合約提供更多靈活性和隱私性,這是不是意味着比特幣能夠成爲一個重要的智能合約平臺?

Andrew:

Taproot 使某些形式的智能契約實現起來更簡單、更具隱私性,但最終除了比特幣現有的智能合約功能外,沒有添加任何功能。

據我所知,Ethereum 和 EOS 主要用於非法證券發行。由於其糟糕的可伸縮性和隱私性,以及不鼓勵健壯代碼的工具,它們不可能用於一個真正的智能合約平臺。

隨着隱私幣技術的發展,如何在隱私和政府的監管之間做出平衡?畢竟,政府總想知道並掌控每個人的情況。

Andrew:

一般來說,政府想知道並控制一切。但他們對加密貨幣幾乎沒有控制權,如果這需要世界上所有人都知道的話,他們也不想知道。因此,在區塊鏈上發佈數據並不符合政府或任何人的利益。

Andrew 眼中的 MimbleWimble 技術怎麼樣?

作爲一位技術大神,Andrew 自然對今年大火的 MimbleWimble 技術也有研究,他認爲 MimbleWimble 技術是怎樣的呢?

你認爲 Schnorr 和 MimbleWimble 技術最重要優點是什麼?

Andrew:

它們都可以用來改善區塊鏈的隱私,同時通過將無關數據移出區塊鏈來提高可伸縮性。

MimbleWimble 爲什麼能實現安全的裁剪呢?比特幣全節點如果進行了裁剪,也就是直接刪掉了老區塊文件,就失去了幫助其他全節點從頭同步的能力。

Andrew:

MimbleWimble 不需要完整的區塊鏈從頭開始同步節點。新節點可以在不使用所有歷史區塊鏈數據的情況下,以完全安全的方式驗證系統的當前狀態。

衆所周知,區塊鏈擴容是個比較難的問題。對於比特幣的擴容問題,我有聽說瓶頸在於如何保證區塊能在礦池 / 獨立礦工之間快速傳播,如果直接擴大區塊 / 加快出塊頻率,會導致孤塊 / 分叉增多、礦工的算力被浪費。還有開發者認爲必須保證區塊鏈大小不能增長過快(比特幣現在已經攢到 220GB 了),否則就很難保證新節點還有能力從頭完整驗證一次區塊鏈。不知道 MimbleWimble 是如何解決擴容問題的?

Andrew:

MimbleWimble 允許新用戶僅使用「內核(kernel)」來同步鏈,而不是使用歷史交易,這將佔用大約 100 字節的空間。比特幣有大約 4 億筆交易。如果這些都是 MimbleWimble 交易,那麼所使用的總空間將是 40GB 左右,而不是 220GB。因此,MimbleWimble 通過這種方式實現了顯著的交易壓縮。

MimbleWimble 白皮書發佈時,很多比特幣開發者都在考慮這種技術,但是這麼久過去了,卻沒有聽說有什麼進展,你認爲 MW 技術在比特幣上的應用前景怎麼樣?

Andrew:

據我所知,參與比特幣開發的人從未對比特幣的 MimbleWimble 感興趣。開發人員對此很感興趣,因爲它推動了隱私技術的發展,而且沒有嚴重的可伸縮性限制。

比特幣的未來技術發展

你認爲比特幣在技術方面的當務之急是什麼?那種技術實施最緊迫?

Andrew:

因爲 Taproot 和 Schnorr 簽名將支持無腳本腳本,這將允許更多的無許可的鏈下創新 (以及改善比特幣的隱私),我認爲它們是最重要的。當然,我這麼認爲是因爲這是我的工作 🙂

你認爲閃電網絡技術還有哪些最要緊的技術問題需要解決?

Andrew:

在比特幣中,閃電網絡有兩個最重要的問題:隱私和可擴展性。無腳本腳本可以極大地改善隱私,它允許用戶創建長路徑的支付通道,而不用使用相同的哈希像原將它們鏈接起來,還可以防止這些哈希顯示給區塊鏈。eltoo 可以提高可擴展性,它使用的是 SIGHASH_NOINPUT,這是比特幣的另一個提議,允許閃電用戶在一定的空間內無限期地維護支付通道。

據此前報道,你認爲比特幣可能會在 2020 年實施 Schnorr 簽名, 那麼實施方式是什麼呢?硬分叉嗎?還是說像閃電網絡一樣,用戶自由選擇?

Andrew:

有一種直接的機制可以在腳本的新更改中使用軟分支,比如 Schnorr 簽名。這種機制是在 Segwit 中引入的,並且很有可能會提出將 Taproot(包括 Schnorr 簽名) 包含在比特幣中。

Schnorr 簽名與 Taproot 什麼關係?比特幣如果同時實施它們是不是更好?

Andrew:

是的 ,Taproot 爲使用它的任何輸出創建一個「默認支付策略」,這樣輸出就可以通過一個 Schnorr 簽名進行支出。因爲這無論如何都需要在比特幣驗證中使用 Schnorr 簽名代碼,所以我們也建議將其添加到比特幣腳本中。

之前您有提到說 Schnorr 簽名方案會遇到重放攻擊(Replay Attack)的問題,如果不去研究新的機制,目前的 MuSig 簽名方案就無法保護在虛擬機中進行簽名的用戶。而這一限制在 Blockstream 看來是可消除的,那請問目前有好的解決思路了嗎。

Andrew:

我們有一個很好的解決方案,不涉及零知識證明。但是我們還沒有準備好發表我們的研究。我們將在即將到來的 zkproof.org 研討會上討論這個問題:https://zkproof.org/workshop2/main.html

Blockstream 在做哪方面的開發?

Blockstream 對這兩種技術的研究重點是什麼?有沒有這兩種技術的新開發方向?

Andrew:

Blockstream 對 Schnorr 簽名感興趣,因爲它大大提高了多簽名的可伸縮性,允許我們創建具有非常多參與者的多重簽名,同時比特幣區塊鏈不需要任何空間成本。它們還可以用來在比特幣和 Liquid 之間創建原子交換交易,而且除了普通交易之外,不需要額外的比特幣空間成本。

除了發明了 MimbleWimble 的基礎技術,Blockstream 對它並沒有太大的興趣。我們希望推動研究向前發展,但是由於它對複雜用例的嚴重限制 (請參閱我之前的回答),我們很難看到如何使用 MimbleWimble。

Blockstream 一直在研究開發閃電網絡,目前的研究有什麼新進展嗎?或者你們正在做什麼?

Andrew:

Blockstream 在一定程度上開發了 eltoo 和無腳本腳本。儘管這些技術需要對比特幣 (Schnorr 簽名和 SIGHASH_NOINPUT) 進行修改才能部署,但它們有望提高 Lightning Network 的可伸縮性和隱私性。就我而言,我一直在編寫代碼來實現無腳本腳本和 Schnorr 多重簽名。