00 導(dǎo)言
? ? ??在上一講《Fabric 環(huán)境搭建時(shí)bootstrap.sh幫我們做了什么跪妥?》中,我們知道bootstrap.sh幫我們做了三件事:
- 從github上克隆 hyperledger/fabric-samples并進(jìn)入該目錄肌割,然后檢出適當(dāng)?shù)陌姹?/li>
- 在fabric-samples目錄下安裝特定平臺(tái)的 Hyperledger Fabric 二進(jìn)制可執(zhí)行文件 和配置文件
- 下載 指定版本的Hyperledger Fabric 的docker鏡像
? ? ??接下來(lái)我們來(lái)介紹一下這些目錄是干什么的弥奸?這些目錄里包含了一些什么?
01 balance-transfer目錄
? ? ??這是一個(gè)轉(zhuǎn)賬的案例奋早,通過(guò)node.js SDK完成如下功能:創(chuàng)建通道(chanel)盛霎,加入通道赠橙,部署鏈碼(chaincode-就是智能合約),實(shí)例化鏈碼愤炸,調(diào)用鏈碼完成交易期揪,以及查詢鏈碼等功能。鏈碼的編程語(yǔ)言提供了兩種語(yǔ)言的示例:golang和node.js語(yǔ)言规个。而app端又提供了兩種語(yǔ)言的示例:node.js和typescript凤薛。整體如下圖。
02 basic-network目錄
? ? ??該目錄提供了一系列shell腳本诞仓,去生成初始化并啟動(dòng)一個(gè)最基本的網(wǎng)絡(luò)缤苫,包含一個(gè)order節(jié)點(diǎn),一個(gè)組織下的一個(gè)普通的peer節(jié)點(diǎn)墅拭。
腳本 | 作用 |
---|---|
init.sh | 刪除之前存儲(chǔ)的證書數(shù)據(jù) |
generate.sh | 生成加密材料活玲、創(chuàng)世區(qū)塊、通道等 |
start.sh | 啟動(dòng)網(wǎng)絡(luò) |
stop.sh | 刪除網(wǎng)絡(luò) |
teardown.sh | 徹底刪除所有與網(wǎng)絡(luò)有關(guān)的證據(jù)(刪除存儲(chǔ)和鏡像) |
03 chaincode目錄
? ? ??該目錄是一些鏈碼的示例帜矾,包括以下目錄:
目錄 | 作用 |
---|---|
abac | Attribute-Based Access Control 基于身份屬性的訪問(wèn)控制 |
chaincode_example02 | 一個(gè)簡(jiǎn)單的賬戶間轉(zhuǎn)賬和查詢 的示例 |
fabcar | 一個(gè)關(guān)于汽車的綜合示例翼虫,提供了Fabric功能的廣泛演示屑柔。 演示與證書頒發(fā)機(jī)構(gòu)進(jìn)行交互并生成注冊(cè)證書的過(guò)程屡萤,用這些身份來(lái)查詢和更新帳本 |
marbles02 | 彈珠資產(chǎn)管理鏈碼,演示couchDB的富查詢(基于json) |
marbles02-private | 暫不了解 |
sacc | SimpleAssetChainCode 簡(jiǎn)單資產(chǎn)管理鏈碼示例 |
04 chaincode-docker-devmode目錄
? ? ??該目錄演示在開(kāi)發(fā)網(wǎng)絡(luò)時(shí)掸宛,利用預(yù)生成的order和chanel來(lái)啟動(dòng)“開(kāi)發(fā)模式”死陆。 這樣,用戶可以立即進(jìn)入編譯鏈碼和驅(qū)動(dòng)調(diào)用的過(guò)程唧瘾。
? ? ??通常措译,鏈碼由peer節(jié)點(diǎn)啟動(dòng)和維護(hù)。 然而饰序,在“開(kāi)發(fā)模式”中领虹,鏈碼由用戶構(gòu)建和啟動(dòng)。在鏈代碼開(kāi)發(fā)階段求豫,此模式非常有用塌衰,可用于快速代碼/構(gòu)建/運(yùn)行/調(diào)試。
05 fabcar目錄
? ? ??一個(gè)汽車的例子蝠嘉,主要是通過(guò)單機(jī)配置模擬環(huán)境最疆,實(shí)現(xiàn)管理員admin用戶的enrollAdmin(注冊(cè)管理),其他用戶的注冊(cè)(主要是指user1)蚤告,以及實(shí)現(xiàn)query和invoke努酸。
? ? ??該目錄下主要包含的是一些js文件和一個(gè)startFabric.sh,沒(méi)有包含鏈碼(相關(guān)的鏈碼放在chaincode/fabcar目錄下)杜恰。運(yùn)行startFabric.sh會(huì)先運(yùn)行basic-network啟動(dòng)網(wǎng)絡(luò)获诈。
06 fabric-ca目錄
? ? ??演示如何使用Hyperledger Fabric CA客戶端和服務(wù)器為order仍源,peer,管理員和最終用戶生成加密證書上舔涎,以便私鑰永遠(yuǎn)不會(huì)離開(kāi)生成它們的主機(jī)或容器镜会。
? ? ??為啥要使用CA呢? cryptogen加密工具不適用于生產(chǎn)環(huán)境终抽,因?yàn)樗谝粋€(gè)位置生成所有私鑰戳表,然后必須將其復(fù)制到適當(dāng)?shù)闹鳈C(jī)或容器。
07 first-network目錄
? ? ??我們平常說(shuō)的搭建hyperledger fabric環(huán)境昼伴,一般指的是就是部署運(yùn)行這個(gè)示例匾旭。該目錄下提供一個(gè)腳本byfn.sh文件,該文件提供一條龍服務(wù)圃郊,演示了生成證書价涝,啟動(dòng)網(wǎng)絡(luò)節(jié)點(diǎn)(兩個(gè)組織,每個(gè)組織有2個(gè)節(jié)點(diǎn))持舆,以及部署色瘩、實(shí)例化鏈碼,并調(diào)用鏈碼進(jìn)行轉(zhuǎn)賬和查詢逸寓,最后停止整個(gè)網(wǎng)絡(luò)居兆。本示例采用的是solo共識(shí)服務(wù)機(jī)制。
08 high-throughput目錄
? ? ??訪目錄提供的案例竹伸,用于演示如何正確設(shè)計(jì)鏈碼數(shù)據(jù)模型泥栖,以處理在每秒數(shù)千個(gè)并發(fā)事務(wù),這些事務(wù)都更新了賬本的相同資產(chǎn)勋篓。實(shí)際上就如何處理高并發(fā)的情況吧享!
09 scripts目錄
? ? ??訪目錄提供了兩種不同的腳本,一個(gè)是bootstrap.sh譬嚣,該腳本跟《Fabric 環(huán)境搭建時(shí)bootstrap.sh幫我們做了什么钢颂?》中說(shuō)的bootstrap.sh幾乎一致,只是少了個(gè)sampleInstall這個(gè)過(guò)程拜银。
? ? ??還有一種是Jenkins_Scripts殊鞭,對(duì)這行種腳本小編了解得不多,只知道Jenkins是一種基于Java開(kāi)發(fā)的一種持續(xù)集成工具盐股。
10 總結(jié)
? ? ??到此為止钱豁,我們幾乎把fabric-samples的一級(jí)目錄和文件都作了個(gè)簡(jiǎn)單的介紹。
? ? ??學(xué)習(xí)hyperledger fabric疯汁,我們除了首先要學(xué)習(xí)環(huán)境怎么部署和搭建之外牲尺,還需要通過(guò)一些案例來(lái)透徹理解fabric的架構(gòu)設(shè)計(jì)、賬戶體系、授權(quán)認(rèn)證機(jī)制谤碳、以及智能合約和SDK等方方面面的內(nèi)容溃卡。而fabric-samples里正好包含了若干案例,來(lái)幫助我們達(dá)到這些目標(biāo)蜒简∪诚郏可以說(shuō),只要認(rèn)真研究了fabric-samples提供的這些案例搓茬,基本上已經(jīng)對(duì)hyperledger fabric的技術(shù)知識(shí)體系和動(dòng)作原理有一定的了解了犹赖,接下來(lái)就要多多參與到工程級(jí)別的項(xiàng)目開(kāi)發(fā)中,積累更多業(yè)務(wù)方面的經(jīng)驗(yàn)卷仑,讓hyperledger fabric更接地氣峻村,更面向?qū)嶋H業(yè)務(wù)場(chǎng)景!
? ? ??由于小編的技術(shù)和業(yè)務(wù)水平有限锡凝,未能完全參透此目錄的所有案例的內(nèi)容粘昨。所以在這一講中,我們只是簡(jiǎn)單介紹了一下各案例和對(duì)應(yīng)的目錄結(jié)構(gòu)窜锯,后期张肾,我們還會(huì)出一系列的文章來(lái)詳細(xì)講解這些案例并把這些案例部署運(yùn)行起來(lái)。敬請(qǐng)期待锚扎!