區塊鏈(英語:Blockchain或Block chain)是一種分布式數據庫,大家可能都有所耳聞的比特幣,核心技術用的就是它。區塊鏈是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次網絡交易的信息,用于驗證其信息的有效性和生成下一個區塊。用通俗的概念講,區塊鏈就是一本人人可記的賬。在一個公司或機構里,多數人只有看賬的份兒,而只有少數受過專業訓練的人,才有權提筆記賬。當然,區塊鏈并非傳統意義上的賬本,它在技術原理上有以下三個關鍵點:第一,去中心化。一個踐行區塊鏈技術的網絡中,其所涵蓋的每臺計算機均可讀取、添加記錄,從賬本這個角度講,他們就是共同記賬的人,而沒有權威人士從中指導、修正。第二,非對稱加密。別看這本賬人人可記,可若非局內人,一定讀不懂。因為,在記賬過程中,每個人都遵從統一的加密規則,但讀取時,卻必須使用自己獨有的解密方式。因此,雖然每個人都保存著這本不斷更新的賬,但能讀懂的部分,卻僅限于自己能解密的那一塊,也就是與自己相關的那一部分。第三,時間印記。也就是時間戳(英語:Timestamp),是指字符串或編碼信息用于辨識記錄下來的時間日期。區塊鏈上的每一個區塊,是按照其所生成的時間按先后順序排列的,并經過集體認證,確認成立。而且,之前的記錄是無法被修改的。就像在一本賬里,我們可以通過一個時間點之后的記錄,索引、驗證之前的內容。而這些內容一旦被確認,再行篡改就難上加難。
區塊鏈技術是維護一個不斷增長的數據記錄的分布式數據庫,這些數據通過密碼學的技術和之前被寫入的所有數據關聯,使得第三方甚至是節點的擁有者難以篡改。區塊(block)包含有數據庫中實際需要保存的數據,這些數據通過區塊組織起來被寫入數據庫。鏈(chain)通常指的是利用Merkle tree等方式來校驗當前所有區塊是否被修改,這一點用過Git的碼農們早就熟悉了,回想一下如何修改Git的歷史記錄吧。
區塊鏈技術主要分為三大類,主要是公開、協作、私有。
公開區塊鏈(public blockchain)
例子:比特幣,Ethereum Frontier。公開區塊鏈上的數據所有人都可以訪問,所有人都可以發出交易等待被寫入區塊鏈。共識過程的參與者(對應比特幣中的礦工)通過密碼學技術以及內建的經濟激勵維護數據庫的安全。公開區塊鏈是完全的分布式。
亮點和痛點:公開區塊鏈完全分布式,具有比特幣的一切特點,然而需要有足夠的成本來維持系統運行,依賴于內建的激勵。目前來看公開區塊鏈中只有比特幣算是足夠安全的,如果和比特幣的算法一樣,乙烷;沒有內建獎勵,乙烷;容易集中算力攻擊(比如只要突擊掃貨大批顯卡之類),吃棗藥丸。公開區塊鏈上試圖保存的數據越有價值,越要審視其安全性以及安全性帶來的交易成本,系統擴展性問題。
協作區塊鏈(federated blockchain)
例子:Hyperledger以及德勤等會計所嘗試的審計系統。參與區塊鏈的節點是事先選擇好的,節點間很可能是有很好的網絡連接。這樣的區塊鏈上可以采用非工作量證明的其他共識算法,比如有100家金融機構之間建立了某個區塊鏈,規定必須67個以上的機構同意才算達成共識。這樣的區塊鏈上的數據可以是公開的也可以是這些節點參與者內部。部分意義上的分布式。
亮點和痛點:協作區塊鏈可以做到很好的節點間的連接,只需要極少的成本就能維持運行,提供迅速的交易處理和低廉的交易費用,有很好的擴展性(但是擴展性隨著節點增加又會下降),數據可以有一定的隱私。開發者在共識下有能力更改協議,沒有比特幣hard fork的問題,但是這也意味著在共識下,大家可以一起篡改數據。協作區塊鏈也意味著這個區塊鏈的應用范圍不會太廣,缺少比特幣的網絡傳播效應。
私有區塊鏈(private blockchain)
例子:Eris Industries。參與的節點只有用戶自己,數據的訪問和使用有嚴格的權限管理。近期部分金融機構公布的內部使用的區塊鏈技術大都語焉不詳,不過很可能都在這個范圍內。 亮點和痛點:私有區塊鏈實際上是很迷惑的名詞,這樣的一個系統無非是傳統意義上的共享數據庫用上Merkle Tree等方式試圖說明其中的數據可校驗。這樣的數據庫早有成熟的解決方案, Merkle tree也只是很多成熟方案中的一種。這些項目很容易是“然并卵”。由于全是用戶說了算,里面的數據沒有無法更改的特性,對于第三方也沒有多大的保障。因此很多私有區塊鏈會通過依附在比特幣的方式存在,比如定期將系統快照記錄到比特幣中。