Hyperledger Fabric架構(gòu)詳解

Hyperledger Fabric 整理體系:

?區(qū)塊鏈是一種按照時(shí)間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)梗肝。
?賬本在FileSystem中保存韭脊,世界狀態(tài)保存在LevelDB中。

區(qū)塊鏈票據(jù)賬本數(shù)據(jù)結(jié)構(gòu)

Fabric核心概念
  • chaincode:鏈碼/智能合約,對(duì)外提供調(diào)用指令雌贱。分為系統(tǒng)鏈碼半开、用戶鏈碼
    1. 系統(tǒng)鏈碼
      負(fù)責(zé)fabric節(jié)點(diǎn)自身的處理邏輯操漠,包括系統(tǒng)配置烹笔、背書、校驗(yàn)等工作澄耍。系統(tǒng)鏈碼僅支持go語(yǔ)言噪珊,在Peer節(jié)點(diǎn)啟動(dòng)時(shí)會(huì)自動(dòng)完成注冊(cè)和部署。
      系統(tǒng)鏈碼共有五種類型:
      • 配置系統(tǒng)鏈碼(CSCC):Configuration System Chaincode齐莲,負(fù)責(zé)處理Peer端的channel配置
      • 生命周期系統(tǒng)鏈碼(LSCC):Lifecycle System Chaincode痢站,負(fù)責(zé)對(duì)用戶鏈碼生命周期進(jìn)行管理
      • 查詢系統(tǒng)鏈碼(QSCC):Query System Chaincode,提供賬本查詢API选酗。如獲取區(qū)塊和交易等信息阵难。
      • 背書管理系統(tǒng)鏈碼(ESCC):Endorsement System Chaincode,負(fù)責(zé)背書(簽名)過(guò)程芒填,并可以支持對(duì)背書策略進(jìn)行管理呜叫。
        對(duì)提交的交易提案的模擬運(yùn)行結(jié)果進(jìn)行簽名,之后創(chuàng)建響應(yīng)消息返回給客戶端
      • 驗(yàn)證系統(tǒng)鏈碼(VSCC):Validation System Chaincode殿衰,處理交易的驗(yàn)證朱庆,包括檢查背書策略已經(jīng)多版本并發(fā)控制。
    2. 用戶鏈碼
      根據(jù)不同場(chǎng)景需求及成員指定的相關(guān)規(guī)則闷祥,操作區(qū)塊鏈分布式賬本的狀態(tài)的業(yè)務(wù)處理邏輯代碼娱颊,運(yùn)行在鏈碼容器中,通過(guò)fabric提供的接口與賬本狀態(tài)進(jìn)行交互凯砍。在整個(gè)程序中處于重要位置箱硕,下可對(duì)賬本數(shù)據(jù)進(jìn)行操作,上可以對(duì)企業(yè)級(jí)應(yīng)用程序提供調(diào)用接口果覆。
  • transaction:tx 交易颅痊,每條指令都是一次交易
  • world state:世界狀態(tài)殖熟,
  • endorse:背書局待,在共識(shí)機(jī)制的投票環(huán)節(jié),背書意味著參與投票
  • endorsement policy:背書策略菱属,
  • peer:組織中的節(jié)點(diǎn)钳榨;peer節(jié)點(diǎn)以區(qū)塊的形式從orderer排序服務(wù)節(jié)點(diǎn)接收有序狀態(tài)更新,維護(hù)狀態(tài)和賬本纽门。fabric中Peer節(jié)點(diǎn)可劃分如下:
    1. Endorsing Peer:根據(jù)指定的策略調(diào)用智能合約薛耻,對(duì)結(jié)果進(jìn)行背書,返回提案相應(yīng)到客戶端
    2. Committing Peer:驗(yàn)證數(shù)據(jù)并保存到賬本中
    3. Anchor Peer:跨組織通訊
    4. Leading Peer:做為組織內(nèi)所有節(jié)點(diǎn)的代表連接到Orderer排序服務(wù)節(jié)點(diǎn)赏陵,將從排序服務(wù)節(jié)點(diǎn)接收到的批量區(qū)塊廣播給組織內(nèi)的其他節(jié)點(diǎn)
  • channel:通道提供了一種通訊機(jī)制饼齿,將peers和orderer連接在一起饲漾,形成一個(gè)具有保密性的通訊鏈路;將一個(gè)大網(wǎng)絡(luò)分割成不同私有子網(wǎng)缕溉,進(jìn)行數(shù)據(jù)隔離
  • KPI:public key infrastructure考传,一種遵循標(biāo)準(zhǔn)的利用公鑰加密技術(shù)為電子上午的開展提供一套安全基礎(chǔ)平臺(tái)的技術(shù)和規(guī)范
  • MSP:Membership Service Provider,聯(lián)盟鏈證書管理证鸥,保存可信任RCA僚楞、ICA
  • org:orginazation,管理合作企業(yè)的組織
Fabric分層

?fabric大致分為底層網(wǎng)絡(luò)層枉层、權(quán)限管理模塊泉褐、區(qū)塊鏈應(yīng)用模塊。通過(guò)SDK和CLI對(duì)應(yīng)該開發(fā)者提供服務(wù)鸟蜡。


fabric 模塊分層

?與此相對(duì)應(yīng)的人員分為三類:

  • 底層:系統(tǒng)運(yùn)維膜赃,負(fù)責(zé)系統(tǒng)的部署和服務(wù)
  • 組織骨干力人員:負(fù)責(zé)證書,MSP權(quán)限管理揉忘,共識(shí)機(jī)制等
  • 業(yè)務(wù)開發(fā)人員:編寫chaincode财剖,創(chuàng)建/維護(hù)channel,執(zhí)行transaction等


    fabric技術(shù)人員分層

    ?開發(fā)流程主要包括編寫智能合約癌淮、通過(guò)SDK調(diào)用智能合約躺坟、及訂閱各類事件。


    開發(fā)環(huán)節(jié)
MSP

?每個(gè)管理協(xié)作企業(yè)的ORG組織都可以擁有自己的MSP乳蓄,如圖所示:


ORG - MSG

?MSP出現(xiàn)在兩個(gè)地方

  • 全局MSP:存在channel上咪橙,邏輯上認(rèn)為是配置在系統(tǒng)上的,實(shí)際每一個(gè)參與者上拷貝一份
  • 局部MSP:每個(gè)peer虚倒,orderer美侦,client等角色都維護(hù),只保存全局MSP的子集魂奥,內(nèi)容保存在本地文件系統(tǒng)上


    MSP分類

    ?MSP結(jié)構(gòu)包含RCA根證書菠剩、ICA中間證書、OU組織單位耻煤、管理員證書具壮、RCL吊銷證書列表、節(jié)點(diǎn)上的具體證書哈蝇、存儲(chǔ)私鑰的keystore棺妓、TLS的根證書與中間證書


    MSP結(jié)構(gòu)
fabric交易流程

1. peer結(jié)點(diǎn)的部署
?peer結(jié)點(diǎn)上保存有賬本ledger和chaincode

peer結(jié)構(gòu)

?channel是一個(gè)邏輯概念,可以管理多個(gè)peer
channel - peer

?當(dāng)有多方參與者時(shí)
channel - org - peer

?加入MSP時(shí)炮赦,可以通過(guò)MSP隔離全網(wǎng)不同組織的參與者
channel - MSP - org - peer

2. 交易執(zhí)行流程
?去中心化的設(shè)計(jì)怜跑,必須需要通過(guò)投票(多數(shù)大于少數(shù))來(lái)維持?jǐn)?shù)據(jù)一致性,fabric具體操作如下:

  • 由client端的CLI或者SDK進(jìn)行proposal議案提出吠勘。client會(huì)依據(jù)chaincode中的endorsement policy決定把proposal發(fā)往哪些endorse peer性芬;背書節(jié)點(diǎn)進(jìn)行投票峡眶,client匯總背書節(jié)點(diǎn)結(jié)果
  • client將獲得多數(shù)同意的proposal,連同各節(jié)點(diǎn)的背書及結(jié)果提交到orderring service植锉;orderer匯總各client遞交過(guò)來(lái)的請(qǐng)求后幌陕,不需要檢查交易中的具體數(shù)據(jù),只是把接收的所有通道交易汽煮,按時(shí)間順序進(jìn)行排序搏熄,并創(chuàng)建交易區(qū)塊。
  • orderer將交易打包成區(qū)塊block暇赤,然后廣播給同一通道內(nèi)所有組織的Leader節(jié)點(diǎn)心例;各節(jié)點(diǎn)各自驗(yàn)證結(jié)果,最后將block記錄到自己的ledger中鞋囊。


    交易流程 - 原理

    交易流程 - 編程

    ?從編程的角度來(lái)看止后,流程更清晰,A是應(yīng)用程序

  • A首先連接到peer
  • A調(diào)用chaincode發(fā)起proposal溜腐;與此同時(shí)译株,P1收到后先模擬執(zhí)行,產(chǎn)生結(jié)果放回給A
  • A收到各peer返回的結(jié)果
  • A向O1發(fā)起交易挺益;與此同時(shí)歉糜,O1產(chǎn)生block后會(huì)通知peer,而peer會(huì)更新其賬本
  • 最后通過(guò)調(diào)閱事件A收到了結(jié)果望众。


    交易流程 - 節(jié)點(diǎn)

2.1 proposal議案階段
?A1發(fā)出<T1, P>匪补,收到了<T1, R1, E1> <T1, R2, E2>兩個(gè)結(jié)果

proposal

2.2 package打包階段
?O1會(huì)在channal上收到很多transaction,將tx排序烂翰,在達(dá)到block的最大大泻蝗薄(一般應(yīng)配1M一下,否則性能下降嚴(yán)重)或者達(dá)到超時(shí)事件后甘耿,達(dá)成block P2

package

2.3 驗(yàn)證階段
?O1將含有多條tx打包成區(qū)塊的B2發(fā)往各peer踊兜,而P1和P2將B2加到自己的賬本中。

驗(yàn)證階段

資料整理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末佳恬,一起剝皮案震驚了整個(gè)濱河市捏境,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殿怜,老刑警劉巖典蝌,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件曙砂,死亡現(xiàn)場(chǎng)離奇詭異头谜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鸠澈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門柱告,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)截驮,“玉大人,你說(shuō)我怎么就攤上這事际度】” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵乖菱,是天一觀的道長(zhǎng)坡锡。 經(jīng)常有香客問我,道長(zhǎng)窒所,這世上最難降的妖魔是什么鹉勒? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮吵取,結(jié)果婚禮上禽额,老公的妹妹穿的比我還像新娘。我一直安慰自己皮官,他們只是感情好脯倒,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捺氢,像睡著了一般藻丢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摄乒,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天郁岩,我揣著相機(jī)與錄音,去河邊找鬼缺狠。 笑死问慎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的挤茄。 我是一名探鬼主播如叼,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼穷劈!你這毒婦竟也來(lái)了笼恰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤歇终,失蹤者是張志新(化名)和其女友劉穎社证,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體评凝,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡追葡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宜肉。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匀钧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤齐唆,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站佑刷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏酿炸。R本人自食惡果不足惜项乒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梁沧。 院中可真熱鬧檀何,春花似錦、人聲如沸廷支。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)恋拍。三九已至垛孔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間施敢,已是汗流浹背周荐。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留僵娃,地道東北人概作。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像默怨,于是被迫代替她去往敵國(guó)和親讯榕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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