乾貨 | 比特幣的學術譜系,Part-1
如果你讀過比特幣的新聞報道,並且熟悉密碼學領域的學術研究的話,你應當會留下這樣的印象:自 David Chaum 10,12 起,學術界對數字貨幣展開了長達數十年的研究,卻未能取得商業上的成功,因為整個數字貨幣系統需要一個類似銀行的中心化服務機構加以控制,事實上沒有一家銀行對此感興趣。比特幣則另闢蹊徑,提出了建立無需銀行的去中心化加密貨幣的想法,數字貨幣終於迎來了成功。人們普遍認為,神祕的比特幣之父中本聰並非學術界人士,比特幣與之前的學術設想毫無相似之處。
為反對上述觀點,本文特別列出了圖 1,顯示比特幣用到的所有技術幾乎都源自 20 世紀 80 和 90 年代。筆者並非有意貶低中本聰的貢獻,而是要指出他也是站在巨人的肩膀上。通過對比特幣概念的溯源,我們可以專注於中本聰在洞察力上的真正飛躍——他是如何通過某種準確且複雜的方式將這些技術結合起來的。這有助於解釋為什麼比特幣這麼晚才誕生。已經熟悉了比特幣運作原理的讀者或許能從這些歷史回顧中獲得更深刻的理解。(請參見 Arvind Narayanan 等人所著的《比特幣和加密貨幣技術》作為入門讀物 36 。)比特幣的學術史也作為一項案例研究,展示了學術界人士、外部研究人員和相關從業人士之間的關係,並分享了三方如何互相受益的經驗之談。
賬本
如果你有一個安全的賬本,將它應用於數字支付系統的過程很簡單。舉例來說,如果 Alice 通過 PayPal 傳送 100 美元給 Bob ,PayPal 會從 Alice 的賬戶取出 100 美元,並記入 Bob 的賬戶。傳統的銀行業大致上也是這麼操作的,只不過因為銀行之間的沒有一個統一的賬本而變得複雜了。
賬本的概念是理解比特幣的基礎。賬本可以記錄系統中發生的所有交易,向系統中所有參與者公開,並且受到他們的信任。比特幣將這種記錄支付情況的系統轉化成了一種貨幣。然而在銀行業中,賬戶結餘代表戶主可以從銀行取出的現金,那麼一單位的比特幣代表什麼?暫且將它理解為具有內在價值的交易物。
如何在一個類似於參與者不信任彼此的網際網路環境中構建一個賬本?讓我們先從簡單的部分開始:如何選擇資料結構。我們期望這個賬本能滿足幾個屬性。這個賬本應該是不可更改的,或者更確切來說,是隻能 新增 :只能新增新的交易,不能刪除、修改或重新排序已有的交易。此外,還應該有方法隨時獲取賬本狀態的簡潔化 加密摘要 。摘要是避免儲存整個賬本的短字串,如果賬本遭到任何篡改,摘要也會隨之改變,因此篡改會被發覺。之所以要滿足上述屬性,是因為這個賬本不同於儲存在單一機器上的普通資料結構,而是由一組互不信任的參與者共同維護的 全球 資料結構。另一種實現去中心化數字賬本的方法 7,13,21 是由多位參與者維護本地賬本,並由查詢這組賬本的使用者解決賬本間的衝突。
連結型時間戳
比特幣的賬本資料結構借鑑自 Stuart Haber 和 Scott Stornetta 於 1990 年至 1997 年間撰寫的一系列論文(其中 1991 年的論文是與 Dave Bayer 合著的) 5,22,23 ,只做了少數改動。這是中本聰在比特幣的白皮書中親口所述 34 。 Haber 和 Stornetta 解決了檔案時間戳的問題——他們旨在建立一個“數字公證”服務。對於專利、商務合同等檔案來說,所有者想要確保檔案創建於特定時間點,而不是後來才建立的。他們定義的檔案概念很廣,而且可以是任何型別的資料。順帶一提,他們在論文中確實提及金融交易是一種潛在應用,不過並未當作重點。
概述一下 Haber 和 Stornetta 的論文可得,檔案是處於不斷建立並廣播中的。每份檔案的建立者確認建立時間並簽署檔案、檔案的時間戳以及上一個被廣播的檔案。上一個檔案已經由之前的建立者簽署了,因此這些檔案形成了一條帶有時間指標的長鏈。外部使用者無法改變帶有時間戳的訊息,因為該訊息是由建立者簽署過的,就算建立者想要改動它,必須連同後面連結的訊息一起改動。因此,如果一個可信的來源(例如,另一個使用者或某個專門的時間戳服務)將某個東西新增到了鏈上,到這個東西為止的整條鏈會被鎖住,無法進行更改,並且暫時定下順序。此外,假設這個系統會拒絕帶有不正確的建立時間的檔案,按理可知這些檔案的建立時間至少不會晚於其時間戳所示的時間。無論如何,比特幣只是借鑑了 Haber 和 Stornetta 的研究成果中的資料結構部分,在此基礎上新增了工作量證明機制,重新設計了資料結構的安全屬性。關於工作量證明機制,我們會在後文中講解。
在後續論文中,Haber 和 Stornetta 引入了能提高資料結構的效率的想法(其中一些想法在第一篇論文中已有提及)。第一,檔案之間的連結可以通過雜湊值而非簽名建立;雜湊值計算起來更加簡單迅速。這類連結稱為雜湊指標。第二,不同於將檔案一個個連線起來——如果同一時間創建出了很多檔案,這種方式會變得很低效——可以將這些檔案打包進不同的批量或資料塊,每個資料塊裡的檔案都共享同一個時間戳。第三,每個資料塊中的檔案可以由雜湊指標建立的二叉樹(即默克爾樹),而非一條線性鏈相連線。順帶提一下,在 Haber 和 Stornetta 的第一篇論文發表之後不久, Josh Benaloh 和 Michael de Mare 分別於 1991 年引入了上述 3 個想法 6 。
默克爾樹
比特幣本質上使用的是 Haber 和 Stornetta 於 1991 和 1997 的論文中撰寫的資料結構,如簡化版的圖 2 所示 (中本聰當時可能不知道 Benaloh 和 de Mare 的研究成果)。當然,比特幣用交易代替了檔案。在每個區塊(實質即上文所說的資料塊)的默克爾樹中,葉節點都是交易,且每個內部節點都包含兩個指標。這種資料結構有兩大重要屬性。第一,最新區塊的雜湊值充當摘要。對任意交易(葉節點)的改變都必然將變化傳導至交易所在區塊的根節點,以及後續區塊的根節點。因此,如果你知道了最新區塊的雜湊值,就可以從你並不信任的資料來源下載剩餘賬本,並驗證它是否有過變化。一個類似的觀點確立了資料結構的另一大重要屬性——任何人都可以高效地向你證明某個交易是否包含在賬本中。這個使用者只需向你傳送這個交易所在區塊中的少量節點(這就是默克爾樹的意義),以及後續每個區塊所需的少量資訊。效能和可擴充套件性的提高非常需要高效證明交易是否包含在區塊內的能力。
順便一提,默克爾樹是以非對稱密碼學先鋒 Ralph Merkle 命名的,他在 1980 年的論文中提出了這一想法 33 。 他當初預期的應用是為公共的數字證書目錄生成一個摘要。 例如,如果一個網站向你出示證書,它還會出示一個簡短的證明,證明這個證書確實存在於全球目錄。只要你知道目錄中證書的默克爾樹的根雜湊值,你就可以高效地驗證這個證明。按照密碼學領域的標準來看,這個想法已經算不上新穎了,不過它的力量直至最近才得到重視。它處於近期實現的證書透明化系統的核心 30 。 一篇 2015 年的論文提出了 CONIKS ,將公鑰目錄的想法應用於端到端的加密郵件 32 。 新型加密貨幣以太坊提供的主要賬本功能之一就是高效地驗證部分全球狀態。
比特幣可能是 Haber 和 Stornetta 提出的資料結構在現實世界中最著名的例項,不過不是第一例。至少有兩家公司提供檔案時間戳服務 —— Surety 始於 20 世紀 90 年代中期,而 Guardtime 始於 2007 年。這兩種服務發生了有趣的轉變,因為 Bayer、Haber 和 Stornetta 5 提出了一個想法,即騰出報紙上的一個廣告位定期釋出默克爾根。圖 3 顯示了 Guardtime 在報紙上釋出的默克爾根。
拜占庭容錯
當然,不受中心權威實體控制的網際網路貨幣需要滿足更嚴格的要求。分散式賬本不可避免會出現分叉,這意味著一些節點會認為區塊 A 是最新的,另一些節點會認為區塊 B 是最新的。一個原因可能是有作惡者試圖擾亂賬本的運作,另一個原因可能僅僅是網路延遲,導致不同的節點在無意識的情況下近乎同時生成區塊。正如 Mike Just 在 1998 年的論文 26 中所述,僅僅依靠連結型時間戳不足以解決分叉問題。
另一個研究領域容錯型分散式計算已經研究過這一問題,不過用的名稱不同,其中包括 狀態複製 。一種解決方案是允許一組節點按照相同的順序應用相同的狀態轉換——通常來說,確切的順序並不重要,只要所有節點保持一致就好。對於數字貨幣來說,要複製的狀態是一組餘額表,交易代表的是狀態轉移。圖靈獎得主 Leslie Lamport 在 1989 年發表的論文 28,29 中提出了包括 Paxos 在內的早期解決方案 。他提出使用狀態複製的方法避免通訊通道不可靠或是少數節點可能出現某些“現實”故障——如永久離線或是首次離線後重啟併發送過時訊息——的問題。後續的文獻討論了更加不利的環境和效率權衡關係。
一項相關工作研究了網路可靠性高的情況(訊息傳送延時不超過一定範圍),然而其對“錯誤”的定義擴大成了 任何 背離協議的情況。這類拜占庭錯誤包括自然發生的錯誤和惡意設計的行為。早在 1982 年,Lamport 與 Robert Shostak 和 Marshall Pease 就在其合著的論文 27 中首次研究了這類錯誤。 之後直到 1999 年,Miguel Castro 和 Barbara Liskov 發表了一篇具有里程碑意義的論文,介紹了 PBFT (實用拜占庭容錯演算法)的概念,同時解決了拜占庭錯誤和不可靠網路的問題 8 。與連結型時間戳相比,關於容錯的學術文獻數量龐大,而且囊括了數以百計的 Paxos 和 PBFT 等開創性協議的變體和優化版本。
在最初的白皮書中,中本聰並沒有引用這類文獻或是使用相關術語。他使用了一些概念,作為他的協議中共識機制的參考,並考慮了攻擊者以及加入和離開網路的節點的故障問題。相比之下,他明顯依賴於連結型時間戳(以及下文將要論述的工作量證明)的文獻。在郵件列表討論中被問及比特幣與拜占庭將軍問題的關係(需要拜占庭容錯來解決的思維實驗)之時,中本聰堅稱採用工作量證明模式的區塊鏈可以解決這一問題 35 。
在接下來的幾年,其他學者已經從分散式系統的角度研究了中本聰的共識機制。這些研究仍在推進中。一些學者表示比特幣的屬性非常脆弱 43 ,而另一些學者認為拜占庭容錯視角無法公正評價比特幣的一致性 40 。另一種方法是定義已經過充分研究的屬性的變型,並證明比特幣滿足這些變型 19 。這些定義最近經過了大幅改進,在更為現實的訊息傳遞假設下,變成了一種更為標準的一致性定義 37 。然而,所有這些研究成果都建立在參與者行為“誠實”(即符合協議)的前提之下,然而中本聰建議誠實的行為是通過經濟激勵來實現的,無需對此進行盲目假設。關於中本聰的共識演算法可以起到激勵作用的分析不適用於過去的容錯系統模型。
註解:
[5]:Bayer,D.,Haber,S.,Stornetta,W.S.Improvingthe efficiency and reliability of digital time-stamping. Proceedings of Sequences 1991 ; ofollow,noindex" target="_blank">https://link.springer.com/chapter/10.1007/978-1-4613-9323-8_24 .
[6]:Benaloh,J.,deMare,M.1991.Efficientbroadcast timestamping; http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.38.9199 .
[7]:Boyle,T.F.1997.GLTandGLR:Componentarchitecture for general ledgers; https://linas.org/mirrors/www.gldialtone.com/2001.07.14/GLT-GLR.htm .
[8]:Castro,M.,Liskov,B.1999.PracticalByzantinefault tolerance. Proceedings of the Third Symposium on Operating Systems Design and Implementation ; http://pmg.csail.mit.edu/papers/osdi99.pdf .
[10]:Chaum, D. 1983. Blind signatures for untraceable payments. Advances in Cryptology : 199-203.
[12]:Chaum, D., et al. 1988. Untraceable electronic cash. Advances in Cryptology : 319-327; https://dl.acm.org/citation.cfm?id=88969 .
[13]:Dai, W. 1998; http://www.weidai.com/bmoney.txt .
[19]:Garay, J. A., et al. 2015. The bitcoin backbone protocol: analysis and applications. Advances in Cryptology : 281- 310; https://eprint.iacr.org/2014/765.pdf .
[21]:Grigg, I. 2005. Triple entry accounting; http://iang.org/papers/triple_entry.html .
[22]:Haber, S., Stornetta, W. S. 1991. How to timestamp a digital document. Advances in Cryptology- CRYPT0’ 90 3(2): 99-111; https://link.springer.com/chapter/10.1007/3-540-38424-3_32 .
[23]:Haber, S., Stornetta, W. S. 1997. Secure names for bit- strings. In Proceedings of the 4th ACM Conference on Computer and Communications Security : 28-35; http://dl.acm.org/citation.cfm?id=266430 .
[26]:Just, M. 1998. Some timestamping protocol failures; http://www.isoc.org/isoc/conferences/ndss/98/just.pdf .
[27]:Lamport, L., et al. 1982. The Byzantine Generals Problem. ACM Transactions on Programming Languages and Systems 4(3): 382-401; https://dl.acm.org/citation.cfm?id=357176 .
[28]:Lamport, L. 1989. The part-time parliament. Digital Equipment Corporation; https://computerarchive.org/files/mirror/www.bitsavers.org/pdf/dec/tech_reports/SRC-RR-49.pdf .
[29]:Lamport, L. 2001. Paxos made simple; http://lamport.azurewebsites.net/pubs/paxos-simple.pdf .
[30]:Laurie, B. 2014. Certificate Transparency. acmqueue 12(8); https://queue.acm.org/detail.cfm?id=2668154 .
[32]:Melara, M., et al. 2015. CONIKS: bringing key transparency to end users. Proceedings of the 24th Usenix Security Symposium ; https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-melara.pdf .
[33]:Merkle, R. C. 1980. Protocols for public key cryptosystems. IEEE Symposium on Security and Privacy; http://www.merkle.com/papers/Protocols.pdf .
[34]:Nakamoto, S. 2008. Bitcoin: a peer-to-peer electronic cash system; https://bitcoin.org/bitcoin.pdf .
[35]:Nakamoto, S. 2008. Re: Bitcoin P2P e-cash paper; http://satoshi.nakamotoinstitute.org/emails/cryptography/11/ .
[36]:Narayanan, A., et al. 2016. Bitcoin and Cryptocurrency Technologies . Princeton University Press; http://bitcoinbook.cs.princeton.edu/ .
[37]:Pass, R., et al. 2017. Analysis of the blockchain protocol in asynchronous networks. Annual International Conference on the Theory and Applications of Cryptographic Techniques ; https://link.springer.com/chapter/10.1007/978-3-319-56614-6_22 .
[40]:Sirer, E. G. 2016. Bitcoin guarantees strong, not eventual, consistency. Hacking, Distributed; http://hackingdistributed.com/2016/03/01/bitcoin-guarantees-strong-not-eventual-consistency/ .
[43]:Wattenhofer, R. 2016. The Science of the Blockchain . Inverted Forest Publishing.
原文連結: https://queue.acm.org/detail.cfm?id=3136559
作者:Arvind Narayanan & Jeremy Clark
翻譯&校對:& Elisa