鏈客,專爲開發者而生,有問必答!git
此文章來自區塊鏈技術社區,未經容許拒絕轉載。
算法
當前,對於區塊鏈,大部分人都存在些許在基本認知維度的誤區,譬如直接將區塊鏈等同於比特幣、全部 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 文獻中進行研究。
最後還會涉及工程問題,如擴大區塊鏈規模到高吞吐量並適應各類應用(如供應鏈管理和金融技術)。