為什么說區塊鏈“無需信任”?
前言:說區塊鏈無需信任往往讓人困惑。區塊鏈本身是算法的信任或是分布式的信任,通過去中心化的方式達成了一個系統信任。區塊鏈的核心就是達成了無需傳統中介方的信任,實現了價值的自由流通。
許多人把區塊鏈描述為一種無需信任的系統。在我看來,“無需信任”這個詞是含糊不清的,最重要的是,對于區塊鏈來說,這個詞是不準確的。
區塊鏈實際上并沒有消除信任,整個區塊鏈系統所要做的就是減少系統中每個單個參與者所需要的信任量。區塊鏈系統通過激勵機制來保證每個參與者之間按照系統協議來合作,從而實現把信任分配給每個參與者。
下面我們將通過一些例子來進行詳細的解釋。一個真正無需信任的交易系統看起來應該像是這樣:假設有兩個人,他們想要進行轉賬交易,因為是線下交易,所以可以進行很輕松的驗證。
首先,真實性對他們來時是沒有任何問題的,因為交易方式為現金交易,其次,雙花問題也不存在,因為每張貨幣都有自己獨特的編號。

這種交易理論上完美無暇,但是交易量卻是有限的,只有在物理位置足夠接近時才有可能采用這種交易。如果想要進行規模化的操作,那么這個交易系統應該能夠讓世界上的任何一個人進行自由的資金轉移。所以我們更需要下圖所示的轉賬交易系統:

從圖中可以看出,我們實現這一目標的方式是通過中間媒介來促進價值轉移,以確保實際的發送者發送的錢是真實有效的。那么誰會是完全可信的中間人呢?在現實交易系統中,這個中介可以是銀行(如chase bank),支付提供商(如 paypal),匯款公司(如,western union),信用卡公司(如visa)等等。
在這種中心化模型中,由銀行確認和確保你收到的錢是真實有效的。換句話說,除非有直接的物質價值從一個人轉移到另一個人,否則必須存在一些我們信任的中介。
區塊鏈也并無不同。區塊鏈通過協議,允許兩個單獨個體通過互聯網以點對點的方式進行彼此交易。當你在區塊鏈系統中將數字貨幣從一個賬戶轉移到另一個賬戶時,那么說明你信任區塊鏈底層系統既能夠支持該轉賬,又確保發送人的真實性和數字貨幣的有效性。

在一個中心化的系統中,我們信任第三方(例如chase bank)能夠承擔起中介的角色來擔保轉賬的真實性和有效性。在一個分布式系統中,第三方中介將被公鑰密碼系統和共識機制替代,用來保障轉賬的真實性和有效性。
公鑰密碼(非對稱密碼)通常由兩組密碼構成,一組是任何人可見的公鑰,另外一組是只有擁有者可見的私鑰。每一次轉賬交易都將由私鑰來進行數字簽名,數字簽名能夠確保每一筆交易都是來源于數字貨幣的擁有者,同時還保證一旦交易被發送出去之后,交易不被串改。
更改交易的任何信息都會導致驗證失敗。如下圖所示,交易的驗證過程是采用交易發起者的公鑰來驗證交易信息的正確性。

公鑰密碼可以幫助我們在點對點交易中驗證賬戶的真實性和轉賬的有效性。但是,這并不能保證雙花問題(雙重支付問題)。因此我們需要持續的跟蹤每個賬戶,以便確保每筆交易的有效性,避免出現雙重支付問題。

這時候我們就需要共識機制來保證賬本的真實性(shared truth)。區塊鏈擁有一個共享賬本,它為我們提供了系統狀態的絕對真實性。它使用數學,經濟學和博弈論來確保和激勵這個系統的所有參與者達成共識,或者就這個賬本的單一狀態達成共識。
那么通過比特幣來舉個例子,比特幣協議中有一個共識算法叫做工作量證明,它將系統的所有參與者連結在一起。為了確認每筆交易,共識算法要求一組節點(即礦工)通過解決復雜的算法問題來競爭驗證交易。
換句話說,比特幣協議通過經濟手段來激勵礦工購買擁有更高算力的機器來解決復雜的算法問題。這些激勵包括,每筆交易所產生的交易費用和新區塊產生時系統給予的比特幣獎勵。
由于這些激勵措施,礦工們通過不斷的監控整個比特幣網絡來收集每一筆交易用以產生新的區塊,然后他們使用計算資源解決復雜算法來證明他們做了這些工作。第一個解出算法的礦工將證明和新區塊加入區塊鏈賬本,同時將區塊全網廣播出去。此時,網絡中的其他礦工都會驗證并且同步最新的區塊。

因為礦工們都在競爭產生新的區塊,那么有時就會有多個區塊同時產生,這會導致產生很多的分叉鏈,這些分叉如下圖所示:

那么整個網絡的規范鏈(canonical chain)就是最長的那條鏈,擁有最多礦工信任的并繼續工作的那條鏈。

以這種方式添加到賬本的的每一個新區塊都會增加系統的安全性,因為攻擊者想要修改賬本的歷史數據就必須提供超過全網百分五十一的算力來使得自己修改的賬本變成最長鏈。在現實中這是不可能實現的,這就是為什么用戶可以繼續信任這個系統的原因。
所以當我們在區塊鏈網絡進行轉賬交易的時候,我們信任那些礦工們所貢獻的算力來確保沒有雙重支付問題。
當然,即使機器能夠提供完美的共識,在其他一些重要的方面,我們仍然未能達成百分百的共識。例如,當底層網絡需要升級,改進或者維護時,我們需要以某種方式來信任網絡及其所組成的成員能夠適當的處理這些變化。
在這種情況下,需要第三方參與人員之間協調合作,或者我稱之為社會共識(social consensus)。
例如,當一個區塊鏈系統需要升級時(例如,更好的交易日志),我們需要一個治理機制來協調所有利益相關方,例如,用戶,開發者和投資者等等,以提出最佳的解決方案。或者在最佳解決方案上出現分歧時,需要社區為就下一步怎么做提供共識。
如果共識未能達成,那么區塊鏈網絡將會硬分叉,每個參與者將會被迫選擇一方而不是大家都達成的共識。這可能會導致用戶對系統失去信任,因為他們無法確定哪條鏈是有效的鏈。
正如我之前的文章中所描述的,區塊鏈治理存在許多不同的模式,并且它仍然是社區積極研究的一個領域。區塊鏈治理是個棘手的問題,在中心化和去中心化控制之間尋找一個平衡,對于維護每個人對系統的信任度至關重要。
當我們說到區塊鏈無需信任時,我們指的是,系統中所有的參與者可以通過這些機制來達成一些標準的共識。權利和信任分散在系統的參與者之間,如,開發者,礦工和消費者,而不是集中在單個個體或者實體,例如銀行,政府或者金融機構。
或許更準確描述區塊鏈的方式不是無需信任,而是建立在分布式信任的基礎上:我們相信每個人都是信任系統的一部分。