區塊鏈分布式系統面臨一致性問題及共識算法的理論知識解析

2020-12-15 電子發燒友

區塊鏈分布式系統面臨一致性問題及共識算法的理論知識解析

工程師周亮 發表於 2018-09-17 09:30:40

共識機制已經成為了目前區塊鏈系統性能提升的關鍵瓶頸。

單一的共識算法均存在各種問題,如PoW算法存在消耗大量計算資源及性能低下的問題,PoS或DPoS存在「富豪統治」問題,融合多種共識算法優勢的想法正受到越來越廣泛的關注。

分布式系統面臨的挑戰

區塊鏈是一個分布式系統,分布式系統碰到的第一個問題就是一致性問題。

在分布式系統中,一致性是指:對於系統中的多個服務節點,給定一系列操作,在協議(往往通過某種共識算法)保障下,試圖使得他們對處理結果達成某種程度的一致。

如果一個分布式系統無法保證處理結果一致的話,那任何建立於其上的業務系統都無法正常工作。

分布式系統面臨的主要挑戰包括:

1)資源受限:節點間的通信需要通過網絡,而網絡存在帶寬限制和時延,節點也無法做到瞬間響應和高吞吐。

2)故障的獨立性:系統的任何一個模塊都可能發生故障,如節點之間的網絡通訊是不可靠的,隨時可能發生網絡故障或任意延遲;節點的處理可能是錯誤的,甚至節點自身隨時可能宕機。

3)不透明性:分布式系統中任何組件所在的位置、性能、狀態、是否故障等情況對於其它組件來說都是不可見的、也無法預知的。

4)並發:分布式系統的目的,是為了更好的共享資源。同步調用會讓系統阻塞,因此節點間通信通常設計成異步的。

5)缺乏全局時鐘:在程序需要協作時,它們通過交換消息來協調它們的動作。緊密的協調經常依賴於對程序動作發生時間的共識,但是,實際上網絡上計算機同步時鐘的準確性受到極大的限制,即沒有一個一致的全局時間的概念。這是通過網絡發送消息作為唯一的通信方式這一事實帶來的直接結果。

由於上述挑戰的存在,分布式系統中的一致性保證機制是分布式系統設計中最關鍵也是最有難度的領域,分布式系統中關於一致性的理論基礎已經比較完善,在理論指導下,學術界和業界都提出了很多的共識算法試圖解決分布式系統中的一致性問題。

接下來我們先來了解一下分布式系統中關於一致性的理論基礎,再基於理論來分析幾個被區塊鏈項目所廣泛採用的一致算法。

共識算法的理論基礎

FLP不可能定理

因為同步通信中的一致性被證明是可以達到的,因此一直有人嘗試各種算法解決異步環境的一致性問題。然而Fischer, Lynch and Patterson三位作者於1985年發表了一篇論文,提出並證明了一個定理,即「FLP不可能定理」:

在網絡可靠,存在節點失效(即便只有一個)的最小化異步模型系統中,不存在一個可以解決一致性問題的確定性算法。

FLP不可能定理論證了最壞的情況是沒有下限,要實現一個完美的容錯的異步的一致性系統是不可能的。

CAP定理

FLP不可能定理只是說明了100%保證一致性是不可能的,這並不影響我們對分布一致性的探索。

例如99%以上的一致性還是完全有可能做到的;又如放寬時間限制,即要求系統在一段時間後最終達到一致性(達不成一致則系統不可用),也是可以做到的;再如,將部分通信改成同步的,犧牲一定的可用性和吞吐量,就能得到一個一致性較強的協議。

CAP定理即描述了分布式系統中關於一致性和可用性的關係:

一個分布式系統最多只能同時滿足(強)一致性(Consistency)、可用性(Availability)和分區容錯性(Partition tolerance)這三項要素中的兩項。

CAP定理起源於計算機科學家埃裡克·布魯爾在2000年的分布式計算原則研討會(Symposium on Principles of Distributed Computing(PODC))上提出的一個猜想。在2002年,麻省理工學院(MIT)的Nancy Lynch (跟證明FLP定理的Lynch是同一位)和Seth Gilbert發表了布魯爾猜想的證明,使之成為一個定理。

對於分布式數據系統,分區容錯性是基本要求,因為故障的存在是必然的。因此設計分布式數據系統,就是在一致性和可用性之間取一個平衡。

拜佔庭將軍問題

拜佔庭將軍問題(Byzantine Generals Problem),是由萊斯利·蘭波特在其同名論文中提出的分布式對等網絡通信容錯問題,對網絡中存在作惡節點的情況進行建模。由於作惡節點的存在,拜佔庭將軍問題被認為是容錯性問題中最難的問題類型之一。

萊斯利·蘭波特在其論文中描述了如下問題:

一組拜佔庭將軍分別各率領一支軍隊共同圍困一座城市。為了簡化問題,將各支軍隊的行動策略限定為進攻或撤離兩種。因為部分軍隊進攻部分軍隊撤離可能會造成災難性後果,因此各位將軍必須通過投票來達成一致策略,即所有軍隊一起進攻或所有軍隊一起撤離。因為各位將軍分處城市不同方向,他們只能通過信使互相聯繫。在投票過程中每位將軍都將自己投票給進攻還是撤退的信息通過信使分別通知其他所有將軍,這樣一來每位將軍根據自己的投票和其他所有將軍送來的信息就可以知道共同的投票結果而決定行動策略。

但問題在於,將軍中可能出現叛徒,他們不僅可能向較為糟糕的策略投票,還可能選擇性地發送投票信息。假始那些忠誠(或是沒有出錯)的將軍仍然能通過多數決定來決定他們的戰略,便稱達到了拜佔庭容錯。在此,票都會有一個默認值,若消息(票)沒有被收到,則使用此默認值來投票。

上述的故事映射到計算機系統裡,將軍便成了計算機,而信差就是通信系統。雖然上述的問題涉及了電子化的決策支持與信息安全,卻沒辦法單純的用密碼學與數字籤名來解決。因為不正常的電壓仍可能影響整個加密過程,這不是密碼學與數字籤名算法在解決的問題。因此計算機就有可能將錯誤的結果提交去,亦可能導致錯誤的決策。

在分布式對等網絡中需要按照共同一致策略協作的成員計算機即為問題中的將軍,而各成員計算機賴以進行通訊的網絡鏈路即為信使。拜佔庭將軍問題描述的就是某些成員計算機或網絡鏈路出現錯誤、甚至被蓄意破壞者控制的情況。

DSS猜想

不同於中心化的分布式系統,去中心化是區塊鏈系統的一個核心特性。去中心化的系統中,為了保證數據可信,需要所有節點參與共識、避免被攻擊(如51%攻擊)、任何節點都要有能力驗證交易的合法性、所有交易要按順序執行和驗證、所有節點都要保存所有的交易數據等。

在分布式系統中,可擴展性是指系統的總體性能隨著節點的增多而提升。在中心化的分布式系統設計中,可擴展性是的、最基本要求之一。對於中心化的系統,要保證可擴展性也是相對簡單的。

而去中心化的全量共識和存儲的要求,是難以擴展的。因為若要可擴展性,就不能要求節點執行全量、全量存儲,而是要分散計算和存儲,每個節點只保存部分數據,即每個交易數據只存儲在少數節點中,但這樣一來,安全性就無法保證,因為攻擊者只要攻擊少數節點,即能控制區塊數據。例如數據分成100份保存在不同節點,那攻擊者只要實施1%攻擊,即能控制其中1份區塊數據,攻擊難度大大降低。

由於去中心化的要求,區塊鏈的分布式系統也有自身特有的理論,其中一個描述了去中心化與可擴展性之間的矛盾,它尚未被嚴格證明,只能被稱為猜想,但實際系統設計過程中卻能感覺到時時受其挑戰:

DSS猜想:去中心化(Decentralization),安全性(Security)和可擴展性(Scalability)這三個屬性,區塊鏈系統最多只能三選其二。

上圖演示了區塊鏈如何在這三個因素之間作選擇及對應的策略:

若要滿足安全性與去中心化,則需要所有節點參與共識、計算、全量存儲,但由此帶來的問題是失去可擴展性,也就是系統的總體性能無法隨著節點的增多而提升;

若要滿足可擴展性與安全性,則需要中心化管理,需要保證參與共識的節點是可信的;

若要滿足可擴展性與去中心化,則採用分散存儲、計算的策略,不做全量共識,則攻擊網絡的難度降低,安全性難以保證。

共識算法應該滿足的條件

儘管算法多種多樣,可以根據需要採用各種策略,但大家公認的理想的共識算法應該滿足的條件包括:

1) 可終止性(Termination):一致的結果在有限時間內能完成;

2) 共識性(Consensus):不同節點最終完成決策的結果應該相同;

3) 合法性(Validity):決策的結果必然是其它進程提出的提案。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 淺談區塊鏈分布式一致性算法 ,和「唐盛鏈」GEAR共識機制
    目前,儘管區塊鏈上的共識機制有很多種,但沒有一種是完美無缺的,這也就意味著沒有一種是適合所有應用場景的。本文重點介紹傳統分布式一致性算法,並結合國內自主研發的創新型區塊鏈共識機制「唐盛鏈」(唐盛,代表其研發機構:唐盛(北京)物聯技術有限公司),為有關機構研發區塊鏈應用提供參考。
  • 區塊鏈系統架構核心簡析:一致性與共識機制
    區塊鏈系統,首先是一個分布式系統。傳統單節點結構演變成分布式系統,碰到的首要問題就是一致性的保障。在很多時候,一致性會與共識放在一起討論,但嚴謹地講,兩者含義並不完全相同。一致性往往指分布式系統中多個副本對外呈現的數據的狀態。如順序一致性、線性一致性,描述的是多節點對數據狀態的維護能力。而共識則描述的是分布式系統中多個節點之間,彼此對某個目標所達成的一致結果。總的來說,一致性代表的是一種結果狀態,而共識則是一種手段。達成共識並不意味著保障了一致性。
  • 什麼是區塊鏈共識算法?
    區塊鏈系統的本質就是一個分布式應用軟體。分布式系統的首要問題就是如何解決一致性的問題,也就是如何在多個獨立的節點之間達成共識。在有錯誤的進程存在並且有可能出現網絡分區的情況下,FLP 定理徹底關閉了在傳統計算機算法體系下提出解決方案的大門。
  • 解密區塊鏈最強心臟 迅雷鏈共識算法詳解
    11 月 10 日在廣州貝塔咖啡舉辦的迅雷鏈技術沙龍上,迅雷鏈底層工程師張驍就迅雷鏈共識算法的內在細節,向到場的開發者和區塊鏈愛好者做了詳細解讀。DPoA+PBFT的算法保證了分布式系統中的強一致性和高效率共識,吸引了在場來賓的關注。什麼是共識算法?
  • 區塊鏈共識算法的比較:Casper vs Tendermint
    1982年,拜佔庭將軍問題首次被Lamport,Shostak和Pease提出。Cosmos的Ethan Buchman這樣描述它:」這是一個在可妥協的通信網絡中實現分布式協議的問題,也就是在不可靠的環境中建立一個可靠的系統的問題「。
  • 萬字長文講透區塊鏈安全問題:研究現狀與展望
    PoW 等共識機制能有效解決拜佔庭將軍問題, 允許節點數量擴展, 在部分節點偏離協議執行甚至實施惡意攻擊的情況下, 仍能保證一致性. 而大多數Paxos 系列的分布式一致性算法並不考慮拜佔庭將軍問題[10—11], 在惡意節點實施主動攻擊時, Paxos 算法無法保證消息傳輸的一致性.
  • 淺談區塊鏈主流的共識算法
    淺談區塊鏈主流的共識算法 盛合區塊鏈 發表於 2020-02-04 14:36:24 在每種偉大的加密貨幣背後,都有著一個偉大的共識算法。
  • 區塊鏈中的PoC共識算法是什麼意思?
    在私有化資產方面,共識算法又能夠同時滿足數字資產全球化流通、私有化確權、私密化保護三大需求,解決數據侵權、數據安全、數據壟斷三大問題。1)公平區塊鏈系統中公平性的一個重要指標就是小礦工投入的資源與收益比例是否和大礦主相當。在PoC共識算法中,容量空間的證明是分散的,一個礦工提供的容量和它所得的收益是線性相關的。因此,基於PoC共識算法進行挖礦,其收益只與容量的空間相關,與礦工的規模效應無關。區塊鏈系統中公平性的另一指標就是,礦工挖礦設備的資金投入與實際收益的比值較為穩定。
  • 吳桐:區塊鏈共識機制的經濟學分析
    狹義上的區塊鏈共識機制是指算法共識,算法共識旨在通過機器語言和機制設計解決兩個核心問題 :第一,誰有權利寫入數據 ;第二,在分布式帳本中其他節點如何同步數據。鏈下共識包括決策共識和市場共識,又被稱為「人的共識」。[2][3] 釐清區塊鏈三種類型的共識機制之間的內涵和聯繫,具有重要的理論和現實意義。(一)區塊鏈的算法共識機制區塊鏈的算法共識是通過機器語言編程的算法解決「誰有權利寫入數據」和「在分布式帳本中其他節點如何同步數據」這兩個核心問題。
  • 成都信息工程大學的區塊鏈工程成全國首個區塊鏈工程本科專業
    「區塊鏈工程」專業相關負責人在接受科技日報記者採訪時表示,該專業旨在培養掌握計算機科學與技術基礎知識、區塊鏈技術基本理論和區塊鏈項目開發方法,具有區塊鏈系統設計與實現能力、區塊鏈項目管理與實施能力和在實際應用環境下構思、設計、實施、運行系統的能力,未來能在區塊鏈項目系統設計開發、區塊鏈項目管理、區塊鏈系統服務等領域發揮創新紐帶作用的應用型高級專門人才
  • 區塊鏈與分布式帳本技術(下)
    前言:區塊鏈是一種分布式帳本的技術,但它又不完全等同於分布式帳本技術。它們有什麼區別?本文作者Brent Xu 通過比較以太坊、Hyperledger Fabric和R3 Corda來闡述這個問題,對於我們認識區塊鏈和分布式帳本技術有幫助。本文來源於media.consensys.net,由藍狐筆記社群「Anthony」翻譯。
  • 區塊鏈加密機制的不同算法及其原理解析
    當全網有一位礦工哈希出nonce時,他就會把自己打包的區塊公布出去,其他節點收到區塊驗證區塊後就會一致性認為這個區塊接到了區塊鏈上,就繼續進行下一個區塊的打包和哈希計算。在這個過程中,中本聰是通過算力的比拼犧牲了一部分最終一致性(因為會有分叉的產生)並且需要等待多個確認,但是這種簡單暴力的方法卻保證了整個區塊鏈系統的合法性,而且把區塊鏈系統的健壯性提升到極致,就算全網只剩下一個節點運行,這個區塊鏈系統還是會繼續運行下去。 最後POW也充分提高了區塊鏈系統的安全性,依靠51%攻擊理論去破壞區塊鏈系統是在以往被認為只有政府或者瘋子才會採取的方法。
  • 從「山東學籍頂替」 事件,看分布式學籍一致性問題
    建設基於區塊鏈技術的教育學籍鏈網絡利用區塊鏈技術分布式協調機制在中小學學籍管理機構、考籍管理機構、高校、全國高等教育學籍學歷管理機構、社會培訓機構、就業指導中心、事業和企業單位等分布式實體之間,建立自動化協調一致性的「一人一生一號」學籍學歷檔案管理體系。
  • 通過《金融分布式帳本技術安全規範》看區塊鏈技術行業應用發展趨勢
    全文對於加密算法、軟硬體部署、運維等都給予了明確標準要求,但對區塊鏈核心技術路線則給予了比較寬鬆的環境,這也是考慮到目前區塊鏈技術還處於初級階段,特別是在共識效率提升、零知識證明等技術方面都還有很大的未知變化。總體上看,該規範不光是為金融級區塊鏈技術發展提供了安全標準指引,同時也為區塊鏈技術在其他行業的標準化提供了參考和借鑑。
  • 分布式商業公鏈BitCherry BCHC項目詳解(二):aBFT+PoUc共識算法
    但利用區塊鏈技術賦能各領域商業的同時,也發現了當前商業級區塊鏈項目及區塊鏈技術存在的一些不足,如大多數區塊鏈系統採用單鍊表結構,鏈上商業應用的隱私安全性均受限於單鏈的性能;而部分提出了多鏈系統結構的公鏈項目,由於單純的多鏈結構之間跨鏈互通操作性低,又導致其鏈上應用無法滿足小金額、多頻次的商業需求,間接導致傳統用戶群和商業機構無法有效銜接,出現流動性弱的問題;以及現有區塊鏈缺乏有效監管手段所帶來的用戶信任度低等問題
  • 信通院王蘊韜:對區塊鏈的認識存在五大誤解
    ,其規則執行是分布式的,但制定是集中的;第二,區塊鏈只能對數據一致性達成共識;第三,區塊鏈不是產生信任的機器,其只能傳遞信任,但無法保證源頭是否造假;第四,區塊鏈並非不可篡改,但其篡改難度極高;第五>,從理論上講,區塊鏈什麼數據都可以存,但成本很高,存儲所有數據並不實際。
  • 區塊鏈去中心化的具體含義是什麼
    從治理上看,區塊鏈通過共識算法使得少數人很難控制整個系統,因此是治理去中心化的。架構和治理上的去中心化為區塊鏈帶來三個好處:容錯性、抗攻擊力和防合謀。 區塊鏈與傳統分布式系統的5點區別 作為一種全新種類的分布式系統,區塊鏈往往被錯誤地當作是一個分布式的資料庫或日誌系統,實際上區塊鏈與傳統的分布式系統之間有著本質的區別——去中心化。
  • 區塊鏈的常識之,什麼是區塊鏈,PooI驗證池機制
    專業科普Pool驗證池基於傳統的分布式一致性技術建立,並輔之以數據驗證機制,是目前區塊鏈中廣泛使用的一種共識機制。中文名 驗證池機制 外文名 Verify the pooling定 義 分布式一致性技術+數據驗證機制屬 性 區塊鏈中廣泛使用的一種共識機制 應用學科
  • 社交電商+區塊鏈?SEC是社交信任與共識算法的結合
    SEC,以社交信任為基礎的下一代電商區塊鏈協議,是全球第一個以促進電商社交化的區塊鏈系統。SEC本質上通過分布式記帳交易關係和信任背書建立電商個體的信任基礎,並以此作為共識的基礎。SEC主鏈可用於商品交易,二手商品買賣,虛擬商品買賣,商品股權,商品眾籌等領域。
  • 幣贏潛力區KBL|基於卡巴拉算法新一代共識機制
    區塊鏈解決了在不可信信道上傳輸可信信息、價值轉移的問題,而共識機制解決了區塊鏈如何分布式場景下達成一致性的問題。其偉大之處就是它的共識機制在去中心化的思想上解決了節點間互相信任的問題,隨著比特幣市值的不斷擴大,共識算法的革新及改良也在不斷進行中。