1
雷鋒網AI金融評論按:本文作者為中國信息通信研究院(工信部電信研究院)專家敖萌博士,雷鋒網獨家特約文章,雷鋒網(公眾號:雷鋒網)與信通院子公司泰爾英福聯合首發。未來,敖萌博士原創的區塊鏈系列文章還將繼續刊出,敬請關注!

區塊鏈是一種分布式總賬技術,區塊鏈和傳統的分布式系統之間的關系,一般如下圖所示:

傳統的分布式系統是為了解決單機性能不足,某些應用中需要更大的存儲、更強的計算能力而產生的技術。而區塊鏈則是為了解決各個節點互不信任,又需要協同工作而產生的。
區塊鏈與不同分布式系統的重要區別就是——區塊鏈之間的各節點是通過信任算法而實現相互信任,而一般的分布式系統可以通過信任一個共同的中心來實現相互信任。
區塊鏈的基礎是P2P分布式網絡、加密算法和共識機制。在這些基礎技術中,共識機制是至關重要的。可以說共識機制是區塊鏈技術的核心,共識機制對于一個區塊鏈系統來說就是它的靈魂。共識機制很大程度上決定了整個區塊鏈系統節點間的相互信任程度,也決定了其他使用者對于區塊鏈上數據的信任程度。
從技術上看,區塊鏈與普通分布式系統,尤其是分布式數據庫最大的區別就是“去中心化”,而正是共識機制決定了一個區塊鏈系統“去中心化”的程度。
通常,我們把區塊鏈分為兩大類:一種是公有鏈,一種是非公有鏈。這兩種區塊鏈的核心區別在于:參與共識的節點是否是受控的。
對于公有鏈來說,互聯網上的任何計算機都可以通過運行相應的區塊鏈程序,參與整個區塊鏈的共識;而對于非公有鏈來說,通常需要獲得之前區塊鏈節點中大部分節點的同意,或者通過其他某種機制,獲得參與共識的權力。
對于公有鏈來說,共識機制面臨的最大問題就是:根本不知道有多少個節點在整個區塊鏈系統中。想像一下,一個團隊在做一項決策時——假設需要決策去爬山還是去玩水,每個人都不知道隊伍里面有多少人,每個人該怎么合理的做出自己的決策,以便讓團隊行動一致?
投票確定?別逗了,你都不知道一共有多少人,怎么制作選票、發放選票、最后確定少數和多數?
有一個辦法,把所有人拴在一起。然后想爬山的就往山那邊走,想玩水的就往水那邊走。看看最后整體移動方向是哪兒,你就知道有可能大多數人的選擇,然后跟著走就好了。
在公有鏈中,我們只能通過比較力量或者類似的辦法來進行決策。比較力量的共識機制,我們通常叫它PoW(Proof of Work 工作量證明機制)。
比較力量的共識有一個的缺陷,大家的力氣都耗費在了拼力量中,最后沒勁兒爬山或玩水了。所以,很多人提出了PoS(Proof of Stack 權益證明機制)一類的算法,利用區塊鏈上的Token,將Token轉換為選票來投票決策。(注意,這里Token賬戶數量對應的是系統用戶,而之前說不知道總數是不知道服務器數量。本質上,PoW是在“系統運維人員”之間進行共識,而PoS一類的算法,相當于在“系統用戶”之間進行共識。)這種機制,在公平性上也存在著很多爭議。
對于非公有鏈來說,情況簡單了很多:每個節點都知道總共的節點數,我們只要簡單投票就可以了。但是,誰來組織投票?誰監票誰唱票?
PBFT算法是一個經典的解決這個問題的辦法(詳見本系列第八篇,拜占庭容錯)。PBFT的核心方法就是:每個節點都告訴其他所有節點自己的選票是啥,這樣,就不需要有人組織投票,有人監票和唱票了,每個節點都有其他節點的投票結果,于是每個節點都按照多數票的決議來執行就好了。
人們對于PBFT算法也有關于公平性方面的爭議,對于一個包含有Token的系統,投票的權力和Token無關,導致作惡成本降低,在涉及到Token的重大問題上,可能會由于經濟誘惑而導致作惡節點數量超過算法限制。(也就是說,這是運維人員之間的共識,和用戶關系不大。)
而在沒有拜占庭容錯需求的分布式總賬系統中,還有效率更高的RAFT\PAXOS等算法,但是一般我們認為,沒有拜占庭容錯需求的分布式總賬系統不是區塊鏈系統。因此,這些算法單獨使用的話,并不能作為區塊鏈系統的共識算法。但是,他們可以通過和DPoS等算法結合,發揮重要作用。
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。