共識(consensus)概念來自分布式系統(tǒng)領(lǐng)域。在 Fabric 中,共識過程意味著區(qū)塊鏈網(wǎng)絡(luò)成員對于某一批交易的發(fā)生順序、合法性以及它們對賬本狀態(tài)的更新結(jié)果,達(dá)成一致的觀點(diǎn)。滿足共識則意味著多個節(jié)點(diǎn)可以始終保證相同的狀態(tài),對于以同樣順序到達(dá)的交易可以進(jìn)行一致的處理。具體來看,F(xiàn)abric 中的共識包括背書、排序和驗(yàn)證三個環(huán)節(jié)的保障。
背書過程:
背書(endorsement)是指背書節(jié)點(diǎn)對收到的來自客戶端的請求(交易提案)按照自身的邏輯進(jìn)行檢查,以決策是否予以支持的過程。
通常情況下,背書過程意味著背書節(jié)點(diǎn)對請求提案和造成的狀態(tài)變更(讀寫集)添加數(shù)字簽名。
對于調(diào)用某個鏈碼的交易來講,它需要獲得一定條件的背書才被認(rèn)為合法。例如,必須是來自某些特定身份成員的一致同意;或者某個組織中超過一定數(shù)目的成員的支持;或者指定的某個成員個體的支持。這些規(guī)則由鏈碼的背書策略來制定。背書策略內(nèi)容是比較靈活的,可以使用多種規(guī)則進(jìn)行自由組合,并在鏈碼進(jìn)行實(shí)例化(instantiate)的時候指定。
排序過程:
排序(ordering)意味著對一段時間內(nèi)的一批交易達(dá)成一個網(wǎng)絡(luò)內(nèi)全局一致的順序,通常是由排序節(jié)點(diǎn)組成的集群來提供。
目前,排序服務(wù)采用了可拔插的架構(gòu),2.0 版本中使用 etcdRaft 類型的非拜占庭容錯共識機(jī)制。另外,也有第三方實(shí)現(xiàn)了拜占庭容錯共識。
排序服務(wù)除了負(fù)責(zé)達(dá)成一致順序外,并不執(zhí)行其他操作,這就避免其成為整個網(wǎng)絡(luò)的處理瓶頸。同時,每個通道可以選擇排序節(jié)點(diǎn)組,使得整個網(wǎng)絡(luò)很容易進(jìn)行橫向擴(kuò)展,提高整體的吞吐率。
驗(yàn)證過程:
驗(yàn)證(validation)是對排序后的一批交易進(jìn)行提交到賬本之前最終檢查的過程。
驗(yàn)證過程包括:檢查交易結(jié)構(gòu)自身完整性,檢查交易所帶背書簽名是否滿足預(yù)設(shè)的背書策略,檢查交易的讀寫集是否滿足多版本并發(fā)控制(Multi-VersionConcurrency Control,MVCC)的相關(guān)要求等。
交易在驗(yàn)證環(huán)節(jié)如果包括狀態(tài)寫操作,則對應(yīng)讀集合中所有狀態(tài)的當(dāng)前版本必須與執(zhí)行背書時一致。否則該交易會被標(biāo)記為不合法(invalid),對應(yīng)交易不會被執(zhí)行,也不會影響到世界狀態(tài)。
確認(rèn)前的驗(yàn)證過程是十分有必要的,可以避免交易并發(fā)時的狀態(tài)更新沖突,確保交易發(fā)生后所有節(jié)點(diǎn)看到的結(jié)果都是一致的。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.