Hyperledger Fabric 整理體系:
?區(qū)塊鏈是一種按照時(shí)間順序?qū)?shù)據(jù)區(qū)塊以順序相連的方式組合成的一種鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)梗肝。
?賬本在FileSystem中保存韭脊,世界狀態(tài)保存在LevelDB中。
Fabric核心概念
- chaincode:鏈碼/智能合約,對(duì)外提供調(diào)用指令雌贱。分為系統(tǒng)鏈碼半开、用戶鏈碼
- 系統(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ā)控制。
- 用戶鏈碼
根據(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)用接口果覆。
- 系統(tǒng)鏈碼
- 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)可劃分如下:
- Endorsing Peer:根據(jù)指定的策略調(diào)用智能合約薛耻,對(duì)結(jié)果進(jìn)行背書,返回提案相應(yīng)到客戶端
- Committing Peer:驗(yàn)證數(shù)據(jù)并保存到賬本中
- Anchor Peer:跨組織通訊
- 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ù)鸟蜡。
?與此相對(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等
?開發(fā)流程主要包括編寫智能合約癌淮、通過(guò)SDK調(diào)用智能合約躺坟、及訂閱各類事件。
MSP
?每個(gè)管理協(xié)作企業(yè)的ORG組織都可以擁有自己的MSP乳蓄,如圖所示:
?MSP出現(xiàn)在兩個(gè)地方
- 全局MSP:存在channel上咪橙,邏輯上認(rèn)為是配置在系統(tǒng)上的,實(shí)際每一個(gè)參與者上拷貝一份
-
局部MSP:每個(gè)peer虚倒,orderer美侦,client等角色都維護(hù),只保存全局MSP的子集魂奥,內(nèi)容保存在本地文件系統(tǒng)上
?MSP結(jié)構(gòu)包含RCA根證書菠剩、ICA中間證書、OU組織單位耻煤、管理員證書具壮、RCL吊銷證書列表、節(jié)點(diǎn)上的具體證書哈蝇、存儲(chǔ)私鑰的keystore棺妓、TLS的根證書與中間證書
fabric交易流程
1. peer結(jié)點(diǎn)的部署
?peer結(jié)點(diǎn)上保存有賬本ledger和chaincode
?channel是一個(gè)邏輯概念,可以管理多個(gè)peer
?當(dāng)有多方參與者時(shí)
?加入MSP時(shí)炮赦,可以通過(guò)MSP隔離全網(wǎng)不同組織的參與者
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é)果望众。
2.1 proposal議案階段
?A1發(fā)出<T1, P>匪补,收到了<T1, R1, E1> <T1, R2, E2>兩個(gè)結(jié)果
2.2 package打包階段
?O1會(huì)在channal上收到很多transaction,將tx排序烂翰,在達(dá)到block的最大大泻蝗薄(一般應(yīng)配1M一下,否則性能下降嚴(yán)重)或者達(dá)到超時(shí)事件后甘耿,達(dá)成block P2
2.3 驗(yàn)證階段
?O1將含有多條tx打包成區(qū)塊的B2發(fā)往各peer踊兜,而P1和P2將B2加到自己的賬本中。
資料整理