當前位置:首頁 » 區塊鏈知識 » 區塊鏈技術zookeeper

區塊鏈技術zookeeper

發布時間: 2025-06-16 17:14:06

⑴ 共識演算法系列之一:私鏈的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

⑵ 24 年 「年薪百萬」 的 Java 程序員,都要學什麼

大家好,我叫程序員魚皮,分享一篇關於2024年Java架構師必備技能的文章,了解國外同行的高要求。作為國內Java開發者,要想提升,以下技術值得關註:


1. 微服務架構


掌握Spring Boot和Spring Cloud,構建松耦合、可擴展的系統,是關鍵。


2. 雲原生應用


學會利用雲平台部署,如大廠雲服務,善用彈性與自動化。


3. 容器化與編排


掌握Docker鏡像製作與Kubernetes基礎,提升部署效率和應用可靠性。


4. 響應式編程


理解Spring Webflux,適應實時應用,如Spring 5的響應式特性。


5. 無伺服器計算


利用雲服務進行部署,關注簡化運維。


6. 事件驅動架構


理解事件通信和協作,如RabbitMQ或Kafka的使用。


7. 安全校驗


JWT和Spring Security是保證應用安全的必備工具。


8. DevOps & CI/CD


了解GitHub Actions或GitLab CI/CD,加快軟體交付效率。


9. API與集成


設計RESTful API,使用Swagger和了解GraphQL的選學。


10. 數據管理


精通MySQL和Redis,理解NoSQL選擇,如MongoDB。


11. 分布式系統


掌握Dubbo和Zookeeper,實現分布式開發。


12. 並發與優化


學習JUC,理解並發編程和性能調優。


13. Java生態與更新


持續關注Java新版本,確保最佳實踐。


14. 架構模式


學習MVC,理解經典設計模式,如策略模式。


15. 測試驅動開發


掌握JUnit和Mockito,理解TDD理念。


16. 圖資料庫與大數據


圖資料庫作為擴展知識,理解Elasticsearch。


17. 人工智慧與機器學習


了解AI介面調用,提升應用安全性。


18. 區塊鏈技術


接觸區塊鏈,理解去中心化應用開發。


總結,成為Java架構師需要不斷學習和實踐,技術日新月異,持續關注和提升是關鍵。祝各位程序員在技術道路上不斷進步!

⑶ SuperCell--超級細胞

超級細胞

一.前言:

2100萬枚,總量固定永遠不通脹,這是比特幣最鮮明特徵之一。與「總量固定」的比特幣不同,以太坊和EOS等加密幣都保留了一定速率的通脹。從而超級細胞(SuperCell)橫空而世。

二.介紹:

英文名:SuperCell 中文名:超級細胞 代幣名稱:「SC」 「超級細胞(SC)」是一種基於ERC20智能合約的通貨緊縮類自銷毀的加密貨幣SC。SC得到國際知名區塊鏈研發團隊R4,區塊鏈聯盟,超級賬本linux基金會的支持。SC作為一項社會實驗和金融案例研究而出現在ERC20智能合約,來探索衡量通貨緊縮類加密貨幣的可行性。

「超級細胞」的主要特徵:

1.代幣初始發行量666萬

2.每次ERC20鏈上轉賬時,百分之1的交易量會被像細胞分裂怡亞通銷毀

3.永遠不會有代幣增發

4.IBO在交易平台上線後,以IBO總數量的90%的ETH在交易平台以單價不低於0.00275ETH回購。參與IBO的礦工會有穩地收益,直至IBO完成,流通總量達到2000000SC。IBO總數量的10%用於應用開發。

三.項目背景:

「銷毀代幣」相信這4個字在ERC20智能合約加密貨幣中已經非常常見,不少交易所、項目方為了提升代幣價值,都會通過回購代幣銷毀的方法,來減少流通量從而提高代幣市場價格,如此研發團隊提出大膽的設想與創新:通過智能合約自動銷毀代幣,每一次轉賬都會自動銷毀1%的交易量。而之前很多加密貨幣的銷毀模式,大都是基於人為主動操作,帶有明顯的人治色彩,無論是透明度還是可信任度都不高。 「超級細胞(SC)」研發團隊表示:超級細胞出來的意圖不是僅僅用於日常交易,而是用作對傳統加密貨幣通貨膨脹工具的一種去中心化對沖方案,一種分散的價值儲存,它作為一項社會實驗和金融案例研究,來探索衡量通貨緊縮貨幣的可行性。

四.token經濟模型

總發行量666萬 (永不增發)

社區生態激勵200萬(每月糖果計劃)

基金會200萬(鎖倉,每年釋放百分之20%)

礦工IBO 200萬 (參與SC礦工計劃)

創史團隊獎勵 66萬 (上線知名交易所獎勵團隊)

五.ERC20智能合約地址:



六.團隊人員

大衛Vyravipillai ,是一名新加坡基金會的主席校長,自1985 年以來37年投資管理經歷,畢業於哈佛大學,聖安德烈斯大學,大衛Vyravipillai是現超級細胞首席執行官創始人,負責超級細胞整個項目運營與發展。

喬什·肖爾斯,北卡羅來納大學哲學與計算機研究學士,主修計算 機專業。曾是虛擬貨幣在線/國際支付和欺詐方面的專家,也是 Kraken 的創始人兼首席執行官,Kraken 是世界上最值得信賴和 最大的比特幣交易所之一,是深入虛擬貨幣行業 15 年的資深人 士,現為超級細胞首席技術官 CTO,主攻技術研究與開發。

Manish Sharma,中文名:曼尼什·沙瑪.曾是美國facebook工程師,擁有豐富的交易系統開發經驗,能夠做到 精細化控制事物;並精通主流開源框架,如 rocketmq,iBatis,netty,bbo,zookeeper,cat,mycat等,熟悉微服務化開發, 大數據量、高並發系統,擁有大型網站構建經驗。現為超級細胞分布式工程師。

Brandon Arrindell 中文名:布蘭登·阿林德爾 ,BBA Hons(會計與金融)新加坡國立大學出身,美國企業家、投資者、軟體工程師。布蘭登·阿林德爾是著名的 Mosaic 瀏覽器共同開發者,第一個被廣泛使用的瀏覽器;網景通訊公司的 創始人;矽谷風險投資公司 Andreessen Horowitz 創始人和普通 合夥人,現為超級細胞顧問。

超級細胞(SC)將打造智能合約加密貨幣,第一可實用性通貨緊縮類加密貨幣,打開加密貨幣通往世界的另一扇大門。

⑷ 區塊鏈私鏈如何變成公鏈

如何通俗解釋區塊鏈?

「區塊鏈技術被認為是繼蒸汽機、電力、互聯網之後,下一代顛覆性的核心技術。如果說蒸汽機釋放了人們的生產力,電力解決了人們基本的生活需求,互聯網徹底改變了信息傳遞的方式,那麼區塊鏈作為構造信任的機器,將可能徹底改變整個人類社會價值傳遞的方式。」

剛剛接觸區塊鏈,有太多太多需要了解和知道的基礎知識,大家先不要著急,今天給大家科普這些知識。今天咱們一起先來看看公鏈、私鏈、聯盟鏈以及側鏈到底是什麼吧。

一、什麼是區塊鏈?

區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分布式節點共識演算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算範式。其具有去中心化、公開透明、不可篡改、分布式存儲、智能合約等特點。簡言之,區塊鏈就是一個分布式的公共賬本技術。大家可以查看這個賬本的內容,並參與賬本的維護與更新。

二、公鏈、私鏈和聯盟鏈的區別

區塊鏈根據去中心化的程度,可以分為公鏈、私鏈和聯盟鏈。

公鏈——完全去中心化,所有用戶都可以讀取、寫入;

聯盟鏈——部分去中心化,寫入參與者被提前篩選,讀寫許可權由被選定的參與者們決定;

私鏈——部分去中心化,寫入許可權僅在一個組織手裡,讀寫許可權由該組織決定;

公鏈是完全去中心化的,鏈上數據都是公開透明的,不可更改,任何人都可以通過交易或挖礦讀取和寫入數據。其典型代表就是比特幣區塊鏈,在比特幣區塊鏈上,任何人都可以在其鏈上進行交易,並且查看鏈上的所有交易信息。比如說虎妞可以在鏈上查看自己BTC地址的轉出、轉入信息(具體操作請點擊【實操指南】充值提現遲遲未到賬,別著急);大家也可以看到中本聰是否有從他的BTC地址中提取比特幣(前提是知道中本聰的BTC地址)。

聯盟鏈是部分去中心化的,其開放程度和去中心化程度是有所限制的。其參與者是被提前篩選出來或者直接指定的,資料庫的讀取許可權可能是公開的,也可能像寫入許可權一樣只限於系統的參與者。前陣子用於日韓國際匯款及日本本國銀行間匯款的瑞波區塊鏈,就是一個聯盟鏈。它為加入聯盟的金融機構提供跨境支付服務,只有該聯盟內的成員,獲得多數聯盟成員的同意後,才有資格在其鏈上寫入數據。同時,其鏈上數據是對所有人開放,還是對一部分人開放,也由其聯盟決定。

私鏈跟聯盟鏈類似,其開放程度和去中心化程度是有所限制的,其讀寫權,記賬權由組織決定。與聯盟鏈最大的不同在於,聯盟鏈是為一個聯盟,比如一個行業服務的;而私鏈則是為一個組織,比如一家公司內部服務。據每日新聞最新的報道,日本最大的金融機構——三菱UFJ集團打算發行自己的代幣(MUFG),用以解決電子貨幣轉賬在不經過銀行的情況下,轉賬金額不能超過100萬日元(約6萬多RMB)的問題。在該場景中,三菱UFJ集團使用的就是為公司內部服務的私鏈。

三、側鏈

「側鏈」從嚴格上來說,其本身並不是區塊鏈,可以理解為區塊鏈的一種擴展協議。早期「側鏈」是為了解決比特幣區塊鏈技術的限制問題,先鎖定主鏈上的資產,然後將鎖定的那部分資產在側鏈上做參數修改(如修改,並進行自由交易和轉換。例如修改10分鍾記一次賬、區塊大小1M限制等,賦予側鏈上自己的交易定義。

當前閃電網路就是基於側鏈技術做了些擴展,達到快速轉賬和交易的目的。接下來簡單介紹下閃電網路是怎麼運作的。

若AB經常交易,就可以在AB間建立一個含有2個比特幣的通道,AB各發送1個比特幣到多重簽名地址,然後將這些幣暫時鎖在主鏈上。

只要AB為交易簽名,這兩個幣就可以在雙方中免費發來發去。能免費的原因是這2個比特幣根本沒有移動,只是在區塊鏈之外,交易了幣的所有權。當最後關閉通道時,交易才會被寫到區塊鏈上,雙方就可以拿到屬於自己的那部分幣。

在閃電網路上,不是建立通道的AB之間轉賬時,比如說A支付給沒有建立通道的D時,可以通過就近的節點傳播,從A?B?C?D,A只需要支付小額的手續費給B、C即可。如果BC之間已經建立通道了的話,又可以省掉一筆手續費。需要注意的是,如果在主鏈上操作這個步驟,需要全網所有節點同步這個信息,其手續費就要高很多,速度也會慢很多;而在閃電網路上,因為只需要傳播ABCD這幾個節點,所以速度會快很多,手續費也會便宜很多。

簡單歸納下側鏈的特性:

1.側鏈是一種擴展協議,為了解決主鏈(如比特幣區塊鏈)技術的限制問題;

2.一般先鎖定主鏈上的資產,然後將鎖定的那部分資產在側鏈上做參數修改;

3.用以實現低手續費、高轉賬速度等目的。

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

對數據順序達成一致共識是很多共識演算法要解決的本質問題

Fabic的pbft演算法實現

現階段的共識演算法主要可以分成三大類:公鏈,聯盟鏈和私鏈

私鏈,所有節點可信

聯盟鏈,存在對等的不信任節點

私鏈:私鏈的共識演算法即區塊鏈這個概念還沒普及時的傳統分布式系統里的共識演算法,比如zookeeper的zab協議,就是類paxos演算法的一種。私鏈的適用環境一般是不考慮集群中存在作惡節點,只考慮因為系統或者網路原因導致的故障節點。

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

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

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

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

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

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

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

pbft演算法的提出主要是為了解決拜占庭將軍問題

要讓這個問題有解,有一個十分重要的前提,那就是信道必須是可靠的。如果信道不能保證可靠,那麼拜占庭問題無解。關於信道可靠問題,會引出兩軍問題。兩軍問題的結論是,在一個不可靠的通信鏈路上試圖通過通信以達成一致是基本不可能或者十分困難的。

拜占庭將軍問題最早是由LeslieLamport與另外兩人在1982年發表的論文《TheByzantineGeneralsProblem》提出的,他證明了在將軍總數大於3f,背叛者為f或者更少時,忠誠的將軍可以達成命令上的一致,即3f+1=n。演算法復雜度為o(n^(f+1))。而MiguelCastro(卡斯特羅)和BarbaraLiskov(利斯科夫)在1999年發表的論文《》中首次提出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)差

部分來自:

區塊鏈在設計上就是為了BFT

區塊鏈三大公鏈是什麼?

區塊鏈的三大公鏈指的是BTC,ETH,ADA

區塊鏈公鏈也被稱之為區塊鏈共有鏈,公鏈的意思就是說任何人都可以在任何時間讀取系統中的數據,公鏈往往都是完全去中心化的,這樣的特點讓所有人和機構都不能控制或是篡改鏈上的數據。

拓展資料:

區塊鏈是一個信息技術領域的術語。從本質上講,它是一個共享資料庫,存儲於其中的數據或信息,具有「不可偽造」「全程留痕」「可以追溯」「公開透明」「集體維護」等特徵。基於這些特徵,區塊鏈技術奠定了堅實的「信任」基礎,創造了可靠的「合作」機制,具有廣闊的運用前景。

類型

1、公有區塊鏈

公有區塊鏈(PublicBlockChains)是指:世界上任何個體或者團體都可以發送交易,且交易能夠獲得該區塊鏈的有效確認,任何人都可以參與其共識過程。公有區塊鏈是最早的區塊鏈,也是應用最廣泛的區塊鏈,各大bitcoins系列的虛擬數字貨幣均基於公有區塊鏈,世界上有且僅有一條該幣種對應的區塊鏈。

2、聯合(行業)區塊鏈

行業區塊鏈(ConsortiumBlockChains):由某個群體內部指定多個預選的節點為記賬人,每個塊的生成由所有的預選節點共同決定(預選節點參與共識過程),其他接入節點可以參與交易,但不過問記賬過程(本質上還是託管記賬,只是變成分布式記賬,預選節點的多少,如何決定每個塊的記賬者成為該區塊鏈的主要風險點),其他任何人可以通過該區塊鏈開放的API進行限定查詢。

3、私有區塊鏈

私有區塊鏈(PrivateBlockChains):僅僅使用區塊鏈的總賬技術進行記賬,可以是一個公司,也可以是個人,獨享該區塊鏈的寫入許可權,本鏈與其他的分布式存儲方案沒有太大區別。傳統金融都是想實驗嘗試私有區塊鏈,而公鏈的應用例如bitcoin已經工業化,私鏈的應用產品還在摸索當中。

區塊鏈中的公鏈是什麼?

公鏈也稱「公有鏈」,即指全世界任何人都可以隨時進入到系統中讀取數據、發送可確認交易、競爭記賬的區塊鏈。公有鏈通常被認為是「完全去中心化」的,因為沒有任何個人或者機構可以控制或篡改其中數據的讀寫。而從應用上說,區塊鏈公有鏈則主要包括比特幣、以太坊、超級賬本、大多數山寨幣以及智能合約,其中區塊鏈公有鏈的始祖則為比特幣區塊鏈,具有以下特點:

1、代碼開源

代碼上傳到github,每個人都可以通過下載得到完整的區塊鏈數據,接受大眾的考驗。

2、完全去中心化

任何人都可以成為一個節點,每一個節點都是公開的,每個人都可以參與區塊鏈的計算,任何節點都不是永久的,而是階段性的,任何中心對節點都不具有強制性。任何人都可讀取的、且能發送交易,而且交易能夠在區塊鏈上得到有效的確認,任何人都可參與其中共識過程。共識過程決定某個區塊可以添加到區塊鏈中,以及確切的當前狀態。每個人都可以從中得到經濟獎勵,和在共識過程中所作的貢獻成正比。這些公有鏈通常被認為是「完全意義上的去中心化」。

3、開發去中心化應用

程序開發者通過此公鏈,可以很方便地開發出去中心化應用。公有鏈可以保護用戶權益免受程序開發者的影響。

區塊鏈的鏈分類

前兩天有朋友微信上問了許多關於區塊鏈的一些問題,其中一個問題就是區塊鏈的這個鏈怎麼去分類。區塊鏈目前可以分為四類:公鏈,私鏈,聯盟鏈以及側鏈。北京木奇移動技術有限公司,專業的區塊鏈外包開發公司,歡迎洽談合作。下面帶大家了解區塊鏈這幾個鏈各自的特點以及如何應用,希望對大家有所幫助。

1.公鏈——人人可參與

公鏈是指任何人都可讀取的、任何人都能發送交易且交易能獲得有效確認的、任何人都能參與其中共識過程的區塊鏈。

公鏈採取了採取工作量證明機制(POW)、權益證明機制(POS)、股份授權證明機制(DPOS)等方式,並將經濟獎勵和加密數字驗證結合了起來,並建立一個原則就是每個人從中可獲得的經濟獎勵與工作量成正比。這些區塊鏈通常被認為是完全去中心化的。

特性:

1.開源,由於整個系統的運作規則公開透明,這個系統是開源系統;2.保護用戶免受開發者的影響,在公有鏈中程序開發者無權干涉用戶,所以區塊鏈可以保護使用他們開發的程序的用戶;3.訪問門檻低,任何擁有足夠技術能力的人都可以訪問,也就是說,只要有一台能夠聯網的計算機就能夠滿足訪問的條件;4.所有數據默認公開,盡管所有關聯的參與者都隱藏自己的真實身份,這種現象十分的普遍。他們通過他們的公共性來產生自己的安全性,在這里每個參與者可以看到所有的賬戶余額和其所有的交易活動。

案例:公有鏈中有許多我們熟悉的身影:BTC,ETH,EOS,AE,ADA等

2.私鏈——權利掌握在少數人手裡

私鏈是指其寫入許可權僅在一個組織手裡的區塊鏈。讀取許可權或者對外開放,或者被任意程度地進行了限制。相關的應用囊括資料庫管理、審計、甚至一個公司,盡管在有些情況下希望它能有公共的可審計性,但在很多的情形下,公共的可讀性並非是必須的。

特性:

1.交易速度快,一個私鏈的交易速度可以比任何其他的區塊鏈都快,甚至接近了並不是一個區塊鏈的常規資料庫的速度。這是因為就算少量的節點也都具有很高的信任度,並不需要每個節點來驗證一個交易。2.隱私性好,給隱私更好的保障私有鏈使得在那個區塊鏈上的數據隱私政策像在另一個資料庫中似的完全一致;不用處理訪問許可權和使用所有的老辦法,但至少說,這個數據不會公開地被擁有網路連接的任何人獲得。3.交易成本低交易成本大幅降低甚至為零私有鏈上可以進行完全免費或者至少說是非常廉價的交易。如果一個實體機構控制和處理所有的交易,那麼他們就不再需要為工作而收取費用。

案例:Linux基金會、R3CEVCorda平台以及GemHealth網路的超級賬本項目(Hyperledgerproject)或在開發或在使用私鏈。

3.聯盟鏈——部分去中心化

聯盟鏈開放程度和去中心化程度是有所限制的。其參與者是被提前篩選出來或者直接指定的,資料庫的讀取許可權可能是公開的,也可能像寫入許可權一樣只限於系統的參與者。

特性:

1.交易成本低,交易只需被幾個受信的高算力節點驗證就可以了,而無需全網確認;2.節點容易連接,若是出了問題,聯盟鏈可以迅速通過人工干預來修復,並允許使用共識演算法減少區塊時間,從而更快完成交易;3.靈活,如果需要的話,運行私有區塊鏈的共同體或公司可以很容易地修改該區塊鏈的規則,還原交易,修改余額等。

案例:瑞波用於日韓國際匯款及日本本國銀行間匯款建立了聯盟鏈,同時之前火過一陣子的迅雷鏈克也是一種半開放的聯盟鏈。

4.側鏈——拓展協議

側鏈」從嚴格上來說,其本身並不是區塊鏈,可以理解為區塊鏈的一種擴展協議。早期「側鏈」是為了解決比特幣區塊鏈技術的限制問題。側鏈就像是一條條通路,將不同的區塊鏈互相連接在一起,以實現區塊鏈的擴展。側鏈完全獨立於比特幣區塊鏈,但是這兩個賬本之間能夠「互相操作」,實現交互。

特性:

1.獨立性,側鏈架構的好處是代碼和數據獨立,不增加主鏈的負擔,避免數據過度膨脹。側鏈有獨立的區塊鏈,有獨立的受託人或者說見證人,同時也有獨立的節點網路,就是說一個側鏈產生的區塊只會在所有安裝了該側鏈的節點之間進行廣播。2.靈活性,側鏈所有的區塊鏈參數是可以定製的,簡單的比如區塊間隔、區塊獎勵、交易費的去向等,高級用戶還可以修改共識演算法。

案例:LSK,RDN,ARDR等幣種是利用的側鏈技術。

對於目前整個數字貨幣領域而言,今年可能仍然是底層公有鏈項目的競爭大賽,原因是目前公鏈作為區塊鏈的基礎設施還是存在明顯的不足,尚且無法實現真正的安全、可靠和高效。這也明顯制約著整個區塊鏈產業的發展。

什麼是公鏈

公鏈也稱「公有鏈」,而公有鏈是指全世界任何人都可讀取、發送交易且交易能獲得有效確認的、也可以參與其中共識過程的區塊鏈。根據區塊鏈網路中心化程度的不同,分化出3種不同應用場景下的區塊鏈:

1、全網公開,無用戶授權機制的區塊鏈,稱為公有鏈;

2、允許授權的節點加人網路,可根據許可權查看信息,往往被用於機構間的區塊鏈,稱為聯盟鏈或行業鏈;

3、所有網路中的節點都掌握在一家機構手中,稱為私有鏈。

(4)區塊鏈技術zookeeper擴展閱讀:

根據區塊鏈網路中心化程度的不同,分化出3種不同應用場景下的區塊鏈:

(1)全網公開,無用戶授權機制的區塊鏈,稱為公有鏈;

(2)允許授權的節點加人網路,可根據許可權查看信息,往往被用於機構間的區塊鏈,稱為聯盟鏈或行業鏈;

(3)所有網路中的節點都掌握在一家機構手中,稱為私有鏈。

聯盟鏈和私有鏈也統稱為許可鏈,公有鏈稱為非許可鏈。

熱點內容
dogx轉出12萬以太坊 發布:2025-06-16 22:36:50 瀏覽:382
pr什麼是區塊鏈主題 發布:2025-06-16 22:35:48 瀏覽:638
9月10日區塊鏈中國省會 發布:2025-06-16 22:34:53 瀏覽:621
區塊鏈python知乎 發布:2025-06-16 22:23:32 瀏覽:743
btcetheos區別 發布:2025-06-16 22:23:25 瀏覽:651
非法集資數字貨幣合同無效 發布:2025-06-16 22:07:24 瀏覽:194
王者nbamvp合約怎麼獲得 發布:2025-06-16 22:04:49 瀏覽:945
btc用哪個冷錢包 發布:2025-06-16 21:55:11 瀏覽:27
eth的替代者到底是誰 發布:2025-06-16 21:53:16 瀏覽:717
幣圈杠桿合約風險 發布:2025-06-16 21:40:31 瀏覽:306