從共識演算法到Token經濟學

買賣虛擬貨幣
引言:美東時間2月14日,也就是情人節那天,美國眾議院召開第二次區塊鏈聽證會,主題為“超越比特幣:區塊鏈技術新興應用”,有人認為這意味著關於區塊鏈技術大規模應用的“美國共識”正在形成,包括擁抱技術、不要封殺、區塊鏈必須開放等等,這是超越於區塊鏈技術層面的“共識機制”。那今天,我們就從區塊鏈技術層面的共識演算法說起,這可謂是的靈魂。

區塊鏈系統首先是分散式系統,分散式領域最為基礎的問題就是一致性問題。


所謂一致性,是指對於分散式系統中的多個節點,給定一系列操作,在約定協議的保障下,它們對處理結果達成認同。分散式環境裡要求多點資料是一致的,即資料要完整、要同步。通常資料庫中存在的“髒資料”就屬於資料缺乏一致性的表現,而在分散式系統中常出現的不一致情況是讀寫資料時缺乏一致性,比如一個節點寫操作之後沒有對與其有資料冗餘的另一個節點進行資料更新,這樣讀取另一個節點時就會出現資料不一致問題。有限狀態機是有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型,其特點是狀態總數有限,任一時刻只處於一種狀態中,某種條件下,會從一種狀態轉變到另一種狀態。從有限狀態機的角度來看一致性,也即各個節點構成相同的有限狀態機,給定相同的初始狀態和輸入序列,保證在處理過程中每個環節的結果都相同。

如果分散式系統能夠實現一致性,對外就可以呈現出一個完美的、可擴充套件的“虛擬節點”,這也是分散式系統希望實現的最終目標。 區塊鏈系統由非常多的分散節點組成,對於加入區塊鏈的新內容,大多數節點必須達成一致才能成功寫入,這種共識機制保證了網路安全,讓篡改內容變得非常困難。

一致性與共識之間是結果和手段的關係

人們常常把一致性與共識混為一談,實際上一致性描述的是結果狀態,共識則是一種手段。一致性一般是指分散式系統中多個副本對外呈現的資料的狀態,共識則描述了分散式系統中多個節點之間,對某個狀態達成一致結果的過程。 要保障系統滿足不同程度的一致性,往往需要共識演算法來達成。共識演算法解決的是對某個提案達成一致意見的過程,這裡的提案可以指任何能達成一致的資訊。

FLP不可能原理是共識演算法的理論界限

1985年,Fischer、Lynch和Patterson提出了FLP不可能原理,它是分散式領域裡的測不準原理,指的是在網路可靠,但允許節點失效的最小化非同步模型中,不存在一個可以解決一致性問題的確定性共識演算法。這裡的非同步與同步相對,指的是系統中各節點可能存在較大的時鐘差異,同時訊息傳輸時間和各節點處理訊息的時間可能都是任意長的,這樣就無法判斷某個訊息遲遲未被響應到底是哪裡出了問題。

利用CAP之不可能三角用一方面的妥協保證另一方面

2000年7月,加州大學伯克利分校的Eric Brewer提出CAP猜想,2年後麻省理工學院的Seth Gilbert和Nancy Lynch從理論上證明了CAP,之後其正式成為分散式計算領域的公認定理。分散式計算系統不可能同時確保以下三個特性:C(一致性)、A(可用性)和P(分割槽容錯性)。區塊鏈系統中使用共識演算法優先保證整個系統的容錯能力。


拜占庭將軍問題是允許少數節點作惡時達成一致性的問題

1982年,Leslie Lamport等提出一個用來解釋一致性問題的虛構模型——拜占庭將軍問題,這是一個在不可靠的環境中建立一個可靠系統的問題。拜占庭是古代東羅馬帝國的首都,想要進攻一個強大的敵國,為此派出了10支軍隊去包圍它。敵國的軍事力量足以抵禦5支拜占庭軍隊的同時襲擊。因此任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊同時襲擊才能攻下敵國。由於地域廣大,守衛邊境的將軍們需要透過信使來傳遞訊息,達成進攻意向及進攻時間的共識。但將軍並非都是忠誠的,其中可能有叛徒存在,叛徒可能擅自變更進攻意向或者進攻時間,故意干擾共識的達成。在這種情況下,如何保證忠誠的將軍們能達成行動上的一致性,贏取戰鬥?這就是拜占庭將軍問題。 從1982年到1999年,都無人能夠真正創造一個可以解決拜占庭將軍問題的系統。


共識演算法分CFT和BFT兩大類,BFT又分為確定性演算法和概率演算法

在傳統的資料庫和分散式系統領域,對資料一致性的研究已經非常多,但在區塊鏈出現之前,很少有系統有上萬個節點要同步,同時在傳統的分散式網路中,各個節點也不會因為貪圖利益故意偽造資訊,很多情況下是由於網路的原因而掉線或傳送錯誤訊息。因此,可根據要解決的問題是普通錯誤還是拜占庭將軍問題,將共識演算法分為CFT(Crash Fault Tolerance)和BFT(Byzantine Fault Tolerance),CFT已有一些經典的解決演算法,包括Paxos、Raft及其變種等,其中Paxos演算法1990年由Leslie Lamport提出,被廣泛應用於Google的Chubby Lock中,而Chubby Lock後面則被應用於Google的核心設計Bigtable中。

而BFT則是在區塊鏈系統中常用的共識演算法,分為PBFT(Practical Byzantine Fault Tolerance)為代表的確定性系列演算法和工作量證明(PoW)為代表的概率演算法。對於確定性演算法,一旦達成對某個結果的共識就不可逆轉,即共識是最終結果;而對於概率性演算法,共識結果則是臨時的,隨著時間推移或某種強化,共識結果被推翻的概率越來越小,成為事實上的最終結果。

確定性演算法PBFT降低了演算法複雜度,適合聯盟鏈

1999年,Castro和Liskov在論文中提出PBFT演算法,解決了以往拜占庭問題的解決方案複雜度過高的缺點,將演算法複雜度從指數級降到多項式級。PBFT演算法中,如果有超過2/3的節點正常,整個系統就能正常工作,其特點有三,一是共識各節點由業務的參與方或監管方組成,安全性與穩定性由業務相關方保證。二是共識的時延基本達到商用實時處理的要求。三是共識效率高,可滿足高頻交易量的需求。 非常適合聯盟鏈的應用場景。但其前提仍是依靠法定多數,一個節點一票,少數服從多數,這在開放生態的公有鏈中,存在很大的問題。

概率演算法PoW透過引入激勵機制和隨機性提供解決新思路

對PoW最簡單的理解就是按勞分配、多勞多得,其協議如下,首先向所有節點廣播新的交易,每個節點把收到的交易放進區塊中,每一輪中透過解出數學題找到隨機數的方式決定勝出的節點,由它廣播其所保有的區塊,其他節點在驗證區塊中所有交易正確無誤後接受該區塊,其他節點將該區塊的雜湊值放入下一個它們建立的區塊中,表示承認這個區塊的正確性。節點們總是以最長的鏈為合法的鏈,並努力去延長這條鏈。


可以說區塊鏈系統是技術和人性的結合,引入激勵機制讓節點維護一致性。為了更容易理解,可以參考我們熟悉的市場經濟,市場經濟是一個典型的去中心化系統,參與市場經濟的每個主體都在遵守商業規則的基礎上,按照實現自己利益最大化的原則行事,同時在客觀上推動了整個市場的繁榮,這就是凱恩斯所說的“看不見的手”;而PoW則構造了一個以競爭-記賬-獎勵為核心的正向迴圈的經濟系統,解決了去中心化記賬問題,每個節點只需根據自身利益行事,出於“自私”(得到獎勵)的目的進行記賬權的競爭,最終造就了保護系統安全的龐大算力。

在拜占庭問題中,決定下一步的行動計劃,不能像在中心化系統中,由權威大的做決定,因此引入了隨機性,即爭奪決定權,誰的計算力強,誰就可以做決定(記賬)。此外,拜占庭問題之所以難解,在於任何時候系統中都可能存在多個提案,因為提案成本很低;並且難以完成最終一致性的確認,極易被幹擾。PoW演算法對此做了兩點改進:一是增加提案成本,限制一段時間內網路中的提案數;二是放寬對最終一致性確認的需求,約定好大家都確認並沿著已知的最長鏈進行拓展。系統的最終確認是概率意義上的。對於公有鏈來說,PoW應該是最優演算法。

更進一步,想要改變一個系統,上策就是尋求形成共識,構建利益共同體

共識機制在中實現了更有彈性的協作方式。最近流行的Token經濟學其核心也就是形成利益共同體,合作共贏。它可以解決市場交易成本問題,其設計的核心理念,是把原來系統中分散的交易成本集約起來,用技術手段把收益分到系統中每個參與者,使系統整體摩擦力不斷下降,從而使Token內在價值不斷上升。透過設計合理的Token機制,調動參與者的積極性,從而形成良好的生態組織,不論其服務於哪個領域,最終一起構建了區塊鏈的生命體(就像阿西莫夫筆下的蓋婭一樣),本質上是協同進化,構建更強大的利益共同體。

再往遠了說,對於人類社會這個更大的組織系統來說也是一樣,有句話叫“團結就是力量”,真正的團結應該是在某種共識的基礎上,一個系統裡所有人各自的小目標和系統的大目標達成了一致。比如說,中國共產黨在抗戰時團結一切力量,就是透過形成抗擊日本侵略者這個共識;而習總書記提出的共同構建人類命運共同體,也是一個更高層次的共識,最符合全球人類的願望和根本利益。

來源:公眾號(智慧之河)

更多區塊鏈數字貨幣資訊:http://www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;