1. 程式人生 > >ACM Queue 頂級論文:釐清關於區塊鏈、比特幣的所有誤區

ACM Queue 頂級論文:釐清關於區塊鏈、比特幣的所有誤區

當前,對於區塊鏈,大部分人都存在些許在基本認知維度的誤區,譬如直接將區塊鏈等同於比特幣、所有 ICO 都是騙局等,即使是對技術人而言,都還沒搞清楚區塊鏈的程式碼和演算法,更遑論涉及到實際場景應用的實踐。日前,國際計算機學會期刊 ACM Queue 發表論文,追本溯源,對比特幣及其底層技術 —— 區塊鏈的技術棧進行了系統的梳理和論證,由此發現,比特幣的幾乎所有技術組成部分都源於 20 世紀 80、90 年代的學術文獻,如分散式賬本和拜占庭協議,便可追溯到 20 多年前,這不是任何突破,只是學術文獻中長期被遺忘的解決方案。ACM Queue 的文章中指出:“這不是為了削減中本聰的成就,而是指出他其實是站在巨人的肩膀上。實際上,通過跟蹤比特幣思想的起源,我們可以真正瞭解中本聰的偉大之處——將學術基礎具體而複雜地有機組合。這有助於解釋為什麼比特幣花了很長時間才能被髮明。”

在此,區塊鏈大本營對文章的核心,也就是比特幣與區塊鏈的技術組成進行了整理:

賬本(Ledger)

如果您有一個安全的帳本,將其用於數字支付系統的過程很直接。例如,如果 Alice 通過 PayPal 向 Bob 支付 100 美元,那麼 PayPal 從 Alice 的賬戶中扣除 100 美元,並向 Bob 的賬戶支付 100 美元。這也是傳統銀行業的原理,儘管銀行之間沒有單一賬本、更加複雜。

賬本是理解比特幣的起點。賬本記錄系統中發生的所有交易,它向所有系統裡的參與者開放和被其信任。比特幣將此係統轉換為貨幣。而在銀行業務中,賬戶餘額是可以從銀行拿到的現金,一單位比特幣代表什麼?目前階段,是假定交易具有固有價值。

如何在網際網路這樣參與者可能不相互信任的環境中建立賬本呢?我們從簡單的部分開始:資料結構的選擇。幾個理想屬性:賬本應該是不可變的,或者更確切地說,只能附加 —— 你只能新增新的交易而不能刪除、修改或重新排序已有交易。還應該有一種方法可以隨時獲得賬本狀態的加密摘要(cryptographic digest)。摘要是一串短字元,可以避免儲存整個賬本,如果賬本以任何方式被篡改,則生成的摘要也隨之發生變化,因此通過摘要可以檢測到篡改。這些屬性之所以存在是因為與儲存在單個計算機上的常規資料結構不同,賬本是由相互不信任的參與者集合維護的全域性資料結構。這與另一種分散式數字賬本的方法形成對比,後者有許多參與者維護本地賬本,由使用者查詢這套賬本來解決衝突。

連結時間戳

比特幣的賬本資料結構大量借鑑了 Stuart Haber 和 Scott Stornetta 在 1990 年至 1997 年期間撰寫的一系列論文(1991 年的文章中有另一位作者 Dave Bayer),中本聰自己在其比特幣白皮書中如此表述。Haber 和 Stornetta 的研究探討文件時間戳的問題 —— 他們旨在建立一個“數字公證”服務。對於專利、商業合同和其他檔案,人們可能希望確定檔案是在某個時間點而不是後來建立的。他們所指的“文件”概念非常普遍,可以是任何型別的資料。他們確實提到金融交易作為潛在應用,但並不是其重點。

在 Haber 和 Stornetta 研究的簡化版中,文件是不斷被建立和傳播的。每個文件的建立者宣告建立時間並簽署文件、時間戳和先前傳播的文件。這個先前的文件已經簽署了自己的前身,所以這些文件形成一個長鏈,指向過去的時間。外部使用者無法更改時間戳資訊,因為其由建立者簽名,而建立者如果不能更改整條鏈上後續資訊也無法更改此條資訊。因此如果鏈上單個專案有可信來源(比如另一個使用者或專門的時間戳服務),那麼到此為止的整個鏈路被鎖定、不可變、時間上有序。再進一步,如果你認定系統拒絕不正確建立時間的文件,那麼就可以確定文件至少與聲稱建立時間相同。無論如何,比特幣僅借用 Haber 和 Stornetta 的資料結構,重新設計其安全屬性,並附加了工作量證明(本文將具體闡述)。

在他們的後續論文中,Haber 和 Stornetta 引入了其他觀點使資料結構更加有效和高效。首先,可以使用雜湊而不是簽名建立文件之間的連結;雜湊比較簡單,計算速度更快。這樣的連結稱為雜湊指標。第二,單獨卷繞文件的缺點是如果在大約相同的時間建立許多文件,那麼它們可能是低效的,所以文件可以被分組成批或區塊,每個區塊中的文件具有基本上相同的時間戳。第三,在每個區塊內,文件可以與雜湊指標的二叉樹連結在一起,稱為默克爾樹,而不是線性鏈。順便說一下,Josh Benaloh 和 Michael de Mare 在 1991 年分別獨立介紹了這三點,這發生在 Haber 和 Stornetta 發表第一篇論文之後很短的時間。

默克爾樹(Merkle trees)

比特幣基本上使用了 Haber 和 Stornetta 1991 和 1997 年的文獻中的資料結構(中本聰可能不知道 Benaloh 和 de Mare 的文獻)。當然,在比特幣中,交易取代了文件。在每個區塊的默克爾樹中,葉節點是交易,每個內部節點基本上由兩個指標組成。這個資料結構有兩個重要的屬性。首先,最新區塊的雜湊值作為摘要。對任何交易(葉節點)的更改將一路傳到區塊根以及所有後續區塊根。因此,如果知道最新的雜湊值,則可以從一個不受信任源下載賬本的其餘部分,並確認其尚未更改。一個類似的論證確定了資料結構的另一個重要屬性——有人可以有效地向你證明特定交易被包含在賬本中。該使用者傳送只需傳送該交易區塊上少量節點(這是默克爾樹的點)以及每個後續區塊的少量資訊。這一能力對於效能和可擴充套件性是非常必要。

默克爾樹以 Ralph Merkle 命名,他是非對稱密碼學的先驅,他在 1980 年的論文中提出了這個想法。他的預期應用是為數字證書的公共目錄製作摘要。例如,當一個網站向您提供證書時,它也可以證明該證書出現在全域性目錄中。只要知道目錄中證書的默克爾樹的根雜湊值,就可以有效地驗證證明。這個想法從加密標準上來看是古老的,但其作用很大,這是最近實施的證書透明度系統的核心。2015 年的一篇文章提出了 CONIKS,它將這一思想應用於端到端加密電子郵件的公鑰目錄。全球狀態部分的高效驗證是以太坊賬本提供的關鍵功能之一。

比特幣可能是 Haber 和 Stornetta 資料結構中最知名的現實世界例項,但它不是第一個。至少有兩家公司 ——Surety 從 90 年代中期開始,Guardtime 從 2007 年開始——提供文件時間戳服務。這兩個服務中一個共同有趣之處是通過採取廣告定期在報紙上釋出默克爾根,Bayer、Haber 和 Stornetta 都提到。

拜占庭容錯

對去中心化的網際網路貨幣的要求當然比較嚴格。分散式賬本不可避免地有分支,這意味著一些節點將認為區塊 A 是最新的區塊,而其他節點會認為區塊 B 最新。這可能是由於對手試圖中斷賬本的操作或僅僅因為網路延遲導致區塊偶爾由不知道彼此區塊的不同節點近乎同時生成。連結時間戳本身不足以解決分支,正如 Mike Just 在 1998 年所述。

一個不同的研究領域——容錯分散式計算,已經研究了這個問題,雖然名稱各不同,比如狀態複製(state replication)。這個問題的解決方案是使一組節點能夠以相同的順序應用相同的狀態轉換, 通常精確的順序並不重要,只需所有節點都一致。對於數字貨幣,要複製的狀態是一組餘額,交易是狀態轉換。圖靈獎獲得者 Leslie Lamport 在 1989 中提出的早期解決方案,包括 Paxos,考慮到通訊渠道不可靠時以及少數節點可能會出現某些“現實”故障時的狀態複製,如永久離線或從第一次離線後重新啟動和傳送過時的訊息。隨後有大量文獻提出更多不利的條件和效率權衡。

相關的文獻研究了網路大多是可靠時的情況(訊息有限延遲),但是“錯誤”的定義被擴充套件到以處理任何偏離協議的情況。這種拜占庭故障包括自然出現的故障以及惡意製作的行為。早在 1982 年,這就被 Lamport、Robert Shostak 和 Marshall Pease 首先研究過。再後來的 1999 年,Maguel Castro 和 Barbara Liskov 發表了一篇里程碑式的文章,介紹了 PBFT(拜占庭容錯),適用於拜占庭故障和不可靠的網路。與連結時間戳相比,容錯文獻是巨大的,包括數百種 Paxos、PBFT 和其他開創性協議的變體和優化。

中本聰在他的原始白皮書中並沒有引用這些文獻或使用其語言。他使用一些概念,將他的協議稱為共識機制,認為故障分為攻擊者以及節點加入和離開網路的形式。這與他對連結時間戳(和下一步討論的工作量證明)的文獻的利用截然相反。關於比特幣與拜占庭將軍問題的關係(一項需要 BFT 解決的思想實驗)的郵件列表討論中,中本聰認為,工作量證明鏈解決了這個問題。

在接下來的幾年中,其他學者從分散式系統的角度研究了中本聰共識。這是一個正在進行中的研究。有些人表示,比特幣的屬性相當薄弱,而另一些則認為 BFT 觀點對比特幣一致性屬性並不公正。另一種方法是定義已研究屬性的變體,並證明比特幣滿足這些屬性。最近這些定義大幅度精簡,在更實際的假設下對訊息傳遞提供更標準的一致性定義。然而,所有這些研究都以“誠實”為假設前提,即協議相容、參與者子集中行為,而 中本聰表明不能盲目假設誠實行,因為誠實行為需要激勵。對 中本聰共識的更深入研究認為,激勵機制的作用不完全屬於過去的容錯系統模型。

工作量證明

幾乎所有的容錯系統都認為系統中嚴格的多數或絕對多數(如超過一半或三分之二)的節點是誠實可靠的。在一個開放的對等網路中,節點無需註冊,自由地加入和離開。因此對手可以建立足夠的 Sybils 或馬甲(sockpuppet)節點來破壞系統保證共識。Sybil 攻擊在 2002 年由 John Douceur 正式確定,他使用一種稱為工作量證明來加以應對的加密構造。

起源

要了解工作量證明,我們先看看它的起源。第一個工作量證明概念的是 Cynthia Dwork 和 Moni Naor 於 1992 年提出的,其目標是制止垃圾郵件。請注意,垃圾郵件、Sybil 攻擊和拒絕服務都是類似的問題,都是對手相比於普通使用者放大了其在網路中的影響力;工作量證明適用於以上三者的防禦。在 Dwork 和 Naor 的設計中,電子郵件收件人只會處理那些有發件人執行適量計算工作證明的電子郵件,也就是“工作量證明”。在一臺普通計算機上計算證明可能需要幾秒鐘。因此普通使用者不會覺得麻煩,但使用等效的硬體的垃圾郵件傳送者,如果傳送一百萬封垃圾郵件則需要幾周時間。

工作量證明謎題必須針對具體的電子郵件以及收件人。否則垃圾郵件傳送者能夠向同一收件人傳送多條訊息(或向多個收件人傳送同一訊息),這與向一個收件人發一條訊息花費相同。第二個重要的屬性是它應該對收件人造成最小的計算負擔;謎題解決方案無論多麼難以計算應該是很容易驗證。此外,Dwork 和 Naor 還考慮了一個陷門(trapdoor)功能,中樞機構掌握機密資訊使其在不做任何工作的情況下就能解決謎題。陷門的一個可能的應用是授權中樞機構不需要產本就能批准釋出到郵件列表。Dwork 和 Naor 的研究想法包括滿足這些屬性的三個候選謎題,並啟動一整個研究領域。

Hashcash

一個叫作 hashcash(雜湊現金)的非常相似想法是由 Adam Back 在 1997 年獨立發明的,當時他是一位博士後研究員,也是 cypherpunk 社群的成員。Cypherpunks 是反對政府和中央集權機構的社會運動家,試圖通過密碼學進行社會和政治變化。Back 最先以軟體的形式釋出了 hashcash,5 年後的 2002 年釋出了網際網路草案(一份標準檔案)和一篇論文。

Hashcash 比 Dwork 和 Naor 的想法簡單得多:它沒有陷門或中樞機構,只使用雜湊函式而非數字簽名。它基於一個簡單的原則:雜湊函式作為一個實際用途的隨機函式,這意味著找到一個特定輸出的雜湊輸入的唯一方法是嘗試各種輸入直到產生所需的輸出。也就是說,如果讓你找到一個(二進位制)雜湊值以 10 個零開始的輸入,你將不得不嘗試大量的輸入,你會發現每個輸出有 1/210 的機會從 10 個零開始,這意味著你必須嘗試 210 個輸入的順序(約 1,000 個雜湊計算)。

顧名思義,在 hashcash 中 Backr 將工作量證明視為現金形式。在他的網頁上,他將其定位為 David Chaum 的 DigiCash 的替代品,這是一個從銀行向用戶發行無法追蹤的數字現金的系統。他甚至在技術設計上進行妥協,使其看起來更像現金。後來,Back 的公開發言認為比特幣是 hashcash 的直接擴充套件。然而,hashcash 根本不是現金,因為它不具有防止雙花的保護。Hashcash 幣不能在同輩之間交換。

與此同時,在學術界內,研究人員發現除了垃圾郵件之外工作量證明的運用,比如防止拒絕服務攻擊、確保網頁分析的完整性、限制性線上密碼猜測等。順便提一句,“工作量證明”是 1999 年由 Markus Jakobsson 和 Ari Juels 在一篇論文中提出。值得注意的是,這些研究人員似乎並不瞭解 hashcash,而是獨立開始聚焦基於雜湊的工作量證明,Eran Gabber 等、Juels 和 Brainard 的論文都有所介紹。(本段中使用的許多術語在文章發表之後才成為標準術語。)

工作量證明和數字現金:進退兩難

你可能知道,工作量證明在其原始運用中不是一個成功的反垃圾郵件措施。一個可能的原因是不同裝置謎題解決速度存在巨大差異。這意味著垃圾郵件傳送者在定製硬體方面進行小額投資,就能提高垃圾郵件傳播速度。在經濟學中,對生產成本不對稱的自然反應是交易——即工作量證明的解決方案市場。但這是一個進退兩難的境地,因為這就需要一個有效的數字貨幣。而事實上,缺乏這樣一種貨幣是出現工作量證明的主要動力。解決這個問題的一個粗略方案是將謎題解決方案作為現金,就像 hashcash 試圖去做的那樣。

在比特幣出現之前,有兩篇文章分別描述了 b-money 和 bit gold 的想法,將謎題解決方案作為現金來處理。這些想法提供的時間戳服務通過工作量證明在建立資金完成之後就簽署,一旦建立了資金就會轉賬。但是,如果在伺服器或節點之間出現賬本不一致情況,則沒有明確的解決方法。這兩篇文章似乎暗示的是讓多數作決定,但由於 Sybil 的問題,這些機制並不是很安全,除非有看門人控制進入網路,否則工作量證明就能自動產生 Sybil 抵抗。

小結

瞭解以上這些才能欣賞中本聰設計比特幣真正天才之處。比特幣的謎題解決方案本身不構成現金,這還是第一次出現,這些謎題解決方案僅用於保護賬本安全。工作量證明是由被稱為礦工的專門實體進行的(雖然中本聰低估了挖礦的專業度)。

礦工們不斷地相互競爭尋找下一個謎題解決方案;每個礦工解決謎題的一個稍微不同的變體,所以成功的機會與礦工控制的全球挖礦能力的比例成正比。解決謎題的礦工可以將交易的下一個批次或區塊分配給賬本,這是基於連結的時間戳。維護賬本服務的獎勵制度是,一個貢獻區塊的礦工將被獎勵新建的貨幣單位。如果礦工做出無效交易或區塊,則會被大多數之後貢獻區塊礦工拒絕,這也會撤回區塊獎勵。在金錢激勵下,礦工互相確保遵守協議。

比特幣巧妙地避免了雙花問題,雙花是工作量證明成為現金的阻礙,因為它使謎題解決方案本身不再具有價值。事實上,謎題解決方案與經濟價值兩次脫鉤:生產區塊所需的工作量是浮動引數(與全球挖礦能力成正比);每個區塊產生的比特幣數量也不固定。區塊獎勵(新比特幣因此鑄造)被設定為每四年減半(2017 年獎勵是 12.5 比特幣/區塊,從 50 比特幣/區塊降到此)。比特幣還包含一種獎勵方案:交易傳送者為在其區塊進行交易服務向礦工付款。預計市場將確定交易費用和礦工獎勵。

因此,中本聰的天才並不是比特幣的任何一個組成部分,而是這些部分精妙地融合,為整個系統注入生命。時間戳和拜占庭協議的研究人員 2005 年前沒能想到激勵誠實的節點,也沒能想到使用工作量證明來消除身份。相反,hashcash、b-money 和 bit gold 的發明者沒能想到納入一個共識演算法來防止雙花。而比特幣使用安全賬本來防止雙花,從而確保貨幣有價值。對礦工獎勵有價值的貨幣是必要的;相應的,挖礦權是確保賬本安全的必要條件。沒有了這一點,對手可以佔據全球挖礦權的 50%以上,從而能夠比網路中其他部分更快速地生成區塊、進行雙花交易、改寫歷史、超越系統。因此,比特幣在這三部分之間具有迴圈依賴性。 中本聰的挑戰不僅僅是設計,還說服了最初使用者與礦工社群向未知的領域前進,那個時候比薩需要 10,000 比特幣,網路的挖礦權不到今天的萬億分之一。

公鑰作為身份

本文開始達成的理解是,安全的賬本使建立數字貨幣成為可能。讓我們回顧一下這個說法。當 Alice 希望支付給 Bob 時,她將該交易廣播到所有比特幣節點。一個交易只是一個字串——一條 Alice 希望支付 Bob 編碼宣告,由她簽署。而礦工最終將此簽署宣告納入賬本中才能使交易成為現實。請注意,這不需要 Bob 以任何方式參與。我們關注一下交易中沒有的內容:明顯無需 Alice 和 Bob 的身份;交易只包含他們兩位各自的公鑰。這是比特幣的一個重要概念:公鑰是系統中唯一的身份。交易在公鑰之間轉移價值,這被稱為地址。

必須知道相應的私鑰才能“代表”身份。你可以隨時通過生成新的公鑰私鑰來建立新的身份,而無需通過中樞機構或註冊。不需要獲取使用者名稱或通知其他人你已選擇了特定的名稱。這是去中心化身份管理的概念。比特幣沒有規定 Alice 如何告訴 Bob 她的化名是什麼——這在系統外部。

雖然這與今天大多數其他支付系統完全不同,但比特幣的這些想法相當古老,可追溯到數字現金之父 David Chaum。事實上,Chaum 為匿名網路做出了突出貢獻。他在 1981 年發表的文章《不可追溯的電子郵件、返回地址和數字化名》(Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms)中指出:“數字化名是用於驗證相應私鑰匿名持有人簽名的公鑰。”

只有通過公鑰才知道訊息收件人有一個明顯的問題:沒有辦法將訊息遞送到正確的計算機。這大大降低 Chaum 想法的效率,可以削弱但無法消除匿名級別。與集中支付系統相比,比特幣的效率同樣非常低:包含每個交易的賬本由系統中的每個節點維護。比特幣出於安全考慮而導致這種低效率,從而實現了“免費”的化名(即公鑰作為身份)。 Chaum 在 1985 年的一篇文章中進一步提出了這些想法,文章中提出了基於普遍化名、數字現金背後關鍵技術“盲簽名”的保護隱私的電子商務願景。

公鑰的想法也見於 b-money 和 bit gold。然而,建立在 Chaum 基礎上的許多工作以及 Chaum 自己以後電子貨幣的研究都擺脫了這一想法。Cypherpunk 們對隱私保護溝通和商業非常感興趣,包含了化名(他們稱之為 nym)。但對於他們來說,nym 不僅僅是加密身份(即公共金鑰),而通常是與公鑰相關聯的電子郵件地址。同樣,Ian Goldberg 的論文是後來匿名溝通工作的基礎,也承認了 Chaum 的想法,但 Ian 建議 nym 應該是符合人類記憶的名稱,用證書對其進行約束。比特幣也因此被證明是 Chaum 的想法中最成功的例項化。

區塊鏈技術

外界大多數認為這是比特幣的主要發明,但可能會讓你感到意外,中本聰根本就沒有提到這個詞。實際上,“區塊鏈”這個術語沒有標準的技術定義,而是由各方用來指代與比特幣及其賬本有不同相似程度系統的一個寬泛的術語。

討論受益於區塊鏈的運用例項將有助於澄清該術語的不同用途。首先,考慮銀行財團之間的交易資料庫後臺,交易在每天結束時扣除,賬戶由中央銀行結算。這樣一個系統涉及少量身份明確的相關方,“中本聰共識”就有點過了。也不需要 on-blockchain 貨幣,因為這些賬戶是以傳統貨幣計值的。而連結的時間戳顯然是有用的,至少在網路延遲的時候確保交易是全域性一致排序。狀態複製也將是有用的:銀行需要知道其本地資料副本與中央銀行用於結算其賬戶相同。這樣可以使銀行免受昂貴的對賬流程。

第二,考慮資產管理申請,如跟蹤金融證券、房地產或任何其他資產所有權的文件登記。使用區塊鏈將增加互操作性並減少進入門檻。我們想要一個安全的全球文件登錄檔,最理想的是允許公眾參與。這基本上是 20 世紀 90 年代和 21 世紀時間戳服務希望提供的。公共區塊鏈目前提供了一種特別有效的方式來實現(資料本身可以非鏈式儲存,只有元資料儲存在鏈上)。其他運用也受益於時間戳或“公共公告牌”,最顯而易見的是電子投票。

我們以資產管理為例。假設你想通過區塊鏈執行資產交易,而不僅僅是將它們記錄在那裡。如果資產在區塊本身上以數字形式釋出,並且區塊鏈支援智慧合約,則這是可能的。在這種情況下,智慧合約解決了“公平交換”問題:當且僅當資產被轉移時才確保支付。更寬泛地說,智慧合約可以對複雜的業務邏輯進行編碼,只要所有必需的輸入資料(資產、價格等)都在區塊狀鏈上即可。

對區塊鏈應用屬性的分析使我們不僅可以瞭解自身潛力,還會注入亟需的一劑懷疑。首先,許多人提出區塊鏈應用(特別是在銀行中)不使用中本聰共識;相反,他們使用賬本資料結構和拜占庭協議,這可以追溯到上世紀 90 年代。這使得“區塊鏈是一種新的革命性技術”不成立而對區塊鏈的熱議幫助銀行開始採取集體行動來部署共享賬本技術,如“石湯”寓言。比特幣也是去中心化賬本概念高度可見的證明,而比特幣核心專案提供了一個可以根據需要進行調整的便利程式碼庫。

第二,區塊鏈通常比傳統登錄檔更安全——這是一個誤導性的言論。系統或平臺的整體穩定性必須與端點安全性(即使用者和裝置的安全性)分開。誠然,區塊鏈的系統性風險可能低於許多集中式機構的風險,但是區塊鏈的端點安全風險遠遠低於傳統機構的相應風險。區塊鏈交易接近即時、不可逆轉,在公共區塊鏈中,交易是匿名的。使用基於區塊鏈的庫存登錄檔,如果使用者(或經紀人或代理人)失去對其私鑰的控制(比如丟失電話或計算機上獲取惡意軟體),使用者就會丟失其資產。比特幣黑客、盜竊和騙局的例項使我們無法對其充滿資訊,一個初步的估計表示,流通中的比特幣至少有 6%被盜過至少一次。

總結

本文描述的文獻歷史為比特幣從業者和學者提供了豐富的(互補的)知識。從業者應該對革命性技術的主張持懷疑態度。如本文所示,比特幣中大多數在商業領域讓人興奮的想法,如分散式賬本和拜占庭協議,實際上可追溯到 20 多年以前。這不是任何突破,只是學術文獻中長期被遺忘的解決方案。

至少在這種情況下,學術界抵制激進的外在觀點。比特幣白皮書儘管傳承許多學術界的觀點,但比大多數學術研究更新穎。此外,中本聰並不關心學術同行評議 。因此,最開始好幾年學術界基本上忽略了比特幣。許多學術團體非正式地表示,根據以往系統的理論模式或經驗,比特幣無法運作,儘管比特幣當時在實踐中是有效的。

我們已經多次看到,研究文獻中的想法可能逐漸被遺忘或被忽視,特別是如果是超前想法,即使在幾大熱門研究領域也是如此。實踐者和學者都會重新審視舊的想法,為目前的系統收集深刻見解。比特幣不同尋常和成功之處,不在於它任何一個部分處於研究的前沿,而是在於它結合了許多以前不相關領域的已有想法。這並不容易,因為它需要橋接不同的術語、假設等,但這是創新創造的寶貴藍圖。

從業人員可以識別被炒作的技術,從中受益。一些炒作指標有:難以識別技術創新;由於公司急於做自己的產品的廣告,難以把握所謂技術術語的含義;難以識別正在解決的目標問題;最後是聲稱技術解決社會問題或創造經濟/政治動盪。

相比之下,學術界難以把發明賣出去。例如,最早研究工作量證明的學者對於比特幣的創造沒有取得任何功勞,可能是因為這些研究在學術界之外並不為人所知。諸如釋放程式碼、與從業人員合作等活動在學術界沒有得到充分的認可。事實上,最早期的工作量證明的學術文獻今天都沒有承認比特幣的存在!與現實世界接觸不僅有助於獲得認可,而且還將減少不必要的重複創新,並且也是新靈感的源泉。

工具欄

Sybil 抵抗網路

John Douceur 在他關於 Sybil 攻擊的論文中提出要參與 BFT 協議的所有節點都需要解決 hashcash 謎題。如果一個節點偽裝成 N 個節點,那麼它將無法及時解決 N 個謎題,假身份則被清除。然而,惡意節點相比於申報單個身份真實節點仍然可以獲得中等優勢。2005 年的一篇後續文章提出,真實節點應該模仿惡意節點的行為,申報可計算範圍內儘量多的虛擬身份。在這些虛擬身份執行 BFT 協議的情況下,“最多有 f 個節點是有缺陷的”假設被“由故障節點控制的總計算能力最大是 f”所代替。因此,不再需要驗證身份,開放對等網路可以執行 BFT 協議。比特幣就完全使用了這個想法。但中本聰更進一步提出了一個問題:什麼促使節點執行計算上昂貴的工作量證明?答案是:數字貨幣。

智慧合約

智慧合約將資料放在安全賬本中,並將其擴充套件到計算中。換句話說,正確執行公開指定的程式是一個協商一致的協議。使用者可以呼叫這些智慧合約程式中的功能,受程式規定的任何限制約束,功能程式碼與礦工同步執行。使用者可以信任輸出,而不必重做計算,並且可以編寫自己的程式來對其他程式的輸出進行操作。智慧合約與加密平臺相結合可以變得特別強大,因為有關程式可以對錢進行處理——擁有、傳輸、銷燬它、甚至在某些情況下列印它。

比特幣實現了智慧合約的限制性程式語言。“標準”交易(即將貨幣從一個地址移動到另一個地址)的交易被指定為該語言的簡短指令碼。以太坊提供更寬鬆和強大的語言。

智慧合約的想法是由 Nick Szabo 在 1994 年提出的,他認為這與法律合同相似而且能自動執行,因此取名智慧合約。(這個觀點已經被 Karen Levy 和 Ed Felten 批評。)Szabo 先前提出的智慧合約作為數字現金協議的擴充套件,並認為拜占庭協議和數字簽名可以作為構建區塊。加密貨幣的成功使得智慧合約成為可能,而且對該主題的研究也蓬勃發展。例如,程式語言研究人員已經調整了方法和工具來自動發現智慧合約中的錯誤,並且編寫可驗證的正確資訊。

許可塊

雖然本文強調,私人或許可的區塊鏈省略了比特幣大部分的創新之處,但這並不意味這個領域不有趣。許可鏈限制可以加入網路的物件、編寫交易或挖礦。特別是,如果礦工屬於可靠的參與者名單上,那麼工作量證明可以被放棄,以更傳統的 BFT 方法執行。因此,大部分研究是 BFT 的變種,涉及以下問題:可以使用 hash 樹來簡化共識演算法嗎?如果網路只能以某幾種方式失敗怎麼辦?

此外,關於身份和公鑰基礎設施、訪問控制以及儲存在區塊鏈上資料的機密性的有許多重要考慮。這些問題很大多不會出現在公共區塊鏈設定中,也不是在傳統的 BFT 文獻中進行研究。

最後還會涉及工程問題,如擴大區塊鏈規模到高吞吐量並適應各種應用(如供應鏈管理和金融技術)。

點選可獲得完整文章 PDF 閱覽地址。
譯者:牟雲飛
宣告:本文未經允許,請勿轉載。