區(qū)塊鏈共識(shí)機(jī)制

閱讀大概需要6分鐘

前言

在前兩篇文章中已經(jīng)大概談了一下區(qū)塊鏈的行業(yè)動(dòng)態(tài)、基本概念和架構(gòu),以及不同區(qū)塊鏈版本的區(qū)別,相信大家對(duì)整個(gè)區(qū)塊鏈技術(shù)已經(jīng)有了整體認(rèn)識(shí)。接下來(lái)的文章中我將跟大家談一下共識(shí)機(jī)制,什么是共識(shí)機(jī)制?共識(shí)機(jī)制在區(qū)塊鏈技術(shù)中起到什么樣的作用?它的原理是什么?如果大家對(duì)招聘網(wǎng)站關(guān)于“區(qū)塊鏈技術(shù)開(kāi)發(fā)”的招聘職位有關(guān)注的話,細(xì)心就會(huì)發(fā)現(xiàn)基本上每個(gè)企業(yè)的崗位需求都會(huì)有提到以下的內(nèi)容的第三點(diǎn)。

因此共識(shí)機(jī)制是區(qū)塊鏈技術(shù)的核心之一。

在一個(gè)區(qū)塊鏈系統(tǒng)中,共識(shí)機(jī)制設(shè)計(jì)得好與壞直接決定了系統(tǒng)的運(yùn)行效率、工作成本、以及它的安全性,也直接決定了這個(gè)區(qū)塊鏈系統(tǒng)存在的價(jià)值,所以共識(shí)機(jī)制的設(shè)計(jì)不容忽視。

什么是共識(shí)機(jī)制?

從字眼上理解

“共識(shí)” 是指在一定的組織群體中相互之間對(duì)某一件事物的看法、認(rèn)知、價(jià)值取向是一致的。

“機(jī)制” 是指一個(gè)組織群體為促成某一筆交易所采用的一種規(guī)則。

現(xiàn)實(shí)中理解

舉個(gè)例子:現(xiàn)企業(yè)需要選舉出新的領(lǐng)導(dǎo)班子成員,目前有兩種不同的選舉方案:1,允許全公司所有員工參與,每人實(shí)名投票;2,只允許公司所有組長(zhǎng)以上的管理人員參與投票;前者參與度100%,這代表著參與度越高,達(dá)成共識(shí)就越分散,其效率就越低,但滿意度越高;后者參與度只有百分之幾,參與度越低,達(dá)成共識(shí)就越集中,效率也就越高,但容易出現(xiàn)獨(dú)裁和不公平現(xiàn)象。這兩種方案就是共識(shí)的理解,至于選擇那個(gè)方案,那就是共識(shí)機(jī)制的采納。

從區(qū)塊鏈技術(shù)中理解

區(qū)塊鏈中的共識(shí)機(jī)制:區(qū)塊鏈?zhǔn)腔谌ブ行幕?、分布式?chǔ)存、點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的系統(tǒng)結(jié)構(gòu),每個(gè)獲得記賬權(quán)的節(jié)點(diǎn)需要在很短的時(shí)間內(nèi)完成對(duì)交易的驗(yàn)證和確認(rèn),并且每個(gè)節(jié)點(diǎn)需要共同來(lái)維護(hù)同一份賬本,以確保賬本的完整性,這中間就得需要考慮賬本數(shù)據(jù)的同步性問(wèn)題,那個(gè)節(jié)點(diǎn)允許寫(xiě)入?那個(gè)時(shí)間點(diǎn)才能寫(xiě)?其它節(jié)點(diǎn)如何同步新交易的數(shù)據(jù)?如何確保不被其它節(jié)點(diǎn)同時(shí)被更改?這就是區(qū)塊鏈技術(shù)中需要定義的共識(shí)機(jī)制。區(qū)塊鏈中的共識(shí)機(jī)制需要解決兩個(gè)問(wèn)題:1. (記賬權(quán)問(wèn)題)允許誰(shuí)能獲得記賬權(quán),且每次只允許一個(gè)人來(lái)記賬,2. (賬本一致性問(wèn)題)如何確保各個(gè)節(jié)點(diǎn)之間賬本的一致性,以及數(shù)據(jù)的同步性。

區(qū)塊鏈常用的共識(shí)機(jī)制

下面主要談一下目前最常用的幾種共識(shí)機(jī)制及它的優(yōu)缺點(diǎn)。

工作量證明(PoW)

PoW(Proof of Work)工作量證明: 也稱(chēng)為挖礦,它是需要完成一定的工作量(Hash計(jì)算)來(lái)證明獲取記賬權(quán)。它是最早應(yīng)用在區(qū)塊鏈技術(shù)上的共識(shí)機(jī)制,也是區(qū)塊鏈應(yīng)用領(lǐng)域使用最為廣泛、最為成熟的共識(shí)機(jī)制。比特幣區(qū)塊鏈系統(tǒng)就是使用PoW共識(shí)機(jī)制。

工作原理:

基于PoW構(gòu)建的區(qū)塊鏈網(wǎng)絡(luò),首先確定一個(gè)工作量的難度系數(shù)(簡(jiǎn)單來(lái)說(shuō)其實(shí)就是Hash數(shù)值中前面0的個(gè)數(shù))(如下圖所示),然后由各個(gè)節(jié)點(diǎn)通過(guò)循環(huán)遞增Nonce(隨機(jī)數(shù))+ block_header(區(qū)塊頭信息)來(lái)計(jì)算Hash數(shù)值,直到計(jì)算得到的Hash數(shù)值滿足工作量的難度系數(shù)后才證明該節(jié)點(diǎn)是否獲得本次交易區(qū)塊打包的記賬權(quán),這計(jì)算的過(guò)程需要花費(fèi)一定的時(shí)間和算力,反映了該節(jié)點(diǎn)的運(yùn)算能力,運(yùn)算力強(qiáng)的節(jié)點(diǎn)獲得記賬權(quán)的概率也就越高。 目前在比特幣系統(tǒng)中工作難度大概是以每 10 分鐘出 1 個(gè)新塊。

簡(jiǎn)單理解四步曲:

Looping (循環(huán)){

準(zhǔn)備數(shù)據(jù)

通過(guò)SHA256 對(duì)數(shù)據(jù)進(jìn)行Hash

將Hash轉(zhuǎn)成大整數(shù)(big.Int)

將大整數(shù)與難度系數(shù)目標(biāo)值比較。

}

公式表達(dá):?

SHA256 ( Nonce + block_header ) < ?Max_Difficult_value

優(yōu)點(diǎn):1, 完全去中心化;2, 節(jié)點(diǎn)自由進(jìn)出,有利于節(jié)點(diǎn)網(wǎng)絡(luò)擴(kuò)大;3, 用戶的參與度與信任度高,對(duì)于用戶來(lái)說(shuō)實(shí)現(xiàn)真正的公平,公正競(jìng)爭(zhēng)。

缺點(diǎn):最大缺點(diǎn)就是造成的資源浪費(fèi),為了爭(zhēng)奪記賬權(quán)需要不停地循環(huán)計(jì)算哈希值,而且達(dá)成共識(shí)的周期過(guò)長(zhǎng),導(dǎo)致產(chǎn)生新區(qū)塊效率比較低,大概每10分鐘才產(chǎn)生一個(gè)新區(qū)塊,這不適于商業(yè)應(yīng)用。

權(quán)益證明機(jī)制(PoS)

PoS(Proof of Stake)權(quán)益證明機(jī)制:在2012年,由加密貨幣點(diǎn)點(diǎn)幣(Peercoin)的創(chuàng)始人Sunny King 為了解決PoW中資源浪費(fèi)的缺點(diǎn)而提出的新的共識(shí)概念,他在基于比特幣PoW的框架基礎(chǔ)上實(shí)現(xiàn)了新的共識(shí)機(jī)制PoS,并最初被應(yīng)用在點(diǎn)點(diǎn)幣區(qū)塊鏈系統(tǒng)上。

工作原理:

PoW是通過(guò)計(jì)算工作量來(lái)獲得記賬權(quán),而在PoS中即轉(zhuǎn)變?yōu)橘Y本證明,它根據(jù)每個(gè)節(jié)點(diǎn)所擁有代幣數(shù)量的比例和持幣時(shí)間來(lái)通過(guò)算法按等比例地降低節(jié)點(diǎn)的挖礦難度,從而提高了尋找滿足難度隨機(jī)數(shù)的效率,縮短達(dá)成共識(shí)所需的時(shí)間,因此擁有的幣的時(shí)間越久和數(shù)量越多,它獲得的記賬的概率就越大。類(lèi)似于企業(yè)的股東制,占有股份多的,它擁有的決策權(quán)就越重。

PoS仍然需要網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行PoW挖礦運(yùn)算,因此,PoS機(jī)制并沒(méi)有從根本上解決PoW機(jī)制難以應(yīng)用于商業(yè)領(lǐng)域的問(wèn)題。

公式表達(dá):?

SHA256 ( Nonce + block_header ) < ?Max_Difficult_value * CoinAge(CoinNum)

優(yōu)點(diǎn):比起PoW減少大量算力和電費(fèi),同時(shí)大大縮減了達(dá)成共識(shí)的時(shí)間。

缺點(diǎn):由于持幣時(shí)間長(zhǎng),數(shù)據(jù)多的節(jié)點(diǎn)容易獲得記賬權(quán),相當(dāng)于降低了節(jié)點(diǎn)的參與度,達(dá)成共識(shí)就越集中,雖然效率提高了,但也容易出現(xiàn)部分獨(dú)裁現(xiàn)象,顯失公平性。另外其實(shí)它本質(zhì)上也是需要通過(guò)節(jié)點(diǎn)進(jìn)行挖礦運(yùn)算。

授權(quán)股權(quán)證明機(jī)制 (DPoS)

DPoS(Delegated Proof of stake):由BM(GitHub稱(chēng) ByteMaster)真名為Daniel Larimer 提出的并應(yīng)用在比特股區(qū)塊鏈系統(tǒng)上,接著也被應(yīng)用在最新的Steemit、EOS公鏈項(xiàng)目中,目前來(lái)講是比較流行的一種共識(shí)機(jī)制。DPoS它是PoS的一個(gè)擴(kuò)展機(jī)制,它是主要是為了解決PoW機(jī)制和PoS機(jī)制存在的問(wèn)題,目的是為了提高性能,降低交易的時(shí)間。

工作原理

DPoS共識(shí)算法中的記賬權(quán)節(jié)點(diǎn)將原來(lái)自由進(jìn)出、人人可參與的記賬方式轉(zhuǎn)化為指定某一部分節(jié)點(diǎn)來(lái)進(jìn)行。首先由全網(wǎng)節(jié)點(diǎn)投票產(chǎn)生見(jiàn)證人,見(jiàn)證人也是記賬節(jié)點(diǎn)的實(shí)際控制人,至于允許多少節(jié)點(diǎn)有參與記賬權(quán),這取決于系統(tǒng)的設(shè)計(jì),當(dāng)記賬節(jié)點(diǎn)完成打包交易的同時(shí)也可以獲取區(qū)塊的gas 獎(jiǎng)勵(lì)和交易的手續(xù)費(fèi),并且也可以執(zhí)行社區(qū)投票提案,所以DPoS不只是一種共識(shí)算法,它也包含了協(xié)作治理關(guān)系的共識(shí)機(jī)制。DPoS為了提高交易的效率,過(guò)濾無(wú)效交易,一般情況下,所有記賬節(jié)點(diǎn)輪流每3秒就產(chǎn)生一個(gè)區(qū)塊,當(dāng)輪到某個(gè)記賬節(jié)點(diǎn)出塊時(shí),必須在2秒內(nèi)提交區(qū)塊。

舉個(gè)例子:假設(shè)一個(gè)班(區(qū)塊鏈系統(tǒng))有50人,一開(kāi)始從50人中投票選出5位班干部(小紅,小青,小白,小黑,小黃)來(lái)行使記賬權(quán)力,然后在記賬過(guò)程中,按順序每位班干部有兩秒的時(shí)間來(lái)做記賬,如果在規(guī)定的時(shí)間內(nèi)某位班干記賬失敗,即直接把記賬權(quán)交到下一位班干部手中,因此在整個(gè)班上所有記賬都只能在這5位班干部中開(kāi)展,其它人成員無(wú)法參與記賬。

優(yōu)點(diǎn):大幅縮減了參與驗(yàn)證和記賬的數(shù)量,提高交易吞吐量,減少交易驗(yàn)證達(dá)成共識(shí)時(shí)間。

缺點(diǎn):記賬權(quán)被掌握在少數(shù)被指定的節(jié)點(diǎn)上,參與度太低,缺乏一定的代表性,顯失公平。

拜占庭容錯(cuò)(PBFT)

PBFT(Byzantine failures)是由萊斯利·蘭伯特提出的點(diǎn)對(duì)點(diǎn)通信中的基本問(wèn)題,分布式系統(tǒng)共同維護(hù)一個(gè)狀態(tài),各節(jié)點(diǎn)采取的行動(dòng)一致,各節(jié)點(diǎn)消息響應(yīng)要一致。目前主要應(yīng)用于Hyperledgle Fabirc 區(qū)塊鏈系統(tǒng)中。

拜占庭將軍問(wèn)題,要滿足以下兩個(gè)條件:

每個(gè)忠誠(chéng)的將軍必須收到相同的命令值vi(vi是第i個(gè)將軍的命令)。

如果第i個(gè)將軍是忠誠(chéng)的,那么他發(fā)送的命令和每個(gè)忠誠(chéng)將軍收到的vi相同。

因此拜占庭容錯(cuò)系統(tǒng)是一個(gè)擁有n臺(tái)節(jié)點(diǎn)的系統(tǒng),整個(gè)系統(tǒng)對(duì)于每一個(gè)請(qǐng)求,滿足以下條件:

所有非拜占庭節(jié)點(diǎn)使用相同的輸入信息,產(chǎn)生同樣的結(jié)果;

如果輸入的信息正確,那么所有非拜占庭節(jié)點(diǎn)必須接收這個(gè)信息,并計(jì)算相應(yīng)的結(jié)果,只要有一個(gè)節(jié)點(diǎn)計(jì)算機(jī)不正確,都不能達(dá)成共識(shí)。

算法流程

請(qǐng)求 ---> 序號(hào)分配 —> 交互 —> 響應(yīng)?

客戶端發(fā)出請(qǐng)求;

主節(jié)點(diǎn)收到請(qǐng)求后,啟動(dòng)協(xié)議向各節(jié)點(diǎn)發(fā)出廣播,然后執(zhí)行序號(hào)分配、交互消息、序號(hào)確認(rèn)并響應(yīng)廣播消息;

客戶端收到來(lái)自不同節(jié)點(diǎn)的響應(yīng),如果m+1的節(jié)點(diǎn)響應(yīng)消息相同,即達(dá)成共識(shí)。

對(duì)比以上幾種最常用的共識(shí)算法,各有利弊,但它們的誕生都圍繞著這幾個(gè)維度考慮:安全性、擴(kuò)展性、性能效率、資源消耗。

小結(jié)

本篇主要講了共識(shí)機(jī)制的概念和它的作用,以及它的運(yùn)行原理,還介紹了當(dāng)前最常見(jiàn)的幾種共識(shí)機(jī)制以及它們的優(yōu)缺點(diǎn)。

有興趣想加入技術(shù)交流群的朋友,請(qǐng)先加我微信andy_tocm,然后發(fā)送“加群”留言。


-----End-------

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

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

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