Hyperledger Fabric學(xué)習(xí)筆記01-系統(tǒng)邏輯架構(gòu)

本系列學(xué)習(xí)筆記以閱讀《深度探索區(qū)塊鏈:Hyperledger Fabric技術(shù)與應(yīng)用》一書的筆記為藍(lán)本腾务,故默認(rèn)Hyperledger Fabric 1.0,期間可能會追加最新版本的內(nèi)容,到時(shí)會在里面注明疗韵。這是一個(gè)邊看邊寫的系列峻呛,有興趣的也可以先自行購買此書學(xué)習(xí)。

Hyperledger Fabric 1.0是一種通用的區(qū)塊鏈技術(shù)乱豆,其設(shè)計(jì)目的是利用一些成熟的技術(shù)實(shí)現(xiàn)分布式賬本技術(shù)(Distributed Ledger Techonlogy DLT)奖恰。

超級賬本采用模塊化架構(gòu)設(shè)計(jì),復(fù)用通用的功能模塊和接口宛裕。

模塊化的方法帶來了可擴(kuò)展性瑟啃、靈活性等優(yōu)勢,會減少模塊修改揩尸、升級帶來的影響蛹屿,能很好地利用微服務(wù)實(shí)現(xiàn)區(qū)塊鏈應(yīng)用系統(tǒng)的開發(fā)和部署。

Hyperledger Fabric 1.0設(shè)計(jì)的幾個(gè)特點(diǎn):

特點(diǎn) 說明
模塊插件化 1.很多的功能模塊(如CA模塊岩榆、共識算法错负、狀態(tài)數(shù)據(jù)庫存儲、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ǔ)上抠艾,對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)圖:

image.png

該圖是從不同角度來劃分的:上層從應(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á)成共識需要較長的執(zhí)行時(shí)間同仆,也是采用異步通信模式進(jìn)行開發(fā)的,事件模塊可以在觸發(fā)區(qū)塊事件或者鏈碼事件的時(shí)候執(zhí)行預(yù)先定義的回調(diào)函數(shù)裙品。

應(yīng)用程序角度

1.身份管理

  • 用戶注冊和登錄系統(tǒng)后俗批,獲取到用戶注冊證書(ECert),其他所有的操作都需要與用戶證書關(guān)聯(lián)的私鑰進(jìn)行簽名市怎。

  • 消息接收方首先會進(jìn)行簽名驗(yàn)證岁忘,才進(jìn)行后續(xù)的消息處理。

  • 網(wǎng)絡(luò)節(jié)點(diǎn)同樣會收到頒發(fā)的證書区匠,比如系統(tǒng)啟動和網(wǎng)絡(luò)節(jié)點(diǎn)管理等都會對用戶身份進(jìn)行認(rèn)證和授權(quán)臭觉。

2.賬本管理

授權(quán)的用戶是可以查詢賬本數(shù)據(jù)(ledger)的,這可以通過多種方式查詢辱志,包括:根據(jù)區(qū)塊號查詢區(qū)塊蝠筑、根據(jù)區(qū)塊哈希查詢區(qū)塊、根據(jù)交易號查詢區(qū)塊揩懒、根據(jù)交易號查詢交易什乙、還可以根據(jù)通道名稱獲取查詢到的區(qū)塊鏈信息。

3.交易管理

賬本數(shù)據(jù)只能通過交易執(zhí)行才能更新已球,應(yīng)用程序通過交易管理提交交易提案(Proposal)并獲取到交易背書(Endorsement)以后臣镣,再給排序服務(wù)節(jié)點(diǎn)提交交易,然后打包生成區(qū)塊智亮。

SDK提供接口忆某,利用用戶證書本地生成交易號,背書節(jié)點(diǎn)和記賬節(jié)點(diǎn)都會校驗(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)對成員管理進(jìn)行了抽象。

每個(gè)MSP都會建立一套根信任證書(Root of Truest Certificate)體系毕莱,利用PKI(Public Key Infrastructure)對成員身份進(jìn)行認(rèn)證器贩,驗(yàn)證成員用戶提交交易請求的簽名。

結(jié)合Fabric-CA或者第三方CA系統(tǒng)朋截,提供成員注冊功能蛹稍,并對成員身份證書進(jìn)行;管理质和,例如證書新增和撤銷稳摄。

注冊的證書分為注冊證書(ECert)、交易證書(TCert)和TLS證書(TLS Cert)饲宿,它們分別用于用戶身份厦酬、交易簽名和TLS傳輸。

2.共識服務(wù)

在分布式節(jié)點(diǎn)環(huán)境下瘫想,要實(shí)現(xiàn)同一個(gè)鏈上不同節(jié)點(diǎn)區(qū)塊的一致性仗阅,同時(shí)要確保區(qū)塊里的交易有效和有序。

共識機(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)境和鏡像文件倉庫。

其好處是容易支持多種語言的鏈碼抗斤,擴(kuò)展性很好囚企。

Docker方案的也有不足,如:對環(huán)境要求較高瑞眼,占用資源較多龙宏,性能不高等,實(shí)現(xiàn)過程也存在與Kubernetes伤疙、Rancher等平臺的兼容性問題银酗。

4.安全和密碼服務(wù)

Fabric 1.0專門定義了一個(gè)BCCSP(BlockChain Cryptographic Service Provider),使其實(shí)現(xiàn)秘鑰生成掩浙、哈喜運(yùn)算花吟、簽名驗(yàn)簽、加密解密等基礎(chǔ)功能厨姚。

BBSCP是一個(gè)抽象接口衅澈,默認(rèn)是軟視線的國標(biāo)算法,目前社區(qū)和較多的廠商都在實(shí)現(xiàn)國密的算法和HSM(Hardware Security Module)谬墙。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末今布,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拭抬,更是在濱河造成了極大的恐慌部默,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件造虎,死亡現(xiàn)場離奇詭異傅蹂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)算凿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門份蝴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氓轰,你說我怎么就攤上這事婚夫。” “怎么了署鸡?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵案糙,是天一觀的道長限嫌。 經(jīng)常有香客問我,道長时捌,這世上最難降的妖魔是什么怒医? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮匣椰,結(jié)果婚禮上裆熙,老公的妹妹穿的比我還像新娘。我一直安慰自己禽笑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布蛤奥。 她就那樣靜靜地躺著佳镜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凡桥。 梳的紋絲不亂的頭發(fā)上蟀伸,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音缅刽,去河邊找鬼啊掏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛衰猛,可吹牛的內(nèi)容都是我干的迟蜜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼啡省,長吁一口氣:“原來是場噩夢啊……” “哼娜睛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卦睹,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤畦戒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后结序,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體障斋,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年徐鹤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了垃环。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凳干,死狀恐怖晴裹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情救赐,我是刑警寧澤涧团,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布只磷,位于F島的核電站,受9級特大地震影響泌绣,放射性物質(zhì)發(fā)生泄漏钮追。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一阿迈、第九天 我趴在偏房一處隱蔽的房頂上張望元媚。 院中可真熱鬧,春花似錦苗沧、人聲如沸刊棕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甥角。三九已至,卻和暖如春识樱,著一層夾襖步出監(jiān)牢的瞬間嗤无,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工怜庸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留当犯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓割疾,卻偏偏與公主長得像嚎卫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子杈曲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容