Q1:先來(lái)科普一下什么是“區(qū)塊鏈的共識(shí)機(jī)制”吧?
區(qū)塊鏈系統(tǒng)是一個(gè)去中心化的分布式系統(tǒng),節(jié)點(diǎn)是分散在各處,需要設(shè)計(jì)一套完善的機(jī)制,以維護(hù)系統(tǒng)的運(yùn)作順序與公平性,統(tǒng)一區(qū)塊鏈的版本,同時(shí)獎(jiǎng)勵(lì)提供資源維護(hù)區(qū)塊鏈的使用者,并懲罰惡意的危害者。這樣的機(jī)制,需要依賴某種方式來(lái)證明,證明是由誰(shuí)取得了一個(gè)區(qū)塊鏈的記帳權(quán),并可以獲取打包這一個(gè)區(qū)塊的獎(jiǎng)勵(lì);或者是誰(shuí)意圖作惡,會(huì)獲得一定的懲罰,這就是區(qū)塊鏈系統(tǒng)的共識(shí)機(jī)制。
上面的介紹比較抽象,下面會(huì)收斂一下。我們知道區(qū)塊鏈應(yīng)用和傳統(tǒng)的互聯(lián)網(wǎng)應(yīng)用的最大的區(qū)別在于應(yīng)用的維護(hù)方不屬于單個(gè)實(shí)體內(nèi)部,節(jié)點(diǎn)之間互不信任,并且一般的公鏈網(wǎng)絡(luò)規(guī)模會(huì)比較龐大。在這樣的場(chǎng)景下,如何保證網(wǎng)絡(luò)中所有節(jié)點(diǎn)的最終一致性是一件非常困難的事情,區(qū)塊鏈的共識(shí)機(jī)制就是解決這個(gè)問(wèn)題的??偨Y(jié)一下:區(qū)塊鏈的共識(shí)機(jī)制解決的是“不可信環(huán)境下全球部署的分布式一致性問(wèn)題”。
Q2: 常見的共識(shí)類型及應(yīng)用主要有哪些呢?
自比特幣網(wǎng)絡(luò)創(chuàng)建以來(lái)至今已經(jīng)經(jīng)過(guò)10多年了,區(qū)塊鏈的共識(shí)也有很大的發(fā)展,近年來(lái)不斷有新的算法相繼被提出,下面這個(gè)圖簡(jiǎn)單總結(jié)一下常見的共識(shí)機(jī)制及其應(yīng)用。
Q3: 百度超級(jí)鏈共識(shí)框架的設(shè)計(jì)初衷是怎么樣的呢?
超級(jí)鏈設(shè)計(jì)上是一個(gè)通用的區(qū)塊鏈框架,用戶可以很方便地依據(jù)自己的應(yīng)用場(chǎng)景進(jìn)行選擇或者定制自己的功能。共識(shí)機(jī)制是區(qū)塊鏈系統(tǒng)中一個(gè)非常重要的模塊,是整個(gè)網(wǎng)絡(luò)安全性保障的重要部分,所以共識(shí)機(jī)制的設(shè)計(jì)是區(qū)塊鏈網(wǎng)絡(luò)中的一個(gè)難點(diǎn)。同時(shí)不同的共識(shí)機(jī)制,適合不同的應(yīng)用場(chǎng)景。
為了幫助用戶能夠輕松快速地選擇和定制自己的共識(shí)機(jī)制,超級(jí)鏈設(shè)計(jì)了一個(gè)能夠復(fù)用底層共識(shí)安全的共識(shí)框架,用戶基于這樣的框架可以輕松地定義自己的鏈,而不需要考慮底層的共識(shí)安全和網(wǎng)絡(luò)安全。并且結(jié)合著超級(jí)鏈的治理機(jī)制,能夠?qū)崿F(xiàn)共識(shí)的熱插拔升級(jí)。
Q4:前面提到了“結(jié)合著超級(jí)鏈的治理機(jī)制,能夠?qū)崿F(xiàn)共識(shí)的熱插拔升級(jí)”,那么超級(jí)鏈的共識(shí)為什么要設(shè)計(jì)成熱插拔的呢?這個(gè)熱插拔主要體現(xiàn)在哪些方面呢?
超級(jí)鏈設(shè)計(jì)上是一個(gè)平行鏈的架構(gòu),不同鏈創(chuàng)建時(shí)可以選擇自己的共識(shí)機(jī)制。但是隨著業(yè)務(wù)的發(fā)展,創(chuàng)建鏈時(shí)選定的共識(shí)類型或者共識(shí)參數(shù)可能不能很好地滿足業(yè)務(wù)的需求,所以會(huì)存在升級(jí)共識(shí)的需求。因此超級(jí)鏈的共識(shí)機(jī)制才設(shè)計(jì)成了熱插拔的形式。
超級(jí)鏈的熱插拔共識(shí)主要體現(xiàn)在以下3個(gè)方面:
1. 平行鏈可以通過(guò)配置創(chuàng)世塊的方式選擇符合自己應(yīng)用場(chǎng)景的共識(shí);
2. 單鏈內(nèi)的共識(shí)類型可以通過(guò)系統(tǒng)的治理機(jī)制進(jìn)行共識(shí)的熱升級(jí);
3. 平行鏈也可以選擇復(fù)用主鏈的共識(shí)從而共享主鏈的共識(shí)安全。
Q5:我們了解了超級(jí)鏈共識(shí)機(jī)制設(shè)計(jì)的背景,那共識(shí)框架究竟是什么樣子呢?
上圖就是超級(jí)鏈共識(shí)模塊的整體架構(gòu)圖。自底向上主要包括3層:
1 共識(shí)公共組件層:該層主要是不同共識(shí)可以共用的組件,包括共識(shí)公共節(jié)點(diǎn)Consensus
Interface、Chained-BFT、GPS原子鐘等,它可以為鏈提供底層的共識(shí)safety保障;
2 共識(shí)類型層:中間層為超級(jí)鏈以及支持或者即將支持的共識(shí)類型,主要包括TDPoS、Pow、授權(quán)共識(shí)等?;诘讓拥墓沧R(shí)安全能力,這一層,用戶可以定義有自己特色的共識(shí)類型,如類似DPoS這種選舉機(jī)制的共識(shí),也可以定義其自己鏈的Staking等相關(guān)邏輯;
3 可插拔共識(shí)層:最上層是可插拔共識(shí)的運(yùn)行態(tài),包括Step Consensus 和Pluggable Consensus兩個(gè)實(shí)例,該層主要負(fù)責(zé)維護(hù)了鏈從創(chuàng)建到當(dāng)前高度的共識(shí)的所有升級(jí)歷史。
Q6:既然說(shuō)“不同鏈可以擁有自己共識(shí)”,那么在單鏈內(nèi)共識(shí)的流程又是怎樣的呢?
超級(jí)鏈單鏈內(nèi)與共識(shí)交互的主要函數(shù)有2個(gè),分別是Miner和SendBlock。
Miner是挖礦的主流程,SendBlock是節(jié)點(diǎn)接受到一個(gè)新的區(qū)塊驗(yàn)證的主要過(guò)程。
超級(jí)鏈的共識(shí)整體流程如上圖所示,主要包括7個(gè)步驟:
1. 用戶提交交易到網(wǎng)絡(luò),交易執(zhí)行完后會(huì)進(jìn)入未確認(rèn)狀態(tài),并記錄在交易的未確認(rèn)列表中TxPool中;
2. 節(jié)點(diǎn)的Miner流程通過(guò)訪問(wèn)Consensus模塊判斷自己是否為當(dāng)前的礦工;
3. 當(dāng)節(jié)點(diǎn)判斷自己是礦工時(shí)需要從TxPool中拉取交易并進(jìn)行區(qū)塊的打包;
4. 當(dāng)?shù)V工完成打包后會(huì)將區(qū)塊廣播給其他的驗(yàn)證節(jié)點(diǎn),同時(shí)會(huì)通過(guò)步驟7將區(qū)塊寫入到賬本;
5. 如果某個(gè)時(shí)刻其他節(jié)點(diǎn)判斷自己是礦工,同樣地會(huì)按照上述1-5流程進(jìn)行區(qū)塊打包,打包完后會(huì)將區(qū)塊廣播給該節(jié)點(diǎn);
6. 節(jié)點(diǎn)收到區(qū)塊后,會(huì)調(diào)用consensus模塊進(jìn)行區(qū)塊的有效性驗(yàn)證;
7. 礦工打包完后或者驗(yàn)證節(jié)點(diǎn)收到一個(gè)有效的區(qū)塊后,將區(qū)塊寫入賬本。
Q7:那超級(jí)鏈共識(shí)框架接口以及使用場(chǎng)景具體有哪些呢?
超級(jí)鏈整個(gè)共識(shí)框架主要有2套接口,分別是共識(shí)基礎(chǔ)接口和共識(shí)安全接口,適用的場(chǎng)景不同,用戶可以根據(jù)其自己的需求進(jìn)行選擇。
場(chǎng)景一:用戶希望定義自己的共識(shí)功能并獨(dú)立負(fù)責(zé)共識(shí)安全;那么用戶僅需要實(shí)現(xiàn)共識(shí)基礎(chǔ)接口即可,就可以和整體的流程打通;
場(chǎng)景二:用戶希望定義自己的共識(shí)功能,但是希望框架底層能幫助保證共識(shí)安全;那么用戶需要實(shí)現(xiàn)共識(shí)基礎(chǔ)接口和共識(shí)安全接口,這樣用戶在設(shè)計(jì)自己的共識(shí)時(shí)就不需要考慮底層共識(shí)safety問(wèn)題;
Q8:共識(shí)基礎(chǔ)接口是什么呢?
共識(shí)基礎(chǔ)接口是共識(shí)模塊的核心接口,是與core模塊交互的主要部分。其中最核心的部分主要是CompeteMaster和CheckMinerMatch兩個(gè)。CompeteMaster是一個(gè)節(jié)點(diǎn)判斷自己是否為主的主要邏輯,CheckMinerMatch是節(jié)點(diǎn)收到一個(gè)區(qū)塊驗(yàn)證其區(qū)塊有效性的主要邏輯。
Q9:那共識(shí)安全接口又是什么?
共識(shí)安全接口是保證底層共識(shí)安全的核心接口,共識(shí)框架底層支持了Hotstuff算法的高性能的共識(shí)安全模塊Chained-BFT。暴露出了 PacemakerInterface 和 ExternalInterface 兩套接口,其中PacemakerInterface 是Chained-BFT的活性保證,此外為了擴(kuò)展Chained-BFT安全模塊能夠應(yīng)用于更多的仲裁類型,底層Chained-BFT設(shè)計(jì)上不需要理解仲裁的具體內(nèi)容,通過(guò)ExternalInterface 會(huì)與外層的共識(shí)進(jìn)行通信。
來(lái)源: 百度超級(jí)鏈?
評(píng)論
查看更多