CBFT共識機(jī)制

簡介

CBFT(Concurrent Byzantine Fault Tolerance) 并行拜占庭容錯(cuò)算法,從是拜占庭容錯(cuò)算法上發(fā)展而來新的共識算法。
CBFT算法有四個(gè)階段:block determination、pre-prepare、prepare 和 commit,后三個(gè)階段與PBFT算法的三個(gè)階段類似。CBFT的一個(gè)重要優(yōu)勢是并發(fā)性,每個(gè)塊可以與其他塊并發(fā)的方式投票及建塊,從而大大的提高共識速度。CBFT另一個(gè)重要特點(diǎn)就是可以在提交階段檢測受損節(jié)點(diǎn),可以在最后階段廣播消息來識別叛徒節(jié)點(diǎn)。步驟包含:交易級別的確認(rèn)和投票、建塊、塊驗(yàn)證、塊確認(rèn)。

CBFT共識算法.png

交易級別的確認(rèn)和投票

所有節(jié)點(diǎn)對收到的交易進(jìn)行hash映射,得到一個(gè)交易Hash集合,將交易Hash集合發(fā)出給其余所有節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)對收到的交易Hash集合進(jìn)行2/3與運(yùn)算,求得2/3以上節(jié)點(diǎn)的交易交集對應(yīng)的交易Hash集合;對于副本Ni,假設(shè)Si是其捕獲中的一組交易。 Ni廣播Hi = {hash(t)| t∈S},并向其他副本sign(Hi,Ni)。這個(gè)階段也選擇一個(gè)主要的副本Np;

建塊

建塊節(jié)點(diǎn)根據(jù)這個(gè)交易Hash集合得到交易集合進(jìn)行建塊,將塊提交給其余節(jié)點(diǎn);對于每個(gè)接收到的消息(Hi,sign(Hi,Ni)),主副本Np首先使用sign(Hi,Ni)和Ni的公鑰來檢查Hi的一致性。然后,Np計(jì)算∩in = 1Hi。交集中的交易被添加到塊B中。然后,Np向其他副本廣播B和sign(B,Np)。

對塊進(jìn)行驗(yàn)證

收到塊的節(jié)點(diǎn)通過自身的交易Hash集合和塊中的交易集合對比完成驗(yàn)證,驗(yàn)證結(jié)束后將驗(yàn)證結(jié)果的數(shù)字簽名發(fā)給其余所有節(jié)點(diǎn);在這個(gè)階段,每個(gè)副本首先使用sign(B,Np)和Np的公鑰來檢查B的一致性,每個(gè)副本投票B。使vote(B,Ni)表示副本Ni對B的投票(vote(B,Ni)是表示同意或拒絕)。之后,Ni將vbi =(vote(B,Ni),sign(vote(B,Ni),Ni))廣播給其他副本。

塊投票

第二輪投票將所有節(jié)點(diǎn)收到的所有對該塊的投票簽名后轉(zhuǎn)發(fā),從而使得每個(gè)節(jié)點(diǎn)收到所有節(jié)點(diǎn)的投票,對投票進(jìn)行統(tǒng)計(jì)得到最終的結(jié)果,從而決定是否接納該塊;每個(gè)副本已收到所有其他副本的投票。然而,惡意副本可以向不同的副本發(fā)送不同的投票。因此,在這個(gè)階段,每個(gè)副本Nj首先使用sign(vote(B,Ni))和Ni的公鑰來檢查vote(B,Ni)的一致性。然后,Nj向所有其他副本廣播svj = {vb0,vb1,...,vbn}和sign(svj,Nj)。

塊確認(rèn)

對于每個(gè)副本Ni,它接收sv0,sv1,...,svn。對于0≤j≤n,它首先使用sign(svj,Nj)和Nj的公鑰來檢查svj的一致性。然后,計(jì)算B的同意的數(shù)量。如果同意的數(shù)量超過2n / 3,Ni回復(fù)agree給調(diào)用者。請注意,如果svj中的vbk與svl不同,對于j ≠ l,Nk是惡意副本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、快速術(shù)語檢索 比特幣地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如閱讀 16,566評論 4 87
  • 分布式系統(tǒng)面臨的第一個(gè)問題就是數(shù)據(jù)分布,即將數(shù)據(jù)均勻地分布到多個(gè)存儲節(jié)點(diǎn)。另外,為了保證可靠性和可用性,需要將數(shù)據(jù)...
    olostin閱讀 4,922評論 2 26
  • 加密貨幣,特別是比特幣,幾乎從各個(gè)方面都得到了大量關(guān)注:規(guī)則、管理、稅務(wù)、技術(shù)、產(chǎn)品創(chuàng)新等等,不勝枚舉?!包c(diǎn)對點(diǎn)(...
    簡聞閱讀 712評論 0 9
  • 徹底完成目錄修改工作 并且,明天開始,到23好過年,就只有來年的準(zhǔn)備工作要做了。 還有五個(gè)工作日就要過年了,還有一...
    以為佚名是人名閱讀 265評論 0 0
  • 明天就是舉世矚目的上海迪士尼樂園盛大開園的日子,讓我來回憶參加測試時(shí)情景吧。朋友問我去迪士尼參加測試感受如何?我說...
    南寧唐方閱讀 488評論 0 1

友情鏈接更多精彩內(nèi)容