當前位置:首頁 » 區塊鏈知識 » 區塊鏈共識演算法對比

區塊鏈共識演算法對比

發布時間: 2023-05-18 00:34:14

區塊鏈技術中的共識演算法

關於區塊鏈技術的一些講解和知識點分析我們已經給大家分享過很多次了。今天,回龍觀java課程就再來了解一下,區塊鏈技術中的共識演算法的一些基本定義與特點。



簡單過一下區塊鏈


我們一般意識形態中的鏈是鐵鏈,由鐵鑄成,一環扣一環。形象地,區塊鏈的手中遲也可以這么理解,只不過它不是由鐵鑄成,而是由擁有一定數據結構的塊連接而成,這是一個簡單的雛形


通俗講解共識


所謂共識,通俗來說,就是我們大家對某種事物的理解達成一致的意思。比如說日常的開會討論問題,又比如判斷一個動物是不是貓,我們肉眼看了後覺得像貓,其滿足貓的特徵,那麼我們認為它是貓。共識,是一種規則。


繼續我們的會議例子。參與會議的人,通過開會的方式來達到談論解決問題。


對比區塊鏈中,參與挖礦的礦工通過某種共識方式(演算法)來解決讓自己的賬本跟其他節點的賬本保持一致。讓賬本保持一致的深入一層意思就是,讓鏈中區塊信息保持一致。


為什麼需要共識,不需要可不可以?當然不可以,生活中沒了共識的規則,一切亂套。區塊鏈沒了共識的規則,各個節點各干各的,失去一致的意義。


這兩個例子的對應的關系如下:


會議的人=挖礦的礦工


開會=共識方式(演算法)


談論解決問題=讓自己的賬本跟其他節點的賬本保持一致


如果你對節點的概念意思不懂,請先理解為礦工,一個節點內部包含很多培斗角色,礦工是其中之一。


共識演算法


目前常見的在區塊鏈中,節點們讓自己的賬本跟其他節點的賬本保持一致的共識方式(演算法)有如下幾種:


PoW,代表者是比特幣(BTC)


弊端:


礦池的出現,一定程度上違背了去中心化的初衷,同時也使得51%攻擊成為可能,影響其安全性。


存在巨大的算力浪費,看看礦池消耗大量的電力資源,隨著難度增加,挖出的不夠付電費


PoS,代表者是以太坊(ETH),從PoW過度到PoS


弊端:


破壞者對網路的攻擊成本很低,擁有代幣就能競爭


另外擁有代幣數畢李量大的節點獲得記賬權的概率會更大,會使得網路共識受少數富裕賬戶支配,從而失去公正性。


❷ 細說區塊鏈共識機制之POA

POA全稱是proof of activity。他不是一種獨立的共識演算法,而是POW和POS混合的演算法,目前有唯鏈,歐鏈等採用了POA共識機制。

POA的演算法大致流程是這樣的,每個活躍節點不斷的進行哈希計算,尋找哈希值小於特定值的區塊頭,區塊頭中包括前區塊哈希值,本地節點的地址,區塊序號以及nonce值。當節點找到滿足條件的區塊頭後,就會向全網廣播這個區塊頭,所有的活躍節點收到廣播進行驗證。若驗證通過,則以廣播中的區塊頭作為數據源,導出N個隨機的股權所有者,所有的活躍節點判斷自己是否是哪個幸運的股權人。如果自己是前面N-1個幸運股權人中的一個,也一度用私鑰對上述的區塊頭進行簽名。並且將這個簽名在全網廣播。如果自己是第N個幸運股權持有者,則用這個區塊頭來構建一個新的區塊,區塊中包含了自己選出的盡可能多的交易,前N-1個幸運股權人的簽名還有自己對完整區塊鏈的哈希值的簽名。然後將這個簽名後的完整節點在全網廣播。所有的活躍節點在收到完整節點之後進行驗證。驗證通過則認為該節點是一個合法的新區塊。將其加入區塊鏈當中去。

倘若這個區塊屬於最長鏈,則以他為前區塊,轉回到最初的步驟,否則就做丟棄處理。不難發現,POA演算法要求N個幸運者全部在線,任意一個幸運股權人不在線都將導致該區塊丟棄。

這也是活躍證明的由來,POA演算法會周期性的統計被丟棄的區塊數量。並且按照這個來調整N的數值。如果丟棄的區塊數量比較多,那麼就減少N,否則就增大N.

POA演算法的區塊丟失是一種算力損失。POA演算法中。區塊中的交易費由區塊的發布者與n個幸運股權人共享。

POA演算法最重要的是它可以防止非厲害攻擊者。所謂的非厲害攻擊是指具有強大的演算法,但是僅僅持有少量的股權的攻擊者。POA演算法中POS部分使得非厲害者得到構建區塊機會是非常少的。應該我們無法有效的進行攻擊。

POA演算法中,幸運股權人依靠資本獲利,這個想當持有股篇而獲得股息,這種機制會估計持股人長期持續這個股權有利於數字資產的保值以及減少波動。

POAstay大眾的pow部分,通過哈希演算法難度控制了新區塊頭生成的速度。起到穩定網路,避免分叉的作用。

然而上述優點的獲得也是有代價的,pow部分帶來的電力的損耗。而pos部分導致新區塊頭以及比較大的概率丟失,形成了算力的浪費。

❸ 區塊鏈技術的六大核心演算法

區塊鏈技術的六大核心演算法
區塊鏈核心演算法一:拜占庭協定
拜占庭的故事大概是這么說的:拜占庭帝國擁有巨大的財富,周圍10個鄰邦垂誕已久,但拜占庭高牆聳立,固若金湯,沒有一個單獨的鄰邦能夠成功入侵。任何單個鄰邦入侵的都會失敗,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防禦能力如此之強,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破。然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。於是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題。
在這個分布式網路里:每個將軍都有一份實時與其他將軍同步的消息賬本。賬本里有每個將軍的簽名都是可以驗證身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些將軍。盡管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成。
由此,在一個分布式的系統中,盡管有壞人,壞人可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來干壞事等等。但是,只要大多數人是好人,就完全有可能去中心化地實現共識
區塊鏈核心演算法二:非對稱加密技術
在上述拜占庭協定中,如果10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致。誰都可以發起進攻的信息,但由誰來發出呢?其實這只要加入一個成本就可以了,即:一段時間內只有一個節點可以傳播信息。當某個節點發出統一進攻的消息後,各個節點收到發起者的消息必須簽名蓋章,確認各自的身份。
在如今看來,非對稱加密技術完全可以解決這個簽名問題。非對稱加密演算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經常聽到的」公鑰」和」私鑰」。公鑰和私鑰一般成對出現, 如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密; 同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。
區塊鏈核心演算法三:容錯問題
我們假設在此網路中,消息可能會丟失、損壞、延遲、重復發送,並且接受的順序與發送的順序不一致。此外,節點的行為可以是任意的:可以隨時加入、退出網路,可以丟棄消息、偽造消息、停止工作等,還可能發生各種人為或非人為的故障。我們的演算法對由共識節點組成的共識系統,提供的容錯能力,這種容錯能力同時包含安全性和可用性,並適用於任何網路環境。
區塊鏈核心演算法四:Paxos 演算法(一致性演算法)
Paxos演算法解決的問題是一個分布式系統如何就某個值(決議)達成一致。一個典型的場景是,在一個分布式資料庫系統中,如果各節點的初始狀態一致,每個節點都執行相同的操作序列,那麼他們最後能得到一個一致的狀態。為保證每個節點執行相同的命令序列,需要在每一條指令上執行一個「一致性演算法」以保證每個節點看到的指令一致。一個通用的一致性演算法可以應用在許多場景中,是分布式計算中的重要問題。節點通信存在兩種模型:共享內存和消息傳遞。Paxos演算法就是一種基於消息傳遞模型的一致性演算法。
區塊鏈核心演算法五:共識機制
區塊鏈共識演算法主要是工作量證明和權益證明。拿比特幣來說,其實從技術角度來看可以把PoW看做重復使用的Hashcash,生成工作量證明在概率上來說是一個隨機的過程。開采新的機密貨幣,生成區塊時,必須得到所有參與者的同意,那礦工必須得到區塊中所有數據的PoW工作證明。與此同時礦工還要時時觀察調整這項工作的難度,因為對網路要求是平均每10分鍾生成一個區塊。
區塊鏈核心演算法六:分布式存儲
分布式存儲是一種數據存儲技術,通過網路使用每台機器上的磁碟空間,並將這些分散的存儲資源構成一個虛擬的存儲設備,數據分散的存儲在網路中的各個角落。所以,分布式存儲技術並不是每台電腦都存放完整的數據,而是把數據切割後存放在不同的電腦里。就像存放100個雞蛋,不是放在同一個籃子里,而是分開放在不同的地方,加起來的總和是100個。

❹ 哈希圖會取代區塊鏈

2018年2月份哈希圖團隊就在Reddit上po出了一種新的實現共識演算法平台,旨在為世界提供一種更有效、快速的價值互聯網底層支撐。

從比特幣出現到現在,區塊鏈這個名詞已經深入人心,似乎我們已經被深深植入一種想法,那就是 價值互聯網 必將通過區塊鏈來實現。而仔細一看,區塊鏈似乎就是一個簡單的鏈表,只不過是更宏觀一些的區塊相連。區塊之內打包的各種公開的交易事務。於是我們從中總結出了人人都能談的區塊鏈的特點:

而區塊鏈的用途承載了我們很多美好的想像,賦予更多節點以價值,包括內容,個人數據等形形色色的各類資產。

誠然,區塊鏈已經在部分領域實現了這個功能。但是,在具體使用過程中,我們漸漸遇到了很多性能問題,先是以太坊上養貓就堵塞了整個以太坊網路。而比特幣就更不用說了,即使全世界成千上萬個分布式節點,各大礦場投入了巨資構建的礦場來支撐這個網路,仍然受限於每10分鍾才出一個區塊的演算法限制。

因為性能瓶頸,其他演算法也迅速出現,企圖解決這個問題。比如通過PoS演算法,DPoS演算法,試圖繞過PoW這種簡單粗暴的解決方案,來提升網路每秒能夠處理的交易事務次數(TPS)。

而最近掀起的EOS節點競選,全世界范圍內各個財大氣粗的團隊,參與競選全球 21個超級節點 ,用於投票產生下一個區塊。本質上仍然屬於DPoS演算法的應用,只不過這個超級節點能夠獲得大量的EOS代幣|Token(主網上線後可稱之為Coin)獎勵,按照當前價格折算,就是上億的收入。資本逐利,無可厚非。但是仔細想一想,官方的說法,這是為了提升TPS而設計的一種折中的方法。意思就是,決定區塊產生的不再是公平的,而是一種代議制,在去中心化和中心化之間找到的一個微妙的平衡,當然這個系統內,除了超級節點,備胎節點也是必須的。本文不贅述EOS。

而這些,不禁讓人深深思索一個新的問題,當年中本聰的設想,一人一個CPU,一個投票權的願景似乎已經漸行漸遠了。

提到區塊鏈,我們常說共識演算法,其實全稱是一致性共識演算法。其中,拆出兩個關鍵詞來:

共識似乎離普通用戶很近,白話說即為,我們大多數人認同它的價值,它就有價值。而一致性卻離得很遠,下一個區塊怎麼產生,節點之間如何同步數據與我何干?

這里,我也只淺淺列出用在區塊鏈世界的幾種牛批的共識演算法,包含:

下面進入本文的主題。

無論是什麼共識演算法,核心目的相同,那就是:在無可信中心節點可以依仗時,社區用戶能夠關於事務的產生,區塊打包達成一致。

此處上一個對比圖,將會一目瞭然,然後我也會再文字贅述一遍,和大家分享我自己對此的一點點淺淺的思考,如有任何差錯,歡迎隨時指正。

可見,左邊是區塊鏈,右邊是哈希圖。

仔細看,區塊鏈實際上是一個公平但是殘酷的機制。每一個參與挖礦的節點,都是在玩一個概率游戲。比如老大哥比特幣,使用純正的PoW演算法,每個人通過密碼學問題,暴力求解那個答案,我們稱之為哈希碰撞。在10分鍾內,產生的交易事務其實不止那個最終被加入最長的鏈上的區塊的那些事務。而是同時有很多其他區塊。每一筆事務會通過廣播機制,向周圍的其他節點廣播以求得到足夠的確認,並最終加入區塊鏈。問題來了,節點保存著當前最新的備份,且只認最長的那個鏈,但是我們知道,廣播意味著一樣長的多個鏈會產生,於是節點就需要同時保存多個備用區塊,然後靜靜等待下一步傳來的區塊,再比較選誰鏈更長,就把誰真的加入大家都認同的那個鏈,而失敗的區塊,就黯然退場,加入下一輪的事務。

挖到那個沒加入到鏈上的節點,只能暗暗擦乾眼淚,繼續前行。

以太坊呢,就稍稍溫情一些,會有一點點獎勵給這類被稱之為叔塊的東西。

看到左邊的區塊鏈結構嗎?生長過程中,是個樹,長成了以後,就會被修剪的只剩下一個白白長長的樹干。這就是我們說的,只認最長的鏈的法則殘酷之處。

哈希圖

對比看右邊的哈希圖結構,是不是要復雜很多?簡單說,就是一個都不能少。

挖到的區塊全都加入到系統。每個分支都將被用到,最終縫合到整個系統。

稍稍想想,就能知道左邊的沒有右邊的事務處理速度快。因為左邊總是要自我閹割一部分打包在區塊內的事務。而右邊不用。

那麼,為什麼右邊可行?而區塊鏈卻選擇的是更慢的演算法呢?

答案很簡單,區塊鏈的廣播方法,在全網達成共識很慢。那麼哈希圖是怎麼做到的呢?

下面將談一談哈希圖的兩個核心機制中的其中一個,官方稱呼為Gossip about gossip協議。

粗淺翻譯為:關於八卦的八卦協議。

先來說一說Gossip協議(八卦協議)。

Gossip協議解決的問題就是在分布式環境下信息高效分發的問題。這個問題的解決決定著系統的一致性程度。

以辦公室八卦為例,八卦一般是從一次對話開始,只要一個人八卦一下,有限的時間內辦公室的人都會知道。與病毒傳播類似。因此Gossip別名就是「病毒感染演算法」,「謠言傳播演算法」。

Gossip的核心就是當前節點隨機選擇一些節點把那個告訴它們你知道的所有事情。好比說,你聽到了一個八卦消息,你會忍不住想和朋友分享,於是你從你認識的人中,隨機挑了一部分人,把這個消息告訴了他們。他們也一樣,每個人聽到這個消息,也會忍不住想和他們的朋友分享。像病毒傳播一樣,迅速傳遍了整個人際網路。

因此理解八卦協議,可以帶入一種日常生活我們總是會參與到的八卦場景。

而關於八卦的八卦協議,這里不再多說,只是可以對照一下,作為一個傳遞八卦消息的人,你再被其他人八卦,是不是有一種意想不到的被人驗證的感覺?後面會再寫文詳述。

總之,通過Gossip協議,哈希圖能夠做到在秒級別實現共識(牛批吧)。因此,就能夠採用這種絕不放棄任何區塊的圖狀方式,進而提升事務打包確認的速度。不是一般的快。

有人認為哈希圖要顛覆區塊鏈的,但是哈希圖的人認為,它們會共存。-- 且當八卦,不必在意

接著引出一個新的問題給大家,我們真的關心底層技術的實現方式嗎?

支付寶好用,微信好用,我們關心它們是怎麼實現的嗎?我想絕大部分朋友是不在意的。

那麼對應到區塊鏈或者哈希圖,我們其實並不會太在意到底哪個演算法更好,而是更關心,我這個轉賬多久能夠被確認,別人給我轉的錢多久能收到。

誠然,我們不必太在意底層,但是支撐起一個良好體驗的產品,必然是從底層汲取能量。

或許,哈希圖將帶來一種嶄新的體驗。

到現在,我相信一組新詞不斷出現在大家的信息捕捉器里:

我的粗淺理解是,不帶代幣的互聯網產品都是古典的,而帶有代幣的大多數號稱價值互聯網的產品也只是耍猴,博眼球,賣空氣,更不要提國外還時不時捧出的12歲CEO,發行以太坊代幣,我歸結為賣傻兒子系列。

不管是什麼互聯網,我們的核心訴求始終都是,要好用,簡單說就是快且安全高效。

而價值呢,更多的願景仍然是希望將個人產生的價值部分乃至全部還歸於個人。

但是,任重道遠。在古典互聯網安家的90後們尚且未能全部擁抱區塊鏈,更別說80後,70後等等大部隊了。

我們終將死去,價值互聯網會在新一代的原住民中生存。

而本篇,希望帶來了一點點價值,那就很好了。

2018.4.21 -- YQ

鄭重聲明

本文里還未提到哈希圖的缺點,導致給人一種推廣軟文的感覺。本文只是純粹科普一下不同的公開記賬本實現方式,並非誘導大家投資,我個人不參加一級市場的私募,風險承擔不起,也不鼓吹大家參與。個中風險,自己衡量,自己把握。

❺ 常見的共識演算法介紹

在非同步系統中,需要主機之間進行狀態復制,以保證每個主機達成一致的狀態共識。而在非同步系統中,主機之間可能出現故障,因此需要在默認不可靠的非同步網路中定義容錯協議,以確保各個主機達到安全可靠的狀態共識。

共識演算法其實就是一組規則,設置一組條件,篩選出具有代表性的節點。在區塊鏈系統中,存在很多這樣的篩選方案,如在公有鏈中的POW、Pos、DPOS等,而在不需要貨幣體系的許可鏈或私有鏈中,絕對信任的節點、高效的需求是公有鏈共識演算法不能提供的,對於這樣的區塊鏈,傳統的一致性共識演算法成為首選,如PBFT、PAXOS、RAFT等。

目錄

一、BFT(拜占庭容錯技術)

二、PBFT(實用拜占庭容錯演算法)

三、PAXOS

四、Raft

五、POW(工作量證明)

六、POS(權益證明)

七、DPOS(委任權益證明)

八、Ripple

拜占庭弄錯技術是一類分布式計算領域的容錯技術。拜占庭假設是由於硬體錯誤、網路擁塞或中斷以及遭到惡意攻擊的原因,計算機和網路出現不可預測的行為。拜占庭容錯用來處理這種異常行為,並滿足所要解決問題的規范。

拜占庭容錯系統是一個擁有n台節點的系統,整個系統對於每一個請求,滿足以下條件:

1)所有非拜占庭節點使用相同的輸入信息,產生同樣的結果;

2)如果輸入的信息正確,那麼所有非拜占庭節點必須接收這個信息,並計算相應的結果。

拜占庭系統普遍採用的假設條件包括:

1)拜占庭節點的行為可以是任意的,拜占庭節點之間可以共謀;

2)節點之間的錯誤是不相關的;

3)節點之間通過非同步網路連接,網路中的消息可能丟失、亂序並延時到達,但大部分協議假設消息在有限的時間里能傳達到目的地;

4)伺服器之間傳遞的信息,第三方可以嗅探到,但是不能篡改、偽造信息的內容和驗證信息的完整性。

拜占庭容錯由於其理論上的可行性而缺乏實用性,另外還需要額外的時鍾同步機制支持,演算法的復雜度也是隨節點的增加而指數級增加。

實用拜占庭容錯降低了拜占庭協議的運行復雜度,從指數級別降低到多項式級別。

PBFT是一種狀態機副本復制演算法,即服務作為狀態機進行建模,狀態機在分布式系統的不同節點進行副本復制。PBFT要求共同維護一個狀態。需要運行三類基本協議,包括一致性協議、檢查點協議和視圖更換協議。

一致性協議。一致性協議至少包含若干個階段:請求(request)、序號分配(pre-prepare)和響應(reply),可能包含相互交互(prepare),序號確認(commit)等階段。

PBFT通信模式中,每個客戶端的請求需要經過5個階段。由於客戶端不能從伺服器端獲得任何伺服器運行狀態的信息,PBFT中主節點是否發生錯誤只能由伺服器監測。如果伺服器在一段時間內都不能完成客戶端的請求,則會觸發視圖更換協議。

整個協議的基本過程如下:

1)客戶端發送請求,激活主節點的服務操作。

2)當主節點接收請求後,啟動三階段的協議以向各從節點廣播請求。

[2.1]序號分配階段,主節點給請求賦值一個序列號n,廣播序號分配消息和客戶端的請求消息m,並將構造PRE-PREPARE消息給各從節點;

[2.2]交互階段,從節點接收PRE-PREPARE消息,向其他服務節點廣播PREPARE消息;

[2.3]序號確認階段,各節點對視圖內的請求和次序進行驗證後,廣播COMMIT消息,執行收到的客戶端的請求並給客戶端以響應。

3)客戶端等待來自不同節點的響應,若有m+1個響應相同,則該響應即為運算的結果。

PBFT一般適合有對強一致性有要求的私有鏈和聯盟鏈,例如,在IBM主導的區塊鏈超級賬本項目中,PBFT是一個可選的共識協議。在Hyperledger的Fabric項目中,共識模塊被設計成可插拔的模塊,支持像PBFT、Raft等共識演算法。

在有些分布式場景下,其假設條件不需要考慮拜占庭故障,而只是處理一般的死機故障。在這種情況下,採用Paxos等協議會更加高效。。PAXOS是一種基於消息傳遞且具有高度容錯特性的一致性演算法。

PAXOS中有三類角色Proposer、Acceptor及Learner,主要交互過程在Proposer和Acceptor之間。演算法流程分為兩個階段:

phase 1

a) proposer向網路內超過半數的acceptor發送prepare消息

b) acceptor正常情況下回復promise消息

phase 2

a) 在有足夠多acceptor回復promise消息時,proposer發送accept消息

b) 正常情況下acceptor回復accepted消息

流程圖如圖所示:

PAXOS協議用於微信PaxosStore中,每分鍾調用Paxos協議過程數十億次量級。

Paxos是Lamport設計的保持分布式系統一致性的協議。但由於Paxos非常復雜,比較難以理解,因此後來出現了各種不同的實現和變種。Raft是由Stanford提出的一種更易理解的一致性演算法,意在取代目前廣為使用的Paxos演算法。

Raft最初是一個用於管理復制日誌的共識演算法,它是在非拜占庭故障下達成共識的強一致協議。Raft實現共識過程如下:首先選舉一個leader,leader從客戶端接收記賬請求、完成記賬操作、生成區塊,並復制到其他記賬節點。leader有完全的管理記賬權利,例如,leader能夠決定是否接受新的交易記錄項而無需考慮其他的記賬節點,leader可能失效或與其他節點失去聯系,這時,重新選出新的leader。

在Raft中,每個節點會處於以下三種狀態中的一種:

(1)follower:所有結點都以follower的狀態開始。如果沒收到leader消息則會變成candidate狀態;

(2)candidate:會向其他結點「拉選票」,如果得到大部分的票則成為leader。這個過程就叫做Leader選舉(Leader Election);

(3)leader:所有對系統的修改都會先經過leader。每個修改都會寫一條日誌(log entry)。leader收到修改請求後的過程如下:此過程叫做日誌復制(Log Replication)

1)復制日誌到所有follower結點

2)大部分結點響應時才提交日誌

3)通知所有follower結點日誌已提交

4)所有follower也提交日誌

5)現在整個系統處於一致的狀態

Raft階段主要分為兩個,首先是leader選舉過程,然後在選舉出來的leader基礎上進行正常操作,比如日誌復制、記賬等。

(1)leader選舉

當follower在選舉時間內未收到leader的消息,則轉換為candidate狀態。在Raft系統中:

1)任何一個伺服器都可以成為候選者candidate,只要它向其他伺服器follower發出選舉自己的請求。

2)如果其他伺服器同意了,發出OK。如果在這個過程中,有一個follower宕機,沒有收到請求選舉的要求,此時候選者可以自己選自己,只要達到N/2+1的大多數票,候選人還是可以成為leader的。

3)這樣這個候選者就成為了leader領導人,它可以向選民也就是follower發出指令,比如進行記賬。

4)以後通過心跳消息進行記賬的通知。

5)一旦這個leader崩潰了,那麼follower中有一個成為候選者,並發出邀票選舉。

6)follower同意後,其成為leader,繼續承擔記賬等指導工作。

(2)日誌復制

記賬步驟如下所示:

1)假設leader已經選出,這時客戶端發出增加一個日誌的要求;

2)leader要求follower遵從他的指令,將這個新的日誌內容追加到各自日誌中;

3)大多數follower伺服器將交易記錄寫入賬本後,確認追加成功,發出確認成功信息;

4)在下一個心跳消息中,leader會通知所有follower更新確認的項目。

對於每個新的交易記錄,重復上述過程。

在這一過程中,若發生網路通信故障,使得leader不能訪問大多數follower了,那麼leader只能正常更新它能訪問的那些follower伺服器。而大多數的伺服器follower因為沒有了leader,他們將重新選舉一個候選者作為leader,然後這個leader作為代表與外界打交道,如果外界要求其添加新的交易記錄,這個新的leader就按上述步驟通知大多數follower。當網路通信恢復,原先的leader就變成follower,在失聯階段,這個老leader的任何更新都不能算確認,必須全部回滾,接收新的leader的新的更新。

在去中心賬本系統中,每個加入這個系統的節點都要保存一份完整的賬本,但每個節點卻不能同時記賬,因為節點處於不同的環境,接收不同的信息,如果同時記賬,必然導致賬本的不一致。因此通過同時來決定那個節點擁有記賬權。

在比特幣系統中,大約每10分鍾進行一輪算力競賽,競賽的勝利者,就獲得一次記賬的權力,並向其他節點同步新增賬本信息。

PoW系統的主要特徵是計算的不對稱性。工作端要做一定難度的工作才能得出一個結果,而驗證方卻很容易通過結果來檢查工作端是不是做了相應的工作。該工作量的要求是,在某個字元串後面連接一個稱為nonce的整數值串,對連接後的字元串進行SHA256哈希運算,如果得到的哈希結果(以十六進制的形式表示)是以若干個0開頭的,則驗證通過。

比特幣網路中任何一個節點,如果想生成一個新的區塊並寫入區塊鏈,必須解出比特幣網路出的PoW問題。關鍵的3個要素是 工作量證明函數、區塊及難度值 。工作量證明函數是這道題的計算方法,區塊決定了這道題的輸入數據,難度值決定了這道題所需要的計算量。

(1)工作量證明函數就是<u style="box-sizing: border-box;"> SHA256 </u>

比特幣的區塊由區塊頭及該區塊所包含的交易列表組成。擁有80位元組固定長度的區塊頭,就是用於比特幣工作量證明的輸入字元串。

(2)難度的調整是在每個完整節點中獨立自動發生的。每2016個區塊,所有節點都會按統一的公式自動調整難度。如果區塊產生的速率比10分鍾快則增加難度,比10分鍾慢則降低難度。

公式可以總結為:新難度值=舊難度值×(過去2016個區塊花費時長/20160分鍾)

工作量證明需要有一個目標值。比特幣工作量證明的目標值(Target)的計算公式:目標值=最大目標值/難度值

其中最大目標值為一個恆定值:

目標值的大小與難度值成反比。比特幣工作量證明的達成就是礦工計算出來的 區塊哈希值必須小於目標值

(3)PoW能否解決拜占庭將軍問題

比特幣的PoW共識演算法是一種概率性的拜占庭協議(Probabilistic BA)

當不誠實的算力小於網路總算力的50%時,同時挖礦難度比較高(在大約10分鍾出一個區塊情況下)比特幣網路達到一致性的概念會隨確認區塊的數目增多而呈指數型增加。但當不誠實算力具一定規模,甚至不用接近50%的時候,比特幣的共識演算法並不能保證正確性,也就是,不能保證大多數的區塊由誠實節點來提供。

比特幣的共識演算法不適合於私有鏈和聯盟鏈。其原因首先是它是一個最終一致性共識演算法,不是一個強一致性共識演算法。第二個原因是其共識效率低。

擴展知識: 一致性

嚴格一致性,是在系統不發生任何故障,而且所有節點之間的通信無需任何時間這種理想的條件下,才能達到。這個時候整個系統就等價於一台機器了。在現實中,是不可能達到的。

強一致性,當分布式系統中更新操作完成之後,任何多個進程或線程,訪問系統都會獲得最新的值。

弱一致性,是指系統並不保證後續進程或線程的訪問都會返回最新的更新的值。系統在數據成功寫入之後,不承諾立即可以讀到最新寫入的值,也不會具體承諾多久讀到。但是會盡可能保證在某個時間級別(秒級)之後。可以讓數據達到一致性狀態。

最終一致性是弱一致性的特定形式。系統保證在沒有後續更新的前提下,系統最終返回上一次更新操作的值。也就是說,如果經過一段時間後要求能訪問到更新後的數據,則是最終一致性。

在股權證明PoS模式下,有一個名詞叫幣齡,每個幣每天產生1幣齡,比如你持有100個幣,總共持有了30天,那麼,此時你的幣齡就為3000,這個時候,如果你發現了一個PoS區塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那麼在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意思了,持幣有利息。

點點幣(Peercoin)是首先採用權益證明的貨幣。,點點幣的權益證明機制結合了隨機化與幣齡的概念,未使用至少30天的幣可以參與競爭下一區塊,越久和越大的幣集有更大的可能去簽名下一區塊。一旦幣的權益被用於簽名一個區塊,則幣齡將清為零,這樣必須等待至少30日才能簽署另一區塊。

PoS機制雖然考慮到了PoW的不足,但依據權益結余來選擇,會導致首富賬戶的權力更大,有可能支配記賬權。股份授權證明機制(Delegated Proof of Stake,DPoS)的出現正是基於解決PoW機制和PoS機制的這類不足。

比特股(Bitshare)是一類採用DPoS機制的密碼貨幣。它的原理是,讓每一個持有比特股的人進行投票,由此產生101位代表 , 我們可以將其理解為101個超級節點或者礦池,而這101個超級節點彼此的權利是完全相等的。如果代表不能履行他們的職責(當輪到他們時,沒能生成區塊),他們會被除名,網路會選出新的超級節點來取代他們。

比特股引入了見證人這個概念,見證人可以生成區塊,每一個持有比特股的人都可以投票選舉見證人。得到總同意票數中的前N個(N通常定義為101)候選者可以當選為見證人,當選見證人的個數(N)需滿足:至少一半的參與投票者相信N已經充分地去中心化。

見證人的候選名單每個維護周期(1天)更新一次。見證人然後隨機排列,每個見證人按序有2秒的許可權時間生成區塊,若見證人在給定的時間片不能生成區塊,區塊生成許可權交給下一個時間片對應的見證人。

比特股還設計了另外一類競選,代表競選。選出的代表擁有提出改變網路參數的特權,包括交易費用、區塊大小、見證人費用和區塊區間。若大多數代表同意所提出的改變,持股人有兩周的審查期,這期間可以罷免代表並廢止所提出的改變。這一設計確保代表技術上沒有直接修改參數的權利以及所有的網路參數的改變最終需得到持股人的同意。

Ripple(瑞波)是一種基於互聯網的開源支付協議,在Ripple的網路中,交易由客戶端(應用)發起,經過追蹤節點(tracking node)或驗證節點(validating node)把交易廣播到整個網路中。

追蹤節點的主要功能是分發交易信息以及響應客戶端的賬本請求。驗證節點除包含追蹤節點的所有功能外,還能夠通過共識協議,在賬本中增加新的賬本實例數據。

Ripple的共識達成發生在驗證節點之間,每個驗證節點都預先配置了一份可信任節點名單,稱為UNL(Unique Node List)。在名單上的節點可對交易達成進行投票。每隔幾秒,Ripple網路將進行如下共識過程:

1)每個驗證節點會不斷收到從網路發送過來的交易,通過與本地賬本數據驗證後,不合法的交易直接丟棄,合法的交易將匯總成交易候選集(candidate set)。交易候選集裡面還包括之前共識過程無法確認而遺留下來的交易。

2)每個驗證節點把自己的交易候選集作為提案發送給其他驗證節點。

3)驗證節點在收到其他節點發來的提案後,如果不是來自UNL上的節點,則忽略該提案;如果是來自UNL上的節點,就會對比提案中的交易和本地的交易候選集,如果有相同的交易,該交易就獲得一票。在一定時間內,當交易獲得超過50%的票數時,則該交易進入下一輪。沒有超過50%的交易,將留待下一次共識過程去確認。

4)驗證節點把超過50%票數的交易作為提案發給其他節點,同時提高所需票數的閾值到60%,重復步驟3)、步驟4),直到閾值達到80%。

5)驗證節點把經過80%UNL節點確認的交易正式寫入本地的賬本數據中,稱為最後關閉賬本(Last Closed Ledger),即賬本最後(最新)的狀態。

在Ripple的共識演算法中,參與投票節點的身份是事先知道的。該共識演算法只適合於許可權鏈(Permissioned chain)的場景。Ripple共識演算法的拜占庭容錯(BFT)能力為(n-1)/5,即可以容忍整個網路中20%的節點出現拜占庭錯誤而不影響正確的共識。

在區塊鏈網路中,由於應用場景的不同,所設計的目標各異,不同的區塊鏈系統採用了不同的共識演算法。一般來說,在私有鏈和聯盟鏈情況下,對一致性、正確性有很強的要求。一般來說要採用強一致性的共識演算法。而在公有鏈情況下,對一致性和正確性通常沒法做到百分之百,通常採用最終一致性(Eventual Consistency)的共識演算法。

共識演算法的選擇與應用場景高度相關,可信環境使用paxos 或者raft,帶許可的聯盟可使用pbft ,非許可鏈可以是pow,pos,ripple共識等,根據對手方信任度分級,自由選擇共識機制。

❻ 區塊鏈有幾種共識演算法

Ripple Consensus(瑞波共識演算法)
使一組節點能夠基於特殊節點列表達成共識。初始特殊節點列表就像一個俱樂部,要接納一個新成員,必須由51%的該俱樂部會員投票通過。共識遵循這核心成員的51%權力,外部人員則沒有影響力。由於該俱樂部由「中心化」開始,它將一直是「中心化的」,而如果它開始腐化,股東們什麼也做不了。
5、PBFT:Practical Byzantine Fault Tolerance(實用拜占庭容錯演算法)
PBFT是一種狀態機副本復制演算法,即服務作為狀態機進行建模,狀態機在分布式系統的不同節點進行副本復制。每個狀態機的副本都保存了服務的狀態,同時也實現了服務的操作。將所有的副本組成的集合使用大寫字母R表示,使用0到|R|-1的整數表示每一個副本。為了描述方便,假設|R|=3f+1,這里f是有可能失效的副本的最大個數。盡管可以存在多於3f+1個副本,但是額外的副本除了降低性能之外不能提高可靠性。
PBFT演算法主要特點如下:客戶端向主節點發送請求調用服務操作;主節點通過廣播將請求發送給其他副本;所有副本都執行請求並將結果發回客戶端;客戶端需要等待f+1個不同副本節點發回相同的結果,作為整個操作的最終結果。

❼ 兩種共識機制對比(PoW vs PoS)

區塊鏈中最核心的架構就是共識機制,可以說是區塊鏈的驅動引擎,發展這么多年,目前主流比較明確經得住考驗的就只剩下PoW(Proof of Work)與PoS(Proof of Stake)兩種機制。簡單概述下,PoW系統的特點是通過消耗大量算力來計算特定演算法的解(典型如哈希),第一個算出結果的有權生成區塊,同時也會得到coin作為獎勵(這也是coin的生產與分發過程,形象地稱為Mining),採用PoW的典型區塊鏈有Bitcoin和Ethereum,目前PoW也是運行時間最長,被公認為是最可靠安全的共識機制; 其本質是通過消耗大量算力來實現系統內的逆熵過程,保證系統的長期安全與穩定 。但PoW被廣為詬病的也是其消耗太多的能源資源,這方面PoS就被認為是更為綠色的解決方案,顧名思義PoS是通過質押系統中的資產即coin來成為一個質押者(staker),這樣就有權產出區塊,質押份額越多,獲得產出區塊權的概率就越高,也代表著獎勵越多。

在分布式系統中有一個 CAP 定理,是指一個分布式系統中存在著三元悖論,即不可能同時滿足這三個特性:一致性(Consistency)、可用性(Availability)和分區容錯性 (Partition tolerance),而只能滿足其中兩個。區塊鏈作為一種分布式網路,這個定理也逐漸演變成了區塊鏈的三元悖論,即 安全性(Security) 去中心化(Decentralization) 可擴展性 (Scalability) ,也是同時只能滿足兩個特性。

整體上看PoW系統更注重的是 安全性(Security) 與 去中心化(Decentralization) ,放棄 可擴展性 (Scalability) ,這也是Bitcoin網路的吞吐量非常慢的原因。而PoS系統更關注的是 可擴展性 (Scalability) 與 去中心化(Decentralization) ,但就PoS能否真的 實現 去中心化(Decentralization) ,我是比較持懷疑態度的。從保守主義與系統的更長期穩定的角度出發,我個人是堅定地站在PoW這邊的,可能跟自身保守的性格有關,並不是特別看好PoS作為基礎層能比較穩定。特別是像這次 5月份的Luna事件 ,事件大概的過程是Luna鏈上的演算法穩定幣UST缺乏價值支撐最終脫錨,其核心問題在於UST的錨定設計試圖用一個PoS股權系統去支撐其錨定美元,而且還超發了太多UST,再加上UST與Luna的兌換設計缺陷最終導致Luna自身的死亡螺旋。但這個事件更大的意義應該是敲響了一個警鍾,PoS機制在面對空頭資本砸盤時真的還能維持穩定、維持所謂的去中心化嗎?可能到時節點數量萎縮的速度會很快,逐漸趨於中心化。

所有系統設計都需要根據自身定位來折中,以下從價值錨定的角度,簡單分析下為什麼長期來看PoW會更有優勢。

在PoW系統中三股主要的參與者分別是研發人員,投資者(或者叫用戶)與Miner,這三者的相互制衡,使得這個系統達到一個穩定平衡的狀態。而PoS系統中,將Miner這個重要的制衡力量移除了,投資者和Miner變成了同一群體 質押者(stakers) ,因此該群體濫用權力的行為會變得相對不受限制,並且該鏈隨後的發展方向也可能會更加不平衡,更容易傾向有利於 質押者(stakers) 群體的方向。

PoW系統很好的闡述了什麼是被普遍認可的價值,抽象上來看就是高代價的稀缺性 ,高代價與稀缺性兩者缺一不可。PoS最多隻能實現其中一個稀缺性。

Miner為了在鏈上生產區塊賺取coin,不僅需要持續支付高額電力成本,還必須不斷投入研發、升級硬體、優化基礎設施和運營規模來保持其競爭力。最終結果是,能夠長期持續盈利的Miner並不會是一個一層不變的群體,而是總在競爭中淘汰掉效率太低的Miner,使高效率的Miner能存活下來。這也更有利於 去中心化(Decentralization) ,因為不斷變化的Miner群體意味著沒有一個Miner可以在相當長的時間內保持網路的大部分算力,除非他們通過嚴酷的競爭考驗,不斷優化自身來提供更多的算力。

而PoS系統中的質押者實際上並多少真正的風險投入,也沒有優勝劣汰的嚴酷競爭機制,他們只需要簡單地運行一個staker節點就可以躺著賺利息,本質上只是將自己在銀行系統里的錢簡單的轉化為鏈上資本,就可以坐地收割後進入這個系統的新人。這種行為並沒有太多難度,只是簡單地賺取「無風險」利息,他們並沒有將資本轉化為任何形式的需要面臨風險考驗的投資。

而且當發生硬分叉時,PoW的Miner選擇支持哪條鏈時會更為謹慎,因為他們需要投入高昂的電力成本來為他們的選擇背書,一旦選錯了將損失所有投入成本。PoS系統如果發生硬分叉,質押的coin作為系統內部狀態的一部分,硬分叉後質押者將在兩條不同鏈上都擁有相同數量的資產,由於沒有什麼沉默成本,導致質押者更願意兩邊都支持,從而使硬分叉更容易且更頻繁地出現,這被稱為 nothing at stake 問題。

PoW是真正能做到無准入限制的(Permissionless),就是說已經在這個系統中的老人無法限制新人加入,只要你有能力提供算力,就能直接接入網路中產出coin。而PoS系統中,新人要進入,都不得不先從老人手中買coin。

而且PoW中Miner為了支付各種高昂成本(電力,設備,基礎設施等),產出coin後也不得不賣出一些以彌補成本,這同時也是一種把coin分發給更多人的過程; 特別是在熊市,Miner為了維持開銷也不得不低價賤賣coin,這樣新人才有機會以相對低的成本獲得籌碼入場,這才是一個健康的生態擴張過程 。而PoS中由於質押者並沒有什麼運行成本,也不需要面對太多競爭,質押者出塊得到coin後不需要急著賣出,更容易哄抬價格,其實會變相激勵場內老人剝削新入場者,不給後來人更多機會;整個系統會趨向於更封閉,逐漸演變成一個有限游戲,長期運行下去只會越來越中心化;系統中財富越來越集中,富者更富,窮者更窮,從而更不可能實現 去中心化(Decentralization) 。

由於PoW系統中是以提供工作量的方式產出區塊的,隨著時間的推移這些工作量都會被累積起來並使鏈不斷向前延伸,這也是為什麼叫區塊鏈;這些累積的工作量也給攻擊者造成了巨大障礙,如果想要反轉整條鏈,不僅需要非常高的算力,還需要相當長的時間,這也為應對攻擊提供了足夠長的時間緩沖。

而PoS系統其實只是維護一個分布式賬本, 並沒有工作量累積的概念,一旦攻擊成功,要反轉整條鏈就是相當容易的,幾分鍾就可以搞定。

嚴格來說由PoW算力支撐的BTC不應歸為高科技類,由於它整個系統架構更保守更穩定,提供的更多的是一種 物化價值(objective costliness) ,更能作為價值之錨,所以數字黃金這個稱號很貼切。而像ETH(目前還是PoW,2.0升級後為PoS)這些更接近科技類創新平台,PoS本質上更像是一種股權系統,其實PoS系統反而是需要中心化,偏向更依靠整個社區的生命力,需要依靠核心團隊的創新與開拓能力往前走;而PoW則需要去中心化,更偏向穩定與提供 物化價值(objective costliness)

區塊鏈作為一個價值分配系統, 算力是它的價值之錨,如果沒有算力,就會退化為一個股權系統 。算力在哪,資金就會跟去哪。目前的發展趨勢也是逐漸往多層網路的方向發展,類似TCP/IP的多層協議棧。從作為基礎層(Base Layer)的角度看,更需要的是長期穩定與提供價值支撐,因此PoW系統更合適;而PoS可能更多的是可以作為Layer2以實現 可擴展性 (Scalability) ,彌補PoW基礎層的吞吐量不足,並通過錨定在PoW基礎層上來獲取算力安全性與價值支撐。

最後順帶說下最近市場行情,5,6月份以來的瀑布令很多人很恐慌,恐慌指數一度長時間停留在個位數;其實我覺得也沒必要那麼恐慌,要在這個圈子長期活下去,面對這種大波動的心理預期還是要有的。想起之前紅杉資本的沈南鵬經常提到一個詞Grit,沙礫,它是礫石在千萬次打磨後留下來的細小顆粒;Grit代表了勇氣和持之以恆的一種堅持,有種經常被按地上摩擦但依然勇往直前的感覺。這個和塔勒布講的反脆弱性有異曲同工之妙,承載價值的東西就應該具有這種品質,PoW系統肯定是有反脆弱性的。

回望2017年入圈後經歷過的各種事件,其實像這樣的大波動近乎每年都有(除了2019年一年比較順利外);像2017年國內的94事件,2018年一整年的大熊市,2020的312事件,2021的519事件,再到2022今年的5,6月份市場轉熊,每次經歷大波動後,市場都會淘汰掉該淘汰的,出清掉該出清的風險,對整個行業發展也是好事。眼光還是應該放遠一點,至少看5到10年後的變化,科技發展過程中所帶來的波動和風險是不可避免的,日光之下無新鮮事,每次科技革命過程中總會夾雜著眾多的反對、質疑,還有眾多的投機、騙局;這個過程也總是通過各種暴雷、回歸,清除泡沫後價值重估,夯實了基礎後積蓄能量再次進入躍升到新的發展階段。 價值互聯網的到來是一件無法迴避的事情 ,當理解和看清了這種趨勢後,規避掉各種坑和市場噪音,遠離合約杠桿和各種山寨的誘惑,握住核心資產,時間本身就會帶來回報。

❽ 共識演算法系列之一:私鏈的raft演算法和聯盟鏈的 pbft 演算法

對數據順序達成一致共識是很多共識演算法要解決的本質問題
Fabic的pbft演算法實現
現階段的共識演算法主要可以分成三大類:公鏈,聯盟鏈和私鏈
私鏈,所有節點可信
聯盟鏈,存在對等的不信任節點
私鏈:私鏈的共識演算法即區塊鏈這個概念還沒普及時的傳統分布式系統里的共識演算法,比如 zookeeper 的 zab 協議,就是類 paxos 演算法的一種。私鏈的適用環境一般是不考慮集群中存在作惡節點,只考慮因為系統或者網路原因導致的故障節點。

聯盟鏈:聯盟鏈中,經典的代表項目是 Hyperledger 組織下的 Fabric 項目, Fabric0.6 版本使用的就是 pbft 演算法。聯盟鏈的適用環境除了需要考慮集群中存在故障節點,還需要考慮集群中存在作惡節點。對於聯盟鏈,每個新加入的節點都是需要驗證和審核的。

公鏈:公鏈不僅需要考慮網路中存在故障節點,還需要考慮作惡節點,這一點和聯盟鏈是類似的。和聯盟鏈最大的區別就是,公鏈中的節點可以很自由的加入或者退出,不需要嚴格的驗證和審核。

在公有鏈中用的最多的是pow演算法和pos演算法,這些演算法都是參與者的利益直接相關,通過利益來制約節點誠實的工作,解決分布式系統中的拜占庭問題。拜占庭容錯演算法是一種狀態機副本復制演算法,通過節點間的多輪消息傳遞,網路內的所有誠實節點就可以達成一致的共識。

使用拜占庭容錯演算法不需要發行加密貨幣,但是只能用於私有鏈或者聯盟鏈,需要對節點的加入進行許可權控制;不能用於公有鏈,因為公有鏈中所有節點都可以隨意加入退出,無法抵擋女巫攻擊(sybil attack)

raft 演算法包含三種角色,分別是:跟隨者( follower ),候選人(candidate )和領導者( leader )。集群中的一個節點在某一時刻只能是這三種狀態的其中一種,這三種角色是可以隨著時間和條件的變化而互相轉換的。

raft 演算法主要有兩個過程:一個過程是領導者選舉,另一個過程是日誌復制,其中日誌復制過程會分記錄日誌和提交數據兩個階段。raft 演算法支持最大的容錯故障節點是(N-1)/2,其中 N 為 集群中總的節點數量。

國外有一個動畫介紹raft演算法介紹的很透徹,鏈接地址為: http://thesecretlivesofdata.com/raft/ 。這個動畫主要包含三部分內容,第一部分介紹簡單版的領導者選舉和日誌復制的過程,第二部分內容介紹詳細版的領導者選舉和日誌復制的過程,第三部分內容介紹的是如果遇到網路分區(腦裂),raft 演算法是如何恢復網路一致的。

pbft 演算法的提出主要是為了解決拜占庭將軍問題
要讓這個問題有解,有一個 十分重要的前提 ,那就是 信道必須是可靠的 。如果信道不能保證可靠,那麼拜占庭問題無解。關於信道可靠問題,會引出兩軍問題。兩軍問題的結論是,在一個不可靠的通信鏈路上試圖通過通信以達成一致是基本不可能或者十分困難的。
拜占庭將軍問題最早是由 Leslie Lamport 與另外兩人在 1982 年發表的論文《The Byzantine Generals Problem 》提出的, 他證明了在將軍總數大於 3f ,背叛者為f 或者更少時,忠誠的將軍可以達成命令上的一致,即 3f+1<=n 。演算法復雜度為 o(n^(f+1)) 。而 Miguel Castro (卡斯特羅)和 Barbara Liskov (利斯科夫)在1999年發表的論文《 Practical Byzantine Fault Tolerance 》中首次提出 pbft 演算法,該演算法容錯數量也滿足 3f+1<=n ,演算法復雜度為 o(n^2)。

首先我們先來思考一個問題,為什麼 pbft 演算法的最大容錯節點數量是(n-1)/3,而 raft 演算法的最大容錯節點數量是(n-1)/2 ?

對於raft演算法,raft演算法的的容錯只支持容錯故障節點,不支持容錯作惡節點。什麼是故障節點呢?就是節點因為系統繁忙、宕機或者網路問題等其它異常情況導致的無響應,出現這種情況的節點就是故障節點。那什麼是作惡節點呢?作惡節點除了可以故意對集群的其它節點的請求無響應之外,還可以故意發送錯誤的數據,或者給不同的其它節點發送不同的數據,使整個集群的節點最終無法達成共識,這種節點就是作惡節點。

raft 演算法只支持容錯故障節點,假設集群總節點數為n,故障節點為 f ,根據小數服從多數的原則,集群里正常節點只需要比 f 個節點再多一個節點,即 f+1 個節點,正確節點的數量就會比故障節點數量多,那麼集群就能達成共識。因此 raft 演算法支持的最大容錯節點數量是(n-1)/2。

對於 pbft 演算法,因為 pbft 演算法的除了需要支持容錯故障節點之外,還需要支持容錯作惡節點。假設集群節點數為 N,有問題的節點為 f。有問題的節點中,可以既是故障節點,也可以是作惡節點,或者只是故障節點或者只是作惡節點。那麼會產生以下兩種極端情況:

第一種情況,f 個有問題節點既是故障節點,又是作惡節點,那麼根據小數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,確節點的數量就會比故障節點數量多,那麼集群就能達成共識。也就是說這種情況支持的最大容錯節點數量是 (n-1)/2。
第二種情況,故障節點和作惡節點都是不同的節點。那麼就會有 f 個問題節點和 f 個故障節點,當發現節點是問題節點後,會被集群排除在外,剩下 f 個故障節點,那麼根據小數服從多數的原則,集群里正常節點只需要比f個節點再多一個節點,即 f+1 個節點,確節點的數量就會比故障節點數量多,那麼集群就能達成共識。所以,所有類型的節點數量加起來就是 f+1 個正確節點,f個故障節點和f個問題節點,即 3f+1=n。
結合上述兩種情況,因此 pbft 演算法支持的最大容錯節點數量是(n-1)/3

pbft 演算法的基本流程主要有以下四步:

客戶端發送請求給主節點
主節點廣播請求給其它節點,節點執行 pbft 演算法的三階段共識流程。
節點處理完三階段流程後,返回消息給客戶端。
客戶端收到來自 f+1 個節點的相同消息後,代表共識已經正確完成。
為什麼收到 f+1 個節點的相同消息後就代表共識已經正確完成?從上一小節的推導里可知,無論是最好的情況還是最壞的情況,如果客戶端收到 f+1 個節點的相同消息,那麼就代表有足夠多的正確節點已全部達成共識並處理完畢了。

3.演算法核心三階段流程
演算法的核心三個階段分別是 pre-prepare 階段(預准備階段),prepare 階段(准備階段), commit 階段(提交階段)

流程的對比上,對於 leader 選舉這塊, raft 演算法本質是誰快誰當選,而 pbft 演算法是按編號依次輪流做主節點。對於共識過程和重選 leader 機制這塊,為了更形象的描述這兩個演算法,接下來會把 raft 和 pbft 的共識過程比喻成一個團隊是如何執行命令的過程,從這個角度去理解 raft 演算法和 pbft 的區別。

一個團隊一定會有一個老大和普通成員。對於 raft 演算法,共識過程就是:只要老大還沒掛,老大說什麼,我們(團隊普通成員)就做什麼,堅決執行。那什麼時候重新老大呢?只有當老大掛了才重選老大,不然生是老大的人,死是老大的鬼。

對於 pbft 演算法,共識過程就是:老大向我發送命令時,當我認為老大的命令是有問題時,我會拒絕執行。就算我認為老大的命令是對的,我還會問下團隊的其它成員老大的命令是否是對的,只有大多數人 (2f+1) 都認為老大的命令是對的時候,我才會去執行命令。那什麼時候重選老大呢?老大掛了當然要重選,如果大多數人都認為老大不稱職或者有問題時,我們也會重新選擇老大。
四、結語
raft 演算法和 pbft 演算法是私鏈和聯盟鏈中經典的共識演算法,本文主要介紹了 raft 和 pbft 演算法的流程和區別。 raft 和 pbft 演算法有兩點根本區別:

raft 演算法從節點不會拒絕主節點的請求,而 pbft 演算法從節點在某些情況下會拒絕主節點的請求 ;
raft 演算法只能容錯故障節點,並且最大容錯節點數為 (n-1)/2 ,而 pbft 演算法能容錯故障節點和作惡節點,最大容錯節點數為 (n-1)/3 。

pbft演算法是通過投票來達成共識,可以很好的解決包括分叉等問題的同時提升效率。但僅僅比較適合於聯盟鏈私有鏈,因為兩兩節點之間通信量是O(n^2)(通過優化可以減少通信量),一般來說不能應用於超過100個節點。
pbft有解的前提是 信道必須是可靠的 ,存在的問題是 可擴展性(scalability)差

部分來自: https://blog.csdn.net/kojhliang/article/details/80270223
區塊鏈在設計上就是為了BFT

❾ 區塊鏈的共識機制

一、區塊鏈共識機制的目標

區塊鏈是什麼?簡單而言,區塊鏈是一種去中心化的資料庫,或可以叫作分布式賬本(distributed ledger)。傳統上所有的資料庫都是中心化的,例如一間銀行的賬本就儲存在銀行的中心伺服器里。中心化資料庫的弊端是數據的安全及正確性全系於資料庫運營方(即銀行),因為任何能夠訪問中心化資料庫的人(如銀行職員或黑客)都可以破壞或修改其中的數據。


而區塊鏈技術則容許資料庫存放在全球成千上萬的電腦上,每個人的賬本通過點對點網路進行同步,網路中任何用戶一旦增加一筆交易,交易信息將通過網路通知其他用戶驗證,記錄到各自的賬本中。區塊鏈之所以得其名是因為它是由一個個包含交易信息的區塊(block)從後向前有序鏈接起來的數據結構。


很多人對區塊鏈的疑問是,如果每一個用戶都擁有一個獨立的賬本,那麼是否意味著可以在自己的賬本上添加任意的交易信息,而成千上萬個賬本又如何保證記賬的一致性? 解決記賬一致性問題正是區塊鏈共識機制的目標 。區塊鏈共識機制旨在保證分布式系統里所有節點中的數據完全相同並且能夠對某個提案(proposal)(例如是一項交易紀錄)達成一致。然而分布式系統由於引入了多個節點,所以系統中會出現各種非常復雜的情況;隨著節點數量的增加,節點失效或故障、節點之間的網路通信受到干擾甚至阻斷等就變成了常見的問題,解決分布式系統中的各種邊界條件和意外情況也增加了解決分布式一致性問題的難度。


區塊鏈又可分為三種:


公有鏈:全世界任何人都可以隨時進入系統中讀取數據、發送可確認交易、競爭記賬的區塊鏈。公有鏈通常被認為是「完全去中心化「的,因為沒有任何人或機構可以控制或篡改其中數據的讀寫。公有鏈一般會通過代幣機制鼓勵參與者競爭記賬,來確保數據的安全性。


聯盟鏈:聯盟鏈是指有若干個機構共同參與管理的區塊鏈。每個機構都運行著一個或多個節點,其中的數據只允許系統內不同的機構進行讀寫和發送交易,並且共同來記錄交易數據。這類區塊鏈被認為是「部分去中心化」。


私有鏈:指其寫入許可權是由某個組織和機構控制的區塊鏈。參與節點的資格會被嚴格的限制,由於參與的節點是有限和可控的,因此私有鏈往往可以有極快的交易速度、更好的隱私保護、更低的交易成本、不容易被惡意攻擊、並且能夠做到身份認證等金融行業必須的要求。相比中心化資料庫,私有鏈能夠防止機構內單節點故意隱瞞或篡改數據。即使發生錯誤,也能夠迅速發現來源,因此許多大型金融機構在目前更加傾向於使用私有鏈技術。

二、區塊鏈共識機制的分類

解決分布式一致性問題的難度催生了數種共識機制,它們各有其優缺點,亦適用於不同的環境及問題。被眾人常識的共識機制有:


l PoW(Proof of Work)工作量證明機制

l PoS(Proof of Stake)股權/權益證明機制

l DPoS(Delegated Proof of Stake)股份授權證明機制

l PBFT(Practical Byzantine Fault Tolerance)實用拜占庭容錯演算法

l DBFT(Delegated Byzantine Fault Tolerance)授權拜占庭容錯演算法

l SCP (Stellar Consensus Protocol ) 恆星共識協議

l RPCA(Ripple Protocol Consensus Algorithm)Ripple共識演算法

l Pool驗證池共識機制


(一)PoW(Proof of Work)工作量證明機制


1. 基本介紹


在該機制中,網路上的每一個節點都在使用SHA256哈希函數(hash function) 運算一個不斷變化的區塊頭的哈希值 (hash sum)。 共識要求算出的值必須等於或小於某個給定的值。 在分布式網路中,所有的參與者都需要使用不同的隨機數來持續計算該哈希值,直至達到目標為止。當一個節點的算出確切的值,其他所有的節點必須相互確認該值的正確性。之後新區塊中的交易將被驗證以防欺詐。


在比特幣中,以上運算哈希值的節點被稱作「礦工」,而PoW的過程被稱為「挖礦」。挖礦是一個耗時的過程,所以也提出了相應的激勵機制(例如向礦工授予一小部分比特幣)。PoW的優點是完全的去中心化,其缺點是消耗大量算力造成了的資源浪費,達成共識的周期也比較長,共識效率低下,因此其不是很適合商業使用。



2. 加密貨幣的應用實例


比特幣(Bitcoin) 及萊特幣(Litecoin)。以太坊(Ethereum) 的前三個階段(Frontier前沿、Homestead家園、Metropolis大都會)皆採用PoW機制,其第四個階段 (Serenity寧靜) 將採用權益證明機制。PoW適用於公有鏈。


PoW機制雖然已經成功證明了其長期穩定和相對公平,但在現有框架下,採用PoW的「挖礦」形式,將消耗大量的能源。其消耗的能源只是不停的去做SHA256的運算來保證工作量公平,並沒有其他的存在意義。而目前BTC所能達到的交易效率為約5TPS(5筆/秒),以太坊目前受到單區塊GAS總額的上限,所能達到的交易頻率大約是25TPS,與平均千次每秒、峰值能達到萬次每秒處理效率的VISA和MASTERCARD相差甚遠。


3. 簡圖理解模式



(ps:其中A、B、C、D計算哈希值的過程即為「挖礦」,為了犒勞時間成本的付出,機制會以一定數量的比特幣作為激勵。)


(Ps:PoS模式下,你的「挖礦」收益正比於你的幣齡(幣的數量*天數),而與電腦的計算性能無關。我們可以認為任何具有概率性事件的累計都是工作量證明,如淘金。假設礦石含金量為p% 質量, 當你得到一定量黃金時,我們可以認為你一定挖掘了1/p 質量的礦石。而且得到的黃金數量越多,這個證明越可靠。)


(二)PoS(Proof of Stake)股權/權益證明機制


1.基本介紹


PoS要求人們證明貨幣數量的所有權,其相信擁有貨幣數量多的人攻擊網路的可能性低。基於賬戶余額的選擇是非常不公平的,因為單一最富有的人勢必在網路中佔主導地位,所以提出了許多解決方案。


在股權證明機制中,每當創建一個區塊時,礦工需要創建一個稱為「幣權」的交易,這個交易會按照一定比例預先將一些幣發給礦工。然後股權證明機制根據每個節點持有代幣的比例和時間(幣齡), 依據演算法等比例地降低節點的挖礦難度,以加快節點尋找隨機數的速度,縮短達成共識所需的時間。


與PoW相比,PoS可以節省更多的能源,更有效率。但是由於挖礦成本接近於0,因此可能會遭受攻擊。且PoS在本質上仍然需要網路中的節點進行挖礦運算,所以它同樣難以應用於商業領域。



2.數字貨幣的應用實例


PoS機制下較為成熟的數字貨幣是點點幣(Peercoin)和未來幣(NXT),相比於PoW,PoS機制節省了能源,引入了" 幣天 "這個概念來參與隨機運算。PoS機制能夠讓更多的持幣人參與到記賬這個工作中去,而不需要額外購買設備(礦機、顯卡等)。每個單位代幣的運算能力與其持有的時間長成正相關,即持有人持有的代幣數量越多、時間越長,其所能簽署、生產下一個區塊的概率越大。一旦其簽署了下一個區塊,持幣人持有的幣天即清零,重新進入新的循環。


PoS適用於公有鏈。


3.區塊簽署人的產生方式


在PoS機制下,因為區塊的簽署人由隨機產生,則一些持幣人會長期、大額持有代幣以獲得更大概率地產生區塊,盡可能多的去清零他的"幣天"。因此整個網路中的流通代幣會減少,從而不利於代幣在鏈上的流通,價格也更容易受到波動。由於可能會存在少量大戶持有整個網路中大多數代幣的情況,整個網路有可能會隨著運行時間的增長而越來越趨向於中心化。相對於PoW而言,PoS機制下作惡的成本很低,因此對於分叉或是雙重支付的攻擊,需要更多的機制來保證共識。穩定情況下,每秒大約能產生12筆交易,但因為網路延遲及共識問題,需要約60秒才能完整廣播共識區塊。長期來看,生成區塊(即清零"幣天")的速度遠低於網路傳播和廣播的速度,因此在PoS機制下需要對生成區塊進行"限速",來保證主網的穩定運行。


4.簡圖理解模式




(PS:擁有越多「股份」權益的人越容易獲取賬權。是指獲得多少貨幣,取決於你挖礦貢獻的工作量,電腦性能越好,分給你的礦就會越多。)


(在純POS體系中,如NXT,沒有挖礦過程,初始的股權分配已經固定,之後只是股權在交易者之中流轉,非常類似於現實世界的股票。)


(三)DPoS(Delegated Proof of Stake)股份授權證明機制


1.基本介紹


由於PoS的種種弊端,由此比特股首創的權益代表證明機制 DPoS(Delegated Proof of Stake)應運而生。DPoS 機制中的核心的要素是選舉,每個系統原生代幣的持有者在區塊鏈裡面都可以參與選舉,所持有的代幣余額即為投票權重。通過投票,股東可以選舉出理事會成員,也可以就關系平台發展方向的議題表明態度,這一切構成了社區自治的基礎。股東除了自己投票參與選舉外,還可以通過將自己的選舉票數授權給自己信任的其它賬戶來代表自己投票。


具體來說, DPoS由比特股(Bitshares)項目組發明。股權擁有著選舉他們的代表來進行區塊的生成和驗證。DPoS類似於現代企業董事會制度,比特股系統將代幣持有者稱為股東,由股東投票選出101名代表, 然後由這些代表負責生成和驗證區塊。 持幣者若想稱為一名代表,需先用自己的公鑰去區塊鏈注冊,獲得一個長度為32位的特有身份標識符,股東可以對這個標識符以交易的形式進行投票,得票數前101位被選為代表。

代表們輪流產生區塊,收益(交易手續費)平分。DPoS的優點在於大幅減少了參與區塊驗證和記賬的節點數量,從而縮短了共識驗證所需要的時間,大幅提高了交易效率。從某種角度來說,DPoS可以理解為多中心系統,兼具去中心化和中心化優勢。優點:大幅縮小參與驗證和記賬節點的數量,可以達到秒級的共識驗證。缺點:投票積極性不高,絕大部分代幣持有者未參與投票;另整個共識機制還是依賴於代幣,很多商業應用是不需要代幣存在的。


DPoS機制要求在產生下一個區塊之前,必須驗證上一個區塊已經被受信任節點所簽署。相比於PoS的" 全民挖礦 ",DPoS則是利用類似" 代表大會 "的制度來直接選取可信任節點,由這些可信任節點(即見證人)來代替其他持幣人行使權力,見證人節點要求長期在線,從而解決了因為PoS簽署區塊人不是經常在線而可能導致的產塊延誤等一系列問題。 DPoS機制通常能達到萬次每秒的交易速度,在網路延遲低的情況下可以達到十萬秒級別,非常適合企業級的應用。 因為公信寶數據交易所對於數據交易頻率要求高,更要求長期穩定性,因此DPoS是非常不錯的選擇。



2. 股份授權證明機制下的機構與系統


理事會是區塊鏈網路的權力機構,理事會的人選由系統股東(即持幣人)選舉產生,理事會成員有權發起議案和對議案進行投票表決。


理事會的重要職責之一是根據需要調整系統的可變參數,這些參數包括:


l 費用相關:各種交易類型的費率。

l 授權相關:對接入網路的第三方平台收費及補貼相關參數。

l 區塊生產相關:區塊生產間隔時間,區塊獎勵。

l 身份審核相關:審核驗證異常機構賬戶的信息情況。

l 同時,關繫到理事會利益的事項將不通過理事會設定。


在Finchain系統中,見證人負責收集網路運行時廣播出來的各種交易並打包到區塊中,其工作類似於比特幣網路中的礦工,在採用 PoW(工作量證明)的比特幣網路中,由一種獲獎概率取決於哈希算力的抽彩票方式來決定哪個礦工節點產生下一個區塊。而在採用 DPoS 機制的金融鏈網路中,通過理事會投票決定見證人的數量,由持幣人投票來決定見證人人選。入選的活躍見證人按順序打包交易並生產區塊,在每一輪區塊生產之後,見證人會在隨機洗牌決定新的順序後進入下一輪的區塊生產。


3. DPoS的應用實例


比特股(bitshares) 採用DPoS。DPoS主要適用於聯盟鏈。


4.簡圖理解模式





(四)PBFT(Practical Byzantine Fault Tolerance)實用拜占庭容錯演算法


1. 基本介紹


PBFT是一種基於嚴格數學證明的演算法,需要經過三個階段的信息交互和局部共識來達成最終的一致輸出。三個階段分別為預備 (pre-prepare)、准備 (prepare)、落實 (commit)。PBFT演算法證明系統中只要有2/3比例以上的正常節點,就能保證最終一定可以輸出一致的共識結果。換言之,在使用PBFT演算法的系統中,至多可以容忍不超過系統全部節點數量1/3的失效節點 (包括有意誤導、故意破壞系統、超時、重復發送消息、偽造簽名等的節點,又稱為」拜占庭」節點)。



2. PBFT的應用實例


著名聯盟鏈Hyperledger Fabric v0.6採用的是PBFT,v1.0又推出PBFT的改進版本SBFT。PBFT主要適用於私有鏈和聯盟鏈。


3. 簡圖理解模式




上圖顯示了一個簡化的PBFT的協議通信模式,其中C為客戶端,0 – 3表示服務節點,其中0為主節點,3為故障節點。整個協議的基本過程如下:


(1) 客戶端發送請求,激活主節點的服務操作;

(2) 當主節點接收請求後,啟動三階段的協議以向各從節點廣播請求;

(a) 序號分配階段,主節點給請求賦值一個序號n,廣播序號分配消息和客戶端的請求消息m,並將構造pre-prepare消息給各從節點;

(b) 交互階段,從節點接收pre-prepare消息,向其他服務節點廣播prepare消息;

(c) 序號確認階段,各節點對視圖內的請求和次序進行驗證後,廣播commit消息,執行收到的客戶端的請求並給客戶端響應。

(3) 客戶端等待來自不同節點的響應,若有m+1個響應相同,則該響應即為運算的結果;



(五)DBFT(Delegated Byzantine Fault Tolerance)授權拜占庭容錯演算法


1. 基本介紹


DBFT建基於PBFT的基礎上,在這個機制當中,存在兩種參與者,一種是專業記賬的「超級節點」,一種是系統當中不參與記賬的普通用戶。普通用戶基於持有權益的比例來投票選出超級節點,當需要通過一項共識(記賬)時,在這些超級節點中隨機推選出一名發言人擬定方案,然後由其他超級節點根據拜占庭容錯演算法(見上文),即少數服從多數的原則進行表態。如果超過2/3的超級節點表示同意發言人方案,則共識達成。這個提案就成為最終發布的區塊,並且該區塊是不可逆的,所有裡面的交易都是百分之百確認的。如果在一定時間內還未達成一致的提案,或者發現有非法交易的話,可以由其他超級節點重新發起提案,重復投票過程,直至達成共識。



2. DBFT的應用實例


國內加密貨幣及區塊鏈平台NEO是 DBFT演算法的研發者及採用者。


3. 簡圖理解模式




假設系統中只有四個由普通用戶投票選出的超級節點,當需要通過一項共識時,系統就會從代表中隨機選出一名發言人擬定方案。發言人會將擬好的方案交給每位代表,每位代表先判斷發言人的計算結果與它們自身紀錄的是否一致,再與其它代表商討驗證計算結果是否正確。如果2/3的代表一致表示發言人方案的計算結果是正確的,那麼方案就此通過。


如果只有不到2/3的代表達成共識,將隨機選出一名新的發言人,再重復上述流程。這個體系旨在保護系統不受無法行使職能的領袖影響。


上圖假設全體節點都是誠實的,達成100%共識,將對方案A(區塊)進行驗證。



鑒於發言人是隨機選出的一名代表,因此他可能會不誠實或出現故障。上圖假設發言人給3名代表中的2名發送了惡意信息(方案B),同時給1名代表發送了正確信息(方案A)。


在這種情況下該惡意信息(方案B)無法通過。中間與右邊的代表自身的計算結果與發言人發送的不一致,因此就不能驗證發言人擬定的方案,導致2人拒絕通過方案。左邊的代表因接收了正確信息,與自身的計算結果相符,因此能確認方案,繼而成功完成1次驗證。但本方案仍無法通過,因為不足2/3的代表達成共識。接著將隨機選出一名新發言人,重新開始共識流程。




上圖假設發言人是誠實的,但其中1名代表出現了異常;右邊的代表向其他代表發送了不正確的信息(B)。


在這種情況下發言人擬定的正確信息(A)依然可以獲得驗證,因為左邊與中間誠實的代表都可以驗證由誠實的發言人擬定的方案,達成2/3的共識。代表也可以判斷到底是發言人向右邊的節點說謊還是右邊的節點不誠實。


(六)SCP (Stellar Consensus Protocol ) 恆星共識協議


1. 基本介紹


SCP 是 Stellar (一種基於互聯網的去中心化全球支付協議) 研發及使用的共識演算法,其建基於聯邦拜占庭協議 (Federated Byzantine Agreement) 。傳統的非聯邦拜占庭協議(如上文的PBFT和DBFT)雖然確保可以通過分布式的方法達成共識,並達到拜占庭容錯 (至多可以容忍不超過系統全部節點數量1/3的失效節點),它是一個中心化的系統 — 網路中節點的數量和身份必須提前知曉且驗證過。而聯邦拜占庭協議的不同之處在於它能夠去中心化的同時,又可以做到拜占庭容錯。


[…]


(七)RPCA(Ripple Protocol Consensus Algorithm)Ripple共識演算法


1. 基本介紹


RPCA是Ripple(一種基於互聯網的開源支付協議,可以實現去中心化的貨幣兌換、支付與清算功能)研發及使用的共識演算法。在 Ripple 的網路中,交易由客戶端(應用)發起,經過追蹤節點(tracking node)或驗證節點(validating node)把交易廣播到整個網路中。追蹤節點的主要功能是分發交易信息以及響應客戶端的賬本請求。驗證節點除包含追蹤節點的所有功能外,還能夠通過共識協議,在賬本中增加新的賬本實例數據。


Ripple 的共識達成發生在驗證節點之間,每個驗證節點都預先配置了一份可信任節點名單,稱為 UNL(Unique Node List)。在名單上的節點可對交易達成進行投票。共識過程如下:


(1) 每個驗證節點會不斷收到從網路發送過來的交易,通過與本地賬本數據驗證後,不合法的交易直接丟棄,合法的交易將匯總成交易候選集(candidate set)。交易候選集裡面還包括之前共識過程無法確認而遺留下來的交易。

(2) 每個驗證節點把自己的交易候選集作為提案發送給其他驗證節點。

(3) 驗證節點在收到其他節點發來的提案後,如果不是來自UNL上的節點,則忽略該提案;如果是來自UNL上的節點,就會對比提案中的交易和本地的交易候選集,如果有相同的交易,該交易就獲得一票。在一定時間內,當交易獲得超過50%的票數時,則該交易進入下一輪。沒有超過50%的交易,將留待下一次共識過程去確認。

(4) 驗證節點把超過50%票數的交易作為提案發給其他節點,同時提高所需票數的閾值到60%,重復步驟(3)、步驟(4),直到閾值達到80%。

(5) 驗證節點把經過80%UNL節點確認的交易正式寫入本地的賬本數據中,稱為最後關閉賬本(last closed ledger),即賬本最後(最新)的狀態。


在Ripple的共識演算法中,參與投票節點的身份是事先知道的,因此,演算法的效率比PoW等匿名共識演算法要高效,交易的確認時間只需幾秒鍾。這點也決定了該共識演算法只適合於聯盟鏈或私有鏈。Ripple共識演算法的拜占庭容錯(BFT)能力為(n-1)/5,即可以容忍整個網路中20%的節點出現拜占庭錯誤而不影響正確的共識。



2. 簡圖理解模式


共識過程節點交互示意圖:



共識演算法流程:



(八)POOL驗證池共識機制


Pool驗證池共識機制是基於傳統的分布式一致性演算法(Paxos和Raft)的基礎上開發的機制。Paxos演算法是1990年提出的一種基於消息傳遞且具有高度容錯特性的一致性演算法。過去, Paxos一直是分布式協議的標准,但是Paxos難於理解,更難以實現。Raft則是在2013年發布的一個比Paxos簡單又能實現Paxos所解決問題的一致性演算法。Paxos和Raft達成共識的過程皆如同選舉一樣,參選者需要說服大多數選民(伺服器)投票給他,一旦選定後就跟隨其操作。Paxos和Raft的區別在於選舉的具體過程不同。而Pool驗證池共識機制即是在這兩種成熟的分布式一致性演算法的基礎上,輔之以數據驗證的機制。






❿ 區塊鏈目前用到哪些共識機制它們各自的優缺點和適用范圍是什麼

1、區塊鏈的技術是什麼?

如果我們把資料庫假設成一本賬本,讀寫資料庫就可以看做一種記賬的行為,區塊鏈技術的原理就是在一段時間內找出記賬最快最好的人,由這個人來記賬,然後將賬本的這一頁信息發給整個系統里的其他所有人。這也就相當於改變資料庫所有的記錄,發給全網的其他每個節點,所以區塊鏈技術也稱為分布式賬本(distributed ledger)。

區塊鏈(Blockchain)是指通過去中心化和去信任的方式集體維護一個可靠資料庫的技術方案。該技術方案主要讓參與系統中的任意多個節點,通過一串使用密碼學方法相關聯產生的數據塊(block),每個數據塊中包含了一定時間內的系統全部信息交流數據,並且生成數據指紋用於驗證其信息的有效性和鏈接(chain)下一個資料庫塊。 區塊鏈是一種類似於NoSQL(非關系型資料庫)這樣的技術解決方案統稱,並不是某種特定技術,能夠通過很多編程語言和架構來實現區塊鏈技術。並且實現區塊鏈的方式種類也有很多,目前常見的包括POW(Proof of Work,工作量證明),POS(Proof of Stake,權益證明),DPOS(Delegate Proof of Stake,股份授權證明機制)等。 區塊鏈的概念首次在論文《比特幣:一種點對點的電子現金系統(Bitcoin: A Peer-to-Peer Electronic Cash System)》中提出,作者為自稱中本聰(Satoshi Nakamoto)的個人(或團體)。因此可以把比特幣看成區塊鏈的首個在金融支付領域中的應用。

2、區塊鏈的原理是什麼?

結合定義區塊鏈的定義,需要有這四個特徵我們才能認為:去中心化(Decentralized)、去信任(Trustless)、集體維護(Collectively maintain)、可靠資料庫(Reliable Database)。並且由四個特徵會引申出另外2個特徵:

開源(Open Source)、匿名性(Anonymity)。如果一個系統不具備這些特徵,將不能視其為基於區塊鏈技術的應用。 去中心化(Decentralized):整個網路沒有中心化的硬體或者管理機構,任意節點之間的權利和義務都是均等的,且任一節點的損壞或者失去都會不影響整個系統的運作。因此也可以認為區塊鏈系統具有極好的健壯性。 去信任(Trustless):參與整個系統中的每個節點之間進行數據交換是無需互相信任的,整個系統的運作規則是公開透明的,所有的數據內容也是公開的,因此在系統指定的規則范圍和時間范圍內,節點之間是不能也無法欺騙其它節點。 集體維護(Collectively maintain):系統中的數據塊由整個系統中所有具有維護功能的節點來共同維護的,而這些具有維護功能的節點是任何人都可以參與的。 可靠資料庫(Reliable Database):整個系統將通過分資料庫的形式,讓每個參與節點都能獲得一份完整資料庫的拷貝。除非能夠同時控制整個系統中超過51%的節點,否則單個節點上對資料庫的修改是無效的,也無法影響其他節點上的數據內容。因此參與系統中的節點越多和計算能力越強,該系統中的數據安全性越高。 開源(Open Source):由於整個系統的運作規則必須是公開透明的,所以對於程序而言,整個系統必定會是開源的。 匿名性(Anonymity):由於節點和節點之間是無需互相信任的,因此節點和節點之間無需公開身份,在系統中的每個參與的節點都是匿名的。

3、區塊鏈金融是什麼?

2016年,革新者將被革新。新一輪技術革命將一邊應對共享經濟的陌生人之間信任的挑戰,一邊破壞此類平台賺錢的基礎。

傳統的中介

共享經濟雖然有效地挑戰了現狀,並且帶有強烈創新屬性,但是,它採用的依然是非常傳統的商業模式。

最常見的對交易收取傭金的方式已經沿用了數個世紀。今天,技術已經讓很多事成為可能,但是仍無法完全取代中介。

P2P 平台與其他在線市場剛興起時,人們紛紛談論去中介(disintermediation),這種繞過傳統中介,通過網路直接將人們連接起來的新方式。事實上,盡管我們已經體會到新型市場便捷得多,並看到與各種供應商進行交易的可能性,但是,我們今天仍然在很大程度上依賴中介。事實是如今最大的新型企業正是巨型中介,其規模超乎想像,像阿里巴巴、Amazon、eBay 和 Uber。

有沒有一種技術解決方案,能夠完全去除各交易方之間的中介?是否存在一個系統,在其中你能夠與任何人直接交易,並免於受到欺騙,同時無人擁有該系統,因此沒有傭金收取方。

區塊鏈技術使之成為可能。區塊鏈是比特幣的核心技術,極具創新性,可以用於建成完全透明、無主、分散的系統,能在沒有任何形式中介的情況下,保證各種交易方安全進行交易,這些交易方包括人、企業。

自然而然地,很多資源流向了區塊鏈,區塊鏈也給金融與法律行業帶來了相當的影響,並最終將在這兩個行業肆虐橫行,或者提供最佳機會,這全在於你怎麼看待它。

去中心化金融

2015年,可能是出於對另類金融(alternative finance)市場增長的高度敏感,九家投資銀行針對區塊鏈技術金融服務聯合開發了開放標准。去年,不斷有各種活動討論區塊鏈技術的未來,還推出了Slock.it,這是去中心化共享經濟的第一批技術堆棧之一。

區塊鏈下的共享經濟是什麼樣的?

如果你想在共享經濟中繼續賺取傭金,那就要創造新的商業模式。

當然,區塊鏈市場仍將需要一些投資。開發者可能樂於花費時間,解決困擾系統的代碼。但是,我至今還沒遇到早該出現的有類似想法或樂於投資的品牌顧問、設計師或商人。單單依靠代碼無法幫助區塊鏈市場進入主流。

但是區塊鏈將會蓬勃發展,加之擺脫了煩人的中介,幾乎可以預測它肯定會比現有的共享經濟更加便宜,到那時,巨頭們就會被迫著手應對。

老牌共享經濟將重復歷史,因堅信本身堅不可摧而走向沒落,被更靈活、有科技助力的競爭對手迅速取代?還是將進行實驗,在共享經濟 2.0 中找到有利可圖的市場,並在游戲中勝出?

那麼信用呢?

信用,是共享經濟相關所有討論中的最高頻詞,相當復雜棘手。目前的協作平台們表達地非常清晰:我們能提高共享經濟中的信任水平;我們能採取最優措施,保證用戶信任我們的平台並在上面交易,但是,我們無法保證人與人的交易值得信任。區塊鏈解則解決了上述問題。

區塊鏈中交易系統不可改變,並且可以在已分配分類賬內跟蹤每筆交易,智能合同為所有雙方交易充分設定參數與條件,因此區塊鏈不再需要任何的 「可信中介」 或者陌生人之間信用的擔保方。

到 2017年,監管機構將意識到他們需要徹底反思共享經濟領域的規章制度。那時,各交易方將在區塊鏈中達成數億的獨立合同,一種解決方案是向系統中敲進規則代碼。

2008年 左右共享經濟首次出現時,很多人歡呼不已,認為是將帶領我們進入一種新的包容、可持續經濟的現象,是未來帶我們進入後資本範式的一種民主化力量。但是,(到目前為止)事實並非如此。互聯網剛出現時也是這樣,在最初階段曾被烏托邦式理想化,所以,對區塊鏈持有同樣變革性期待的人很可能會失望。即便如此,區塊鏈將動搖共享經濟巨頭,這絲毫不會受到影響。

4、區塊鏈社區

布比區塊鏈專注於區塊鏈技術和產品的創新,已擁有多項核心技術,開發了自有的區塊鏈服務平台。以去中心化信任為核心,致力於打造開放式價值流通網路,讓數字資產都自由流動起來。

特色與優勢

已取得多項核心技術創新,開發了自有的區塊鏈基礎服務平台,已在股權、供應鏈、積分、信用等領域開展應用。

快速交易驗證

通過對簽名演算法、共識機制、賬本存儲等關鍵交易環節的優化,布比區塊鏈可以實現秒級的快速交易驗證。

高效賬本存取

布比區塊鏈對賬本存儲結構的調整,可以節省90%的儲存空間,降低系統長時間運行,導致賬本存取性能下降的風險。

多種資產發行

布比區塊鏈支持不同用戶、多種資產的發行與交易,每種資產可跟蹤記錄發行商、發行數量、交易流通等詳情。

聯合簽名控制

允許同一賬戶下設置多個使用用戶,並針對不同的操作設置相應的許可權,以滿足多方簽名控制的使用場景。

內置智能合約

智能合約是一套以數字形式定義的承諾,區塊鏈變身合約的參與方,負責維護保存合約,並自動執行。

鏈上交易所

與傳統中心化交易所相比,用區塊鏈構建的交易平台,所有交易都在鏈上驗證、完成和保存,保障用戶交易安全性。

布比區塊鏈要做的是一項新的技術和產品——實現真正的價值流通,使得互聯網到達一個新的高度。如果有了這個技術的應用,在轉移資產的時候就可以沒有中心機構了,可以實現我們之間資產的直接轉移。將來如果網路本身可以結賬,我們就可以直接轉移了,就不需要通過中間機構。

熱點內容
元宇宙景點 發布:2025-06-23 11:24:14 瀏覽:699
eth與ht哪個值得買 發布:2025-06-23 11:21:16 瀏覽:623
區塊鏈上新幣連續新底怎麼辦 發布:2025-06-23 11:06:44 瀏覽:372
聯通38抵消合約怎麼取消 發布:2025-06-23 11:01:43 瀏覽:680
合約怎麼收取手續費 發布:2025-06-23 11:01:42 瀏覽:309
網易區塊鏈邀請碼貼吧 發布:2025-06-23 10:57:15 瀏覽:522
比特幣收款地址能篡改嗎 發布:2025-06-23 10:52:53 瀏覽:805
區塊鏈領域股票 發布:2025-06-23 10:50:43 瀏覽:653
比特幣今日財經 發布:2025-06-23 10:50:33 瀏覽:661
開發區塊鏈多少錢 發布:2025-06-23 10:47:43 瀏覽:541