區(qū)塊鏈系統(tǒng)的核心之一-分布式共識(shí)機(jī)制
1 拜占庭將軍問題
1)拜占庭將軍問題由來
? ? ? ? 拜占庭將軍問題(Byzantine Generals Problem),是由萊斯利·蘭波特在其同名論文中提出的分布式對(duì)等網(wǎng)絡(luò)通信容錯(cuò)問題喇勋。
? ? ? ? 在分布式計(jì)算中,不同的計(jì)算機(jī)通過通訊交換信息達(dá)成共識(shí)而按照同一套協(xié)作策略行動(dòng)败玉。但有時(shí)候敌土,系統(tǒng)中的成員計(jì)算機(jī)可能出錯(cuò)而發(fā)送錯(cuò)誤的信息,用于傳遞信息的通訊網(wǎng)絡(luò)也可能導(dǎo)致信息損壞运翼,使得網(wǎng)絡(luò)中不同的成員關(guān)于全體協(xié)作的策略得出不同結(jié)論返干,從而破壞系統(tǒng)一致性。這個(gè)難題被稱為“拜占庭容錯(cuò)”血淌,或者“兩軍問題”矩欠。
? ? ? ? 拜占庭假設(shè)是對(duì)現(xiàn)實(shí)世界的模型化。拜占庭將軍問題被認(rèn)為是容錯(cuò)性問題中最難的問題類型之一悠夯。拜占庭容錯(cuò)協(xié)議要求能夠解決由于硬件錯(cuò)誤癌淮、網(wǎng)絡(luò)擁塞或斷開以及遭到惡意攻擊,其他計(jì)算機(jī)和網(wǎng)絡(luò)可能出現(xiàn)不可預(yù)料的行為而帶來的各種問題沦补。并且拜占庭容錯(cuò)協(xié)議還要滿足所要解決的問題要求的規(guī)范乳蓄。
2)拜占庭將軍問題的提出
? ? ? ? 在拜占庭時(shí)代有一個(gè)墻高壁厚的城邦——拜占庭,高墻之內(nèi)存放在世人無法想象多的財(cái)富夕膀。拜占庭被其他10個(gè)城邦所環(huán)繞虚倒,這10個(gè)城邦也很富饒,但和拜占庭相比就有天壤之別了产舞。
? ? ? ? 拜占庭的十個(gè)鄰居都覬覦它的財(cái)富魂奥,并希望侵略并占領(lǐng)它。但是易猫,拜占庭的防御非常強(qiáng)大耻煤,任何單個(gè)城邦的入侵行動(dòng)都會(huì)失敗,而入侵者的軍隊(duì)也會(huì)被殲滅准颓,使得該城邦自身遭到其他互相覬覦對(duì)方的九個(gè)城邦的入侵和劫掠哈蝇。
? ? ? ? 拜占庭的防御很強(qiáng),十個(gè)城邦中要有一半以上同時(shí)進(jìn)攻才能攻破它攘已。也就是說买鸽,如果有六個(gè)或者以上的相鄰城邦一起進(jìn)攻,他們就會(huì)成功并獲得拜占庭的財(cái)富贯被。然而,如果其中有一個(gè)或者更多城邦背叛了其他城邦妆艘,答應(yīng)一起入侵但在其他城邦進(jìn)攻的時(shí)候又不干了彤灶,也就導(dǎo)致只有五支或者更少的城邦的軍隊(duì)在同時(shí)進(jìn)攻,那么所有的進(jìn)攻城邦的軍隊(duì)都會(huì)被殲滅批旺,并隨后被其他的(包括背叛他們的那(幾)個(gè))城邦所入侵和劫掠幌陕。
? ? ? ? 這是一個(gè)由許多不互相信任的城邦構(gòu)成的一個(gè)網(wǎng)絡(luò)。城邦們必須一起努力以完成共同的使命汽煮。而且搏熄,各個(gè)城邦之間通訊和協(xié)調(diào)的唯一途徑是通過信使騎馬在城邦之間傳遞信息棚唆。城邦的決策者們無法聚集在一個(gè)地方開個(gè)會(huì)(所有的城邦的決策者都不互相信任自己的安全會(huì)在自己的城堡或者軍隊(duì)范圍之外能夠得到保障)。
? ? ? ? 城邦的決策者可以在任意時(shí)間以任意頻率派出任意數(shù)量的信使到任意的對(duì)方心例。每條信息都包含如下的內(nèi)容:“我城邦將在某一天的某個(gè)時(shí)間發(fā)動(dòng)進(jìn)攻宵凌,你城邦愿意加入嗎?”止后。如果收信城邦同意了瞎惫,該城邦就會(huì)在原信上附上一份簽名了的或蓋了圖章的(以就是驗(yàn)證了的)回應(yīng)然送回發(fā)信城邦。然后译株,再把新合并了的信息的拷貝一一發(fā)送給其他八個(gè)城邦瓜喇,要求他們也如此這樣做。最后的目標(biāo)是歉糜,通過在原始信息鏈上蓋上他們所有十個(gè)城邦的決策者的圖章乘寒,讓他們?cè)跁r(shí)間上達(dá)成共識(shí)。最后的結(jié)果是匪补,會(huì)有一個(gè)蓋有十個(gè)同意同一時(shí)間發(fā)動(dòng)進(jìn)攻的圖章信息包伞辛,和一些被拋棄了的包含部分但不是全部圖章的信息包。
? ? ? ? 在這個(gè)過程中首先出現(xiàn)了第一個(gè)問題叉袍,就是如果每個(gè)城邦向其他九個(gè)城邦派出一名信使始锚,那么就是十個(gè)城邦每個(gè)派出了九名信使,也就是在任何一個(gè)時(shí)間又總計(jì)90次的傳輸喳逛,并且每個(gè)城市分別收到九個(gè)信息瞧捌,可能每一封都寫著不同的進(jìn)攻時(shí)間。
? ? ? ? 在這個(gè)過程中還有第二個(gè)問題润文,就是部分城邦會(huì)答應(yīng)超過一個(gè)的攻擊時(shí)間姐呐,故意背叛進(jìn)攻發(fā)起人,所以他們將重新廣播超過一條(甚至許許多多條)的信息包典蝌,由此產(chǎn)生許多甚至無數(shù)的足以淹沒一切的雜音曙砂。
? ? ? ? 有了以上兩個(gè)問題,整個(gè)網(wǎng)絡(luò)系統(tǒng)可能迅速變質(zhì)骏掀,并演變成不可信的信息和攻擊時(shí)間相互矛盾的糾結(jié)體鸠澈。
? ? ? ? ?拜占庭假設(shè)是對(duì)現(xiàn)實(shí)網(wǎng)絡(luò)世界的一種模型化。在現(xiàn)實(shí)網(wǎng)絡(luò)世界中由于硬件錯(cuò)誤截驮、網(wǎng)絡(luò)擁塞或斷開以及遭到惡意攻擊笑陈,網(wǎng)絡(luò)可能出現(xiàn)許許多多不可預(yù)料的行為。拜占庭容錯(cuò)協(xié)議必須處理這些失效葵袭,并且還要使這些協(xié)議滿足所要解決的問題所要求的規(guī)范涵妥。
3)中本聰?shù)慕鉀Q方案
? ? ? ? 對(duì)于拜占庭將軍問題中本聰?shù)膮^(qū)塊鏈給出了比較圓滿的解決方案。也就是比較圓滿的解決了上述的兩個(gè)問題坡锡。
(1)問題一的解決方案
? ? ? ? 拜占庭將軍問題的第一個(gè)問題從本質(zhì)上來講就是時(shí)間和空間的障礙導(dǎo)致信息的不準(zhǔn)確和不及時(shí)蓬网。
? ? ? ? 區(qū)塊鏈對(duì)于第一個(gè)問題的解決方案是利用分布式存儲(chǔ)技術(shù)和比特流技術(shù)(BT技術(shù)窒所,一種新型的點(diǎn)對(duì)點(diǎn)傳輸技術(shù),具有節(jié)點(diǎn)同時(shí)作為客戶端和服務(wù)器端和沒有中心服務(wù)器等特點(diǎn))帆锋,將整個(gè)網(wǎng)絡(luò)系統(tǒng)內(nèi)的所有交易信息匯總為一個(gè)統(tǒng)一的吵取,分布式存儲(chǔ)的,近乎實(shí)時(shí)同步更新的電子總賬窟坐。統(tǒng)一的分布式共同賬本就解決了空間障礙問題海渊;而近乎同步進(jìn)行的,實(shí)時(shí)的哲鸳,持續(xù)的對(duì)所有賬本備份的更新臣疑、對(duì)賬則解決了時(shí)間障礙問題。
? ? ? ? 這個(gè)過程較具體一點(diǎn)的描述大概是將區(qū)塊鏈系統(tǒng)內(nèi)所有的交易活動(dòng)的記錄數(shù)據(jù)統(tǒng)一于一種標(biāo)準(zhǔn)化的總帳上徙菠;區(qū)塊鏈系統(tǒng)的每一個(gè)節(jié)點(diǎn)都會(huì)保存一份總帳的備份讯沈;所有總帳的備份都是在實(shí)時(shí)的,持續(xù)的更新婿奔、對(duì)賬缺狠、以及同步著。區(qū)塊鏈系統(tǒng)的每一個(gè)節(jié)點(diǎn)能在這本總帳里記上添加記錄萍摊;每一筆新添加的記錄都會(huì)實(shí)時(shí)的廣播到區(qū)塊鏈系統(tǒng)內(nèi)挤茄;所以在每一個(gè)節(jié)點(diǎn)上的每一份總帳的備份都是幾乎同時(shí)更新的,并且所有的總帳的備份保持著同步冰木。
(2)問題二的解決方案
? ? ? ? 拜占庭將軍問題的第二個(gè)問題從本質(zhì)上來講就是關(guān)于信息過量問題和信息干擾問題穷劈。信息過量和信息干擾問題導(dǎo)致決策延遲,甚至決策系統(tǒng)崩潰而無法決策踊沸。
? ? ? ? 區(qū)塊鏈對(duì)于第二個(gè)問題的解決方案是區(qū)塊鏈系統(tǒng)的任何一個(gè)節(jié)點(diǎn)在發(fā)送每一筆新添加的記錄時(shí)需要附帶一條額外的信息歇终。對(duì)區(qū)塊鏈系統(tǒng)的任何一個(gè)節(jié)點(diǎn)來說這條額外的信息的獲得都是有成本的,并且只能有一個(gè)節(jié)點(diǎn)可以獲得逼龟。這樣就解決了區(qū)塊鏈系統(tǒng)的任何一個(gè)節(jié)點(diǎn)新添加額外信息時(shí)的信息多且亂而無法達(dá)成一致的問題评凝。在這里,區(qū)塊鏈系統(tǒng)的任何一個(gè)節(jié)點(diǎn)獲得那條附帶的額外的信息的過程就是著名的工作量證明機(jī)制腺律。
2 工作量證明機(jī)制
1)工作量證明機(jī)制的基本原理
? ? ? ? 共識(shí)機(jī)制主要解決區(qū)塊鏈系統(tǒng)的數(shù)據(jù)如何記錄和如何保存的問題奕短。工作量證明機(jī)制就是要求區(qū)塊鏈系統(tǒng)的節(jié)點(diǎn)通過做一定難度的工作得出一個(gè)結(jié)果的過程。
2)工作量證明機(jī)制的工作過程
? ? ? ? 區(qū)塊鏈系統(tǒng)中某節(jié)點(diǎn)生成了一筆新的交易記錄匀钧,并且該節(jié)點(diǎn)將這筆新的交易記錄向全網(wǎng)廣播篡诽。全網(wǎng)各個(gè)節(jié)點(diǎn)收到這個(gè)交易記錄并與其他所有準(zhǔn)備打包進(jìn)區(qū)塊的交易記錄共同組成交易記錄列表。在列表內(nèi)先對(duì)所有交易進(jìn)行兩兩的哈希計(jì)算榴捡;再對(duì)以獲得的哈希值進(jìn)行哈希計(jì)算獲得Merkle樹和Merkle樹的根值;把Merkle樹的根值及其他相關(guān)字段組裝成區(qū)塊頭朱浴。
? ? ? ? 各個(gè)節(jié)點(diǎn)將區(qū)塊頭的80字節(jié)數(shù)據(jù)加上一個(gè)不停的變更的區(qū)塊頭隨機(jī)數(shù)一起進(jìn)行不停的哈希運(yùn)算(實(shí)際上這是一個(gè)雙重哈希運(yùn)算)吊圾;不停的將哈希運(yùn)算結(jié)果值與當(dāng)前網(wǎng)絡(luò)的目標(biāo)值做對(duì)比达椰,直到哈希運(yùn)算結(jié)果值小于目標(biāo)值,就獲得了符合要求的哈希值项乒,工作量證明也就完成了啰劲。
3) 工作難度的控制問題
? ? ? ? ?分布式的區(qū)塊鏈系統(tǒng)是一個(gè)動(dòng)態(tài)變化的系統(tǒng)(硬件的運(yùn)算速度的增長(zhǎng),節(jié)點(diǎn)參與網(wǎng)絡(luò)的程度的變化)檀何。系統(tǒng)的不斷變化必然帶來系統(tǒng)的算力的不斷變化蝇裤。而算力的變化又會(huì)導(dǎo)致通過消耗算力(工作)來獲得符合要求的哈希值的速度的不同。最終的結(jié)果會(huì)是區(qū)塊鏈的增長(zhǎng)速度會(huì)有巨大的不同频鉴。這是一個(gè)很大的問題栓辜。為了解決這個(gè)問題,區(qū)塊鏈系統(tǒng)自動(dòng)根據(jù)算力的變化對(duì)工作難度進(jìn)行調(diào)整垛孔。也就是采用移動(dòng)平均目標(biāo)的方法來確定藕甩,難度控制為每小時(shí)生成區(qū)塊的速度為某一個(gè)預(yù)定的平均數(shù)。
? ? ? ? 在區(qū)塊鏈系統(tǒng)中一個(gè)符合要求的哈希值是由N個(gè)前導(dǎo)零構(gòu)成周荐,零的個(gè)數(shù)取決于網(wǎng)絡(luò)的難度值狭莱。為了使區(qū)塊的形成時(shí)間控制在大約十分鐘左右,區(qū)塊鏈系統(tǒng)采用了固定工作難度的難度算法概作。難度值每2016個(gè)區(qū)塊調(diào)整一次零的個(gè)數(shù)腋妙。
? ? ? ? 新的難度值是根據(jù)前2015個(gè)區(qū)塊(理論上應(yīng)該是2016個(gè)區(qū)塊,由于當(dāng)初程序編寫時(shí)的失誤造成了用2015而不是2016)的出塊時(shí)間來計(jì)算讯榕。
? ? ? ? 難度 = 目標(biāo)值 * 前2015個(gè)區(qū)塊生成所用的時(shí)間 / 1209600 (兩周的秒鐘數(shù))
? ? ? ? 這樣通過規(guī)定的算法骤素,區(qū)塊鏈系統(tǒng)就保證所有節(jié)點(diǎn)計(jì)算出的難度值都一致,區(qū)塊的形成時(shí)間大約一致在十分鐘左右瘩扼。
4)工作量證明機(jī)制的特點(diǎn)
? ? ? (1)結(jié)果不可控制谆甜。其依賴機(jī)器進(jìn)行哈希函數(shù)的運(yùn)算來獲得結(jié)果;計(jì)算結(jié)果是一個(gè)隨機(jī)數(shù)集绰;沒有人能直接控制計(jì)算的結(jié)果规辱。
? ? ? (2)計(jì)算具有對(duì)稱性。就是結(jié)果的獲得和結(jié)果的驗(yàn)收需要的工作量是不同的栽燕。計(jì)算出結(jié)果所需要的工作量遠(yuǎn)遠(yuǎn)大于驗(yàn)收結(jié)果所需要的工作量罕袋。
? ? ? (3)計(jì)算的難度自動(dòng)控制。為了使區(qū)塊的形成時(shí)間控制在大約十分鐘左右碍岔,區(qū)塊鏈系統(tǒng)自動(dòng)控制了每一個(gè)符合要求的哈希獲得為大約在十分鐘左右浴讯。
5)工作量證明機(jī)制的優(yōu)缺點(diǎn)
(1)工作量證明機(jī)制的優(yōu)點(diǎn):
? ? ? ? ?第一,方法簡(jiǎn)單易行蔼啦。
? ? ? ? 第二榆纽,系統(tǒng)達(dá)成共識(shí)容易,節(jié)點(diǎn)間不需要太多的信息交換。
? ? ? ? 第三奈籽,系統(tǒng)比較牢固可靠饥侵,任何破壞系統(tǒng)的企圖都需要投入大到得不償失的成本。
(2)工作量證明機(jī)制的缺點(diǎn):
? ? ? ? 第一衣屏,消耗大量的算力躏升,也就是浪費(fèi)能源和其他資源。
? ? ? ? 第二狼忱,區(qū)塊的確認(rèn)時(shí)間比較長(zhǎng)膨疏,并且難以縮短。
? ? ? ? 第三钻弄,新創(chuàng)立的區(qū)塊鏈非常容易受到算力攻擊佃却。
? ? ? ? 第四,容易產(chǎn)生區(qū)塊鏈分叉斧蜕,穩(wěn)定的區(qū)塊鏈需要多個(gè)確認(rèn)双霍,并且這種狀況可能不斷持續(xù)下去。
? ? ? ? 第五批销,算力的逐漸集中導(dǎo)致與去中心化的系統(tǒng)設(shè)計(jì)基礎(chǔ)的沖突日益明顯洒闸。
3 其他分布式共識(shí)機(jī)制
1)權(quán)益證明機(jī)制(POS)
(1)什么是權(quán)益證明機(jī)制
? ? ? ? 權(quán)益證明機(jī)制是一種工作量證明機(jī)制的替代方法,試圖解決工作量計(jì)算浪費(fèi)的問題.目前其成功的應(yīng)用是點(diǎn)點(diǎn)幣區(qū)塊鏈系統(tǒng)均芽。
? ? ? ? 權(quán)益證明不要求區(qū)塊鏈系統(tǒng)的節(jié)點(diǎn)完成一定數(shù)量的計(jì)算工作丘逸,而是要求區(qū)塊鏈系統(tǒng)的節(jié)點(diǎn)對(duì)某些數(shù)量的錢展示所有權(quán)。
(2)權(quán)益證明機(jī)制的原理
? ? ? ? 權(quán)益證明機(jī)制首先應(yīng)用于點(diǎn)點(diǎn)幣區(qū)塊鏈系統(tǒng)中掀宋。
? ? ? ? 點(diǎn)點(diǎn)幣區(qū)塊鏈系統(tǒng)的區(qū)塊生成時(shí)深纲,節(jié)點(diǎn)需要構(gòu)造一個(gè)“錢幣權(quán)益”交易,即把自己的一些錢幣和預(yù)先設(shè)定的獎(jiǎng)勵(lì)發(fā)給自己劲妙。進(jìn)行哈希計(jì)算時(shí)湃鹊,哈希值的計(jì)算只同交易輸入、一些附加的固定數(shù)據(jù)以及當(dāng)前時(shí)間(是一個(gè)表示自1970年1月1日距離當(dāng)前時(shí)刻的秒數(shù)的正數(shù))有關(guān)镣奋。然后币呵,根據(jù)類似工作量證明的要求來檢查這個(gè)哈希值是否正確。
? ? ? ? 點(diǎn)點(diǎn)幣區(qū)塊鏈系統(tǒng)的權(quán)益證明機(jī)制除了設(shè)定了哈希計(jì)算難度與交易輸入的“幣齡”成反比外侨颈,其與工作量證明機(jī)制非常類似余赢。其中,幣齡的定義為交易輸入大小和它存在時(shí)間的乘積哈垢。權(quán)益證明機(jī)制中哈希值只和時(shí)間和固定的數(shù)據(jù)有關(guān)妻柒,因而沒有辦法通過多完成工作來快速獲取它。
? ? ? ?每個(gè)點(diǎn)點(diǎn)幣區(qū)塊鏈系統(tǒng)的交易的輸出都有一定的幾率來產(chǎn)生有效的正比于幣齡和交易貨幣數(shù)量的工作耘分。
(3)權(quán)益證明機(jī)制優(yōu)點(diǎn):
? ? ? ? 第一举塔,縮短了共識(shí)達(dá)成的時(shí)間绑警。
? ? ? ? 第二,不再需要大量消耗能源啤贩。
(4)權(quán)益證明機(jī)制缺點(diǎn):
? ? ? ? 第一待秃,還是需要哈希計(jì)算。
? ? ? ? 第二痹屹,所有的確認(rèn)都只是一個(gè)概率上的表達(dá),而不是一個(gè)確定性的事情枉氮,有可能受到其他攻擊影響志衍。
2)授權(quán)股份證明機(jī)制(DPOS)
(1)什么是授權(quán)股份證明機(jī)制
? ? ? ? 授權(quán)股份證明機(jī)制類似于權(quán)益證明機(jī)制,是比特股BitShares采用的區(qū)塊鏈公識(shí)算法聊替。授權(quán)股份證明機(jī)制是民主選舉和輪流執(zhí)政相結(jié)合方式來確定區(qū)塊的產(chǎn)生楼肪。
? ? ? ? 授權(quán)股份證明機(jī)制是先由節(jié)點(diǎn)選舉若干代理人,由代理人驗(yàn)證和記賬惹悄。其他方面和權(quán)益證明機(jī)制相似春叫。
(2) 授權(quán)股份證明機(jī)制的工作原理
? ? ? ? 每個(gè)節(jié)點(diǎn)按其持股比例擁有相應(yīng)的影響力,51%節(jié)點(diǎn)投票的結(jié)果將是不可逆且有約束力的泣港。為達(dá)到及時(shí)而高效的方法達(dá)到51%批準(zhǔn)的目標(biāo)暂殖。每個(gè)節(jié)點(diǎn)可以將其投票權(quán)授予一名節(jié)點(diǎn)。獲票數(shù)最多的前100位節(jié)點(diǎn)按既定時(shí)間表輪流產(chǎn)生區(qū)塊当纱。每名節(jié)點(diǎn)分配到一個(gè)時(shí)間段來生產(chǎn)區(qū)塊呛每。
? ? ? ? 所有的節(jié)點(diǎn)將收到等同于一個(gè)平均水平的區(qū)塊所含交易費(fèi)的10%作為報(bào)酬。
(3)授權(quán)股份證明機(jī)制優(yōu)點(diǎn):
? ? ? ? ?第一坡氯,大幅縮小參與驗(yàn)證和記賬節(jié)點(diǎn)的數(shù)量晨横,
? ? ? ? ?第二,可以快速實(shí)現(xiàn)共識(shí)驗(yàn)證箫柳。
(4)授權(quán)股份證明機(jī)制缺點(diǎn):
? ? ? ? ?主要缺點(diǎn)就是仍然無法擺脫對(duì)代幣的依賴手形。
3)實(shí)用拜占庭容錯(cuò)機(jī)制(PBFT)
(1)實(shí)用拜占庭容錯(cuò)機(jī)制
? ? ? ? 在分布式計(jì)算上,不同的計(jì)算機(jī)透過訊息交換悯恍,嘗試達(dá)成共識(shí)库糠;但有時(shí)候,系統(tǒng)上協(xié)調(diào)計(jì)算或成員計(jì)算機(jī)可能因系統(tǒng)錯(cuò)誤并交換錯(cuò)的訊息坪稽,導(dǎo)致影響最終的系統(tǒng)一致性曼玩。
? ? ? ? 拜占庭將軍問題就根據(jù)錯(cuò)誤計(jì)算機(jī)的數(shù)量,尋找可能的解決辦法窒百,這無法找到一個(gè)絕對(duì)的答案黍判,但只可以用來驗(yàn)證一個(gè)機(jī)制的有效程度。
? ? ? ? 而拜占庭問題的可能解決方法為:
? ? ? ? 在 N ≥ 3F + 1 的情況下一致性是可能解決篙梢。其中顷帖,N為計(jì)算機(jī)總數(shù),F(xiàn)為有問題計(jì)算機(jī)總數(shù)。信息在計(jì)算機(jī)間互相交換后贬墩,各計(jì)算機(jī)列出所有得到的信息榴嗅,以大多數(shù)的結(jié)果作為解決辦法。
(2)實(shí)用拜占庭容錯(cuò)機(jī)制優(yōu)點(diǎn):
? ? ? ? ?第一陶舞,系統(tǒng)運(yùn)轉(zhuǎn)可以擺脫對(duì)代幣的依賴嗽测,共識(shí)各節(jié)點(diǎn)由業(yè)務(wù)的參與方或者監(jiān)管方組成,安全性與穩(wěn)定性由業(yè)務(wù)相關(guān)方保證肿孵。
? ? ? ? ?第二唠粥,共識(shí)的時(shí)延大約在2到5秒鐘。
? ? ? ? ?第三停做,共識(shí)效率高晤愧,可滿足高頻交易量的需求。
(3)實(shí)用拜占庭容錯(cuò)機(jī)制缺點(diǎn):
? ? ? ? ?第一蛉腌,當(dāng)有1/3或以上記賬人停止工作后官份,系統(tǒng)將無法提供服務(wù);
? ? ? ? ?第二烙丛,當(dāng)有1/3或以上記賬人聯(lián)合作惡舅巷,可能系統(tǒng)會(huì)出現(xiàn)會(huì)留下密碼學(xué)證據(jù)的分叉。
4)授權(quán)拜占庭容錯(cuò)機(jī)制(DBFT)
(1)授權(quán)拜占庭容錯(cuò)機(jī)制
? ? ? ? 小蟻改良了實(shí)用拜占庭容錯(cuò)機(jī)制蜀变。該機(jī)制是由權(quán)益來選出記賬人悄谐,然后記賬人之間通過拜占庭容錯(cuò)算法來達(dá)成共識(shí)。
? ? ? ? 此算法在PBFT基礎(chǔ)上進(jìn)行了以下改進(jìn):
? ? ? ? 第一库北,將C/S架構(gòu)的請(qǐng)求響應(yīng)模式爬舰,改進(jìn)為適合P2P網(wǎng)絡(luò)的對(duì)等節(jié)點(diǎn)模式;
? ? ? ? 第二寒瓦,將靜態(tài)的共識(shí)參與節(jié)點(diǎn)改進(jìn)為可動(dòng)態(tài)進(jìn)入情屹、退出的動(dòng)態(tài)共識(shí)參與節(jié)點(diǎn);
? ? ? ? 第三杂腰,為共識(shí)參與節(jié)點(diǎn)的產(chǎn)生設(shè)計(jì)了一套基于持有權(quán)益比例的投票機(jī)制垃你,通過投票決定共識(shí)參與節(jié)點(diǎn)(記賬節(jié)點(diǎn));
? ? ? ? 第四喂很,在區(qū)塊鏈中引入數(shù)字證書惜颇,解決了投票中對(duì)記賬節(jié)點(diǎn)真實(shí)身份的認(rèn)證問題。
(2)授權(quán)拜占庭容錯(cuò)機(jī)制優(yōu)點(diǎn):
? ? ? ? 第一少辣,專業(yè)化的記賬人凌摄;
? ? ? ? 第二,可以容忍任何類型的錯(cuò)誤漓帅;
? ? ? ? 第三锨亏,記賬由多人協(xié)同完成痴怨,每一個(gè)區(qū)塊都有最終性,不會(huì)分產(chǎn)生區(qū)塊鏈分叉器予;
? ? ? ? 第四浪藻,算法的可靠性有嚴(yán)格的數(shù)學(xué)證明來保證;
(3)授權(quán)拜占庭容錯(cuò)機(jī)制缺點(diǎn):
? ? ? ? 第一乾翔,當(dāng)有1/3或以上記賬人停止工作后爱葵,區(qū)塊鏈系統(tǒng)將無法提供服務(wù);
? ? ? ? 第二反浓,當(dāng)有1/3或以上記賬人聯(lián)合作惡,且其它所有的記賬人被恰好分割為兩個(gè)網(wǎng)絡(luò)孤島時(shí)勾习,惡意記賬人可以使區(qū)塊鏈系統(tǒng)出現(xiàn)分叉,但是會(huì)留下密碼學(xué)證據(jù)懈玻;
5)瑞波共識(shí)機(jī)制(Ripple Consensus)
(1)什么是瑞波共識(shí)機(jī)制
? ? ? ? ?瑞波共識(shí)機(jī)制是全體節(jié)點(diǎn)選取出特殊節(jié)點(diǎn)組成特殊節(jié)點(diǎn)列表,由特殊節(jié)點(diǎn)列表內(nèi)的節(jié)點(diǎn)達(dá)成共識(shí)湾盒。
(2)瑞波共識(shí)機(jī)制的特點(diǎn)
? ? ? ? ?初始特殊節(jié)點(diǎn)列表就像一個(gè)俱樂部湿右,要接納一個(gè)新成員,必須由51%的該俱樂部會(huì)員投票通過罚勾。共識(shí)遵循這核心成員的51%權(quán)力毅人,外部人員則沒有影響力。波共識(shí)機(jī)制將股東們與其投票權(quán)隔開尖殃,并因此比其他系統(tǒng)更中心化丈莺。
? ? ? ? 瑞波共識(shí)機(jī)制參與共識(shí)形成的只有特殊節(jié)點(diǎn),大大的減少了共識(shí)形成的時(shí)間送丰。在實(shí)踐中缔俄,瑞波區(qū)塊鏈系統(tǒng)達(dá)成共識(shí)需要3-6秒鐘,遠(yuǎn)遠(yuǎn)快于比特幣區(qū)塊鏈系統(tǒng)的10分鐘器躏。同時(shí)瑞波區(qū)塊鏈系統(tǒng)對(duì)并發(fā)交易的處理達(dá)到每秒數(shù)萬筆俐载,而比特幣區(qū)塊鏈系統(tǒng)只有每秒7筆。
瑞波共識(shí)機(jī)制處理節(jié)點(diǎn)意見分歧的方式也是不同的登失。瑞波的信任節(jié)點(diǎn)對(duì)于新區(qū)塊的創(chuàng)造進(jìn)行協(xié)商的時(shí)間是區(qū)塊鏈更新前遏佣。先協(xié)商,達(dá)成共識(shí)后再對(duì)區(qū)塊鏈進(jìn)行更新壁畸。
由于瑞波共識(shí)機(jī)制的共識(shí)是由特殊節(jié)點(diǎn)達(dá)成的贼急,普通節(jié)點(diǎn)并不需要維護(hù)一個(gè)完整的歷史賬本茅茂。各個(gè)節(jié)點(diǎn)可以根據(jù)自己的業(yè)務(wù)需要選擇同步同步完整的歷史賬本或者任意最近幾步的賬本。這也意味著對(duì)存儲(chǔ)空間和網(wǎng)絡(luò)流量需求的減少太抓。
瑞波共識(shí)機(jī)制取消了挖坑的發(fā)行貨幣機(jī)制空闲,采用了原生貨幣(1000億枚)的方式發(fā)幣歧蕉,從而大量的避免了挖礦的天量能耗托嚣。