本系列學(xué)習(xí)筆記以閱讀《深度探索區(qū)塊鏈:Hyperledger Fabric技術(shù)與應(yīng)用》一書的筆記為藍(lán)本,故默認(rèn)Hyperledger Fabric 1.0,期間可能會(huì)追加最新版本的內(nèi)容,到時(shí)會(huì)在里面注明。這是一個(gè)邊看邊寫的系列,有興趣的也可以先自行購(gòu)買此書學(xué)習(xí)。
Hyperledger Fabric 1.0是一種通用的區(qū)塊鏈技術(shù),其設(shè)計(jì)目的是利用一些成熟的技術(shù)實(shí)現(xiàn)分布式賬本技術(shù)(Distributed Ledger Techonlogy DLT)。
超級(jí)賬本采用模塊化架構(gòu)設(shè)計(jì),復(fù)用通用的功能模塊和接口。
模塊化的方法帶來了可擴(kuò)展性、靈活性等優(yōu)勢(shì),會(huì)減少模塊修改、升級(jí)帶來的影響,能很好地利用微服務(wù)實(shí)現(xiàn)區(qū)塊鏈應(yīng)用系統(tǒng)的開發(fā)和部署。
Hyperledger Fabric 1.0設(shè)計(jì)的幾個(gè)特點(diǎn):
| 特點(diǎn) | 說明 |
|---|---|
| 模塊插件化 | 1.很多的功能模塊(如CA模塊、共識(shí)算法、狀態(tài)數(shù)據(jù)庫(kù)存儲(chǔ)、ESCC、VSCC、BCCSP等)都是可插拔的,系統(tǒng)提供了通用的接口和默認(rèn)的實(shí)現(xiàn),這滿足了大多數(shù)業(yè)務(wù)的需求。 2.這些模塊也可以通過需求進(jìn)行擴(kuò)展,集成到系統(tǒng)中。 |
| 充分利用容器技術(shù) | 1.不僅節(jié)點(diǎn)使用容器做為運(yùn)行環(huán)境,鏈碼也默認(rèn)運(yùn)行在安全的容器中。 2.應(yīng)用程序或者外部系統(tǒng)不能直接操作鏈碼,必須通過背書節(jié)點(diǎn)提供的接口轉(zhuǎn)發(fā)給鏈碼來執(zhí)行。 |
| 可擴(kuò)展性 | Hyperledger Fabric 1.0在0.6版本的基礎(chǔ)上,對(duì)Peer節(jié)點(diǎn)的角色進(jìn)行了拆分,有背書節(jié)點(diǎn)(Endorser)、排序服務(wù)節(jié)點(diǎn)(Orderer)、記賬節(jié)點(diǎn)(Committer)等,不同角色的節(jié)點(diǎn)有不同的功能。 節(jié)點(diǎn)可以加入到不同的通道(Channel)中,鏈碼可以運(yùn)行在不同的節(jié)點(diǎn)上,這樣可以更好地提升并行執(zhí)行的效率和吞吐量。 |
| 安全性 | Hyperledger Fabric 1.0提供的是授權(quán)訪問的區(qū)塊鏈網(wǎng)絡(luò),節(jié)點(diǎn)共同維護(hù)成員信息,MSP(Membership Service Provider)模塊驗(yàn)證、授權(quán)了最終用戶后才能使用區(qū)塊鏈網(wǎng)絡(luò)的功能。 多鏈和多通道的設(shè)計(jì)容易實(shí)現(xiàn)數(shù)據(jù)隔離,也提供了應(yīng)用程序和鏈碼之間的安全通道,實(shí)現(xiàn)了隱私保護(hù)。 |
系統(tǒng)邏輯架構(gòu)
下圖是 Hyperledger Fabric 1.0設(shè)計(jì)的系統(tǒng)邏輯架構(gòu)圖:

該圖是從不同角度來劃分的:上層從應(yīng)用層程序的角度,提供了標(biāo)準(zhǔn)的gRPC接口,在API的基礎(chǔ)上封裝了不同語言的SDK,包括Golang、Node.js、Java、Python等,開發(fā)人員可以利用SDK開發(fā)基于區(qū)塊鏈的應(yīng)用。
區(qū)塊鏈強(qiáng)一致性要求各個(gè)節(jié)點(diǎn)之間達(dá)成共識(shí)需要較長(zhǎng)的執(zhí)行時(shí)間,也是采用異步通信模式進(jìn)行開發(fā)的,事件模塊可以在觸發(fā)區(qū)塊事件或者鏈碼事件的時(shí)候執(zhí)行預(yù)先定義的回調(diào)函數(shù)。
應(yīng)用程序角度
1.身份管理
用戶注冊(cè)和登錄系統(tǒng)后,獲取到用戶注冊(cè)證書(ECert),其他所有的操作都需要與用戶證書關(guān)聯(lián)的私鑰進(jìn)行簽名。
消息接收方首先會(huì)進(jìn)行簽名驗(yàn)證,才進(jìn)行后續(xù)的消息處理。
網(wǎng)絡(luò)節(jié)點(diǎn)同樣會(huì)收到頒發(fā)的證書,比如系統(tǒng)啟動(dòng)和網(wǎng)絡(luò)節(jié)點(diǎn)管理等都會(huì)對(duì)用戶身份進(jìn)行認(rèn)證和授權(quán)。
2.賬本管理
授權(quán)的用戶是可以查詢賬本數(shù)據(jù)(ledger)的,這可以通過多種方式查詢,包括:根據(jù)區(qū)塊號(hào)查詢區(qū)塊、根據(jù)區(qū)塊哈希查詢區(qū)塊、根據(jù)交易號(hào)查詢區(qū)塊、根據(jù)交易號(hào)查詢交易、還可以根據(jù)通道名稱獲取查詢到的區(qū)塊鏈信息。
3.交易管理
賬本數(shù)據(jù)只能通過交易執(zhí)行才能更新,應(yīng)用程序通過交易管理提交交易提案(Proposal)并獲取到交易背書(Endorsement)以后,再給排序服務(wù)節(jié)點(diǎn)提交交易,然后打包生成區(qū)塊。
SDK提供接口,利用用戶證書本地生成交易號(hào),背書節(jié)點(diǎn)和記賬節(jié)點(diǎn)都會(huì)校驗(yàn)是否存在重復(fù)交易。
4.智能合約
實(shí)現(xiàn)“可編程的交易賬本”(Programmable Ledger),通過鏈碼執(zhí)行提交的交易,實(shí)現(xiàn)基于區(qū)塊鏈的智能合約業(yè)務(wù)邏輯。
只有智能合約才能更新賬本數(shù)據(jù),其他模塊是不能直接修改狀態(tài)數(shù)據(jù)(World State)的。
底層角度
從1.0底層的角度來看,如何實(shí)現(xiàn)分布式賬本技術(shù),給應(yīng)用程序提供區(qū)塊鏈服務(wù):
1.成員管理
MSP(Membership Service Provider)對(duì)成員管理進(jìn)行了抽象。
每個(gè)MSP都會(huì)建立一套根信任證書(Root of Truest Certificate)體系,利用PKI(Public Key Infrastructure)對(duì)成員身份進(jìn)行認(rèn)證,驗(yàn)證成員用戶提交交易請(qǐng)求的簽名。
結(jié)合Fabric-CA或者第三方CA系統(tǒng),提供成員注冊(cè)功能,并對(duì)成員身份證書進(jìn)行;管理,例如證書新增和撤銷。
注冊(cè)的證書分為注冊(cè)證書(ECert)、交易證書(TCert)和TLS證書(TLS Cert),它們分別用于用戶身份、交易簽名和TLS傳輸。
2.共識(shí)服務(wù)
在分布式節(jié)點(diǎn)環(huán)境下,要實(shí)現(xiàn)同一個(gè)鏈上不同節(jié)點(diǎn)區(qū)塊的一致性,同時(shí)要確保區(qū)塊里的交易有效和有序。
共識(shí)機(jī)制由3個(gè)階段完成:
客戶端向背書節(jié)點(diǎn)提交交易案進(jìn)行簽名背書;
客戶端將背書后的交易提交給排序服務(wù)節(jié)點(diǎn)進(jìn)行交易排序,生成區(qū)塊和排序服務(wù);
之后廣播給記賬節(jié)點(diǎn)驗(yàn)證交易后寫入本地賬本。
網(wǎng)絡(luò)節(jié)點(diǎn)的P2P協(xié)議采用的是基于Gossip的數(shù)據(jù)分發(fā),以同一組織為傳播范圍來同步數(shù)據(jù),提升網(wǎng)絡(luò)傳輸?shù)男省?/p>
3.鏈碼服務(wù)
智能合約的實(shí)現(xiàn)依賴于安全和執(zhí)行環(huán)境,確保安全的執(zhí)行過程和用戶數(shù)據(jù)的隔離。
Fabric采用Docker管理普通的鏈碼,提供安全的沙箱環(huán)境和鏡像文件倉(cāng)庫(kù)。
其好處是容易支持多種語言的鏈碼,擴(kuò)展性很好。
Docker方案的也有不足,如:對(duì)環(huán)境要求較高,占用資源較多,性能不高等,實(shí)現(xiàn)過程也存在與Kubernetes、Rancher等平臺(tái)的兼容性問題。
4.安全和密碼服務(wù)
Fabric 1.0專門定義了一個(gè)BCCSP(BlockChain Cryptographic Service Provider),使其實(shí)現(xiàn)秘鑰生成、哈喜運(yùn)算、簽名驗(yàn)簽、加密解密等基礎(chǔ)功能。
BBSCP是一個(gè)抽象接口,默認(rèn)是軟視線的國(guó)標(biāo)算法,目前社區(qū)和較多的廠商都在實(shí)現(xiàn)國(guó)密的算法和HSM(Hardware Security Module)。