00 導言
在上一講《Fabric 環境搭建時bootstrap.sh幫我們做了什嗎?》中,我們知道bootstrap.sh幫我們做了三件事:
- 從github上複製 hyperledger/fabric-samples並進入該目錄,然後檢出適當的版本
- 在fabric-samples目錄下安裝特定平台的 Hyperledger Fabric 二進位可執行檔 和設定檔
- 下載 指定版本的Hyperledger Fabric 的docker鏡像
其中第一件事情就是從github上複製 hyperledger/fabric-samples,複製完成後,它裡麵包含的目錄如下。36020180806161424892.png
接下來我們來介紹一下這些目錄是幹什麼的?這些目錄裡包含了一些什嗎?
01 balance-transfer目錄
這是一個轉賬的案例,通過node.js SDK完成如下功能:建立通道(chanel),加入通道,部署鏈碼(chaincode-就是智能合約),執行個體化鏈碼,調用鏈碼完成交易,以及查詢鏈碼等功能。鏈碼的程式設計語言提供了兩種語言的樣本:golang和node.js語言。而app端又提供了兩種語言的樣本:node.js和typescript。整體如。
36020180806161613515.png
02 basic-network目錄
該目錄提供了一系列shell指令碼,去產生初始化並啟動一個最基本的網路,包含一個order節點,一個組織下的一個普通的peer節點。
指令碼 |
作用 |
init.sh |
刪除之前儲存的認證資料 |
generate.sh |
產生加密材料、創世區塊、通道等 |
start.sh |
啟動網路 |
stop.sh |
刪除網路 |
teardown.sh |
徹底刪除所有與網路有關的證據(刪除儲存和鏡像) |
03 chaincode目錄
該目錄是一些鏈碼的樣本,包括以下目錄:
目錄 |
作用 |
abac |
Attribute-Based Access Control 基於身份屬性的存取控制 |
chaincode_example02 |
一個簡單的賬戶間轉賬和查詢 的樣本 |
fabcar |
一個關於汽車的綜合樣本,提供了Fabric功能的廣泛示範。 示範與憑證授權單位進行互動並產生註冊認證的過程,用這些身份來查詢和更新帳本 |
marbles02 |
彈珠資產管理鏈碼,示範couchDB的富查詢(基於json) |
marbles02-private |
暫不瞭解 |
sacc |
SimpleAssetChainCode 簡單資產管理鏈碼樣本 |
04 chaincode-docker-devmode目錄
該目錄示範在開發網路時,利用預產生的order和chanel來啟動“開發模式”。 這樣,使用者可以立即進入編譯鏈碼和驅動調用的過程。
通常,鏈碼由peer節點啟動和維護。 然而,在“開發模式”中,鏈碼由使用者構建和啟動。在鏈代碼開發階段,此模式非常有用,可用於快速代碼/構建/運行/調試。
05 fabcar目錄
一個汽車的例子,主要是通過單機配置類比環境,實現管理員admin使用者的enrollAdmin(註冊管理),其他使用者的註冊(主要是指user1),以及實現query和invoke。
該目錄下主要包含的是一些js檔案和一個startFabric.sh,沒有包含鏈碼(相關的鏈碼放在chaincode/fabcar目錄下)。運行startFabric.sh會先運行basic-network啟動網路。
06 fabric-ca目錄
示範如何使用Hyperledger Fabric CA用戶端和伺服器為order,peer,管理員和終端使用者產生加密認證上,以便私密金鑰永遠不會離開產生它們的主機或容器。
為啥要使用CA呢? cryptogen加密工具不適用於生產環境,因為它在一個位置產生所有私密金鑰,然後必須將其複製到適當的主機或容器。
07 first-network目錄
我們平常說的搭建hyperledger fabric環境,一般指的是就是部署運行這個樣本。該目錄下提供一個指令碼byfn.sh檔案,該檔案提供一條龍服務,示範了產生認證,啟動網路節點(兩個組織,每個組織有2個節點),以及部署、執行個體化鏈碼,並調用鏈碼進行轉賬和查詢,最後停止整個網路。本樣本採用的是solo共識服務機制。
08 high-throughput目錄
訪目錄提供的案例,用於示範如何正確設計鏈碼資料模型,以處理在每秒數千個並發事務,這些事務都更新了賬本的相同資產。實際上就如何處理高並發的情況!
09 scripts目錄
訪目錄提供了兩種不同的指令碼,一個是bootstrap.sh,該指令碼跟《Fabric 環境搭建時bootstrap.sh幫我們做了什嗎?》中說的bootstrap.sh幾乎一致,只是少了個sampleInstall這個過程。
還有一種是Jenkins_Scripts,對這行種指令碼小編瞭解得不多,只知道Jenkins是一種基於Java開發的一種持續整合工具。
10 總結
到此為止,我們幾乎把fabric-samples的一級目錄和檔案都作了個簡單的介紹。
學習hyperledger fabric,我們除了首先要學習環境怎麼部署和搭建之外,還需要通過一些案例來透徹理解fabric的架構設計、賬戶體系、授權認證機制、以及智能合約和SDK等方方面面的內容。而fabric-samples裡正好包含了若干案例,來協助我們達到這些目標。可以說,只要認真研究了fabric-samples提供的這些案例,基本上已經對hyperledger fabric的技術知識體系和動作原理有一定的瞭解了,接下來就要多多參與到工程層級的項目開發中,積累更多業務方面的經驗,讓hyperledger fabric更接地氣,更面向實際業務情境!
由於小編的技術和業務水平有限,未能完全參透此目錄的所有案例的內容。所以在這一講中,我們只是簡單介紹了一下各案例和對應的目錄結構,後期,我們還會出一系列的文章來詳細講解這些案例並把這些案例部署運行起來。敬請期待!