FLP 不可能原理(FLP impossibility):在網絡可靠,存在節點失效(即使只有一個)的最小化異步模型系統中,不存在一個能夠解決一致性問題的肯定性算法。1985年 FLP 原理實際上說明對於容許節點失效狀況下,純粹異步系統沒法確保一致性在有限時間內完成。 科學告訴你什麼是不可能的;工程則告訴你,付出一些代價,我能夠把它變成可能。算法
CAP 原理最先由 Eric Brewer 在 2000 年,ACM 組織的一個研討會上提出猜測,後來 Lynch 等人進行了證實。數據庫
分佈式計算系統不可能同時確保一致性(Consistency)、可用性(Availability)和分區容忍性(Partition),設計中每每須要弱化對某個特性的保證。安全
弱化一致性
對結果一致性不敏感的應用,能夠容許在新版本上線後過一段時間才更新成功,期間不保證一致性。
例如網站靜態頁面內容、實時性較弱的查詢類數據庫等,CouchDB、Cassandra 等爲此設計。
弱化可用性
對結果一致性很敏感的應用,例如銀行取款機,當系統故障時候會拒絕服務。MongoDB、Redis 等爲此設計。
Paxos、Raft 等算法,主要處理這種狀況。
弱化分區容忍性
現實中,網絡分區出現機率減少,但較難避免。某些關係型數據庫、ZooKeeper 即爲此設計。
實踐中,網絡經過雙通道等機制加強可靠性,達到高穩定的網絡通訊。 服務器
當多個主機經過異步通信方式組成網絡集羣時,這種異步網絡默認是不可靠的,那麼在這些不可靠主機之間複製狀態須要採起一種機制,以保證每一個主機的狀態最終達成相同一致性狀態,取得共識。
爲何認爲異步網絡默認是不可靠的?這是根據FLP原理。Impossibility of Distributed Consensus with One Faulty Process一文提出:在一個異步系統中咱們不可能確切知道任何一臺主機是否死機了,由於咱們沒法分清楚主機或網絡的性能減慢與主機死機的區別,也就是說咱們沒法可靠地偵測到失敗錯誤。可是,咱們還必須確保安全可靠。網絡
達成共識越分散的過程,其效率就越低,但滿意度越高,所以也越穩定;相反,達成共識越集中的過程,效率越高,也越容易出現獨裁和腐敗現象。架構
達成共識經常使用的一種方法就是經過物質上的激勵以對某個事件達成共識;可是這種共識存在的問題就是容易被外界其它更大的物質激勵所破壞。
還有一種就是羣體中的個體按照符合自身利益或整個羣體利益的方向來對某個事件自發地達成共識;固然造成這種自發式的以維護羣體利益爲核心的共識過程仍是須要時間和環境因素的,可是一旦達成這樣的共識趨勢,其共識結果也越穩定,越不容易被破壞。 框架
Paxos 問題是指分佈式的系統中存在故障,但不存在惡意節點場景(便可能消息丟失或重複,但無錯誤消息)下的共識達成問題。由於最先是1990年 Leslie Lamport 用 Paxon 島的故事模型來進行描述而命名。
Paxos過於晦澀難懂,和難以實現,以後有出現了各類改進算法:Egalitarian Paxos、Hydra、Fast Paxos、Ios、VRR(Viewstamped Replication Revisited)、 Multi-Paxos、Raft等
Raft 算法是Paxos 算法的一種簡化實現,2013年才問世。
Paxos是一種無領導人Leaderless算法,而Raft算法是一種強領導力Leadership的算法。less
拜占庭將軍問題是一個共識問題: 首先由Leslie Lamport與另外兩人在1982年提出,被稱爲The Byzantine Generals Problem或者Byzantine Failure。核心描述是軍中可能有叛徒,卻要保證進攻一致,由此引伸到計算領域,發展成了一種容錯理論。異步
Lamport的論文中講了這樣一個故事:分佈式
拜占庭帝國想要進攻一個強大的敵人,爲此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵禦5支常規拜占庭軍隊的同時襲擊。基於一些緣由,這10支軍隊不能集合在一塊兒單點突破,必須在分開的包圍狀態下同時攻擊。他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通訊兵相互通訊來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不肯定他們中是否有叛徒,叛徒可能擅自變動進攻意向或者進攻時間。在這種狀態下,拜占庭將軍們可否找到一種分佈式的協議來讓他們可以遠程協商,從而贏取戰鬥?這就是著名的拜占庭將軍問題。
而容易與拜占庭將軍問題混爲一談的是兩軍問題。兩軍問題描述了這樣一個故事:
白軍駐紮在溝渠裏,藍軍則分散在溝渠兩邊。白軍比任何一支藍軍都更爲強大,可是藍軍若能同時協力進攻則可以戰勝白軍。他們不可以遠程的溝通,只能派遣通訊兵穿過溝渠去通知對方藍軍協商進攻時間。是否存在一個能使藍軍必勝的通訊協議,這就是兩軍問題。
看到這裏您可能發現兩軍問題和拜占庭將軍問題有必定的類似性,但咱們必須注意的是,通訊兵得通過敵人的溝渠,在這過程當中他可能被捕,也就是說,兩軍問題中信道是不可靠的,而且其中沒有叛徒之說,這就是兩軍問題和拜占庭將軍問題的根本性不一樣。因而可知,大量混淆了拜占庭將軍問題和兩軍問題的文章並無充分理解二者。
針對拜占庭將軍問題,目前業界比較經常使用的是PBFT算法。
PBFT是Practical Byzantine Fault Tolerance的縮寫,意爲實用拜占庭容錯算法。該算法是Miguel Castro (卡斯特羅)和Barbara Liskov(利斯科夫)在1999年提出來的,解決了原始拜占庭容錯算法效率不高的問題,將算法複雜度由指數級下降到多項式級,使得拜占庭容錯算法在實際系統應用中變得可行。
這個算法在保證活性和安全性的前提下提供了(n-1)/3的容錯性,也就是節點數須要達到3f+1個節點才能容錯f個節點。
以4個節點組成的分佈式網絡爲例,PBFT算法的節點間網絡通訊如圖所示:
從上圖咱們能夠看出,PBFT算法下,網絡通訊的複雜度達到了O(n²),這也就意味着,PBFT網絡節點不能太多,若是節點太多將會形成網絡風暴,使得整個網絡堵塞。
咱們平時說的CFT就是Crash Fault Tolerant的簡寫,是無惡意節點的狀況下的容錯,經常使用的共識算法有: Paxos、Raft
而BFT就是Byzantine Fault Tolerant的簡寫,是有惡意節點的狀況下的容錯,經常使用的共識算法有:PBFT、POW
Proof of Work,工做證實相關理念最先於1993年被Cynthia Dwork和Moni Naor提出,以後的幾年,該概念在是否能有效對抗拒絕服務攻擊的爭論中不斷被人們所知。PoW機制的核心在於強迫攻擊者做出必定量的工做才能進行接下來的交互操做,這樣無形中就給攻擊者提升了攻擊的成本。天然而然的,攻擊者須要完成的工做能夠按消耗的計算機資源種類分爲如下三大類:
POW做爲數字貨幣的共識機制於 1998 年在 B-money 設計中提出。2008年中本聰發表比特幣白皮書,比特幣採用POW共識,經過計算來猜想一個數值(nonce),得以解決規定的 Hash 問題(兩次SHA256)。保證在一段時間內,系統中只能出現少數合法提案。 同時,這些少許的合法提案會在網絡中進行廣播,收到的用戶進行驗證後會基於它認爲的最長鏈上繼續難題的計算。所以,系統中可能出現鏈的分叉(Fork),但最終會有一條鏈成爲最長的鏈。
Hash 問題具備不可逆的特色,所以,目前除了暴力計算外,尚未有效的算法進行解決。反之,若是得到符合要求的 nonce,則說明在機率上是付出了對應的算力。誰的算力多,誰最早解決問題的機率就越大。 當掌握超過全網一半算力時,從機率上就能控制網絡中鏈的走向。這也是所謂 51% 攻擊的由來。
因爲比特幣採用的是比較簡單的SHA256哈希算法做爲POW共識算法,這個算法只消耗CPU資源,對內存要求不高,因此能夠很容易被製造出ASIC芯片。這是比特幣挖礦芯片的更新換代圖:
而如今,比特幣的挖礦都變成了這樣子:大量ASIC礦機組成的礦場。
這樣算力就愈來愈集中到了大礦主手裏,普通用戶使用電腦根本不可能挖到礦,這與中本聰當年設想的人人都能公平記帳的願景相違背。爲此,人們設計了各類反ASIC化的方案。主要思想就是將POW算法改的很複雜,須要大量的內存,這樣ASIC芯片是不可能集成大量內存進去的,從而沒法制造出專門的挖礦芯片。比較有代碼的改進方案有:
可是實際上,只要利益足夠大,人們總可以設計出專門POW挖礦的礦機,萊特幣礦機和達世幣礦機前後被製造了出來,以太坊以前也頂可能是使用顯卡挖礦,最近比特大陸也研發出了專門進行以太坊挖礦的專業礦機「螞蟻礦機E3。具體能夠參考這個新聞:http://t.cj.sina.com.cn/articles/view/1181714847/466f899f001007d4h
中本聰爲了解決拜占庭共識問題,在比特幣系統中引入競爭挖礦的機制。同時,爲了保證最大可能的公平性,採用了基於哈希運算的PoW共識機制。礦工若是想要獲得一個合法的區塊,則必須向區塊頭中填入不一樣的隨機值,而後計算出區塊頭的哈希值,使得獲得的哈希值小於目標值。這樣,礦工在不斷尋找合適隨機值的過程當中完成了必定的工做量。能夠發現,礦工完成的這個工做量對於現實社會毫無心義。惟一的意義就是保障了比特幣的安全性。
這是最新的比特幣歷史算力曲線,如今的算力已經至關驚人,這樣就意味着,後面後200多萬臺專業的比特幣礦機在運行!!!
有人作了個估算,其耗電量比伊朗整個國家的耗電量還大。
比特幣的POW算法是沒有任何實際意義的SHA256運算,那麼有沒有可能在挖礦的同時,把這些算力算出一些副產物?如下是幾個比較有名的進行有效工做量證實的區塊鏈:
POW算法畢竟是要靠大量資源的消耗來保證共識的達成,有沒有徹底不須要靠計算機資源堆砌來保證的共識機制呢?在2011年,一個名爲Quantum Mechanic的數字貨幣愛好者在Bitcointalk論壇提出Proof-of-Stake(POS)證實機制,該機制被充分討論以後證實具備可行性。若是說POW主要比拼算力,算力越大,挖到一個塊的機率越大,POS則是比拼餘額,通俗說就是本身的手裏的幣越多,挖到一個塊的機率越大。
POS共識算法存在一個漏洞,就是鼎鼎大名的Nothing-at-Stake攻擊(常寫做N@S)。
假設系統中出現了兩個分支鏈,那麼對於持有幣的」挖礦者「來說,最佳的操做策略就是同時在兩個分支上進行「挖礦」,這樣,不管哪一個分支勝出,對幣種持有者來說,都會得到本屬於他的利益,即不會有利益損失。並且因爲不須要算力消耗,所以PoS中在兩個分支上挖礦是可行的。這致使的問題是,只要系統存在分叉,「礦工們」都會同時在這幾個分支上挖礦;所以在某個狀況下,發起攻擊的分叉鏈是極有可能成功的,由於全部人也都在這個分叉鏈上達成了共識;並且甚至不用持有51%的幣量,就能夠成功發起分叉攻擊。而這在PoW中是不可行的,由於挖礦須要消耗算力,礦工只能在一個分支上進行挖礦。因此在實際POS算法中,還須要加入一些懲罰機制,若是礦工被發現兩個分支同時挖礦,就會進行懲罰。
Peercoin(點點幣,PPC)於2012年8月發佈,最大創新是其採礦方式混合了POW工做量證實及POS權益證實方式,其中POW主要用於發行貨幣,將來預計隨着挖礦難度上升,產量下降,系統安全主要由POS維護。目前區塊鏈中存在兩種類型的區塊,POW區塊和POS區塊。PPC的做者爲一樣不肯意公開身份的密碼貨幣極客Sunny King,同時也是Primecoin的發明者。
2013年9月,一個名爲BCNext的用戶在Bitcointalk論壇發起一個帖子,宣佈將發行一種全新的純POS幣種,後來取名爲Nextcoin,簡稱NXT。Nxt是且是第一個100%的股權證實(PoS)機制的電子貨幣,Nxt再也不經過消耗大量的資源「挖礦」產生新貨幣,而是經過現有帳戶的餘額去「鍛造」區塊,並給與成功「鍛造」區塊的帳戶交易費用獎勵。NXT的POS實現方式與PPC徹底不一樣,合格區塊斷定方法爲:
hit < baseTarget * effectiveBalance * elapseTime
hit是根據最新區塊和用戶的私鑰生成的值,用戶在挖一個區塊時只須要計算一次便可。而右邊的值跟帳戶餘額成正比,跟流逝的時間成正比。也就意味着,用戶帳戶餘額越多,挖到礦的概率越高,隨着時間的流逝越久,越容易找到新的區塊。NXT區塊的生成徹底摒棄了競爭的理念,有點「上帝早已安排好一切」的味道,下一個區塊由誰來生成冥冥中早就註定了,全網節點能作的就是靜靜等待那一刻的到來。
POS的本質就是比誰的錢多,錢越多越容易挖到區塊,這將會形成富者越富,資源愈來愈集中,從而變得更中心化。
針對POW、POS的效率低和會變得愈來愈中心化的問題,BM在2013年8月啓動的比特股BitShares項目則採用了DPOS共識算法。
比特股核心帳本採用石墨稀技術,對交易容量和區塊速度有極高要求,顯然POW或POS都達不到要求,因而比特股發明了一種新的共識機制——Delegated Proof-Of-Stake(DPOS),即代理股權證實。
DPOS很容易理解,相似於現代企業董事會制度,比特股系統將代幣持有者稱爲股東,由股東投票選出101名錶明,而後由這些表明負責產生區塊。那麼須要解決的核心問題主要有:表明如何被選出,表明如何自由退出「董事會」,表明之間如何協做產生區塊等。持幣者若想成爲一名錶明,需先拿本身的公鑰去區塊鏈註冊,得到一個長度爲32位的特有身份標識符,用戶能夠對這個標識符以交易的形式進行投票,得票數前101位被選爲表明。表明們輪流產生區塊,收益(交易手續費)平分。若是有表明不老實生產區塊,很容易被其餘表明和股東發現,他將當即被踢出「董事會」,空缺位置由票數排名102的表明自動填補。
從某種角度來講,DPOS能夠理解爲多中心繫統,兼具去中心化和中心化優點。
另外目前最火的區塊鏈項目之一EOS也是採用了DPOS共識。EOS經過投票的方式選舉出21個超級節點做爲記帳節點,每一個節點有3秒的時間片,輪流記帳。若是輪到某節點記帳而沒有出塊,則該節點可能被投票出局,由其餘備選節點頂替。出塊速度是0.5秒!
EOS.IO軟件容許區塊精準的以每0.5秒產生一個區塊,只有一個生產者被受權在任何給定的時間點生產一個區塊。若是區塊在預約的時間沒有被生產出來,那麼,那個時間的區塊將被跳過。當一個或多個區塊被跳過,將會有0.5秒或更多秒的區塊間隔。
使用EOS.IO軟件,區塊以126個區塊爲一輪(每一個生產者能夠生產6個,有21個生產者,兩者相乘)。在每一輪的開始,21個區塊生產者經過token持有者的投票被選中。選中的生產者依據商定好的順序生產區塊,這個順序由15個或者更多的生產者商定。
若是一個生產者錯過了一個區塊,而且在24小時內沒有生產任何區塊,他們將會被移除。直到這些「宕機」的生產者們及時通知區塊鏈,他們將打算再次生產區塊才被從新加入。經過不安排那些不夠可靠的節點,儘量的減小錯過區塊建立,來讓整個網絡運行得更平穩。
DPOS的特殊性,也是奠基拜占庭容錯能力的基礎框架,是它的算力節點是固定21我的,而且由大型的機構運營節點,其信息也相對透明,例如運營節點的地點、運營的狀況等等。而且DPOS的算力節點是固定出塊順序的,固定地從A到B到C······。
傳統DPOS中加入了拜占庭容錯算法(BFT),只要沒有生產者蓋上相同的時間戳或相同區塊高度的兩個區塊,便容許全部生產者簽署全部區塊。一旦15個生產者簽署了一個區塊,該區塊就被認爲是不可逆轉的。在這種模式下,不可逆轉的共識應該在1秒內完成。
在這種狀況下,其實DPOS是拜占庭容錯的特殊解,如何理解特殊解?原來的拜占庭容錯(POW工做量證實),解決的是不限數量、隨機廣播同步的算力節點的容錯能力,DPOS解決的拜占庭容錯從兩個維度下降了難度:
一、節點數量固定只有21個。而且節點信息透明。
二、固定出塊順序。每一個節點跟接力棒同樣,一個個往下接力出塊。每一個節點不能還沒輪到它出塊的時候,就出塊。都是必須輪到再出塊。若是出現出塊故障,會跳過這個節點。
在POW或者其餘的POS共識裏,節點不限、隨機出塊順序的問題,就變成只要解決「固定數量和固定出塊順序狀況下的拜占庭問題」,其難度就大大下降。
一直以來以太坊的創始人Vitalik和EOS創始人BM關於POW和DPOS誰更中心化進行互懟。Vitalik認爲EOS的21個超級節點違反了區塊鏈的去中心化原則,有失公平。而BM則認爲幾個幾大礦池控制了比特幣和以太坊的絕大部分算力,這至關於以太坊只有幾個超級節點,比21個節點還要少,對手裏拿着BTC和ETH的人他們對社區和整個生態,他們是沒有肯定的發言權的,在比特幣的世界裏算力就是王道,面對算力大量集中在部分礦場的如今,它真的實現了中本聰的本心了嗎?一樣須要挖礦POS也是同樣,須要看機率來決定你可否發聲,可是DPOS是有發言權的,無論持有多少,我都有發言權。這種看似由「直接民主」轉爲「間接民主」的機制,或許纔是真正體現了去中心化精神。
如下是最新的比特幣算力分佈和以太坊的算力分佈:
以上介紹到的PBFT、POW、POS和DPOS各有各的優缺點:
有人仿照CAP不可能三角,也提出了區塊鏈共識的不可能三角:環保節能、安全、去中心化,三者不可能同時知足,必有一方的弱化。設計一個既環保又安全的密碼學貨幣,它必然是中心化的,好比PPcoin、Nextcoin、Ripple,它們要麼自己就是中心化的架構,要麼其去中心化的架構不可維持,它們本質上還是PayPal、網銀同樣的中心化驗證機制;設計一個既環保又去中心化的密碼學貨幣,它必然是不安全的,好比IP投票制的P2P貨幣,中本聰起初就已排除了這種可能,他認爲「若是決定大多數的方式是基於IP地址的,一IP地址一票,那麼若是有人擁有分配大量IP地址的權力,好比僵屍網絡,就有可能主宰比特幣網絡」[vi]。設計一個安全的去中心化貨幣,它必然是以付出能源與計算力爲代價。
有時,咱們可能須要根據區塊鏈的場景,對原有共識算法進行改進。
NEO採用的是 Delegated Byzantine Fault Tolerance (dBFT) 共識算法,因爲它目前只有 7 個 代理節點,而表明節點則是經過用戶投票選出。dBFT參與記帳的是超級節點,普通節點能夠看到共識過程,並同步帳本信息,但不參與記帳。總共n個超級節點分爲一個議長和n-1個議員,議長會輪流當選。每次記帳時,先有議長髮起區塊提案(擬記帳的區塊內容),一旦有至少(2n+1)/3個記帳節點(議長加議員)贊成了這個提案,那麼這個提案就成爲最終發佈的區塊,而且該區塊是不可逆的,全部裏面的交易都是百分之百確認的。
Casper(投注共識)是一種以太坊下一代的共識機制,屬於PoS。Casper的共識是按塊達成的而不是像PoS那樣按鏈達成的。
爲了防止驗證人在不一樣的世界中提供不一樣的投注,咱們還有一個簡單嚴格的條款:若是你有兩次投注序號同樣,或者說你提交了一個沒法讓Casper合約處理的投注,你將失去全部保證金。從這一點咱們能夠看出,Casper與傳統的PoS不一樣的是Casper有懲罰機制,這樣非法節點經過惡意攻擊網絡不只得不到交易費,並且還面臨着保證金被沒收的風險。
Casper協議下的驗證人須要完成出塊和投注兩個活動。具體以下:
出塊是一個獨立於其它全部事件而發生的過程:驗證人收集交易,當輪到他們的出塊時間時,他們就製造一個區塊,簽名,而後發送到網絡上。投注的過程更爲複雜一些。目前Casper默認的驗證人策略被設計爲模仿傳統的拜占庭容錯共識:觀察其餘的驗證人如何投注,取33%處的值,向0或者1進一步移動。
而客戶端的確認當前狀態的過程以下所示:
一開始先下載全部的區塊和投注,而後用上面的算法來造成本身的意見,可是不公佈意見。它只要簡單的按順序在每一個高度進行觀察,若是一個塊的機率高於0.5就處理它,不然就跳過它。在處理全部的區塊以後獲得的狀態就能夠顯示爲區塊鏈的「當前狀態」。客戶端還能夠給出對於「最終肯定」的主觀見解:當高度k以前的每一個塊,意見要麼高於99.999%或者低於0.001%,那麼客戶端就能夠認爲前k個塊已經最終肯定。
IOTA和Byteball這種基於DAG結構的分佈式帳本技術,從概念上講已經不能算是區塊鏈了,由於在底層結構上,DAG中既沒有區塊也不是鏈。IOTA中使用Tangle(纏結)這種技術,使得每一個交易在發出時也見證另外兩個交易。Byteball採用的是11個見證人的方式,由見證人蔘與共識。
PBFT在Fabric0.6的時候被採用,可是因爲一些說不清的緣由,在Fabric1.0中並無採用PBFT,而是使用Kafka進行排序,做爲共識節點。在Fabric的提案中,打算會採用SBFT(Simple BFT),這種BFT算法會對PBFT進行簡化,具體何時實現還沒準呢。
在英美,陪審團制度是一個使用了幾百年的共識制度,關於一個案件中嫌疑人是否有罪,是由隨機抽選的陪審員組成陪審團共同決定的。提到陪審團,就不得不提一部很是經典的電影《十二怒漢》:
《十二怒漢》講述的是一個在貧民窟長大的18歲少年由於涉嫌殺害本身的父親被告上法庭,證人言之鑿鑿,各方面的證據都對他極爲不利。十二個不一樣職業的人組成了這個案件的陪審團,他們要在休息室達成一致的意見,裁定少年是否有罪,若是罪名成立,少年將會被判處死刑。
《十二怒漢》經過一場陪審團審判,生動演繹了美國的法律制度與文化,是美國宣傳法律和法律制度的「銀法槌獎」的首部獲獎做品。同名電影在IMDB上排名第五,高於《阿甘正傳》《辛德勒的名單》等,是一部超越時代的經典之做!其中的一段臺詞也很能體現陪審團制度的特色:
「咱們都肩負責任。我一直認爲,這正是民主社會了不得的地方。咱們接到郵件通知,大老遠跑到這裏,決定一個跟咱們素昧生平的人到底有沒有罪。不論做出什麼樣的裁決,咱們都拿不到任何好處,也不會有任何損失。這正是咱們國家強大的緣由之一。咱們不能把它當成我的的事」
PalletOne提供了對各個底層鏈的抽象,用戶使用經常使用的開發語言,基於對底層鏈的抽象接口進行操做。而合約的執行就是靠一個個的陪審團來完成的。
除了陪審團這個角色,在PalletOne中還有一個叫仲裁中介(Mediator)的角色,該角色是基於DPOS選舉的,至關於現實生活中的法官的角色,在接到一個新的智能合約後,Mediator會隨機選擇陪審員組成陪審團,由該陪審團負責該智能合約的執行和共識。
陪審團共識與傳統POW、POS等共識的不一樣之處在於,陪審團共識是一個並行的共識機制,在同一個時刻,有多個陪審團同時在執行不一樣的合約。爲了配合陪審團的並行共識,PalletOne採用了DAG做爲分佈式存儲,合約的狀態數據能夠並行寫入DAG中。因此PalletOne使用陪審團並行共識+DAG的並行寫入,能夠實現極高的TPS。
如今區塊鏈上數字資產的應用愈來愈多來源於真實世界或金融資產,對交易的最終確認有很高的要求,須要有不一樣的共識機制。
共識機制是區塊鏈的核心技術,如今各類區塊鏈共識機制的選擇是認爲至今爲止的相對的最優選擇;當將來區塊鏈技術愈來愈多應用於現實,將來將會不斷有所改進,以切合實際的須要。
共識算法的選擇與應用場景高度相關,可信環境使用Paxos或者Raft,帶許可的聯盟可以使用PBFT,非許可鏈能夠是POW、POS、DPOS共識等。